📄 useraction.java
字号:
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 + -