Просмотр исходного кода

Merge branch 'fix/bbs0720#220' into 'develop'

修改了论坛回复数量不会实时更新问题

See merge request o2oa/o2oa!1197
o2null 5 лет назад
Родитель
Сommit
8e2a0302b6

+ 3 - 2
o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/ThisApplication.java

@@ -11,6 +11,7 @@ import com.x.bbs.assemble.control.queue.QueueNewReplyNotify;
 import com.x.bbs.assemble.control.queue.QueueNewSubjectNotify;
 import com.x.bbs.assemble.control.schedule.SubjectReplyTotalStatisticTask;
 import com.x.bbs.assemble.control.schedule.SubjectTotalStatisticTask;
+import com.x.bbs.assemble.control.schedule.UserCountTodaySetZeroTask;
 import com.x.bbs.assemble.control.schedule.UserSubjectReplyPermissionStatisticTask;
 import com.x.bbs.assemble.control.service.BBSConfigSettingService;
 import com.x.bbs.assemble.control.service.BBSForumInfoServiceAdv;
@@ -44,8 +45,8 @@ public class ThisApplication {
 
 			context().startQueue( queueNewReplyNotify );
 			context().startQueue( queueNewSubjectNotify );
-
-			context.schedule( SubjectTotalStatisticTask.class, "0 10 * * * ?");
+			context.schedule( SubjectTotalStatisticTask.class, "0 0 1 * * ?"); //每天凌晨一点执行
+			context.schedule( UserCountTodaySetZeroTask.class, "0 1 0 * * ?"); //每天凌晨执行
 			context.schedule( SubjectReplyTotalStatisticTask.class, "0 40 * * * ?");
 			context.schedule( UserSubjectReplyPermissionStatisticTask.class, "0 0/30 * * * ?");
 		} catch (Exception e) {

+ 80 - 0
o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/schedule/UserCountTodaySetZeroTask.java

@@ -0,0 +1,80 @@
+package com.x.bbs.assemble.control.schedule;
+
+import java.util.List;
+
+import org.quartz.JobExecutionContext;
+
+import com.google.gson.Gson;
+import com.x.base.core.project.gson.XGsonBuilder;
+import com.x.base.core.project.logger.Logger;
+import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.schedule.AbstractJob;
+import com.x.base.core.project.tools.ListTools;
+import com.x.bbs.assemble.control.service.BBSOperationRecordService;
+import com.x.bbs.assemble.control.service.BBSPermissionInfoService;
+import com.x.bbs.assemble.control.service.BBSReplyInfoService;
+import com.x.bbs.assemble.control.service.BBSRoleInfoService;
+import com.x.bbs.assemble.control.service.BBSSubjectInfoService;
+import com.x.bbs.assemble.control.service.BBSUserInfoService;
+import com.x.bbs.assemble.control.service.bean.RoleAndPermission;
+import com.x.bbs.entity.BBSUserInfo;
+
+/**
+ * 定时代理,对所有用户的今日回复、今日主题 设置为0。
+ * 
+ * @author LIYI
+ *
+ */
+public class UserCountTodaySetZeroTask extends AbstractJob {
+
+	private Logger logger = LoggerFactory.getLogger(UserCountTodaySetZeroTask.class);
+
+	private BBSUserInfoService userInfoService = new BBSUserInfoService();
+	private BBSOperationRecordService operationRecordService = new BBSOperationRecordService();
+
+	@Override
+	public void schedule(JobExecutionContext jobExecutionContext) throws Exception {
+		process();
+		logger.info("Timertask[UserSubjectReplyStatisticTask] completed and excute success.");
+	}
+
+	/**
+	 * 执行定时代理的业务逻辑
+	 */
+	private void process() {
+		List<String> operationUserNames = null;
+		// 1、在BBS_OPERATIONRECORD表里查询参与BBS系统的所有人员姓名列表
+		try {
+			operationUserNames = operationRecordService.distinctAllOperationUserNames();
+		} catch (Exception e) {
+			logger.warn("system distinct all operation user names got an exception.");
+			logger.error(e);
+		}
+		if ( ListTools.isNotEmpty( operationUserNames )) {
+			// 2、遍历所有的人员,分别进行统计
+			operationUserNames.forEach(u -> {
+				userCountTodaySetZero(u);
+			});
+		}
+	}
+
+	private void userCountTodaySetZero(String userName) {
+		if (userName == null || userName.isEmpty()) {
+			return;
+		}
+		//个人回复数增加1
+		BBSUserInfo userInfo;
+		try {
+			userInfo = userInfoService.getByUserName(userName);
+			userInfo.setReplyCountToday((long)0);
+			userInfo.setSubjectCountToday((long)0);
+			userInfoService.save(userInfo);
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			logger.warn("system distinct all operation user names got an exception.");
+			logger.error(e);
+		}
+	
+	}
+
+}

+ 13 - 0
o2server/x_bbs_assemble_control/src/main/java/com/x/bbs/assemble/control/service/BBSReplyInfoService.java

@@ -17,6 +17,8 @@ import com.x.bbs.entity.BBSForumInfo;
 import com.x.bbs.entity.BBSReplyInfo;
 import com.x.bbs.entity.BBSSectionInfo;
 import com.x.bbs.entity.BBSSubjectInfo;
+import com.x.bbs.entity.BBSUserInfo;
+
 import org.apache.commons.lang3.StringUtils;
 
 /**
@@ -55,6 +57,8 @@ public class BBSReplyInfoService {
 		BBSSectionInfo _sectionInfo = null;
 		BBSSectionInfo _mainSectoinInfo = null;
 		BBSForumInfo _forumInfo = null;
+		BBSUserInfo _BBSUserInfo = null;
+		
 		if( _bBSReplyInfo.getId() == null ){
 			_bBSReplyInfo.setId( BBSReplyInfo.createId() );
 		}
@@ -111,7 +115,16 @@ public class BBSReplyInfoService {
 				_forumInfo.setReplyTotal( _forumInfo.getReplyTotal() + 1 );
 				emc.check( _forumInfo, CheckPersistType.all );
 			}
+			
 			emc.commit();
+			
+			//个人回复数增加1
+			BBSUserInfoService userInfoService = new BBSUserInfoService();
+			BBSUserInfo userInfo = userInfoService.getByUserName( _bBSReplyInfo.getCreatorName());
+			userInfo.setReplyCount(userInfo.getReplyCount() + 1);
+			userInfo.setReplyCountToday(userInfo.getReplyCountToday() + 1);
+			userInfoService.save(userInfo);
+			
 		}catch( Exception e ){
 			logger.warn( "system find BBSReplyInfo{'id':'"+_bBSReplyInfo.getId()+"'} got an exception!" );
 			throw e;