Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cust-api
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
李伟
cust-api
Commits
4e0fc896
Commit
4e0fc896
authored
Apr 27, 2025
by
liwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改了动态留言评论错误表相关功能,修改了禁言功能
parent
d0e495d3
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
102 additions
and
41 deletions
+102
-41
MemInfoServiceImpl.java
...oft/business/memInfo/service/impl/MemInfoServiceImpl.java
+10
-1
OpmArticleServiceImpl.java
...siness/opmArticle/service/impl/OpmArticleServiceImpl.java
+20
-4
OpmArticleCommentMessageError.java
...entMessageError/entity/OpmArticleCommentMessageError.java
+16
-1
ScheduleTasks.java
src/main/java/org/rcisoft/core/schedule/ScheduleTasks.java
+0
-8
BusinessUtil.java
src/main/java/org/rcisoft/core/util/BusinessUtil.java
+1
-1
UserUtil.java
src/main/java/org/rcisoft/core/util/UserUtil.java
+36
-15
OpmArticleCommentMessageErrorMapper.xml
...ssageError/mapper/OpmArticleCommentMessageErrorMapper.xml
+19
-11
No files found.
src/main/java/org/rcisoft/business/memInfo/service/impl/MemInfoServiceImpl.java
View file @
4e0fc896
...
...
@@ -106,7 +106,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
private
DictionaryUtil
dictionaryUtil
;
@Value
(
"${cy.init.password}"
)
private
String
password
;
@Value
(
"${forbidSpeech.limitCount}"
)
private
Integer
forbidSpeechLimitCount
;
/**
* 保存 会员表
...
...
@@ -1066,6 +1067,14 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
// 根据userId查询会员信息
MemInfo
memInfo
=
baseMapper
.
selectByUserId
(
userId
);
memInfo
.
setMemMaliceLeaveMessageCount
(
memInfo
.
getMemMaliceLeaveMessageCount
()
+
num
);
if
(
memInfo
.
getMemMaliceLeaveMessageCount
()
+
num
>=
forbidSpeechLimitCount
){
memInfo
.
setFlag
(
"0"
);
// 修改用户表
SysUserRbac
userRbac
=
new
SysUserRbac
();
userRbac
.
setBusinessId
(
memInfo
.
getUserId
());
userRbac
.
setFlag
(
"0"
);
sysUserRbacRepository
.
updateById
(
userRbac
);
}
// 更新该会员的恶意留言次数
baseMapper
.
updateById
(
memInfo
);
}
...
...
src/main/java/org/rcisoft/business/opmArticle/service/impl/OpmArticleServiceImpl.java
View file @
4e0fc896
...
...
@@ -51,10 +51,7 @@ import java.text.SimpleDateFormat;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
/**
...
...
@@ -219,6 +216,9 @@ public class OpmArticleServiceImpl extends ServiceImpl<OpmArticleRepository, Opm
// 自动审核 没通过 设置redis失败次数 达到一定次数 会被禁言
userUtil
.
setUserForbidSpeech
(
userId
);
}
}
else
{
// 人工审核
opmArticle
.
setExamStatus
(
"0"
);
}
//判断是否是普通动态
if
(
opmArticle
.
getTopicId
()
==
null
){
...
...
@@ -319,6 +319,22 @@ public class OpmArticleServiceImpl extends ServiceImpl<OpmArticleRepository, Opm
if
(
opmArticle
.
getRemarks
()!=
null
){
article
.
setRemarks
(
opmArticle
.
getRemarks
());
}
if
(
opmArticle
.
getExamStatus
().
equals
(
"2"
)){
// 手动驳回 新增错误信息
List
<
DictData
>
sysConfig
=
dictionaryService
.
selectByTypes
(
"sys_config"
);
String
style
=
sysConfig
.
get
(
0
).
getDictValue
();
// 将opmArticle.getRemarks()是一个数组json,转成数组
List
<
String
>
msg
=
new
ArrayList
();
try
{
JSONArray
jsonArray
=
JSONUtil
.
parseArray
(
opmArticle
.
getRemarks
());
for
(
int
i
=
0
;
i
<
jsonArray
.
size
();
i
++)
{
msg
.
add
(
jsonArray
.
get
(
i
).
toString
());
}
}
catch
(
Exception
e
)
{
msg
.
addAll
(
Collections
.
singleton
(
opmArticle
.
getRemarks
()));
}
businessUtil
.
insertArticleCommentMessageError
(
msg
,
article
.
getBusinessId
(),
null
,
"1"
,
style
);
}
int
line
=
baseMapper
.
updateById
(
article
);
//修改动态所有评论审核状态
//修改子表的评论数 给父级评论数+1
...
...
src/main/java/org/rcisoft/business/opmArticleCommentMessageError/entity/OpmArticleCommentMessageError.java
View file @
4e0fc896
package
org
.
rcisoft
.
business
.
opmArticleCommentMessageError
.
entity
;
import
cn.afterturn.easypoi.excel.annotation.Excel
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.*
;
import
org.rcisoft.core.entity.CyIdIncreEntity
;
...
...
@@ -28,7 +30,7 @@ public class OpmArticleCommentMessageError extends CyIdIncreEntity<OpmArticleCo
* @default
*/
@Excel
(
name
=
"类型,1:动态 2:评论 3:留言"
,
orderNum
=
"1"
,
width
=
20
)
private
String
t
ype
;
private
String
eventT
ype
;
/**
* @desc 内容,评论/留言存内容,动态不存内容
...
...
@@ -54,6 +56,19 @@ public class OpmArticleCommentMessageError extends CyIdIncreEntity<OpmArticleCo
@Excel
(
name
=
"失败原因"
,
orderNum
=
"4"
,
width
=
20
)
private
String
reason
;
/**
* 开始时间
*/
@TableField
(
exist
=
false
)
private
String
beginTime
;
/**
* 结束时间
*/
@TableField
(
exist
=
false
)
private
String
endTime
;
@TableField
(
exist
=
false
)
private
String
createUserName
;
}
src/main/java/org/rcisoft/core/schedule/ScheduleTasks.java
View file @
4e0fc896
...
...
@@ -120,12 +120,4 @@ public class ScheduleTasks {
*/
@Scheduled
(
cron
=
"0 0 1 * * ?"
)
public
void
refreshMemMaliceLeaveCountSchedule
()
{
memInfoService
.
refreshMemMaliceLeaveCountSchedule
();
}
/**
* 定时更新会员表和用户表 当恶意留言次数超过10时,就将该用户禁用
* 每分钟执行一次
*/
@Scheduled
(
cron
=
"0 0/1 * * * ?"
)
public
void
refreshMemFlagByMaliceLeaveCountSchedule
()
{
memInfoService
.
refreshMemFlagByMaliceLeaveCountSchedule
();
}
}
src/main/java/org/rcisoft/core/util/BusinessUtil.java
View file @
4e0fc896
...
...
@@ -32,7 +32,7 @@ public class BusinessUtil {
}
else
{
opmArticleCommentMessageError
.
setArticleId
(
null
);
}
opmArticleCommentMessageError
.
setType
(
type
);
opmArticleCommentMessageError
.
set
Event
Type
(
type
);
opmArticleCommentMessageError
.
setReason
(
reason
);
opmArticleCommentMessageError
.
setExamType
(
style
);
opmArticleCommentMessageError
.
setContent
(
content
);
...
...
src/main/java/org/rcisoft/core/util/UserUtil.java
View file @
4e0fc896
...
...
@@ -68,14 +68,13 @@ public class UserUtil {
String
month
=
today
.
format
(
monthFormatter
);
String
day
=
today
.
format
(
dayFormatter
);
String
date
=
month
+
day
;
Object
redisOneHourCount
=
cyRedisServiceImpl
.
get
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
);
Object
redisTwoHourCount
=
cyRedisServiceImpl
.
get
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
);
if
(
redisOneHourCount
!=
null
&&
redisTwoHourCount
!=
null
){
if
((
Integer
)
redisTwoHourCount
>=
twoHourCount
){
throw
new
CyServiceException
(
1008
,
"您已被禁言,请明天再试!"
);
}
else
if
((
Integer
)
redisOneHourCount
>=
oneHourCount
){
throw
new
CyServiceException
(
1009
,
"您已被禁言,请1小时后稍后再试!"
);
}
Object
timeFlag
=
cyRedisServiceImpl
.
hget
(
"user:forbidSpeech:"
+
date
+
":timeFlag"
,
userId
);
if
(
timeFlag
!=
null
){
// 获取当前时间毫秒值
long
currentTimeMillis
=
System
.
currentTimeMillis
();
if
((
long
)
timeFlag
>=
currentTimeMillis
){
throw
new
CyServiceException
(
1008
,
"您已被禁言,请稍后再试!"
);
}
}
}
...
...
@@ -91,18 +90,40 @@ public class UserUtil {
String
month
=
today
.
format
(
monthFormatter
);
String
day
=
today
.
format
(
dayFormatter
);
String
date
=
month
+
day
;
// 获取当前时间 年月日时分秒
long
currentTime
=
System
.
currentTimeMillis
();
Object
redisOneHourCount
=
cyRedisServiceImpl
.
get
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
);
Object
redisTwoHourCount
=
cyRedisServiceImpl
.
get
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
);
Object
redisAllCount
=
cyRedisServiceImpl
.
get
(
"user:forbidSpeech:"
+
date
+
":allCount:"
+
userId
);
if
(
redisOneHourCount
==
null
&&
redisTwoHourCount
==
null
){
// 没有被自动驳回过 设置初始值1
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
,
1
,
Long
.
valueOf
(
oneHourTime
));
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
,
1
,
2
*
60
*
60
*
24L
);
// 2小时内没有被自动驳回过 设置初始值1
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
,
1
,
1
*
60
*
60L
);
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
,
1
,
2
*
60
*
60L
);
if
(
redisAllCount
!=
null
){
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":allCount:"
+
userId
,
1L
);
}
else
{
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":allCount:"
+
userId
,
1
,
24
*
60
*
60L
);
}
}
else
if
(
redisOneHourCount
==
null
&&
redisTwoHourCount
!=
null
){
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
,
1
,
Long
.
valueOf
(
oneHourTime
));
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
,
Long
.
valueOf
(
1
));
// 2小时内被自动驳回过
if
((
int
)
redisTwoHourCount
>=
twoHourCount
){
// 2小时内被驳回数大于限制数 禁言一天
cyRedisServiceImpl
.
hset
(
"user:forbidSpeech:"
+
date
+
":timeFlag"
,
userId
,
currentTime
+
twoHourTime
*
1000
);
}
else
{
cyRedisServiceImpl
.
set
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
,
1
,
1
*
60
*
60L
);
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
,
1L
);
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":allCount:"
+
userId
,
1L
);
}
}
else
{
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
,
Long
.
valueOf
(
1
));
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
,
Long
.
valueOf
(
1
));
// 1小时内被驳回过
if
((
int
)
redisOneHourCount
>=
oneHourCount
){
//1小时内被驳回数大于限制数 禁言1小时
cyRedisServiceImpl
.
hset
(
"user:forbidSpeech:"
+
date
+
":timeFlag"
,
userId
,
currentTime
+
oneHourTime
*
1000
);
}
else
{
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":oneHourCount:"
+
userId
,
1L
);
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":twoHourCount:"
+
userId
,
1L
);
cyRedisServiceImpl
.
incr
(
"user:forbidSpeech:"
+
date
+
":allCount:"
+
userId
,
1L
);
}
}
}
}
src/main/resources/mapper/business/opmArticleCommentMessageError/mapper/OpmArticleCommentMessageErrorMapper.xml
View file @
4e0fc896
...
...
@@ -12,7 +12,7 @@
<result
column=
"del_flag"
jdbcType=
"CHAR"
property=
"delFlag"
/>
<result
column=
"remarks"
jdbcType=
"VARCHAR"
property=
"remarks"
/>
<result
column=
"article_id"
jdbcType=
"BIGINT"
property=
"articleId"
/>
<result
column=
"
type"
jdbcType=
"CHAR"
property=
"t
ype"
/>
<result
column=
"
event_type"
jdbcType=
"CHAR"
property=
"eventT
ype"
/>
<result
column=
"content"
jdbcType=
"VARCHAR"
property=
"content"
/>
<result
column=
"exam_type"
jdbcType=
"CHAR"
property=
"examType"
/>
<result
column=
"reason"
jdbcType=
"VARCHAR"
property=
"reason"
/>
...
...
@@ -44,27 +44,35 @@
</select>
<select
id=
"queryOpmArticleCommentMessageErrorsPaged"
resultMap=
"BaseResultMap"
>
select * from opm_article_comment_message_error
select oacme.*, su.nick_name as createUserName
from opm_article_comment_message_error oacme
left join sys_user su on su.business_id = oacme.create_by
where 1=1
and del_flag = '0'
and
oacme.
del_flag = '0'
<if
test=
"entity.flag !=null and entity.flag != '' "
>
and flag = #{entity.flag}
and
oacme.
flag = #{entity.flag}
</if>
<if
test=
"entity.articleId !=null and entity.articleId != '' "
>
and article_id = #{entity.articleId}
and
oacme.
article_id = #{entity.articleId}
</if>
<if
test=
"entity.
type !=null and entity.t
ype != '' "
>
and
type = #{entity.t
ype}
<if
test=
"entity.
eventType !=null and entity.eventT
ype != '' "
>
and
oacme.eventType = #{entity.eventT
ype}
</if>
<if
test=
"entity.content !=null and entity.content != '' "
>
and content like concat('%',#{entity.content},'%')
and
oacme.
content like concat('%',#{entity.content},'%')
</if>
<if
test=
"entity.examType !=null and entity.examType != '' "
>
and exam_type = #{entity.examType}
and
oacme.
exam_type = #{entity.examType}
</if>
<if
test=
"entity.reason !=null and entity.reason != '' "
>
and reason like concat('%',#{entity.reason},'%')
and
oacme.
reason like concat('%',#{entity.reason},'%')
</if>
ORDER BY business_id DESC
<if
test=
"entity.beginTime !=null and entity.beginTime != '' "
>
and oacme.create_date
>
= #{entity.beginTime}
</if>
<if
test=
"entity.endTime !=null and entity.endTime != '' "
>
and oacme.create_date
<
= #{entity.endTime}
</if>
ORDER BY oacme.create_date DESC
</select>
</mapper>
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