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

📄 pmsaction.java

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

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

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

import org.apache.commons.lang.StringUtils;
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.Memberfields;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Pms;
import cn.jsprun.domain.Pmsearchindex;
import cn.jsprun.domain.Usergroups;
import cn.jsprun.foreg.service.PmsService;
import cn.jsprun.foreg.utils.Jspruncode;
import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.service.user.MemberService;
import cn.jsprun.service.user.UserGroupService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
import cn.jsprun.utils.JspRunConfig;

public class PmsAction extends DispatchAction {
	private MemberService memberServer = (MemberService) BeanFactory.getBean("memberService");
	private UserGroupService userServer = (UserGroupService) BeanFactory.getBean("userGroupService");
	private PmsService pmsServer = (PmsService) BeanFactory.getBean("pmsServer");
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	@SuppressWarnings("unchecked")
	public ActionForward toPmsInbox(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		int uid = (Integer) session.getAttribute("jsprun_uid");
		int timestamp = (Integer)(request.getAttribute("timestamp"));
		Map<String, String> usergroup = (Map<String, String>) request.getAttribute("usergroups");
		request.setAttribute("usergroup", usergroup);
		String folder = request.getParameter("folder");
		String hqlnum = "select count(*) count from jrun_pms as p where p.msgtoid = "+ uid + " and p.folder='inbox' and p.delstatus<>2 and p.new>0";
		int num = Common.toDigit(dataBaseService.executeQuery(hqlnum).get(0).get("count"));
		request.getSession().setAttribute("num", num);
		int pm_inbox = Common.toDigit(dataBaseService.executeQuery("select count(*) count from jrun_pms as p where p.msgtoid = " + uid+ " and p.folder='inbox' and p.delstatus<>2").get(0).get("count"));
		int pm_outbox = Common.toDigit(dataBaseService.executeQuery("SELECT COUNT(*) FROM jrun_pms WHERE msgfromid='"+uid+"' AND folder='outbox'").get(0).get("count"));
		String hqlcount = "";
		String pmshql = "";
		if (folder == null || folder.equals("inbox")) {
			hqlcount = "select count(*) count from jrun_pms as p where p.msgtoid = " + uid+ " and p.folder='inbox' and p.delstatus<>2";
			pmshql = "select p.*,m.username from jrun_pms as p left join jrun_members as m on p.msgtoid=m.uid where p.msgtoid = "+ uid
					+ " and p.folder='inbox' and p.delstatus<>2 order by p.dateline desc";
		} else if (folder.equals("outbox")) {
			hqlcount = "select count(*) count from jrun_pms as p where p.msgfromid = " + uid
					+ " and p.folder='outbox' and p.delstatus<>2";
			pmshql = "select p.*,m.username from jrun_pms as p left join jrun_members as m on p.msgtoid=m.uid where p.msgfromid = "
					+ uid
					+ " and p.folder='outbox' and p.delstatus<>2 order by p.dateline desc";
		} else {
			hqlcount = "select count(*) count from jrun_pms as p where p.msgfromid = "
					+ uid + " and p.folder='inbox' and p.delstatus<>2";
			pmshql = "select p.*,m.username from jrun_pms as p left join jrun_members as m on p.msgtoid=m.uid where p.msgfromid = "
					+ uid
					+ " and p.folder='inbox' and p.delstatus<>2 order by p.dateline desc";
		}
		Members member=(Members)session.getAttribute("user");
		Map<String,String> settings=(Map<String,String>)request.getAttribute("settings");
		int pmnum=Integer.valueOf(dataBaseService.executeQuery(hqlcount).get(0).get("count"));
		int tpp = member != null && member.getTpp() > 0 ? member.getTpp(): Integer.valueOf(settings.get("topicperpage"));
		int page =Common.toDigit(request.getParameter("page"),2147483647l,1l).intValue();
		Map<String,Integer> multiInfo=Common.getMultiInfo(pmnum, tpp, page);
		page=multiInfo.get("curpage");
		int start_limit=multiInfo.get("start_limit");
		Map<String,Object> multi=Common.multi(pmnum, tpp, page, "pm.jsp?folder=" + folder, 0, 10, true, false, null, false);
		request.setAttribute("pmnum", pm_inbox+pm_outbox);
		request.setAttribute("multi", multi);
		List<Map<String,String>> pmslist = dataBaseService.executeQuery(pmshql+" limit "+start_limit+","+tpp);
		request.setAttribute("pmslist", pmslist);
		if (pmslist == null || pmslist.size() < 1) {
			request.setAttribute("pmslist", null);
		}
		if(folder == null || folder.equals("inbox")){
			List<Map<String,String>> announcements = dataBaseService.executeQuery("select * from jrun_announcements where type=2 and ( endtime=0 || endtime-"+timestamp+">0) and (groups='' || groups in ("+usergroup.get("groupid")+"))");
			if(announcements!=null && announcements.size()>0){
				request.setAttribute("announcements", announcements);
			}else{
				request.setAttribute("announcements", null);
			}
		}
		setExtcredits(request);
		return mapping.findForward("todisplay");
	}
	@SuppressWarnings("unused")
	private static int convertInt(String s) {
		int count = 0;
		try {
			count = Integer.valueOf(s);
		} catch (Exception e) {
		}
		return count;
	}
	@SuppressWarnings("unchecked")
	public ActionForward toView(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		HttpSession session = request.getSession();
		String folder = request.getParameter("folder");
		String pmid = request.getParameter("pmid");
		if(folder!=null && folder.equals("announce")){
			String sql="select * from jrun_announcements where id="+pmid;
			List<Map<String,String>> announlists=dataBaseService.executeQuery(sql);
			Map<String,String> announ = announlists.get(0);
			request.setAttribute("announ", announ);
			request.setAttribute("message", announ.get("message"));
		}else{
			Jspruncode jspcode = (Jspruncode)BeanFactory.getBean("jspruncode");
			int id = convertInt(pmid);
			Pms pms = pmsServer.findPmsBypmid(id);
			if(pms==null){
				request.setAttribute("errorInfo", "未定义操作,请返回。");
				return mapping.findForward("showMessage");
			}
			if(folder!=null && !folder.equals("track")){
				pms.setNew_(Byte.valueOf("0"));
			}
			String message = pms.getMessage();
			message = jspcode.parsecode(message,false);
			message = relacesmile(message);
			message = message.replaceAll("\\n", "<br/>");
			Members member = memberServer.findMemberById(pms.getMsgtoid());
			request.setAttribute("member", member);
			request.setAttribute("message", message);
			request.setAttribute("pmsd", pms);
			pmsServer.updatePms(pms);
			String hqlnum = "select count(*) from Pms as p where p.msgtoid = " + pms.getMsgtoid()+ " and p.folder='inbox' and p.delstatus<>2 and p.new_>0";
			int num = pmsServer.findPmsCountByHql(hqlnum);
			request.getSession().setAttribute("num", num);
			setExtcredits(request);
		}
		int uid = (Integer) session.getAttribute("jsprun_uid");
		String inajax = request.getParameter("inajax");
		if (inajax != null) {
			Map<String, String> usergroup = (Map<String, String>) request.getAttribute("usergroups");
			String hqlcount = "";
			if (folder == null || folder.equals("inbox") ||folder.equals("announce")) {
				hqlcount = "select count(*) from Pms as p where p.msgtoid = "+ uid + " and p.folder='inbox' and p.delstatus<>2";
			} else {
				hqlcount = "select count(*) from Pms as p where p.msgfromid = "+ uid + " and p.folder='inbox' and p.delstatus<>2";
			}
			int count = pmsServer.findPmsCountByHql(hqlcount);
			String pmmax = usergroup.get("maxpmnum");
			if ((!pmmax.equals("0") && convertInt(pmmax) < count)||(pmmax.equals("0")&&10<count)) {
				request.setAttribute("message", "您的信箱已满,在阅读短消息前必须删除一些不用的信息。");
				request.setAttribute("dis", "ok");
			} else {
				request.setAttribute("dis", "tt");
			}
			if(!folder.equals("track")){
				dataBaseService.runQuery("update jrun_members set newpm=0 where uid="+uid);
			}
			return mapping.findForward("toview");
		} else {
			return mapping.findForward("todisplay");
		}
	}

	private String relacesmile(String message) {
		List<Map<String,String>> smilieslist = dataBaseService.executeQuery("select s.id,s.typeid,s.code,s.url,i.directory from jrun_smilies s left join jrun_imagetypes  i on s.typeid=i.typeid where s.type='smiley'");
		for(Map<String,String> smiles:smilieslist){
			if(message.indexOf(smiles.get("code")+" ")!=-1 || message.indexOf(" "+smiles.get("code"))!=-1){
				StringBuffer buffer = new StringBuffer();
				buffer.append("<img src='images/smilies/");
				buffer.append(smiles.get("directory"));
				buffer.append("/");
				buffer.append(smiles.get("url"));
				buffer.append("' smilieid='");
				buffer.append(smiles.get("id"));
				buffer.append("' border='0' alt='' /> ");
				message = StringUtils.replace(message, smiles.get("code"), buffer.toString());
			}
		}
		smilieslist=null;
		return message;
	}
	public ActionForward markunread(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String pmid = request.getParameter("pmid");
		String msgtoid = dataBaseService.executeQuery("select msgtoid from jrun_pms where pmid="+pmid).get(0).get("msgtoid");
		dataBaseService.runQuery("update jrun_pms set new=1 where pmid="+pmid);
		String hqlnum = "select count(*) from Pms as p where p.msgtoid = "
				+ msgtoid
				+ " and p.folder='inbox' and p.delstatus<>2 and p.new_>0";
		int num = pmsServer.findPmsCountByHql(hqlnum);
		request.getSession().setAttribute("num", num);
		return null;
	}
	public ActionForward deletepmsbyid(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String pmid = request.getParameter("pmid");
		dataBaseService.runQuery("update jrun_pms set delstatus=2 where pmid="+pmid);
		return null;
	}
	@SuppressWarnings("unchecked")
	public ActionForward toSendPms(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		String pmid = request.getParameter("pmid");
		String action = request.getParameter("do");
		String uids = request.getParameter("uid");
		String inajax = request.getParameter("inajax");
		HttpSession session = request.getSession();
		int uid = (Integer) session.getAttribute("jsprun_uid");
		String boardurl = (String)session.getAttribute("boardurl");
		Map<String,String> settings = (Map<String,String>)request.getAttribute("settings");
		Members user = (Members) session.getAttribute("user");
		String dateformat = (String)session.getAttribute("dateformat");
		String timeformat = (String)session.getAttribute("timeformat");
		int timeoffset=(int)((Float)session.getAttribute("timeoffset")*3600);
		if(inajax==null){
			Map<String,String> usergroups = (Map<String,String>)request.getAttribute("usergroups");
			if(usergroups==null || usergroups.get("maxpmnum").equals("0")){
				String grouptitle = usergroups==null?"游客":usergroups.get("grouptitle");
				request.setAttribute("show_message", "您所在的用户组("+grouptitle+")无法进行此操作。。");
				return mapping.findForward("nopermission");
			}
			DataParse dataParse = (DataParse) BeanFactory.getBean("dataParse");
			Map seccodedata = dataParse.characterParse(settings.get("seccodedata"), false);
			int minposts = Common.toDigit(String.valueOf(seccodedata.get("minposts")),1000000000L, 0L).intValue();
			int seccodestatus = Common.toDigit(settings.get("seccodestatus"), 255L, 0L).intValue();
			boolean seccodecheck = (seccodestatus & 8) > 0 && (minposts <= 0 || user.getPosts() < minposts);
			request.setAttribute("seccodecheck", seccodecheck);
			request.setAttribute("seccodedata", seccodedata);
			Map secqaa = dataParse.characterParse(settings.get("secqaa"),false);
			dataParse=null;
			minposts = Common.toDigit(String.valueOf(secqaa.get("minposts")), 1000000000L,0L).intValue();
			int secqaastatus =Common.toDigit(String.valueOf(secqaa.get("status")), 255L,0L).intValue();
			boolean secqaacheck = (secqaastatus & 4) > 0 && (minposts <= 0 || user.getPosts() < minposts);
			request.setAttribute("secqaacheck", secqaacheck);
		}
		if (uids == null) {
			List<Map<String,String>>buddylist = dataBaseService.executeQuery("select b.buddyid,m.username from jrun_buddys as b left join jrun_members as m on b.buddyid=m.uid where b.uid = "+uid);
			if (buddylist != null && buddylist.size() > 0) {
				request.setAttribute("buddylist", buddylist);
			} else {
				request.setAttribute("buddylist", null);
			}
			if (action != null) {
				int pid = convertInt(pmid);
				Pms pms = pmsServer.findPmsBypmid(pid);
				String subject = pms.getSubject();
				if(subject.indexOf("Re:")!=-1 || subject.indexOf("Fw:")!=-1){
					subject = subject.substring(3);
				}
				if (action.equals("reply")) {  
					subject = "Re:" +subject;
					pms.setSubject(subject);
					Members members = memberServer.findMemberById(pms.getMsgfromid());
					String message = pms.getMessage();
					message = "[b]原始短消息:[/b] [url="+session.getAttribute("boardurl")+"pm.jsp?action=view&folder=inbox&pmid="+pms.getPmid()+"]"+pms.getSubject()+"[/url]\n"+"[quote]"+message+"[/quote]";
					pms.setMessage(message);
					request.setAttribute("member",members);
					request.setAttribute("pms", pms);
				} else {  
					subject = "Fw:" + subject;
					String message = pms.getMessage();
					Members tomember = memberServer.findMemberById(pms.getMsgtoid());
					message = "[b]原始短消息[/b] [url="+session.getAttribute("boardurl")+"pm.jsp?action=send&pmid="+pms.getPmid()+"&do=reply](回复)[/url]\n"+"[b]来自:[/b] [url="+session.getAttribute("boardurl")+"space.jsp?uid="+pms.getMsgfromid()+"]"+pms.getMsgfrom()+"[/url]\n"+"[b]发送到:[/b] [url="+session.getAttribute("boardurl")+"space.jsp?uid="+pms.getMsgtoid()+"]"+tomember.getUsername()+"[/url]\n"+"[b]时间:[/b]"+Common.gmdate(dateformat+" "+timeformat, (int)(pms.getDateline()+timeoffset))+"[quote]"+message+"[/quote]";
					pms.setMessage(message);
					pms.setSubject(subject);
					request.setAttribute("pms", pms);
				}

⌨️ 快捷键说明

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