Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
safe-campus-bbs
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
万成波
safe-campus-bbs
Commits
ae2aba8a
Commit
ae2aba8a
authored
Sep 12, 2025
by
yuwenwen
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.tangguo.ren/2300064869/safe-campus-bbs
parents
757a284f
8cdfe588
Changes
45
Hide whitespace changes
Inline
Side-by-side
Showing
45 changed files
with
556 additions
and
139 deletions
+556
-139
safe-campus-bbs-ui/src/views/pointsManage/PointsRulesDialog.vue
...ampus-bbs-ui/src/views/pointsManage/PointsRulesDialog.vue
+2
-2
safe-campus-bbs-ui/src/views/pointsManage/index.vue
safe-campus-bbs-ui/src/views/pointsManage/index.vue
+5
-4
safe-campus-bbs-ui/src/views/userLevel/index.vue
safe-campus-bbs-ui/src/views/userLevel/index.vue
+2
-2
safe-campus-common/src/main/java/com/tangguo/common/domain/OperateDetail.java
...rc/main/java/com/tangguo/common/domain/OperateDetail.java
+37
-0
safe-campus-common/src/main/java/com/tangguo/common/domain/PointsDetail.java
...src/main/java/com/tangguo/common/domain/PointsDetail.java
+5
-0
safe-campus-moment/pom.xml
safe-campus-moment/pom.xml
+1
-1
safe-campus-moment/src/main/java/com/tangguo/common/constant/MomentConstant.java
...main/java/com/tangguo/common/constant/MomentConstant.java
+3
-3
safe-campus-moment/src/main/java/com/tangguo/common/enums/OperateType.java
...t/src/main/java/com/tangguo/common/enums/OperateType.java
+31
-0
safe-campus-moment/src/main/java/com/tangguo/common/listener/OperateEvent.java
...c/main/java/com/tangguo/common/listener/OperateEvent.java
+29
-0
safe-campus-moment/src/main/java/com/tangguo/common/listener/OperateEventListener.java
...ava/com/tangguo/common/listener/OperateEventListener.java
+42
-0
safe-campus-moment/src/main/java/com/tangguo/controller/mobile/MBbsMomentController.java
...a/com/tangguo/controller/mobile/MBbsMomentController.java
+2
-2
safe-campus-moment/src/main/java/com/tangguo/controller/mobile/MBbsTopicController.java
...va/com/tangguo/controller/mobile/MBbsTopicController.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/controller/mobile/MBbsUserController.java
...ava/com/tangguo/controller/mobile/MBbsUserController.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/controller/pc/BbsMomentCommentController.java
...com/tangguo/controller/pc/BbsMomentCommentController.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/controller/pc/BbsSensitiveWordController.java
...com/tangguo/controller/pc/BbsSensitiveWordController.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/domain/OperateDetail.java
...oment/src/main/java/com/tangguo/domain/OperateDetail.java
+0
-16
safe-campus-moment/src/main/java/com/tangguo/domain/vo/DataImportResult.java
...src/main/java/com/tangguo/domain/vo/DataImportResult.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentCommentService.java
...in/java/com/tangguo/service/IBbsMomentCommentService.java
+8
-8
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentLikeService.java
.../main/java/com/tangguo/service/IBbsMomentLikeService.java
+8
-0
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentVoteOptionService.java
...java/com/tangguo/service/IBbsMomentVoteOptionService.java
+8
-8
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentVoteService.java
.../main/java/com/tangguo/service/IBbsMomentVoteService.java
+8
-0
safe-campus-moment/src/main/java/com/tangguo/service/IBbsSensitiveWordService.java
...in/java/com/tangguo/service/IBbsSensitiveWordService.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentCommentServiceImpl.java
...com/tangguo/service/impl/BbsMomentCommentServiceImpl.java
+15
-22
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentLikeServiceImpl.java
...va/com/tangguo/service/impl/BbsMomentLikeServiceImpl.java
+14
-0
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentServiceImpl.java
...n/java/com/tangguo/service/impl/BbsMomentServiceImpl.java
+47
-5
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentVoteOptionServiceImpl.java
.../tangguo/service/impl/BbsMomentVoteOptionServiceImpl.java
+14
-12
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentVoteServiceImpl.java
...va/com/tangguo/service/impl/BbsMomentVoteServiceImpl.java
+14
-0
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsSensitiveWordServiceImpl.java
...com/tangguo/service/impl/BbsSensitiveWordServiceImpl.java
+1
-1
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsTopicServiceImpl.java
...in/java/com/tangguo/service/impl/BbsTopicServiceImpl.java
+4
-4
safe-campus-points/src/main/java/com/tangguo/controller/BbsPointsGoodsController.java
...java/com/tangguo/controller/BbsPointsGoodsController.java
+5
-4
safe-campus-points/src/main/java/com/tangguo/controller/BbsUserPointsController.java
.../java/com/tangguo/controller/BbsUserPointsController.java
+11
-1
safe-campus-points/src/main/java/com/tangguo/controller/BbsUserPointsExchangeController.java
...m/tangguo/controller/BbsUserPointsExchangeController.java
+0
-24
safe-campus-points/src/main/java/com/tangguo/enums/PointsSettingType.java
...ts/src/main/java/com/tangguo/enums/PointsSettingType.java
+8
-0
safe-campus-points/src/main/java/com/tangguo/listener/OperateListener.java
...s/src/main/java/com/tangguo/listener/OperateListener.java
+43
-0
safe-campus-points/src/main/java/com/tangguo/listener/PointsListener.java
...ts/src/main/java/com/tangguo/listener/PointsListener.java
+1
-1
safe-campus-points/src/main/java/com/tangguo/mapper/BbsPointsSettingMapper.java
.../main/java/com/tangguo/mapper/BbsPointsSettingMapper.java
+5
-0
safe-campus-points/src/main/java/com/tangguo/mapper/BbsUserPointsMapper.java
...src/main/java/com/tangguo/mapper/BbsUserPointsMapper.java
+4
-1
safe-campus-points/src/main/java/com/tangguo/service/IBbsPointsSettingService.java
...in/java/com/tangguo/service/IBbsPointsSettingService.java
+17
-0
safe-campus-points/src/main/java/com/tangguo/service/IBbsUserPointsService.java
.../main/java/com/tangguo/service/IBbsUserPointsService.java
+9
-0
safe-campus-points/src/main/java/com/tangguo/service/impl/BbsPointsSettingServiceImpl.java
...com/tangguo/service/impl/BbsPointsSettingServiceImpl.java
+90
-4
safe-campus-points/src/main/java/com/tangguo/service/impl/BbsUserPointsServiceImpl.java
...va/com/tangguo/service/impl/BbsUserPointsServiceImpl.java
+13
-1
safe-campus-points/src/main/resources/mapper/BbsPointsSettingMapper.xml
...ints/src/main/resources/mapper/BbsPointsSettingMapper.xml
+14
-1
safe-campus-points/src/main/resources/mapper/BbsUserPointsMapper.xml
...-points/src/main/resources/mapper/BbsUserPointsMapper.xml
+23
-4
safe-campus-quartz/pom.xml
safe-campus-quartz/pom.xml
+5
-0
safe-campus-quartz/src/main/java/com/tangguo/quartz/task/RefreshTopicRankingTask.java
...java/com/tangguo/quartz/task/RefreshTopicRankingTask.java
+2
-2
No files found.
safe-campus-bbs-ui/src/views/pointsManage/PointsRulesDialog.vue
View file @
ae2aba8a
...
...
@@ -4,7 +4,7 @@
<div
class=
"add-box"
>
<div
class=
"label-box"
>
加分设置
</div>
<el-table
:data=
"addList"
>
<el-table-column
label=
"加分行为"
prop=
"
agent
Name"
align=
"center"
></el-table-column>
<el-table-column
label=
"加分行为"
prop=
"
operate
Name"
align=
"center"
></el-table-column>
<el-table-column
label=
"分值"
prop=
"operatePoints"
align=
"center"
>
<template
#default
="
{row}">
<el-input
v-model=
"row.operatePoints"
></el-input>
...
...
@@ -25,7 +25,7 @@
<div
class=
"decrease-box"
>
<div
class=
"label-box"
>
减分设置
</div>
<el-table
:data=
"decreaseList"
>
<el-table-column
label=
"减分行为"
prop=
"
agent
Name"
align=
"center"
></el-table-column>
<el-table-column
label=
"减分行为"
prop=
"
operate
Name"
align=
"center"
></el-table-column>
<el-table-column
label=
"分值"
prop=
"operatePoints"
align=
"center"
>
<
template
#default
="{
row
}"
>
<el-input
v-model=
"row.operatePoints"
></el-input>
...
...
safe-campus-bbs-ui/src/views/pointsManage/index.vue
View file @
ae2aba8a
...
...
@@ -17,10 +17,11 @@
</el-row>
<el-table
:data=
"tableList"
>
<el-table-column
label=
"序号"
width=
"55"
type=
"index"
align=
"center"
></el-table-column>
<el-table-column
label=
"姓名"
prop=
"nickName"
align=
"center"
></el-table-column>
<el-table-column
label=
"帐号"
prop=
"userName"
align=
"center"
></el-table-column>
<el-table-column
label=
"部门"
prop=
"deptName"
align=
"center"
></el-table-column>
<el-table-column
label=
"总积分"
prop=
"accumulatedPoints"
align=
"center"
></el-table-column>
<el-table-column
label=
"用户姓名"
prop=
"nickName"
align=
"center"
></el-table-column>
<el-table-column
label=
"用户名"
prop=
"userName"
align=
"center"
></el-table-column>
<el-table-column
label=
"所在部门"
prop=
"deptName"
align=
"center"
></el-table-column>
<el-table-column
label=
"会员等级"
prop=
"gradeName"
align=
"center"
></el-table-column>
<el-table-column
label=
"累计积分"
prop=
"accumulatedPoints"
align=
"center"
></el-table-column>
<el-table-column
label=
"可用积分"
prop=
"currentPoints"
align=
"center"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
>
<template
#default
="
{ row }">
...
...
safe-campus-bbs-ui/src/views/userLevel/index.vue
View file @
ae2aba8a
...
...
@@ -26,7 +26,7 @@
<el-table-column
label=
"排序"
prop=
"sort"
align=
"center"
></el-table-column>
<el-table-column
label=
"是否初始等级"
prop=
"sort"
align=
"center"
>
<
template
#default
="{
row
}"
>
<el-switch
v-model=
"row.isInitial"
active-text=
"是"
inactive-text=
"否"
:active-value=
"1"
<el-switch
v-model=
"row.isInitial"
:active-value=
"1"
:inactive-value=
"0"
@
change=
"(val)=>handleUpdateInitial(val,row)"
></el-switch>
</
template
>
</el-table-column>
...
...
@@ -141,4 +141,4 @@ export default {
overflow
:
auto
;
}
}
</
style
>
\ No newline at end of file
</
style
>
safe-campus-common/src/main/java/com/tangguo/common/domain/OperateDetail.java
0 → 100644
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
domain
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* 操作明细
*
* @author 谈笑
* @createTime 2025-08-29 17:23:29 星期五
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
OperateDetail
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
5020237125816721320L
;
/**
* 链路追踪Id
*/
private
String
linkTracId
;
/**
* 用户名
*/
private
String
userName
;
/**
* 操作编码 (积分配置编码)
*/
private
String
operateCode
;
}
safe-campus-common/src/main/java/com/tangguo/common/domain/PointsDetail.java
View file @
ae2aba8a
...
...
@@ -15,6 +15,11 @@ public class PointsDetail implements Serializable {
private
static
final
long
serialVersionUID
=
8057307839793769207L
;
/**
* 链路追踪Id
*/
private
String
linkTracId
;
/**
* 用户名 (必填)
*/
...
...
safe-campus-moment/pom.xml
View file @
ae2aba8a
...
...
@@ -17,7 +17,7 @@
<dependencies>
<dependency>
<groupId>
com.tangguo
</groupId>
<artifactId>
safe-campus-
quartz
</artifactId>
<artifactId>
safe-campus-
common
</artifactId>
</dependency>
</dependencies>
...
...
safe-campus-moment/src/main/java/com/tangguo/common/constant/
Topic
Constant.java
→
safe-campus-moment/src/main/java/com/tangguo/common/constant/
Moment
Constant.java
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
constant
;
/**
*
主题
常量
*
动态
常量
*
* @author 谈笑
* @createTime 2025-09-04 21:19:10 星期四
*/
public
interface
Topic
Constant
{
public
interface
Moment
Constant
{
/**
* 热搜主题
*/
String
HOT_
SCORE_CACHE_KEY
=
"topic.hot"
;
String
HOT_
TOPIC
=
"topic.hot"
;
}
safe-campus-moment/src/main/java/com/tangguo/common/enums/OperateType.java
0 → 100644
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
/**
* 积分事件枚举
*
* @author 谈笑
* @createTime 2025-09-09 11:09:01 星期二
*/
@Getter
@AllArgsConstructor
public
enum
OperateType
{
FBDT
(
"FBTD"
,
"发布动态"
),
DZDT
(
"DZDT"
,
"点赞动态"
),
PLDT
(
"PLDT"
,
"评论动态"
),
TPDT
(
"CYTP"
,
"投票动态"
),
SCDT
(
"SCDT"
,
"删除动态"
);
private
final
String
code
;
private
final
String
desc
;
}
safe-campus-moment/src/main/java/com/tangguo/common/listener/OperateEvent.java
0 → 100644
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
listener
;
import
com.tangguo.common.enums.OperateType
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 操作事件对象
*
* @author 谈笑
* @createTime 2025-09-09 11:27:22 星期二
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
OperateEvent
{
/**
* 用户名
*/
private
String
userName
;
/**
* 操作类型
*/
private
OperateType
operateType
;
}
safe-campus-moment/src/main/java/com/tangguo/common/listener/OperateEventListener.java
0 → 100644
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
listener
;
import
cn.hutool.core.util.IdUtil
;
import
com.tangguo.common.constant.ActiveMQConstant
;
import
com.tangguo.common.domain.OperateDetail
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.jms.core.JmsTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.event.TransactionalEventListener
;
import
javax.annotation.Resource
;
/**
* 操作事件监听器
*
* @author 谈笑
* @createTime 2025-09-09 11:26:28 星期二
*/
@Slf4j
@Component
public
class
OperateEventListener
{
@Resource
private
JmsTemplate
jmsTemplate
;
/**
* 处理用户操作事件
*
* @param event 事件对象
*/
@TransactionalEventListener
(
classes
=
OperateEvent
.
class
,
fallbackExecution
=
true
)
public
void
handleOperate
(
OperateEvent
event
)
{
OperateDetail
detail
=
new
OperateDetail
();
detail
.
setLinkTracId
(
IdUtil
.
fastSimpleUUID
());
detail
.
setUserName
(
event
.
getUserName
());
detail
.
setOperateCode
(
event
.
getOperateType
().
getCode
());
log
.
info
(
"=> 开始处理用户操作事件:{}"
,
detail
);
this
.
jmsTemplate
.
convertAndSend
(
ActiveMQConstant
.
Operate
.
USER_OPERATE
,
detail
);
}
}
safe-campus-moment/src/main/java/com/tangguo/controller/mobile/MBbsMomentController.java
View file @
ae2aba8a
...
...
@@ -51,7 +51,7 @@ public class MBbsMomentController {
*/
@GetMapping
(
"/moments"
)
public
TableDataInfo
getMoments
(
QueryMomentBO
bo
)
{
PageUtils
.
clear
Page
();
PageUtils
.
start
Page
();
List
<
BbsMomentListVO
>
moments
=
this
.
momentService
.
getMoments
(
bo
);
return
TableDataInfo
.
getDataTable
(
moments
);
}
...
...
@@ -166,7 +166,7 @@ public class MBbsMomentController {
@GetMapping
(
"/comments"
)
public
TableDataInfo
getMomentComments
(
@RequestParam
Long
momentId
)
{
String
username
=
SecurityUtils
.
getUsername
();
PageUtils
.
clear
Page
();
PageUtils
.
start
Page
();
List
<
BbsCommentDetailVO
>
dbComments
=
this
.
momentCommentService
.
getMomentComments
(
momentId
,
username
);
return
TableDataInfo
.
getDataTable
(
dbComments
);
}
...
...
safe-campus-moment/src/main/java/com/tangguo/controller/mobile/MBbsTopicController.java
View file @
ae2aba8a
...
...
@@ -80,7 +80,7 @@ public class MBbsTopicController {
*/
@GetMapping
(
"/moments"
)
public
TableDataInfo
getTopicMoments
(
QueryMomentBO
bo
)
{
PageUtils
.
clear
Page
();
PageUtils
.
start
Page
();
List
<
BbsMomentListVO
>
dbMoments
=
this
.
momentService
.
getMoments
(
bo
);
return
TableDataInfo
.
getDataTable
(
dbMoments
);
}
...
...
safe-campus-moment/src/main/java/com/tangguo/controller/mobile/MBbsUserController.java
View file @
ae2aba8a
...
...
@@ -49,7 +49,7 @@ public class MBbsUserController {
@GetMapping
(
"/moments"
)
public
TableDataInfo
getUserMoments
(
String
content
)
{
String
username
=
SecurityUtils
.
getUsername
();
PageUtils
.
clear
Page
();
PageUtils
.
start
Page
();
List
<
BbsMomentListVO
>
moments
=
this
.
momentService
.
getUserMoments
(
username
,
content
);
return
TableDataInfo
.
getDataTable
(
moments
);
}
...
...
safe-campus-moment/src/main/java/com/tangguo/controller/pc/BbsMomentCommentController.java
View file @
ae2aba8a
...
...
@@ -63,7 +63,7 @@ public class BbsMomentCommentController extends BaseController {
@Log
(
title
=
"动态评论记录"
,
businessType
=
BusinessType
.
DELETE
)
@DeleteMapping
(
"/{id}"
)
public
AjaxResult
remove
(
@PathVariable
Long
id
)
{
this
.
bbsMomentCommentService
.
delete
Comment
(
id
);
this
.
bbsMomentCommentService
.
delete
MomentComments
(
id
);
return
AjaxResult
.
success
();
}
...
...
safe-campus-moment/src/main/java/com/tangguo/controller/pc/BbsSensitiveWordController.java
View file @
ae2aba8a
...
...
@@ -6,7 +6,7 @@ import com.tangguo.common.core.domain.AjaxResult;
import
com.tangguo.common.core.page.TableDataInfo
;
import
com.tangguo.common.enums.BusinessType
;
import
com.tangguo.domain.BbsSensitiveWord
;
import
com.tangguo.domain.DataImportResult
;
import
com.tangguo.domain.
vo.
DataImportResult
;
import
com.tangguo.service.IBbsSensitiveWordService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
safe-campus-moment/src/main/java/com/tangguo/domain/OperateDetail.java
deleted
100644 → 0
View file @
757a284f
package
com
.
tangguo
.
domain
;
import
lombok.Data
;
/**
* 操作明细
*
* @author 谈笑
* @createTime 2025-09-04 22:33:53 星期四
*/
@Data
public
class
OperateDetail
{
}
safe-campus-moment/src/main/java/com/tangguo/domain/DataImportResult.java
→
safe-campus-moment/src/main/java/com/tangguo/domain/
vo/
DataImportResult.java
View file @
ae2aba8a
package
com
.
tangguo
.
domain
;
package
com
.
tangguo
.
domain
.
vo
;
import
lombok.Data
;
...
...
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentCommentService.java
View file @
ae2aba8a
...
...
@@ -32,14 +32,6 @@ public interface IBbsMomentCommentService extends IService<BbsMomentComment> {
BbsMomentComment
getBbsMomentComment
(
Long
commentId
);
/**
* 删除评论
*
* @param commentId 评论Id
*/
void
deleteComment
(
Long
commentId
);
/**
* 查询动态评论
*
...
...
@@ -59,4 +51,12 @@ public interface IBbsMomentCommentService extends IService<BbsMomentComment> {
*/
List
<
BbsCommentDetailVO
>
getMomentComments
(
Long
momentId
,
String
userName
);
/**
* 删除动态评论记录
*
* @param momentId 动态Id
*/
void
deleteMomentComments
(
Long
momentId
);
}
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentLikeService.java
View file @
ae2aba8a
...
...
@@ -38,4 +38,12 @@ public interface IBbsMomentLikeService extends IService<BbsMomentLike> {
*/
void
deleteMomentLike
(
Long
momentId
,
String
userName
);
/**
* 删除动态点赞记录
*
* @param momentId 动态Id
*/
void
deleteMomentLikes
(
Long
momentId
);
}
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentVoteOptionService.java
View file @
ae2aba8a
...
...
@@ -43,14 +43,6 @@ public interface IBbsMomentVoteOptionService extends IService<BbsMomentVoteOptio
void
addVoteOptions
(
BbsMoment
moment
,
List
<
CreateMomentBO
.
VoteOption
>
voteOptions
);
/**
* 删除动态投票选项
*
* @param momentId 动态Id
*/
void
deleteVoteOptions
(
Long
momentId
);
/**
* 查询投票选项
*
...
...
@@ -69,4 +61,12 @@ public interface IBbsMomentVoteOptionService extends IService<BbsMomentVoteOptio
*/
List
<
BbsVoteOptionVO
>
getVoteOptionCount
(
Long
momentId
);
/**
* 删除动态投票选项
*
* @param momentId 动态Id
*/
void
deleteMomentVoteOptions
(
Long
momentId
);
}
safe-campus-moment/src/main/java/com/tangguo/service/IBbsMomentVoteService.java
View file @
ae2aba8a
...
...
@@ -43,4 +43,12 @@ public interface IBbsMomentVoteService extends IService<BbsMomentVote> {
*/
List
<
BbsVoteVO
>
getMomentVotes
(
Long
momentId
,
String
optionCode
);
/**
* 删除动态投票记录
*
* @param momentId 动态Id
*/
void
deleteMomentVotes
(
Long
momentId
);
}
safe-campus-moment/src/main/java/com/tangguo/service/IBbsSensitiveWordService.java
View file @
ae2aba8a
...
...
@@ -2,7 +2,7 @@ package com.tangguo.service;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.tangguo.domain.BbsSensitiveWord
;
import
com.tangguo.domain.DataImportResult
;
import
com.tangguo.domain.
vo.
DataImportResult
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
...
...
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentCommentServiceImpl.java
View file @
ae2aba8a
package
com
.
tangguo
.
service
.
impl
;
import
cn.hutool.core.collection.CollUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.tangguo.common.enums.CommentStatus
;
import
com.tangguo.common.exception.ServiceException
;
import
com.tangguo.domain.BbsMomentComment
;
import
com.tangguo.domain.vo.BbsCommentDetailVO
;
import
com.tangguo.mapper.BbsMomentCommentMapper
;
...
...
@@ -57,26 +56,6 @@ public class BbsMomentCommentServiceImpl extends ServiceImpl<BbsMomentCommentMap
}
/**
* 删除评论
*
* @param commentId 评论Id
*/
@Override
public
void
deleteComment
(
Long
commentId
)
{
BbsMomentComment
dbComment
=
this
.
getById
(
commentId
);
if
(
Objects
.
isNull
(
dbComment
))
{
throw
new
ServiceException
(
"删除失败,未查询到当前评论数据。"
);
}
BbsMomentComment
updComment
=
new
BbsMomentComment
();
updComment
.
setId
(
dbComment
.
getId
());
updComment
.
setStatus
(
CommentStatus
.
SC
.
getStatus
());
updComment
.
setDeleteComment
(
"该评论已被删除"
);
this
.
updateById
(
updComment
);
}
/**
* 查询动态评论
*
...
...
@@ -106,4 +85,18 @@ public class BbsMomentCommentServiceImpl extends ServiceImpl<BbsMomentCommentMap
return
this
.
baseMapper
.
selectMomentComments
(
momentId
,
userName
);
}
/**
* 删除动态评论记录
*
* @param momentId 动态Id
*/
@Override
public
void
deleteMomentComments
(
Long
momentId
)
{
this
.
count
(
Wrappers
.
lambdaQuery
(
BbsMomentComment
.
class
)
.
eq
(
BbsMomentComment:
:
getMomentId
,
momentId
)
);
}
}
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentLikeServiceImpl.java
View file @
ae2aba8a
...
...
@@ -69,4 +69,18 @@ public class BbsMomentLikeServiceImpl extends ServiceImpl<BbsMomentLikeMapper, B
);
}
/**
* 删除动态点赞记录
*
* @param momentId 动态Id
*/
@Override
public
void
deleteMomentLikes
(
Long
momentId
)
{
this
.
remove
(
Wrappers
.
lambdaQuery
(
BbsMomentLike
.
class
)
.
eq
(
BbsMomentLike:
:
getMomentId
,
momentId
)
);
}
}
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentServiceImpl.java
View file @
ae2aba8a
...
...
@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import
com.tangguo.common.core.domain.entity.SysUser
;
import
com.tangguo.common.enums.*
;
import
com.tangguo.common.exception.ServiceException
;
import
com.tangguo.common.listener.OperateEvent
;
import
com.tangguo.common.utils.SecurityUtils
;
import
com.tangguo.common.utils.SensitiveWordUtils
;
import
com.tangguo.domain.BbsMoment
;
...
...
@@ -19,6 +20,7 @@ import com.tangguo.domain.vo.*;
import
com.tangguo.mapper.BbsMomentMapper
;
import
com.tangguo.service.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.StopWatch
;
...
...
@@ -38,6 +40,9 @@ import java.util.stream.Collectors;
@Service
public
class
BbsMomentServiceImpl
extends
ServiceImpl
<
BbsMomentMapper
,
BbsMoment
>
implements
IBbsMomentService
{
@Resource
private
ApplicationEventPublisher
eventPublisher
;
@Resource
private
BbsMomentMapper
bbsMomentMapper
;
...
...
@@ -93,10 +98,21 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
void
deleteMoment
(
Long
id
)
{
this
.
removeById
(
id
);
BbsMoment
dbMoment
=
this
.
getById
(
id
);
if
(
Objects
.
isNull
(
dbMoment
))
{
throw
new
ServiceException
(
"删除失败,未查询到当前动态数据。"
);
}
Long
dbMomentId
=
dbMoment
.
getId
();
this
.
removeById
(
dbMomentId
);
this
.
attachmentsService
.
deleteAttachments
(
dbMomentId
);
this
.
voteService
.
deleteMomentVotes
(
dbMomentId
);
this
.
voteOptionService
.
deleteMomentVoteOptions
(
dbMomentId
);
this
.
commentService
.
deleteMomentComments
(
dbMomentId
);
}
/**
* 查询用户动态统计
*
...
...
@@ -179,6 +195,10 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
List
<
CreateMomentBO
.
VoteOption
>
voteOptions
=
bo
.
getVoteOptions
();
this
.
voteOptionService
.
addVoteOptions
(
newMoment
,
voteOptions
);
}
// 发布用户操作事件
OperateEvent
operateEvent
=
new
OperateEvent
(
username
,
OperateType
.
FBDT
);
this
.
eventPublisher
.
publishEvent
(
operateEvent
);
}
...
...
@@ -198,7 +218,17 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
if
(!
dbMoment
.
getUserName
().
equals
(
username
))
{
throw
new
ServiceException
(
"删除失败,没有对当前动态数据的操作权限。"
);
}
// 删除动态以及相关数据
this
.
removeById
(
dbMoment
.
getId
());
this
.
attachmentsService
.
deleteAttachments
(
dbMoment
.
getId
());
this
.
voteService
.
deleteMomentVotes
(
dbMoment
.
getId
());
this
.
voteOptionService
.
deleteMomentVoteOptions
(
dbMoment
.
getId
());
this
.
commentService
.
deleteMomentComments
(
dbMoment
.
getId
());
// 发布用户操作事件
OperateEvent
operateEvent
=
new
OperateEvent
(
username
,
OperateType
.
SCDT
);
this
.
eventPublisher
.
publishEvent
(
operateEvent
);
}
...
...
@@ -215,22 +245,22 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
throw
new
ServiceException
(
"点赞失败,未查询到当前动态数据。"
);
}
String
user
N
ame
=
SecurityUtils
.
getUsername
();
long
likeStatus
=
this
.
likeService
.
getUserMomentLikeCount
(
dbMoment
.
getId
(),
user
N
ame
);
String
user
n
ame
=
SecurityUtils
.
getUsername
();
long
likeStatus
=
this
.
likeService
.
getUserMomentLikeCount
(
dbMoment
.
getId
(),
user
n
ame
);
int
likeCount
=
dbMoment
.
getLikeCount
();
if
(
LikeStatus
.
LIKE
.
getStatus
()
==
bo
.
getLikeStatus
())
{
if
(
likeStatus
>
0
)
{
throw
new
ServiceException
(
"点赞失败,已对当前动态点赞。"
);
}
else
{
this
.
likeService
.
addMomentLike
(
dbMoment
.
getId
(),
user
N
ame
);
this
.
likeService
.
addMomentLike
(
dbMoment
.
getId
(),
user
n
ame
);
likeCount
++;
}
}
else
{
if
(
likeStatus
<
1
)
{
throw
new
ServiceException
(
"取消失败,没有对当前动态点赞。"
);
}
else
{
this
.
likeService
.
deleteMomentLike
(
dbMoment
.
getId
(),
user
N
ame
);
this
.
likeService
.
deleteMomentLike
(
dbMoment
.
getId
(),
user
n
ame
);
likeCount
--;
}
}
...
...
@@ -240,6 +270,10 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
updMoment
.
setId
(
dbMoment
.
getId
());
updMoment
.
setLikeCount
(
likeCount
);
this
.
updateById
(
updMoment
);
// 发布用户操作事件
OperateEvent
operateEvent
=
new
OperateEvent
(
username
,
OperateType
.
DZDT
);
this
.
eventPublisher
.
publishEvent
(
operateEvent
);
}
...
...
@@ -285,6 +319,10 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
updMoment
.
setId
(
dbMoment
.
getId
());
updMoment
.
setVoteCount
(
dbMoment
.
getVoteCount
()
+
1
);
this
.
updateById
(
updMoment
);
// 发布用户操作事件
OperateEvent
operateEvent
=
new
OperateEvent
(
username
,
OperateType
.
TPDT
);
this
.
eventPublisher
.
publishEvent
(
operateEvent
);
}
...
...
@@ -340,6 +378,10 @@ public class BbsMomentServiceImpl extends ServiceImpl<BbsMomentMapper, BbsMoment
updMoment
.
setId
(
dbMoment
.
getId
());
updMoment
.
setCommentCount
(
dbMoment
.
getCommentCount
()
+
1
);
this
.
updateById
(
updMoment
);
// 发布用户操作事件
OperateEvent
operateEvent
=
new
OperateEvent
(
dbUser
.
getUserName
(),
OperateType
.
TPDT
);
this
.
eventPublisher
.
publishEvent
(
operateEvent
);
}
...
...
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentVoteOptionServiceImpl.java
View file @
ae2aba8a
...
...
@@ -94,18 +94,6 @@ public class BbsMomentVoteOptionServiceImpl extends ServiceImpl<BbsMomentVoteOpt
}
/**
* 删除动态投票选项
*
* @param momentId 动态Id
*/
@Override
public
void
deleteVoteOptions
(
Long
momentId
)
{
this
.
remove
(
Wrappers
.
lambdaQuery
(
BbsMomentVoteOption
.
class
).
eq
(
BbsMomentVoteOption:
:
getMomentId
,
momentId
)
);
}
/**
* 查询投票选项
...
...
@@ -148,4 +136,18 @@ public class BbsMomentVoteOptionServiceImpl extends ServiceImpl<BbsMomentVoteOpt
return
ovs
;
}
/**
* 删除动态投票选项
*
* @param momentId 动态Id
*/
@Override
public
void
deleteMomentVoteOptions
(
Long
momentId
)
{
this
.
count
(
Wrappers
.
lambdaQuery
(
BbsMomentVoteOption
.
class
)
.
eq
(
BbsMomentVoteOption:
:
getMomentId
,
momentId
)
);
}
}
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsMomentVoteServiceImpl.java
View file @
ae2aba8a
...
...
@@ -70,4 +70,18 @@ public class BbsMomentVoteServiceImpl extends ServiceImpl<BbsMomentVoteMapper, B
return
this
.
baseMapper
.
selectVotes
(
momentId
,
optionCode
);
}
/**
* 删除动态投票记录
*
* @param momentId 动态Id
*/
@Override
public
void
deleteMomentVotes
(
Long
momentId
)
{
this
.
count
(
Wrappers
.
lambdaQuery
(
BbsMomentVote
.
class
)
.
eq
(
BbsMomentVote:
:
getMomentId
,
momentId
)
);
}
}
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsSensitiveWordServiceImpl.java
View file @
ae2aba8a
...
...
@@ -10,7 +10,7 @@ import com.tangguo.common.exception.ServiceException;
import
com.tangguo.common.utils.SensitiveWordUtils
;
import
com.tangguo.common.utils.StringUtils
;
import
com.tangguo.domain.BbsSensitiveWord
;
import
com.tangguo.domain.DataImportResult
;
import
com.tangguo.domain.
vo.
DataImportResult
;
import
com.tangguo.mapper.BbsSensitiveWordMapper
;
import
com.tangguo.service.IBbsSensitiveWordService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
safe-campus-moment/src/main/java/com/tangguo/service/impl/BbsTopicServiceImpl.java
View file @
ae2aba8a
...
...
@@ -6,7 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.tangguo.common.constant.
Topic
Constant
;
import
com.tangguo.common.constant.
Moment
Constant
;
import
com.tangguo.common.core.redis.RedisCache
;
import
com.tangguo.common.enums.TopicTopStatus
;
import
com.tangguo.common.exception.ServiceException
;
...
...
@@ -168,7 +168,7 @@ public class BbsTopicServiceImpl extends ServiceImpl<BbsTopicMapper, BbsTopic> i
@Override
public
void
refreshRankingTopic
()
{
this
.
baseMapper
.
refreshRankingTopic
();
this
.
redisCache
.
deleteObject
(
TopicConstant
.
HOT_SCORE_CACHE_KEY
);
this
.
redisCache
.
deleteObject
(
MomentConstant
.
HOT_TOPIC
);
}
...
...
@@ -179,10 +179,10 @@ public class BbsTopicServiceImpl extends ServiceImpl<BbsTopicMapper, BbsTopic> i
*/
@Override
public
List
<
BbsTopicListVO
>
getRankingTopic
()
{
List
<
BbsTopicListVO
>
topics
=
this
.
redisCache
.
getCacheObject
(
TopicConstant
.
HOT_SCORE_CACHE_KEY
);
List
<
BbsTopicListVO
>
topics
=
this
.
redisCache
.
getCacheObject
(
MomentConstant
.
HOT_TOPIC
);
if
(
CollUtil
.
isEmpty
(
topics
))
{
topics
=
this
.
baseMapper
.
selectRankingTopic
();
this
.
redisCache
.
setCacheObject
(
TopicConstant
.
HOT_SCORE_CACHE_KEY
,
topics
,
1
,
TimeUnit
.
HOURS
);
this
.
redisCache
.
setCacheObject
(
MomentConstant
.
HOT_TOPIC
,
topics
,
1
,
TimeUnit
.
HOURS
);
}
return
topics
;
}
...
...
safe-campus-points/src/main/java/com/tangguo/controller/BbsPointsGoodsController.java
View file @
ae2aba8a
package
com
.
tangguo
.
controller
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.tangguo.common.annotation.Log
;
import
com.tangguo.common.core.controller.BaseController
;
import
com.tangguo.common.core.domain.AjaxResult
;
...
...
@@ -34,7 +35,6 @@ public class BbsPointsGoodsController extends BaseController {
* 查询积分商品列表
*/
@ApiOperation
(
"查询积分商品列表"
)
@PreAuthorize
(
"@ss.hasPermi('goods:goods:list')"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
BbsPointsGoods
bbsPointsGoods
)
{
startPage
();
...
...
@@ -48,9 +48,10 @@ public class BbsPointsGoodsController extends BaseController {
*/
@ApiOperation
(
"获取积分商品详细信息"
)
@PreAuthorize
(
"@ss.hasPermi('goods:goods:query')"
)
@GetMapping
(
value
=
"/{id}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"id"
)
Long
id
)
{
return
success
(
bbsPointsGoodsService
.
getById
(
id
));
@GetMapping
(
value
=
"/{code}"
)
public
AjaxResult
getInfo
(
@PathVariable
(
"code"
)
String
code
)
{
BbsPointsGoods
dbGoods
=
this
.
bbsPointsGoodsService
.
getByGoodsCode
(
code
);
return
success
(
bbsPointsGoodsService
.
getById
(
dbGoods
));
}
...
...
safe-campus-points/src/main/java/com/tangguo/controller/BbsUserPointsController.java
View file @
ae2aba8a
...
...
@@ -42,7 +42,6 @@ public class BbsUserPointsController extends BaseController {
* 查询用户积分列表
*/
@ApiOperation
(
"查询用户积分列表"
)
@PreAuthorize
(
"@ss.hasPermi('points:points:list')"
)
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
BbsUserPoints
points
)
{
startPage
();
...
...
@@ -51,6 +50,17 @@ public class BbsUserPointsController extends BaseController {
}
/**
* 查询用户积分
*/
@ApiOperation
(
"查询用户积分"
)
@GetMapping
(
"/{userName}"
)
public
AjaxResult
list
(
@PathVariable
String
userName
)
{
BbsUserPoints
dbPoints
=
this
.
bbsUserPointsService
.
selectBbsUserPoints
(
userName
);
return
AjaxResult
.
success
(
dbPoints
);
}
/**
* 查询用户积分明细
*/
...
...
safe-campus-points/src/main/java/com/tangguo/controller/BbsUserPointsExchangeController.java
View file @
ae2aba8a
package
com
.
tangguo
.
controller
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.tangguo.common.annotation.Log
;
import
com.tangguo.common.annotation.RepeatSubmit
;
import
com.tangguo.common.core.controller.BaseController
;
...
...
@@ -9,9 +7,7 @@ import com.tangguo.common.core.domain.AjaxResult;
import
com.tangguo.common.core.page.TableDataInfo
;
import
com.tangguo.common.enums.BusinessType
;
import
com.tangguo.common.utils.poi.ExcelUtil
;
import
com.tangguo.domain.BbsPointsGoods
;
import
com.tangguo.domain.BbsUserPointsExchange
;
import
com.tangguo.service.IBbsPointsGoodsService
;
import
com.tangguo.service.IBbsUserPointsExchangeService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
...
...
@@ -36,26 +32,6 @@ public class BbsUserPointsExchangeController extends BaseController {
@Resource
private
IBbsUserPointsExchangeService
bbsUserPointsExchangeService
;
@Resource
private
IBbsPointsGoodsService
pointsGoodsService
;
/**
* 查询兑换商品
*/
@ApiOperation
(
"查询兑换人"
)
@PreAuthorize
(
"@ss.hasPermi('points:points:list')"
)
@GetMapping
(
"/select/goods"
)
public
AjaxResult
selectGoods
(
String
keyword
)
{
LambdaQueryWrapper
<
BbsPointsGoods
>
wrapper
=
new
LambdaQueryWrapper
<>();
wrapper
.
like
(
StrUtil
.
isNotBlank
(
keyword
),
BbsPointsGoods:
:
getName
,
keyword
);
wrapper
.
or
();
wrapper
.
like
(
StrUtil
.
isNotBlank
(
keyword
),
BbsPointsGoods:
:
getCode
,
keyword
);
wrapper
.
orderByDesc
(
BbsPointsGoods:
:
getCreateTime
);
List
<
BbsPointsGoods
>
goods
=
this
.
pointsGoodsService
.
list
(
wrapper
);
return
AjaxResult
.
success
(
goods
);
}
/**
* 查询用户积分兑换列表
...
...
safe-campus-points/src/main/java/com/tangguo/enums/PointsSettingType.java
View file @
ae2aba8a
...
...
@@ -3,6 +3,8 @@ package com.tangguo.enums;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
/**
* 积分配置类型
*
...
...
@@ -17,4 +19,10 @@ public enum PointsSettingType {
private
final
String
desc
;
public
static
PointsSettingType
getSettingType
(
String
type
)
{
return
Arrays
.
stream
(
PointsSettingType
.
values
())
.
filter
(
t
->
t
.
name
().
equals
(
type
)).
findFirst
().
orElse
(
null
);
}
}
safe-campus-
moment/src/main/java/com/tangguo/common/listener/User
OperateListener.java
→
safe-campus-
points/src/main/java/com/tangguo/listener/
OperateListener.java
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
listener
;
package
com
.
tangguo
.
listener
;
import
com.tangguo.common.constant.ActiveMQConstant
;
import
com.tangguo.domain.OperateDetail
;
import
com.tangguo.common.domain.OperateDetail
;
import
com.tangguo.service.IBbsPointsSettingService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.jms.annotation.JmsListener
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
javax.jms.Message
;
/**
...
...
@@ -16,16 +18,26 @@ import javax.jms.Message;
*/
@Slf4j
@Component
public
class
UserOperateListener
{
public
class
OperateListener
{
@Resource
private
IBbsPointsSettingService
pointsSettingService
;
/**
*
增加用户
积分消息
*
处理用户操作
积分消息
*
* @param detail
积分
明细
* @param detail
操作
明细
*/
@JmsListener
(
destination
=
ActiveMQConstant
.
Operate
.
USER_OPERATE
,
containerFactory
=
ActiveMQConstant
.
QUEUE_CONTAINER_BEAN
)
public
void
operateListener
(
OperateDetail
detail
,
Message
message
)
{
public
void
handleOperatePoints
(
OperateDetail
detail
,
Message
message
)
{
try
{
log
.
info
(
"=> 开始处理用户操作积分消息:{}"
,
detail
);
this
.
pointsSettingService
.
handleOperatePoints
(
detail
);
message
.
acknowledge
();
}
catch
(
Exception
e
)
{
log
.
error
(
"=> 用户操作积分消息处理失败,操作明细:{} 错误信息:"
,
detail
,
e
);
}
}
}
safe-campus-points/src/main/java/com/tangguo/listener/PointsListener.java
View file @
ae2aba8a
...
...
@@ -49,7 +49,7 @@ public class PointsListener {
@JmsListener
(
destination
=
ActiveMQConstant
.
Points
.
DECR_USER_POINTS_QUEUE
,
containerFactory
=
ActiveMQConstant
.
QUEUE_CONTAINER_BEAN
)
public
void
decrUserPointsListener
(
PointsDetail
detail
,
Message
message
)
{
try
{
log
.
info
(
"=> 扣减用户积分消息:{}"
,
detail
);
log
.
info
(
"=>
开始处理
扣减用户积分消息:{}"
,
detail
);
this
.
userPointsService
.
decrUserPoints
(
detail
);
message
.
acknowledge
();
}
catch
(
Exception
e
)
{
...
...
safe-campus-points/src/main/java/com/tangguo/mapper/BbsPointsSettingMapper.java
View file @
ae2aba8a
...
...
@@ -2,6 +2,7 @@ package com.tangguo.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.tangguo.domain.BbsPointsSetting
;
import
org.apache.ibatis.annotations.Param
;
/**
* 积分规则配置Mapper接口
...
...
@@ -10,4 +11,8 @@ import com.tangguo.domain.BbsPointsSetting;
* @date 2025-08-29
*/
public
interface
BbsPointsSettingMapper
extends
BaseMapper
<
BbsPointsSetting
>
{
int
selectPointsCount
(
@Param
(
"userName"
)
String
userName
,
@Param
(
"operateCode"
)
String
operateCode
,
@Param
(
"days"
)
int
days
);
}
safe-campus-points/src/main/java/com/tangguo/mapper/BbsUserPointsMapper.java
View file @
ae2aba8a
...
...
@@ -17,7 +17,10 @@ public interface BbsUserPointsMapper extends BaseMapper<BbsUserPoints> {
List
<
BbsUserPoints
>
selectBbsUserPointsList
(
@Param
(
"points"
)
BbsUserPoints
points
);
int
selectUserCount
(
@Param
(
"userName"
)
String
userName
);
BbsUserPoints
selectBbsUserPoints
(
@Param
(
"userName"
)
String
userName
);
int
selectSysUserCount
(
@Param
(
"userName"
)
String
userName
);
int
refreshUserPointsGrade
();
...
...
safe-campus-points/src/main/java/com/tangguo/service/IBbsPointsSettingService.java
View file @
ae2aba8a
package
com
.
tangguo
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.tangguo.common.domain.OperateDetail
;
import
com.tangguo.domain.BbsPointsSetting
;
import
java.util.List
;
...
...
@@ -31,6 +32,14 @@ public interface IBbsPointsSettingService extends IService<BbsPointsSetting> {
Map
<
String
,
List
<
BbsPointsSetting
>>
getSettingDetails
();
/**
* 查询积分规则配置
*
* @return 规则配置
*/
List
<
BbsPointsSetting
>
getEnableSettings
();
/**
* 添加积分配置
*
...
...
@@ -62,4 +71,12 @@ public interface IBbsPointsSettingService extends IService<BbsPointsSetting> {
*/
void
setSettingStatus
(
BbsPointsSetting
setting
);
/**
* 处理用户操作积分
*
* @param detail 操作明细
*/
void
handleOperatePoints
(
OperateDetail
detail
);
}
safe-campus-points/src/main/java/com/tangguo/service/IBbsUserPointsService.java
View file @
ae2aba8a
...
...
@@ -23,6 +23,15 @@ public interface IBbsUserPointsService extends IService<BbsUserPoints> {
List
<
BbsUserPoints
>
selectBbsUserPointsList
(
BbsUserPoints
bbsUserPoints
);
/**
* 查询用户积分
*
* @param userName 用户名
* @return 用户积分集合
*/
BbsUserPoints
selectBbsUserPoints
(
String
userName
);
/**
* 查询用户积分
*
...
...
safe-campus-points/src/main/java/com/tangguo/service/impl/BbsPointsSettingServiceImpl.java
View file @
ae2aba8a
...
...
@@ -3,18 +3,21 @@ package com.tangguo.service.impl;
import
cn.hutool.core.util.IdUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.tangguo.common.constant.ActiveMQConstant
;
import
com.tangguo.common.domain.OperateDetail
;
import
com.tangguo.common.domain.PointsDetail
;
import
com.tangguo.common.exception.ServiceException
;
import
com.tangguo.domain.BbsPointsSetting
;
import
com.tangguo.enums.PointsSettingType
;
import
com.tangguo.mapper.BbsPointsSettingMapper
;
import
com.tangguo.service.IBbsPointsSettingService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.jms.core.JmsTemplate
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.Resource
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -23,12 +26,32 @@ import java.util.stream.Collectors;
* @author ruoyi
* @date 2025-08-29
*/
@Slf4j
@Service
public
class
BbsPointsSettingServiceImpl
extends
ServiceImpl
<
BbsPointsSettingMapper
,
BbsPointsSetting
>
implements
IBbsPointsSettingService
{
private
static
final
Map
<
String
,
BbsPointsSetting
>
POINTS_SETTING
=
new
HashMap
<>(
5
);
@Resource
private
BbsPointsSettingMapper
bbsPointsSettingMapper
;
@Resource
private
JmsTemplate
jmsTemplate
;
/**
* 初始化积分规则配置缓存
*/
@PostConstruct
public
void
initCachePointsSetting
()
{
POINTS_SETTING
.
clear
();
List
<
BbsPointsSetting
>
dbSettings
=
this
.
getEnableSettings
();
for
(
BbsPointsSetting
setting
:
dbSettings
)
{
POINTS_SETTING
.
put
(
setting
.
getOperateCode
(),
setting
);
}
log
.
info
(
"=> 初始化积分规则配置缓存完毕,缓存配置数量:{}"
,
POINTS_SETTING
.
size
());
}
/**
* 查询积分规则配置列表
...
...
@@ -63,6 +86,19 @@ public class BbsPointsSettingServiceImpl extends ServiceImpl<BbsPointsSettingMap
}
/**
* 查询积分规则配置
*
* @return 规则配置
*/
@Override
public
List
<
BbsPointsSetting
>
getEnableSettings
()
{
return
this
.
list
(
Wrappers
.
lambdaQuery
(
BbsPointsSetting
.
class
).
eq
(
BbsPointsSetting:
:
getEnableStatus
,
1
)
);
}
/**
* 添加积分配置
*
...
...
@@ -86,6 +122,7 @@ public class BbsPointsSettingServiceImpl extends ServiceImpl<BbsPointsSettingMap
addSetting
.
setLimitCount
(
setting
.
getLimitCount
());
addSetting
.
setEnableStatus
(
setting
.
getEnableStatus
());
this
.
save
(
addSetting
);
this
.
initCachePointsSetting
();
}
...
...
@@ -117,6 +154,7 @@ public class BbsPointsSettingServiceImpl extends ServiceImpl<BbsPointsSettingMap
updSetting
.
setLimitCount
(
setting
.
getLimitCount
());
updSetting
.
setEnableStatus
(
setting
.
getEnableStatus
());
this
.
updateById
(
updSetting
);
this
.
initCachePointsSetting
();
}
...
...
@@ -128,6 +166,7 @@ public class BbsPointsSettingServiceImpl extends ServiceImpl<BbsPointsSettingMap
@Override
public
void
deleteSetting
(
Long
settingId
)
{
this
.
removeById
(
settingId
);
this
.
initCachePointsSetting
();
}
...
...
@@ -151,4 +190,51 @@ public class BbsPointsSettingServiceImpl extends ServiceImpl<BbsPointsSettingMap
}
}
/**
* 处理用户操作积分
*
* @param detail 操作明细
*/
@Override
public
void
handleOperatePoints
(
OperateDetail
detail
)
{
log
.
info
(
"=> 处理用户操作积分:{}"
,
detail
);
BbsPointsSetting
cacheSetting
=
POINTS_SETTING
.
get
(
detail
.
getOperateCode
());
if
(
Objects
.
isNull
(
cacheSetting
))
{
throw
new
ServiceException
(
"处理失败,未查询到操作编码对应的积分配置。"
);
}
String
userName
=
detail
.
getUserName
();
String
operateCode
=
cacheSetting
.
getOperateCode
();
int
pointsCount
=
this
.
baseMapper
.
selectPointsCount
(
userName
,
operateCode
,
7
);
if
(
pointsCount
>=
cacheSetting
.
getLimitCount
())
{
return
;
}
// 匹配积分队列
String
pointsQueue
;
PointsSettingType
settingType
=
PointsSettingType
.
getSettingType
(
cacheSetting
.
getType
());
if
(
PointsSettingType
.
ADD
==
settingType
)
{
pointsQueue
=
ActiveMQConstant
.
Points
.
INCR_USER_POINTS_QUEUE
;
}
else
if
(
PointsSettingType
.
DEC
==
settingType
)
{
pointsQueue
=
ActiveMQConstant
.
Points
.
DECR_USER_POINTS_QUEUE
;
}
else
{
throw
new
ServiceException
(
"处理失败,当前积分规则的设置类型错误。"
);
}
// 积分消息明细
String
operateName
=
cacheSetting
.
getOperateName
();
Integer
points
=
cacheSetting
.
getOperatePoints
();
PointsDetail
pointsDetail
=
new
PointsDetail
();
pointsDetail
.
setLinkTracId
(
detail
.
getLinkTracId
());
pointsDetail
.
setUserName
(
userName
);
pointsDetail
.
setDetailPoints
(
points
);
pointsDetail
.
setDetailName
(
operateName
);
pointsDetail
.
setDetailCode
(
operateCode
);
pointsDetail
.
setDescription
(
String
.
format
(
"用户【%s】操作【%s】积分【%s】"
,
userName
,
operateName
,
points
));
// 发送积分消息
this
.
jmsTemplate
.
convertAndSend
(
pointsQueue
,
pointsDetail
);
}
}
safe-campus-points/src/main/java/com/tangguo/service/impl/BbsUserPointsServiceImpl.java
View file @
ae2aba8a
...
...
@@ -55,6 +55,18 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
}
/**
* 查询用户积分
*
* @param userName 用户名
* @return 用户积分集合
*/
@Override
public
BbsUserPoints
selectBbsUserPoints
(
String
userName
)
{
return
this
.
baseMapper
.
selectBbsUserPoints
(
userName
);
}
/**
* 查询用户积分
*
...
...
@@ -80,7 +92,7 @@ public class BbsUserPointsServiceImpl extends ServiceImpl<BbsUserPointsMapper, B
public
BbsUserPoints
getAndInitUserPoints
(
String
userName
)
{
BbsUserPoints
dbUserPoints
=
this
.
getUserPoints
(
userName
);
if
(
Objects
.
isNull
(
dbUserPoints
))
{
int
dbUserCount
=
this
.
baseMapper
.
selectUserCount
(
userName
);
int
dbUserCount
=
this
.
baseMapper
.
select
Sys
UserCount
(
userName
);
if
(
dbUserCount
>
0
)
{
// 初始积分
dbUserPoints
=
new
BbsUserPoints
();
...
...
safe-campus-points/src/main/resources/mapper/BbsPointsSettingMapper.xml
View file @
ae2aba8a
...
...
@@ -3,5 +3,18 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.tangguo.mapper.BbsPointsSettingMapper"
>
<select
id=
"selectPointsCount"
resultType=
"java.lang.Integer"
>
SELECT
COUNT(*)
FROM
bbs_user_points_detail
WHERE
user_name = #{userName}
AND
detail_code = #{operateCode}
AND
create_time >= DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL #{days} DAY)
</select>
</mapper>
safe-campus-points/src/main/resources/mapper/BbsUserPointsMapper.xml
View file @
ae2aba8a
...
...
@@ -22,9 +22,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT (SELECT name FROM bbs_grade WHERE is_initial = 1 ORDER BY create_time DESC LIMIT 1) AS name
) ug
<where>
<if
test=
"points.keyword != null and points.keyword != ''"
>
uv.nick_name LIKE CONCAT('%', #{points.keyword}, '%') OR uv.user_name LIKE CONCAT('%', #{points.keyword}, '%')
</if>
<if
test=
"points.nickName != null and points.nickName != ''"
>
AND uv.nick_name LIKE CONCAT('%', #{points.nickName}, '%')
</if>
...
...
@@ -43,7 +40,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select
id=
"selectUserCount"
resultType=
"java.lang.Integer"
>
<select
id=
"selectBbsUserPoints"
resultType=
"com.tangguo.domain.BbsUserPoints"
>
SELECT
uv.nick_name AS nick_name,
uv.user_name,
ud.dept_name,
IFNULL(p.current_points, 0) AS current_points,
IFNULL(p.accumulated_points, 0) AS accumulated_points,
IFNULL(p.grade_name, ug.name) AS grade_name
FROM
sys_user uv
LEFT JOIN
sys_dept ud ON ud.dept_id = uv.dept_id
LEFT JOIN
bbs_user_points p ON p.user_name = uv.user_name
CROSS JOIN (
SELECT (SELECT name FROM bbs_grade WHERE is_initial = 1 ORDER BY create_time DESC LIMIT 1) AS name
) ug
WHERE
uv.user_name = #{userName}
</select>
<select
id=
"selectSysUserCount"
resultType=
"java.lang.Integer"
>
SELECT COUNT(*) FROM sys_user WHERE user_name = #{userName}
</select>
...
...
safe-campus-quartz/pom.xml
View file @
ae2aba8a
...
...
@@ -32,6 +32,11 @@
<groupId>
com.tangguo
</groupId>
<artifactId>
safe-campus-system
</artifactId>
</dependency>
<dependency>
<groupId>
com.tangguo
</groupId>
<artifactId>
safe-campus-moment
</artifactId>
</dependency>
</dependencies>
</project>
safe-campus-
moment/src/main/java/com/tangguo/common/jobs/RefreshTopicRankingJob
.java
→
safe-campus-
quartz/src/main/java/com/tangguo/quartz/task/RefreshTopicRankingTask
.java
View file @
ae2aba8a
package
com
.
tangguo
.
common
.
jobs
;
package
com
.
tangguo
.
quartz
.
task
;
import
com.tangguo.service.IBbsTopicService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -14,7 +14,7 @@ import javax.annotation.Resource;
*/
@Slf4j
@Component
public
class
RefreshTopicRanking
Job
{
public
class
RefreshTopicRanking
Task
{
@Resource
private
IBbsTopicService
topicService
;
...
...
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