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

📄 topicadminactionservice.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
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 + -