📄 systemutiluseraction.java
字号:
package cn.jsprun.struts.action;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
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 org.apache.struts.util.MessageResources;
import cn.jsprun.domain.Members;
import cn.jsprun.page.LogPage;
import cn.jsprun.service.system.DataBaseService;
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.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.FormDataCheck;
import cn.jsprun.utils.ForumInit;
import cn.jsprun.utils.LogLucene;
import cn.jsprun.utils.LogReader;
import cn.jsprun.utils.Mail;
import cn.jsprun.vo.logs.BanlogVO;
import cn.jsprun.vo.logs.CplogVO;
import cn.jsprun.vo.logs.CreditslogVO;
import cn.jsprun.vo.logs.ErrorlogVO;
import cn.jsprun.vo.logs.IllegallogVO;
import cn.jsprun.vo.logs.InviteslogVO;
import cn.jsprun.vo.logs.MagiclogVO;
import cn.jsprun.vo.logs.MedalslogVO;
import cn.jsprun.vo.logs.ModslogVO;
import cn.jsprun.vo.logs.RatelogVO;
public class SystemUtilUserAction extends DispatchAction {
private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
private MemberService memberServer = (MemberService) BeanFactory.getBean("memberService");
private UserGroupService userGroupServer = (UserGroupService) BeanFactory.getBean("userGroupService");
private DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
@SuppressWarnings("unchecked")
public ActionForward newletterInit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userform = (UserForm) form;
if ("yes".equals(request.getParameter("search"))) {
HttpSession session = request.getSession();
int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
List<Map<String,String>> allgroups = dataBaseService.executeQuery("select groupid,grouptitle from jrun_usergroups order by radminid desc,groupid desc");
request.setAttribute("allGroups", allgroups);
String sql = memberServer.returnsearsql(userform, true,timeoffset);
List<Map<String,String>> count = dataBaseService.executeQuery("select count(*) as count "+sql);
String size = "0";
if(count.size()>0){
size = count.get(0).get("count");
}
String setting = ((Map<String,String>)request.getSession().getServletContext().getAttribute("fsmap")).get("extcredits");
Map extcreditMap = dataParse.characterParse(setting,true);
session.setAttribute("currsql", sql);
request.setAttribute("size", size);
request.setAttribute("result", "yes");
count = null;
String creditsnotify = userGroupServer.findSettingByVariable("creditsnotify").getValue();
Map creditsnotifyMap = dataParse.characterParse(creditsnotify, false);
request.setAttribute("creditsnotifyMap", creditsnotifyMap);
request.setAttribute("extcreditMap", extcreditMap);
return mapping.findForward("newlettersubmit");
} else {
List<Map<String,String>> allgroups = dataBaseService.executeQuery("select groupid,grouptitle from jrun_usergroups order by radminid desc,groupid desc");
String setting = ((Map<String,String>)request.getSession().getServletContext().getAttribute("fsmap")).get("extcredits");
Map extcreditMap = dataParse.characterParse(setting,true);
String creditsnotify = userGroupServer.findSettingByVariable("creditsnotify").getValue();
Map creditsnotifyMap = dataParse.characterParse(creditsnotify, false);
request.setAttribute("creditsnotifyMap", creditsnotifyMap);
request.setAttribute("allGroups", allgroups);
request.setAttribute("extcreditMap", extcreditMap);
return mapping.findForward("newlettersubmit");
}
}
@SuppressWarnings("unchecked")
public ActionForward newlettersubmit(ActionMapping mapping,
ActionForm form, HttpServletRequest request, HttpServletResponse response) {
String updatecreditsubmit = request.getParameter("updatecreditsubmit");
if(updatecreditsubmit==null){
Common.requestforward(response, "admincp.jsp?action=members&submitname=newslettersubmit");
return null;
}
HttpSession session = request.getSession();
Members members = (Members) session.getAttribute("members");
String currsql = (String)session.getAttribute("currsql");
if(currsql==null){
Common.requestforward(response, "admincp.jsp?action=members&submitname=newslettersubmit");
return null;
}
String sendvia = request.getParameter("sendvia");
if(sendvia.equals("email")&&request.getParameter("end")!=null){
session.removeAttribute("currsql");
String msg = "论坛通知成功发送。";
request.setAttribute("resultInfo", msg);
return mapping.findForward("result");
}
String subject = request.getParameter("subject");
String message = request.getParameter("message");
String pertask = request.getParameter("pertask");
int perta = Common.toDigit(pertask);
if (subject == null || subject.equals("") || message == null || message.equals("")) {
request.setAttribute("errorInfo", "您没有输入消息的标题或内容,请返回修改。");
return mapping.findForward("error");
}
message = Common.cutstr(message, 40000, "");
String begin = request.getParameter("begin");
if(begin!=null&&message.equals("settings")){
String creditsnotify = userGroupServer.findSettingByVariable("creditsnotify").getValue();
Map<String,String> creditsnotifyMap = dataParse.characterParse(creditsnotify, false);
subject = creditsnotifyMap.get("subject");
message = creditsnotifyMap.get("message");
}else{
Map creditsnotifyMap = new HashMap();
creditsnotifyMap.put("subject", subject);
creditsnotifyMap.put("message", message);
String value = dataParse.combinationChar(creditsnotifyMap);
dataBaseService.runQuery("REPLACE INTO jrun_settings (variable, value) VALUES('creditsnotify','"+value+"')");
}
if (sendvia.equals("email")) {
List<Map<String,String>> memberlist = dataBaseService.executeQuery("select username,newsletter,email "+currsql);
StringBuffer tomails=new StringBuffer();
for (Map<String, String> member : memberlist) {
if(member.get("newsletter").equals("1")){
tomails.append(","+member.get("username")+" <"+member.get("email")+">");
}
}
if(tomails.length()>0){
Map<String,String> settings=ForumInit.settings;
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"), tomails.substring(1), subject, message, null);
}
if (perta > 1) {
String msg = "发送论坛通知: 正在处理 从 0 到 " + perta;
request.setAttribute("successInfo", msg);
request.setAttribute("requestPath", request.getContextPath()+ "/sysutil.do?useraction=newlettersubmit&updatecreditsubmit=yes&subject=settings&message=settings&sendvia=email&end=yes");
return mapping.findForward("success");
} else {
session.removeAttribute("currsql");
String msg = "论坛通知成功发送。";
request.setAttribute("resultInfo", msg);
return mapping.findForward("result");
}
} else {
int beint = 0;
if(begin!= null){
beint = Integer.valueOf(begin);
}
int count = Common.toDigit(dataBaseService.executeQuery("select count(*) as count "+currsql).get(0).get("count"));
List<Map<String,String>> memberlist = dataBaseService.executeQuery("select uid,newsletter,g.maxpmnum as maxpmnum "+currsql+" limit "+beint+","+perta);
String username = members.getUsername();
String uid = members.getUid()+"";
int timestamp = (Integer)(request.getAttribute("timestamp"));
String sql = "insert into jrun_pms (msgfrom,msgfromid,msgtoid,folder,new,subject,dateline,message,delstatus) values ";
if (perta > 0) {
int num = 0;
String uids = "0";
for(Map<String,String> member:memberlist){
if(member.get("newsletter").equals("1") && member.get("maxpmnum")!=null && !member.get("maxpmnum").equals("0")){
uids = uids+","+member.get("uid");
num++;
sql += "('"+username+"','"+uid+"','"+member.get("uid")+"','inbox','1','"+subject+"','"+timestamp+"','"+message+"','0'),";
}
}
if(num>0){
sql = sql.substring(0,sql.length()-1);
}
dataBaseService.runQuery("update jrun_members set newpm = 1 where uid in ("+uids+")");
if(num>0){
dataBaseService.runQuery(sql,true);
}
if(perta+beint>=count){
String msg = "论坛通知成功发送。";
session.removeAttribute("currsql");
request.setAttribute("resultInfo", msg);
return mapping.findForward("result");
}else{
String msg = "发送论坛通知: 正在处理 从 "+beint+" 到 " + (perta+beint);
beint = beint+perta;
request.setAttribute("successInfo", msg);
request.setAttribute("requestPath", request.getContextPath()+ "/sysutil.do?useraction=newlettersubmit&updatecreditsubmit=yes&subject=settings&message=settings&sendvia=pms&pertask="+perta+"&begin="+beint);
return mapping.findForward("success");
}
}else{
String msg = "论坛通知成功发送。";
session.removeAttribute("currsql");
request.setAttribute("resultInfo", msg);
return mapping.findForward("result");
}
}
}
@SuppressWarnings("unchecked")
public ActionForward userLogRead(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
String path = servlet.getServletContext().getRealPath("/") + "forumdata/logs";
HttpSession session = request.getSession();
int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
String extcred = ((Map<String,String>)request.getSession().getServletContext().getAttribute("fsmap")).get("extcredits");
Map extcredit = dataParse.characterParse(extcred,true);
List<Map<String,String>> usergrouplist = dataBaseService.executeQuery("select groupid,grouptitle from jrun_usergroups");
String formhash = request.getParameter("caction");
if (formhash != null && formhash.equals("keyword")) {
String keyword = request.getParameter("keyword");
List keylist = LogLucene.readRatelog(path, keyword);
List resultlist = new ArrayList();
if (keylist != null && keylist.size() != 0) {
List nowList = (List) keylist.get(0);
for (int i = nowList.size() - 1; i >= 0; i--) {
RatelogVO rate = new RatelogVO();
String rowstring = (String) nowList.get(i);
String[] rowcontent = rowstring.split("\t");
if(rowcontent.length>8){
String time = Common.gmdate("yy-MM-dd HH:mm", (int)(Common.toDigit(rowcontent[1])+timeoffset));
rate.setOperateTime(time);
rate.setFirstUsername(rowcontent[2]);
rate.setSecondUsername(rowcontent[4]);
for(int j=0;j<usergrouplist.size();j++){
if(usergrouplist.get(j).get("groupid").equals(rowcontent[3])){
rate.setUsergroup(usergrouplist.get(j).get("grouptitle"));
}
}
Map extcredits = (Map) extcredit.get(new Integer(rowcontent[5]));
String ischexiao = "";
if(!rowcontent[7].equals("0") && rowcontent.length>10 && rowcontent[10].trim().equals("D")){
ischexiao = "撤销 ";
}
if (extcredits.get("available") != null) {
rate.setMarkValue(ischexiao+extcredits.get("title") + rowcontent[6]);
} else {
rate.setMarkValue(rowcontent[6]);
}
if (rowcontent[7].equals("0")) {
rate.setTitle("管理员人工编辑");
rate.setReason(rowcontent[8]);
} else {
rate.setTitle(rowcontent[8]);
rate.setTid(convertInt(rowcontent[7]));
if (rowcontent.length > 9) {
rate.setReason(rowcontent[9]);
} else {
rate.setReason("");
}
}
resultlist.add(rate);
}
}
nowList = null;
}
if (keylist != null && keylist.size() > 1) {
List nowList = (List) keylist.get(1);
for (int i = nowList.size() - 1; i >= 0; i--) {
RatelogVO rate = new RatelogVO();
String rowstring = (String) nowList.get(i);
String[] rowcontent = rowstring.split("\t");
if(rowcontent.length>8){
String time = Common.gmdate("yy-MM-dd HH:mm", (int)(Common.toDigit(rowcontent[1])+timeoffset));
rate.setOperateTime(time);
rate.setFirstUsername(rowcontent[2]);
rate.setSecondUsername(rowcontent[4]);
for(int j=0;j<usergrouplist.size();j++){
if(usergrouplist.get(j).get("groupid").equals(rowcontent[3])){
rate.setUsergroup(usergrouplist.get(j).get("grouptitle"));
}
}
Map extcredits = (Map) extcredit.get(new Integer(rowcontent[5]));
String ischexiao = "";
if(!rowcontent[7].equals("0") && rowcontent.length>10 && rowcontent[10].trim().equals("D")){
ischexiao = "撤销 ";
}
if (extcredits.get("available") != null) {
rate.setMarkValue(ischexiao+extcredits.get("title") + rowcontent[6]);
} else {
rate.setMarkValue(rowcontent[6]);
}
if (rowcontent[7].equals("0")) {
rate.setTitle("管理员人工编辑");
rate.setReason(rowcontent[8]);
} else {
rate.setTitle(rowcontent[8]);
rate.setTid(convertInt(rowcontent[7]));
if (rowcontent.length > 9) {
rate.setReason(rowcontent[9]);
} else {
rate.setReason("");
}
}
resultlist.add(rate);
}
}
nowList = null;
}
keylist = null;
request.setAttribute("reteloglist", resultlist);
request.setAttribute("lpp", 50);
request.setAttribute("keys", keyword);
usergrouplist = null;
return mapping.findForward("ratelog");
}
List list = LogReader.readRatelog(path);
List resultList = new ArrayList();
if (list != null && list.size() != 0) {
List nowList = (List) list.get(0);
for (int i = nowList.size() - 1; i >= 0; i--) {
RatelogVO rate = new RatelogVO();
String rowstring = (String) nowList.get(i);
String[] rowcontent = rowstring.split("\t");
if(rowcontent.length>8){
String time = Common.gmdate("yy-MM-dd HH:mm", (int)(Common.toDigit(rowcontent[1])+timeoffset));
rate.setOperateTime(time);
rate.setFirstUsername(rowcontent[2]);
rate.setSecondUsername(rowcontent[4]);
for(int j=0;j<usergrouplist.size();j++){
if(usergrouplist.get(j).get("groupid").equals(rowcontent[3])){
rate.setUsergroup(usergrouplist.get(j).get("grouptitle"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -