Commit 6293bf70 by 段启岩

用户统计字段新增字段

parent f2b7a690
......@@ -4,6 +4,7 @@ import cn.meteor.beyondclouds.modules.blog.entity.Blog;
import cn.meteor.beyondclouds.modules.post.entity.Post;
import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
import cn.meteor.beyondclouds.modules.user.entity.UserStatistics;
......@@ -56,6 +57,16 @@ public enum DataItemType {
QUESTION(Question.class),
/**
* 问题回答
*/
QUESTION_REPLY(QuestionReply.class),
/**
* 问题回答 被采纳
*/
QUESTION_REPLY_ACCEPT(QuestionReply.class),
/**
* 用户关注
*/
USER_FOLLOW(UserFollow .class);
......
package cn.meteor.beyondclouds.modules.question.service.impl;
import cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage;
import cn.meteor.beyondclouds.core.queue.message.DataItemType;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.enums.QuestionErrorCode;
......@@ -10,6 +12,7 @@ import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyCommentServ
import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.question.util.QuestionUtils;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.user.entity.User;
import cn.meteor.beyondclouds.modules.user.service.IUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -47,6 +50,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
private IUserService userService;
private IMessageQueueService messageQueueService;
@Autowired
public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService;
......@@ -58,6 +63,11 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
}
@Autowired
public void setMessageQueueService(IMessageQueueService messageQueueService) {
this.messageQueueService = messageQueueService;
}
@Autowired
public void setUserService(IUserService userService) {
this.userService = userService;
}
......@@ -95,6 +105,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
questionUpdateWrapper.set("reply_number",question.getReplyNumber() + 1)
.eq("question_id",questionId);
questionService.update(questionUpdateWrapper);
messageQueueService.sendDataItemChangeMessage(DataItemChangeMessage.addMessage(DataItemType.QUESTION_REPLY, questionReply.getReplyId(), userId));
}
@Override
......@@ -137,6 +149,8 @@ public class QuestionReplyServiceImpl extends ServiceImpl<QuestionReplyMapper, Q
.eq("question_id", questionId);
questionService.update(questionUpdateWrapper);
}
messageQueueService.sendDataItemChangeMessage(DataItemChangeMessage.updateMessage(DataItemType.QUESTION_REPLY_ACCEPT, questionReply.getReplyId(), userId));
}
@Override
......
......@@ -52,6 +52,12 @@ public class UserStatistics implements Serializable {
@ApiModelProperty(value = "问答数量")
private Integer questionNum;
@ApiModelProperty(value = "回答数量")
private Integer questionReplyNum;
@ApiModelProperty(value = "回答被采纳数量")
private Integer replyAcceptedNum;
@ApiModelProperty(value = "用户被访问的次数")
private Integer visitedNum;
......
......@@ -10,6 +10,8 @@ import cn.meteor.beyondclouds.modules.post.service.IPostService;
import cn.meteor.beyondclouds.modules.project.entity.Project;
import cn.meteor.beyondclouds.modules.project.service.IProjectService;
import cn.meteor.beyondclouds.modules.question.entity.Question;
import cn.meteor.beyondclouds.modules.question.entity.QuestionReply;
import cn.meteor.beyondclouds.modules.question.service.IQuestionReplyService;
import cn.meteor.beyondclouds.modules.question.service.IQuestionService;
import cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService;
import cn.meteor.beyondclouds.modules.user.entity.UserFollow;
......@@ -45,6 +47,8 @@ public class UserStatisticsListener implements DataItemChangeListener {
private IQuestionService questionService;
private IQuestionReplyService questionReplyService;
@Autowired
public void setQuestionService(IQuestionService questionService) {
this.questionService = questionService;
......@@ -57,6 +61,11 @@ public class UserStatisticsListener implements DataItemChangeListener {
}
@Autowired
public void setQuestionReplyService(IQuestionReplyService questionReplyService) {
this.questionReplyService = questionReplyService;
}
@Autowired
public void setBlogService(IBlogService blogService) {
this.blogService = blogService;
}
......@@ -86,13 +95,23 @@ public class UserStatisticsListener implements DataItemChangeListener {
onDataChange(dataItemChangeMessage);
}
/**
* 博客浏览量改变或回答被采纳
* @param dataItemChangeMessage
*/
@Override
public void onDataItemUpdate(DataItemChangeMessage dataItemChangeMessage) {
if (dataItemChangeMessage.getItemType().equals(DataItemType.BLOG_VIEW_NUM)) {
onDataChange(dataItemChangeMessage);
}
if (dataItemChangeMessage.getItemType().equals(DataItemType.QUESTION_REPLY_ACCEPT)) {
onDataChange(dataItemChangeMessage);
}
}
/**
* 汇总ADD和delete消息
* @param dataItemChangeMessage
......@@ -139,7 +158,7 @@ public class UserStatisticsListener implements DataItemChangeListener {
if (itemType.equals(DataItemType.BLOG_VIEW_NUM)) {
// 更新博客浏览量
updateUserStatisticValue((String) operatorId, "blog_view_num", blogService.allBlogViewCount(operatorId));
updateUserStatisticValue(operatorId, "blog_view_num", blogService.allBlogViewCount(operatorId));
}
if (itemType.equals(DataItemType.PROJECT)) {
......@@ -163,7 +182,24 @@ public class UserStatisticsListener implements DataItemChangeListener {
// 更新问答发布量
QueryWrapper<Question> questionQueryWrapper = new QueryWrapper<>();
questionQueryWrapper.eq("user_id", operatorId);
updateUserStatisticValue((String) itemId, "question_num", questionService.count(questionQueryWrapper));
updateUserStatisticValue(operatorId, "question_num", questionService.count(questionQueryWrapper));
}
if (itemType.equals(DataItemType.QUESTION_REPLY)) {
// 更新问题回答量
QueryWrapper<QuestionReply> questionReplyQueryWrapper = new QueryWrapper<>();
questionReplyQueryWrapper.eq("user_id", operatorId);
updateUserStatisticValue(operatorId, "question_reply_num", questionReplyService.count(questionReplyQueryWrapper));
}
if (itemType.equals(DataItemType.QUESTION_REPLY_ACCEPT)) {
// 更新答案被采纳量
QuestionReply questionReply = questionReplyService.getById(itemId);
String userId = questionReply.getUserId();
QueryWrapper<QuestionReply> questionReplyQueryWrapper = new QueryWrapper<>();
questionReplyQueryWrapper.eq("user_id", userId);
questionReplyQueryWrapper.eq("reply_status", 1);
updateUserStatisticValue(userId, "reply_accepted_num", questionReplyService.count(questionReplyQueryWrapper));
}
// 修改完用户统计信息后发送用户统计信息修改的通知
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment