Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
4
Issues
4
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
段启岩
beyond-clouds
Commits
af9fedee
Commit
af9fedee
authored
Feb 11, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新用户统计信息逻辑
parent
fb93d201
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
77 additions
and
66 deletions
+77
-66
src/main/java/cn/meteor/beyondclouds/modules/user/listener/UserStatisticsListener.java
+77
-66
No files found.
src/main/java/cn/meteor/beyondclouds/modules/user/listener/UserStatisticsListener.java
View file @
af9fedee
...
...
@@ -3,15 +3,20 @@ package cn.meteor.beyondclouds.modules.user.listener;
import
cn.meteor.beyondclouds.core.listener.DataItemChangeListener
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemChangeMessage
;
import
cn.meteor.beyondclouds.core.queue.message.DataItemType
;
import
cn.meteor.beyondclouds.modules.blog.entity.Blog
;
import
cn.meteor.beyondclouds.modules.blog.service.IBlogService
;
import
cn.meteor.beyondclouds.modules.post.entity.Post
;
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.service.IQuestionService
;
import
cn.meteor.beyondclouds.modules.queue.service.IMessageQueueService
;
import
cn.meteor.beyondclouds.modules.user.entity.UserFollow
;
import
cn.meteor.beyondclouds.modules.user.entity.UserStatistics
;
import
cn.meteor.beyondclouds.modules.user.service.IUserFollowService
;
import
cn.meteor.beyondclouds.modules.user.service.IUserStatisticsService
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
...
...
@@ -30,6 +35,19 @@ public class UserStatisticsListener implements DataItemChangeListener {
private
IMessageQueueService
messageQueueService
;
private
IBlogService
blogService
;
private
IPostService
postService
;
private
IProjectService
projectService
;
private
IQuestionService
questionService
;
@Autowired
public
void
setQuestionService
(
IQuestionService
questionService
)
{
this
.
questionService
=
questionService
;
}
@Autowired
public
UserStatisticsListener
(
IUserStatisticsService
userStatisticsService
,
IUserFollowService
userFollowService
,
IBlogService
blogService
,
IProjectService
projectService
,
IPostService
postService
,
IQuestionService
questionService
)
{
this
.
userStatisticsService
=
userStatisticsService
;
...
...
@@ -37,116 +55,109 @@ public class UserStatisticsListener implements DataItemChangeListener {
}
@Autowired
public
void
set
MessageQueueService
(
IMessageQueueService
messageQueue
Service
)
{
this
.
messageQueueService
=
messageQueue
Service
;
public
void
set
BlogService
(
IBlogService
blog
Service
)
{
this
.
blogService
=
blog
Service
;
}
@Override
public
void
onDataItemAdd
(
DataItemChangeMessage
dataItemChangeMessage
)
{
DataItemType
itemType
=
dataItemChangeMessage
.
getItemType
();
Serializable
itemId
=
dataItemChangeMessage
.
getItemId
();
String
operatorId
=
dataItemChangeMessage
.
getOperatorId
();
// 关注用户
if
(
itemType
.
equals
(
DataItemType
.
USER_FOLLOW
))
{
UserFollow
userFollow
=
userFollowService
.
getById
(
itemId
);
// 新增被关注用户的粉丝量
increaseUserStatisticValue
(
userFollow
.
getFollowedId
(),
"fans_num"
);
// 新增关注者的关注量
increaseUserStatisticValue
(
userFollow
.
getFollowerId
(),
"followed_num"
);
@Autowired
public
void
setPostService
(
IPostService
postService
)
{
this
.
postService
=
postService
;
}
// 发布博客
if
(
itemType
.
equals
(
DataItemType
.
BLOG
))
{
// 新增发博客的用户的博客发布量
increaseUserStatisticValue
(
operatorId
,
"blog_num"
);
@Autowired
public
void
setProjectService
(
IProjectService
projectService
)
{
this
.
projectService
=
projectService
;
}
// 发布项目
if
(
itemType
.
equals
(
DataItemType
.
PROJECT
))
{
// 新增发项目的用户的项目发布量
increaseUserStatisticValue
(
operatorId
,
"project_num"
);
@Autowired
public
void
setMessageQueueService
(
IMessageQueueService
messageQueueService
)
{
this
.
messageQueueService
=
messageQueueService
;
}
// 发布动态
if
(
itemType
.
equals
(
DataItemType
.
POST
))
{
// 新增发动态的用户的动态发布量
increaseUserStatisticValue
(
operatorId
,
"post_num"
);
@Override
public
void
onDataItemAdd
(
DataItemChangeMessage
dataItemChangeMessage
)
{
onDataChange
(
dataItemChangeMessage
);
}
// 发布问答
if
(
itemType
.
equals
(
DataItemType
.
QUESTION
))
{
// 新增发问答的用户的问答发布量
increaseUserStatisticValue
(
operatorId
,
"question_num"
);
@Override
public
void
onDataItemDelete
(
DataItemChangeMessage
dataItemChangeMessage
)
{
onDataChange
(
dataItemChangeMessage
);
}
// 修改完用户统计信息后发送用户统计信息修改的通知
messageQueueService
.
sendDataItemChangeMessage
(
DataItemChangeMessage
.
updateMessage
(
DataItemType
.
USER_STATISTICS
,
itemId
,
(
String
)
itemId
));
}
@Override
public
void
onDataItemDelete
(
DataItemChangeMessage
dataItemChangeMessage
)
{
/**
* 汇总ADD和delete消息
* @param dataItemChangeMessage
*/
private
void
onDataChange
(
DataItemChangeMessage
dataItemChangeMessage
)
{
DataItemType
itemType
=
dataItemChangeMessage
.
getItemType
();
Serializable
itemId
=
dataItemChangeMessage
.
getItemId
();
String
operatorId
=
dataItemChangeMessage
.
getOperatorId
();
//
取关
用户
//
关注
用户
if
(
itemType
.
equals
(
DataItemType
.
USER_FOLLOW
))
{
UserFollow
userFollow
=
userFollowService
.
getById
(
itemId
);
// 减少被关注用户的粉丝量
decreaseUserStatisticValue
(
userFollow
.
getFollowedId
(),
"fans_num"
);
// 减少关注者的关注量
decreaseUserStatisticValue
(
userFollow
.
getFollowerId
(),
"followed_num"
);
// 更新被关注用户的粉丝量
QueryWrapper
<
UserFollow
>
followedUserFansNumQueryWrapper
=
new
QueryWrapper
<>();
followedUserFansNumQueryWrapper
.
eq
(
"followed_id"
,
userFollow
.
getFollowedId
());
long
followedUserFansNum
=
userFollowService
.
count
(
followedUserFansNumQueryWrapper
);
updateUserStatisticValue
(
userFollow
.
getFollowedId
(),
"fans_num"
,
followedUserFansNum
);
// 更新关注者的关注量
QueryWrapper
<
UserFollow
>
followerUserFollowedNumQueryWrapper
=
new
QueryWrapper
<>();
followerUserFollowedNumQueryWrapper
.
eq
(
"follower_id"
,
userFollow
.
getFollowerId
());
long
followerUserFollowedNum
=
userFollowService
.
count
(
followerUserFollowedNumQueryWrapper
);
updateUserStatisticValue
(
userFollow
.
getFollowerId
(),
"fans_num"
,
followerUserFollowedNum
);
}
//
删除
博客
//
发布
博客
if
(
itemType
.
equals
(
DataItemType
.
BLOG
))
{
// 减少发博客的用户的博客发布量
decreaseUserStatisticValue
(
operatorId
,
"blog_num"
);
// 更新博客发布量
QueryWrapper
<
Blog
>
blogQueryWrapper
=
new
QueryWrapper
<>();
blogQueryWrapper
.
eq
(
"user_id"
,
itemId
);
updateUserStatisticValue
((
String
)
itemId
,
"blog_num"
,
blogService
.
count
(
blogQueryWrapper
));
}
//
删除
项目
//
发布
项目
if
(
itemType
.
equals
(
DataItemType
.
PROJECT
))
{
// 减少发项目的用户的项目发布量
decreaseUserStatisticValue
(
operatorId
,
"project_num"
);
// 更新项目发布量
QueryWrapper
<
Project
>
projectQueryWrapper
=
new
QueryWrapper
<>();
projectQueryWrapper
.
eq
(
"user_id"
,
itemId
);
updateUserStatisticValue
((
String
)
itemId
,
"project_num"
,
projectService
.
count
(
projectQueryWrapper
));
}
//
删除
动态
//
发布
动态
if
(
itemType
.
equals
(
DataItemType
.
POST
))
{
// 减少发动态的用户的动态发布量
decreaseUserStatisticValue
(
operatorId
,
"post_num"
);
// 更新动态发布量
QueryWrapper
<
Post
>
postQueryWrapper
=
new
QueryWrapper
<>();
postQueryWrapper
.
eq
(
"user_id"
,
itemId
);
updateUserStatisticValue
((
String
)
itemId
,
"post_num"
,
postService
.
count
(
postQueryWrapper
));
}
//
删除
问答
//
发布
问答
if
(
itemType
.
equals
(
DataItemType
.
QUESTION
))
{
// 减少发问答的用户的问答发布量
decreaseUserStatisticValue
(
operatorId
,
"question_num"
);
// 更新问答发布量
QueryWrapper
<
Question
>
questionQueryWrapper
=
new
QueryWrapper
<>();
questionQueryWrapper
.
eq
(
"user_id"
,
itemId
);
updateUserStatisticValue
((
String
)
itemId
,
"question_num"
,
questionService
.
count
(
questionQueryWrapper
));
}
// 修改完用户统计信息后发送用户统计信息修改的通知
messageQueueService
.
sendDataItemChangeMessage
(
DataItemChangeMessage
.
updateMessage
(
DataItemType
.
USER_STATISTICS
,
itemId
,
(
String
)
itemId
));
}
/**
* 对用户统计信息进行加1操作
* @param userId
* @param column
*/
private
void
increaseUserStatisticValue
(
String
userId
,
String
column
)
{
updateUserStatistics
(
userId
,
column
+
" = "
+
column
+
" + 1"
);
}
/**
*
对用户统计信息进行减1操作
*
更新用户统计信息
* @param userId
* @param column
* @param value
*/
private
void
decreaseUserStatisticValue
(
String
userId
,
String
column
)
{
updateUserStatistics
(
userId
,
column
+
" = "
+
column
+
" - 1"
);
private
<
T
>
void
updateUserStatisticValue
(
String
userId
,
String
column
,
T
value
)
{
updateUserStatistics
(
userId
,
column
+
" = "
+
value
);
}
/**
* 更新用户的统计信息
* @param userId
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment