📄 topicadminactionservice.java
字号:
package cn.jsprun.foreg.service;
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.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.apache.struts.util.MessageResources;
import cn.jsprun.dao.DataBaseDao;
import cn.jsprun.dao.ForumRecommendDao;
import cn.jsprun.dao.ForumfieldsDao;
import cn.jsprun.dao.ForumsDao;
import cn.jsprun.dao.MypostsDao;
import cn.jsprun.dao.MythreadDao;
import cn.jsprun.dao.RatelogDao;
import cn.jsprun.dao.posts.AttachmentsDao;
import cn.jsprun.dao.posts.PmsDao;
import cn.jsprun.dao.posts.PostsDao;
import cn.jsprun.dao.posts.ThreadsDao;
import cn.jsprun.dao.posts.ThreadsmodDao;
import cn.jsprun.dao.user.MembersDao;
import cn.jsprun.domain.Attachments;
import cn.jsprun.domain.Forumfields;
import cn.jsprun.domain.Forumrecommend;
import cn.jsprun.domain.Forums;
import cn.jsprun.domain.Members;
import cn.jsprun.domain.Pms;
import cn.jsprun.domain.Posts;
import cn.jsprun.domain.Ratelog;
import cn.jsprun.domain.RatelogId;
import cn.jsprun.domain.Threads;
import cn.jsprun.domain.Threadsmod;
import cn.jsprun.domain.ThreadsmodId;
import cn.jsprun.foreg.vo.topicadmin.BaseVO;
import cn.jsprun.foreg.vo.topicadmin.CloseOrOpenTopicVO;
import cn.jsprun.foreg.vo.topicadmin.HighLightVO;
import cn.jsprun.foreg.vo.topicadmin.OtherBaseVO;
import cn.jsprun.foreg.vo.topicadmin.ToTopAndEliteVO;
import cn.jsprun.foreg.vo.topicadmin.TopicAdmin_MoveVO;
import cn.jsprun.foreg.vo.topicadmin.TopicClassVO;
import cn.jsprun.foreg.vo.topicadmin.TopicCopyVO;
import cn.jsprun.foreg.vo.topicadmin.TopicPublicVO;
import cn.jsprun.foreg.vo.topicadmin.TopicSplitVO;
import cn.jsprun.foreg.vo.topicadmin.BaseVO.Log;
import cn.jsprun.foreg.vo.topicadmin.BaseVO.ThreadInfo;
import cn.jsprun.foreg.vo.topicadmin.TopicSplitVO.PostsInfo;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Cache;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.DataParse;
public class TopicAdminActionService {
private final String tableprefix = "jrun_";
private static final Map<String,String> operationInfoMap = new HashMap<String, String>();
static {
operationInfoMap.put("MOV", "移动");
operationInfoMap.put("TMV", "定时移动");
operationInfoMap.put("TDEL", "定时删除");
operationInfoMap.put("HLT", "设置高亮");
operationInfoMap.put("EHL", "限时高亮");
operationInfoMap.put("ECL", "限时关闭");
operationInfoMap.put("EOP", "限时打开");
operationInfoMap.put("CLS", "关闭");
operationInfoMap.put("OPN", "打开");
operationInfoMap.put("DWN", "下沉");
operationInfoMap.put("BMP", "提升");
operationInfoMap.put("STK", "置顶");
operationInfoMap.put("UST", "解除置顶");
operationInfoMap.put("EST", "限时置顶");
operationInfoMap.put("DIG", "加入精华");
operationInfoMap.put("UDG", "解除精华");
operationInfoMap.put("EDI", "限时精华");
operationInfoMap.put("DEL", "删除");
operationInfoMap.put("TYP", "分类");
operationInfoMap.put("REC", "推荐主题");
operationInfoMap.put("URE", "解除推荐");
operationInfoMap.put("DLP", "删除回复");
operationInfoMap.put("BNP", "屏蔽帖子");
operationInfoMap.put("UBN", "解除屏蔽");
operationInfoMap.put("CPY", "复制");
operationInfoMap.put("MRG", "合并");
operationInfoMap.put("SPL", "分割");
}
public BaseVO getFinalBaseVO(Map<String,Object> transfersMap){
String operation = (String)transfersMap.get("operation");
String[] moderates = (String[])transfersMap.get("moderates");
String fid = (String)transfersMap.get("fid");
Float timeoffset = (Float)transfersMap.get("timeoffset");
String modreasons = (String)transfersMap.get("modreasons");
String reasonpm = (String)transfersMap.get("reasonpm");
String fromWhere = (String)transfersMap.get("fromWhere");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
BaseVO baseVO = null;
if(operation.equals("move")){
baseVO = geFinalTopicAdmin_MoveVO((Short)transfersMap.get("groupid"),(Members)transfersMap.get("member"));
}else if(operation.equals("close")){
baseVO = getCloseOrOpenTopicVO(moderates);
}else if(operation.equals("stick")||operation.equals("digest")){
baseVO = geToTopAndEliteVO(transfersMap);
}else if(operation.equals("type")){
baseVO = geTopicClassVO(fid);
}else if(operation.equals("highlight")){
baseVO = getHighLightVO(transfersMap);
}else if(operation.equals("delete")
||operation.equals("bump")
||operation.equals("delpost")
||operation.equals("recommend")
||operation.equals("deleteMirrorImage")){
baseVO = new BaseVO();
}
baseVO.setPageInfo((String)transfersMap.get("pageInfo"));
DataBaseDao dataBaseDao = ((DataBaseDao)BeanFactory.getBean("dataBaseDao"));
List<Map<String,String>> fid_NameMapList = baseVO.getFid_NameMapList();
List<Map<String,String>> result_SF = dataBaseDao.executeQuery("SELECT f.name, f.type, f.fup FROM "+tableprefix+"forums AS f WHERE f.fid="+fid);
String forumName = "";
if(result_SF!=null&&result_SF.size()>0){
Map<String,String> resultMap = result_SF.get(0);
forumName = resultMap.get("name");
if(resultMap!=null){
if("sub".equals(resultMap.get("type"))){
List<Map<String,String>> result_SF2 = dataBaseDao.executeQuery("SELECT f.name FROM "+tableprefix+"forums AS f WHERE f.fid="+resultMap.get("fup"));
if(result_SF2!=null&&result_SF2.size()>0){
Map<String,String> tempFDB = result_SF2.get(0);
if(tempFDB!=null){
Map<String,String> fid_NameMap2 = new HashMap<String, String>();
fid_NameMap2.put("fid", resultMap.get("fup"));
fid_NameMap2.put("fName", tempFDB.get("name"));
fid_NameMapList.add(fid_NameMap2);
}
}
}
}
}
Map<String,String> fid_NameMap = new HashMap<String, String>();
fid_NameMap.put("fid", fid);
fid_NameMap.put("fName", forumName);
fid_NameMapList.add(fid_NameMap);
if(operation.equals("highlight")||operation.equals("stick")||operation.equals("digest")||operation.equals("close")||operation.equals("move")||operation.equals("delete")){
Calendar calendar = Common.getGMTCalendar();
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
calendar.add(Calendar.DAY_OF_YEAR, 1);
calendar.add(Calendar.MINUTE, (int)(timeoffset*60));
String minTime = dateFormat.format(calendar.getTime());
calendar.add(Calendar.DAY_OF_YEAR, -1);
calendar.add(Calendar.MONTH, 6);
String maxTime = dateFormat.format(calendar.getTime());
dateFormat = null;
baseVO.setMaxTime(maxTime);
baseVO.setMinTime(minTime);
}
List<String> reasonList = baseVO.getReasonList();
String[] modreasonsArray = modreasons.split("\n");
if(modreasonsArray!=null){
for(int i = 0;i<modreasonsArray.length;i++){
reasonList.add(modreasonsArray[i]);
}
}
if(reasonpm.equals("1")){
baseVO.setNecesseryInfo(true);
}else if(reasonpm.equals("2")){
baseVO.setNecessaryToSendMessage(true);
}else if(reasonpm.equals("3")){
baseVO.setNecesseryInfo(true);
baseVO.setNecessaryToSendMessage(true);
}
baseVO.setFid(fid);
baseVO.setForumName(forumName);
if(fromWhere==null){
baseVO.setShowTopicName(true);
Threads threads = ((ThreadsDao)BeanFactory.getBean("threadsDao")).findByTid(Integer.valueOf(moderates[0]));
if(threads==null){
return null;
}
baseVO.setTopicName(threads.getSubject());
baseVO.setTopicId(moderates[0]);
}
List<Integer> tidList = new ArrayList<Integer>();
for(String tid : moderates){
tidList.add(Integer.valueOf(tid));
}
if(tidList.size()>1){
baseVO.setSingleThread(false);
List<ThreadInfo> threadInfoList = baseVO.getThreadInfoList();
List<Threads> threadsList = ((ThreadsDao)BeanFactory.getBean("threadsDao")).getThreadsByThreadIdList(tidList);
for(int i = 0;i<threadsList.size();i++){
Threads threads = threadsList.get(i);
String lastPostString = threads.getLastpost()+"000";
Long lastPostLong = Long.valueOf(lastPostString);
ThreadInfo threadInfo = baseVO.geThreadInfo();
threadInfo.setAuthorId(threads.getAuthorid().toString());
threadInfo.setAuthorName(threads.getAuthor());
threadInfo.setLastpost(simpleDateFormat.format(lastPostLong));
threadInfo.setLastPosterName(threads.getLastposter());
threadInfo.setReplies(threads.getReplies().toString());
threadInfo.setThreadId(threads.getTid().toString());
threadInfo.setTitle(threads.getSubject());
threadInfoList.add(threadInfo);
}
}else if(tidList.size()==1){
baseVO.setSingleThread(true);
baseVO.setThreadId(moderates[0]);
String[] tempArray = new String[]{"stick", "digest", "highlight", "close", "supe_push", "recommend"};
String actionCN = "";
MessageResources messageResources = (MessageResources)transfersMap.get("messageResources");
Locale locale = (Locale)transfersMap.get("locale");
for(String operationInA : tempArray){
if(operationInA.equals(operation)){
List<Log> logList = baseVO.getLogList();
List<Map<String,String>> resultList = dataBaseDao.executeQuery("SELECT * FROM "+tableprefix+"threadsmod WHERE tid='"+moderates[0]+"' ORDER BY dateline DESC");
for(int j = 0;j<resultList.size();j++){
Map<String,String> resultMap = resultList.get(j);
String tempAction = resultMap.get("action");
Log log = baseVO.getLog();
String[] actionArray= {"CLS","DIG","HLT","OPN","STK"};
if(Arrays.binarySearch(actionArray, tempAction)>-1){
log.setExpiretion("永久有效");
}else{
String expirationString = resultMap.get("expiration")+"000";
Long expirationLong = Long.valueOf(expirationString);
if(expirationLong>0){
log.setExpiretion(simpleDateFormat.format(expirationLong));
}else{
log.setExpiretion("");
}
}
if(operationInfoMap.get(tempAction)==null){
List<Map<String,String>> magicInfoML = dataBaseDao.executeQuery("SELECT name FROM "+tableprefix+"magics WHERE identifier='"+tempAction+"'");
if(magicInfoML!=null&&magicInfoML.size()>0){
actionCN = "道具操作"+"("+magicInfoML.get(0).get("name")+")";
}
}else{
actionCN = messageResources.getMessage(locale, tempAction);
}
log.setOperation(actionCN);
String datelineString = resultMap.get("dateline")+"000";
log.setOperationTime(simpleDateFormat.format(Long.valueOf(datelineString)));
log.setUid(resultMap.get("uid"));
log.setUsername(resultMap.get("username"));
String css = "";
if(resultMap.get("status").equals("0")){
css = "style=\"text-decoration: line-through\" disabled";
}
log.setCss(css);
logList.add(log);
}
break;
}
}
baseVO.setShowLogList(baseVO.getLogList().size()>0);
}
return baseVO;
}
private HighLightVO getHighLightVO(Map<String,Object> transfersMap){
HighLightVO highLightVO = new HighLightVO();
String[] moderates = (String[])transfersMap.get("moderates");
if(moderates==null||moderates.length!=1){
return highLightVO;
}
String sql = "SELECT highlight FROM "+tableprefix+"threads WHERE tid="+moderates[0];
DataBaseDao dataBaseDao = ((DataBaseDao)BeanFactory.getBean("dataBaseDao"));
List<Map<String,String>> result = dataBaseDao.executeQuery(sql);
if(result!=null&&result.size()>0){
Map<String,String> resultMap = result.get(0);
int highlight = Integer.parseInt(resultMap.get("highlight"));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -