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