⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 useraction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
package cn.jsprun.struts.action;

import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import cn.jsprun.domain.Admingroups;
import cn.jsprun.domain.Banned;
import cn.jsprun.domain.Memberfields;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Onlinetime;
import cn.jsprun.domain.Profilefields;
import cn.jsprun.domain.Projects;
import cn.jsprun.domain.Ranks;
import cn.jsprun.domain.Settings;
import cn.jsprun.domain.Usergroups;
import cn.jsprun.domain.Validating;
import cn.jsprun.page.LogPage;
import cn.jsprun.service.posts.PostsService;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.BannedService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.service.user.UserGroupService;
import cn.jsprun.struts.form.UserForm;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Cache;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.FormDataCheck;
import cn.jsprun.utils.ForumInit;
import cn.jsprun.utils.IPSeeker;
import cn.jsprun.utils.Log;
import cn.jsprun.utils.Mail;
import cn.jsprun.utils.Md5Token;

public class UserAction extends DispatchAction {
	private MemberService memberServer = (MemberService) BeanFactory.getBean("memberService");
	private UserGroupService userGroupServer = (UserGroupService) BeanFactory.getBean("userGroupService");
	private PostsService postsServer = (PostsService) BeanFactory.getBean("postsService");
	private BannedService bannedServer = (BannedService) BeanFactory.getBean("bannedService");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");

	@SuppressWarnings("unchecked")
	public ActionForward memberAdd(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String addsubmit = request.getParameter("addsubmit");
		if (addsubmit == null) {
			List<Map<String, String>> usergroups = dataBaseService.executeQuery("SELECT groupid, type, grouptitle, creditshigher FROM jrun_usergroups WHERE type='member' AND creditshigher='0' OR (groupid NOT IN ('5', '6', '7') AND radminid<>'1' AND type<>'member') ORDER BY type DESC, (creditshigher<>'0' || creditslower<>'0'), creditslower");
			request.setAttribute("usergroups", usergroups);
			return mapping.findForward("memberadd");
		} else {
			String username = request.getParameter("username").trim();
			String password = request.getParameter("password").trim();
			String email = request.getParameter("email").trim();
			if (username.length() == 0 || password.length() == 0|| email.length() == 0) {
				request.setAttribute("errorInfo", "您没有填写完整用户资料,请返回修改。");
				return mapping.findForward("error");
			}
			int strlen = Common.strlen(username);
			if (strlen < 3) {
				request.setAttribute("errorInfo","对不起,您输入的用户名小于3个字符, 请返回输入一个较长的用户名。");
				return mapping.findForward("error");
			} else if (strlen > 15) {
				request.setAttribute("errorInfo","对不起,您的用户名超过 15 个字符,请返回输入一个较短的用户名。");
				return mapping.findForward("error");
			}

			Map<String, String> settings = ForumInit.settings;
			String censoruser = settings.get("censoruser");
			if (Common.censoruser(username, censoruser)) {
				request.setAttribute("errorInfo", "用户名包含敏感字符或被系统屏蔽,请返回重新填写。");
				return mapping.findForward("error");
			}
			List<Map<String, String>> members = dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE username='"+ username + "'");
			if (members != null && members.size() > 0) {
				request.setAttribute("errorInfo", "用户名已经存在,请返回修改。");
				return mapping.findForward("error");
			}
			String uidadd1 = "", uidadd2 = "";
			int uidupperlimit = Common.toDigit(request.getParameter("uidupperlimit"));
			int uidlowerlimit = Common.toDigit(request.getParameter("uidlowerlimit"));
			int uid = 0;
			if (uidlowerlimit > 0 && uidupperlimit >= uidlowerlimit) {
				uid = uidlowerlimit;
				members = dataBaseService.executeQuery("SELECT uid FROM jrun_members WHERE uid BETWEEN '"+ uidlowerlimit+ "' AND '"+ uidupperlimit+ "' ORDER BY uid");
				if (members != null && members.size() > 0) {
					for (Map<String, String> member : members) {
						if (Integer.valueOf(member.get("uid")) > uid) {
							break;
						} else {
							uid++;
						}
					}
				}
				if (uid <= uidupperlimit) {
					uidadd1 = "uid, ";
					uidadd2 = uid + ", ";
				} else {
					request.setAttribute("errorInfo","指定范围内没有可用的 UID,无法成功分配,请返回修改。");
					return mapping.findForward("error");
				}
			}
			int groupid = Integer.valueOf(request.getParameter("groupid"));
			Map<String, String> group = dataBaseService.executeQuery("SELECT groupid, radminid, type FROM jrun_usergroups WHERE groupid='"+ groupid + "'").get(0);
			int radminid = Common.toDigit(group.get("radminid"));
			if (radminid == 1) {
				request.setAttribute("errorInfo","对不起,出于安全性考虑,不允许直接添加管理员,请返回修改。");
				return mapping.findForward("error");
			}
			if (groupid == 5 || groupid == 6 || groupid == 7) {
				request.setAttribute("errorInfo","对不起,不允许添加禁止访问、禁止IP、游客用户组,请返回修改。");
				return mapping.findForward("error");
			}
			int adminid = radminid == 1 || radminid == 2 || radminid == 3 ? radminid: ("special".equals(group.get("type")) ? -1 : 0);
			int timestamp = (Integer)(request.getAttribute("timestamp"));
			int tempuid = dataBaseService.insert(
							"INSERT INTO jrun_members ("
									+ uidadd1
									+ " username, password, secques, gender, adminid, groupid, regip, regdate, lastvisit, lastactivity, posts, credits, email, bday, sigstatus, tpp, ppp, styleid, dateformat, timeformat, showemail, newsletter, invisible, timeoffset) VALUES ("
									+ uidadd2
									+ " '"
									+ username
									+ "', '"
									+ Md5Token.getInstance().getLongToken(
											password)
									+ "', '', '0', '"
									+ adminid
									+ "', '"
									+ groupid
									+ "', 'Manual Acting', '"
									+ timestamp
									+ "', '"
									+ timestamp
									+ "', '"
									+ timestamp
									+ "', '0', '0', '"
									+ email
									+ "', '0000-00-00', '0', '0', '0', '0', '0', '"
									+ settings.get("timeformat")
									+ "', '1', '1', '0', '"
									+ settings.get("timeoffset") + "')", true);
			if (tempuid > 0 && uid==0) {
				uid = tempuid;
			}
			dataBaseService.runQuery("REPLACE INTO jrun_memberfields (uid,nickname,site,alipay,icq,qq,yahoo,msn,taobao,location,customstatus,medals,avatar,bio,sightml,ignorepm,groupterms,authstr,spacename) VALUES ('"
									+ uid+ "','','','','','','','','','','','','','','','','','','')",true);
			String emailnotify = request.getParameter("emailnotify");
			if ("yes".equals(emailnotify)) {
				HttpSession session = request.getSession();
				String boardurl = (String) session.getAttribute("boardurl");
				Map<String, String> mails = dataParse.characterParse(settings.get("mail"), false);
				mails.put("jsprun_root",servlet.getServletContext().getRealPath("/"));
				Mail mail = new Mail(mails);
				mail.sendMessage(mails.get("from"),email,"您被添加成为会员","\n"+ username+ " ,\n这封信是由 "+ settings.get("bbname")+ " 发送的。\n\n我是 "+ session.getAttribute("jsprun_userss")+ " ,"+ settings.get("bbname")+ " 的管理者之一。您收到这封邮件,是因为您\n刚刚被添加成为我们论坛的会员,当前 Email 即是我们为您注册的地址。\n\n----------------------------------------------------------------------\n重要!\n----------------------------------------------------------------------\n\n如果您对我们的论坛不感兴趣或无意成为会员,请忽略这封邮件。\n\n----------------------------------------------------------------------\n帐号信息\n----------------------------------------------------------------------\n\n论坛名称:"+ settings.get("bbname")+ "\n论坛地址:"+ boardurl+ "\n\n用户名:"	+ username+ "\n密码:"	+ password+ "\n\n从现在起您可以使用您的帐号登录我们的论坛,祝您使用愉快!\n\n\n\n此致\n\n"+ settings.get("bbname") + " 管理团队.\n"+ boardurl, null);
			}
			String realPath = servlet.getServletContext().getRealPath("/");
			Common.updatecache(realPath, new String[] { "settings" });
			request.setAttribute("resultInfo", "用户 " + username + "(UID " + uid+ ") 添加成功");
			return mapping.findForward("result");
		}
	}
	@SuppressWarnings("unchecked")
	public ActionForward membersInit(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
		List<Map<String, String>> usergroups = dataBaseService.executeQuery("SELECT groupid, grouptitle FROM jrun_usergroups WHERE groupid NOT IN ('6', '7') ORDER BY (creditshigher<>'0' || creditslower<>'0'), creditslower");
		String setvalue = ForumInit.settings.get("extcredits");
		Map extcredits = dataParse.characterParse(setvalue, true);
		request.setAttribute("extcredits", extcredits);
		request.setAttribute("usergroups", usergroups);
		request.setAttribute("inited", "yes");
		return mapping.findForward("inited");
	}
	@SuppressWarnings("unchecked")
	public ActionForward modMembers(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Map<String,String>settings=ForumInit.settings;
		String sendmail = request.getParameter("sendmail");
		sendmail = sendmail==null?"1":sendmail;
		int count = Integer.valueOf(dataBaseService.executeQuery("SELECT COUNT(*) as count FROM jrun_validating WHERE status='0'").get(0).get("count"));
		int page =Common.toDigit(request.getParameter("page"),2147483647l,1l).intValue();
		int memberperpage=Common.toDigit(settings.get("memberperpage"));
		Map<String,Integer> multiInfo=Common.getMultiInfo(count, memberperpage, page);
		page=multiInfo.get("curpage");
		int start_limit=multiInfo.get("start_limit");
		Map<String,Object> multi=Common.multi(count, memberperpage, page, "admincp.jsp?action=modmembers&sendemail="+sendmail, 0, 10, true, false, null, false);
		request.setAttribute("multi", multi);
		List<Map<String, String>> validatelist = dataBaseService.executeQuery("select v.*,m.username,m.regdate,m.regip,m.email,m.groupid from jrun_validating as v left join jrun_members as m on v.uid=m.uid where v.status=0 limit "+start_limit+","+memberperpage);
		List<Map<String,String>> removelist = new ArrayList<Map<String,String>>();
		for (Map<String, String> validate : validatelist) {
			if (!validate.get("groupid").equals("8")) {
				dataBaseService.runQuery("delete from jrun_validating where uid="+ validate.get("uid"), true);
				removelist.add(validate);
			}
		}
		for(Map<String, String> validate : removelist){
			validatelist.remove(validate);
		}
		removelist = null;
		request.setAttribute("validatingList", validatelist);
		return mapping.findForward("modMembers");
	}
	@SuppressWarnings( { "deprecation", "unchecked" })
	public ActionForward userGroups(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		Cache cache = new Cache(servlet.getServletContext().getRealPath("/"));
		String type = request.getParameter("type");
		String[] delIds = request.getParameterValues("delid");
		String[] updateIds = request.getParameterValues("updateid");
		Usergroups userGroup = null;
		String groupsubmit = request.getParameter("groupsubmit");
		if (groupsubmit!=null && type != null && "member".equals(type)) {
			String[] newGroupTitles = request.getParameterValues("newgrouptitle");
			String[] newCreditHighters = request.getParameterValues("newcreditshigher");
			String[] newStarses = request.getParameterValues("newstars");
			int insertLength = newGroupTitles.length;
			String[] projects = request.getParameterValues("projectid");
			String[] groupTitles = request.getParameterValues("grouptitle");
			String[] creditsHighers = request.getParameterValues("creditshigher");
			String[] starses = request.getParameterValues("stars");
			String[] colors = request.getParameterValues("color");
			String[] groupAvatars = request.getParameterValues("groupavatar");
			int updateLength = 0;
			if (groupTitles != null) {
				updateLength = groupTitles.length;
			}
			List<String> idList = new ArrayList<String>();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -