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

📄 systemutiluseraction.java

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

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 + -