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
1a591f1e
Commit
1a591f1e
authored
Mar 02, 2025
by
liwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改了排行榜查询以及修改了点赞和定时任务
parent
bc3ceeb0
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
48 additions
and
100 deletions
+48
-100
AppMemInfoController.java
...isoft/app/appMemInfo/controller/AppMemInfoController.java
+1
-0
MemInfoRepository.java
...a/org/rcisoft/business/memInfo/dao/MemInfoRepository.java
+5
-0
MemLikeDTO.java
.../java/org/rcisoft/business/memInfo/entity/MemLikeDTO.java
+1
-0
MemInfoServiceImpl.java
...oft/business/memInfo/service/impl/MemInfoServiceImpl.java
+20
-77
ScheduleTasks.java
src/main/java/org/rcisoft/core/schedule/ScheduleTasks.java
+2
-11
MemInfoMapper.xml
...esources/mapper/business/memInfo/mapper/MemInfoMapper.xml
+19
-12
No files found.
src/main/java/org/rcisoft/app/appMemInfo/controller/AppMemInfoController.java
View file @
1a591f1e
...
@@ -338,6 +338,7 @@ public class AppMemInfoController extends CyPaginationController<MemInfo> {
...
@@ -338,6 +338,7 @@ public class AppMemInfoController extends CyPaginationController<MemInfo> {
@CyEncryptSm4Anno
@CyEncryptSm4Anno
public
CyResult
like
(
@RequestBody
MemLikeDTO
likeDTO
)
{
public
CyResult
like
(
@RequestBody
MemLikeDTO
likeDTO
)
{
CyPersistModel
data
=
memInfoServiceImpl
.
addLike
(
likeDTO
);
CyPersistModel
data
=
memInfoServiceImpl
.
addLike
(
likeDTO
);
likeDTO
.
setWxOpenid
(
null
);
return
CyResultGenUtil
.
builder
(
data
,
return
CyResultGenUtil
.
builder
(
data
,
CyMessCons
.
MESSAGE_ALERT_SUCCESS
,
CyMessCons
.
MESSAGE_ALERT_SUCCESS
,
CyMessCons
.
MESSAGE_ALERT_ERROR
,
CyMessCons
.
MESSAGE_ALERT_ERROR
,
...
...
src/main/java/org/rcisoft/business/memInfo/dao/MemInfoRepository.java
View file @
1a591f1e
...
@@ -156,6 +156,11 @@ public interface MemInfoRepository extends CyBaseMapper<MemInfo> {
...
@@ -156,6 +156,11 @@ public interface MemInfoRepository extends CyBaseMapper<MemInfo> {
*/
*/
Integer
addMemLikeCount
(
@Param
(
"entity"
)
MemLikeDTO
likeDTO
);
Integer
addMemLikeCount
(
@Param
(
"entity"
)
MemLikeDTO
likeDTO
);
/**
* 点赞表 点赞数+1
*/
Integer
addLikeCount
(
@Param
(
"entity"
)
MemLikeDTO
likeDTO
);
/**
/**
* 查询关注的id集合
* 查询关注的id集合
*/
*/
...
...
src/main/java/org/rcisoft/business/memInfo/entity/MemLikeDTO.java
View file @
1a591f1e
package
org
.
rcisoft
.
business
.
memInfo
.
entity
;
package
org
.
rcisoft
.
business
.
memInfo
.
entity
;
import
com.fasterxml.jackson.annotation.JsonIgnore
;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
...
...
src/main/java/org/rcisoft/business/memInfo/service/impl/MemInfoServiceImpl.java
View file @
1a591f1e
...
@@ -672,7 +672,7 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
...
@@ -672,7 +672,7 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
String
userId
=
CyUserUtil
.
getAuthenBusinessId
();
String
userId
=
CyUserUtil
.
getAuthenBusinessId
();
//添加实名判断
//添加实名判断
userUtil
.
checkUserAuth
(
"请先进行实名认证!"
);
userUtil
.
checkUserAuth
(
"请先进行实名认证!"
);
//获取当前日期 例2025/2/20 获取02和20
//获取当前日期 例2025/2/20 获取02和20
用来存redis
LocalDate
today
=
LocalDate
.
now
();
LocalDate
today
=
LocalDate
.
now
();
DateTimeFormatter
monthFormatter
=
DateTimeFormatter
.
ofPattern
(
"MM"
);
DateTimeFormatter
monthFormatter
=
DateTimeFormatter
.
ofPattern
(
"MM"
);
DateTimeFormatter
dayFormatter
=
DateTimeFormatter
.
ofPattern
(
"dd"
);
DateTimeFormatter
dayFormatter
=
DateTimeFormatter
.
ofPattern
(
"dd"
);
...
@@ -696,7 +696,7 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
...
@@ -696,7 +696,7 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
if
(
redisUserLikeCountAll
!=
null
&&
(
int
)
redisUserLikeCountAll
<=
allCount
){
if
(
redisUserLikeCountAll
!=
null
&&
(
int
)
redisUserLikeCountAll
<=
allCount
){
//没超出总次数限制
//没超出总次数限制
//2.进行判断对目标用户的点赞总次数
//2.进行判断对目标用户的点赞总次数
if
(
redisUserLikeCount
!=
null
&&
(
int
)
redisUserLikeCount
<
=
personalAllCount
){
if
(
redisUserLikeCount
!=
null
&&
(
int
)
redisUserLikeCount
<
personalAllCount
){
//没超出对目标用户的点赞总次数(免费+付费)
//没超出对目标用户的点赞总次数(免费+付费)
//3.判断对目标用户的点赞留言次数
//3.判断对目标用户的点赞留言次数
if
(
redisUserLikeCount
!=
null
&&
(
int
)
redisUserLikeCount
>=
userLikeLimitCount
)
{
if
(
redisUserLikeCount
!=
null
&&
(
int
)
redisUserLikeCount
>=
userLikeLimitCount
)
{
...
@@ -742,8 +742,20 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
...
@@ -742,8 +742,20 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
throw
new
CyServiceException
(
1001
,
"今日对该用户点赞次数超出限制"
);
throw
new
CyServiceException
(
1001
,
"今日对该用户点赞次数超出限制"
);
}
}
}
}
//给被点赞人+1点赞数
//当天 点赞表对应的记录+1
memInfoRepository
.
addMemLikeCount
(
likeDTO
);
// 获取今天的最小时间(00:00:00)
LocalDateTime
startOfDay
=
today
.
atStartOfDay
();
// 获取今天的最大时间(23:59:59)
LocalDateTime
endOfDay
=
today
.
atTime
(
LocalTime
.
MAX
);
// 定义日期时间格式
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
// 最大时间 和 最小时间
String
beginTime
=
startOfDay
.
format
(
formatter
);
String
endTime
=
endOfDay
.
format
(
formatter
);
likeDTO
.
setBeginTime
(
beginTime
);
likeDTO
.
setEndTime
(
endTime
);
likeDTO
.
setUserId
(
Integer
.
valueOf
(
userId
));
memInfoRepository
.
addLikeCount
(
likeDTO
);
//没超出免费点赞次数
//没超出免费点赞次数
this
.
redisTemplate
.
opsForHash
().
increment
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
userId
,
String
.
valueOf
(
likeDTO
.
getTargetId
()),
(
double
)
1L
);
this
.
redisTemplate
.
opsForHash
().
increment
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
userId
,
String
.
valueOf
(
likeDTO
.
getTargetId
()),
(
double
)
1L
);
this
.
redisTemplate
.
opsForValue
().
increment
(
MemberInfoRedisBean
.
USER_LIKE_ALL
+
date
+
":"
+
userId
,
(
long
)
1L
);
this
.
redisTemplate
.
opsForValue
().
increment
(
MemberInfoRedisBean
.
USER_LIKE_ALL
+
date
+
":"
+
userId
,
(
long
)
1L
);
...
@@ -755,10 +767,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
...
@@ -755,10 +767,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
cyRedisServiceImpl
.
expire
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
userId
,
48
*
60
*
60
);
// 24小时
cyRedisServiceImpl
.
expire
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
userId
,
48
*
60
*
60
);
// 24小时
//新增点赞数据
//新增点赞数据
likeDTO
.
setUserId
(
Integer
.
valueOf
(
userId
));
likeDTO
.
setUserId
(
Integer
.
valueOf
(
userId
));
likeDTO
.
setLikeCount
(
0
);
likeDTO
.
setLikeCount
(
1
);
memInfoRepository
.
addLike
(
likeDTO
);
memInfoRepository
.
addLike
(
likeDTO
);
//给被点赞人+1点赞数
memInfoRepository
.
addMemLikeCount
(
likeDTO
);
return
new
CyPersistModel
(
1
);
return
new
CyPersistModel
(
1
);
}
else
{
}
else
{
throw
new
CyServiceException
(
1001
,
"今日对该用户点赞次数超出限制"
);
throw
new
CyServiceException
(
1001
,
"今日对该用户点赞次数超出限制"
);
...
@@ -770,10 +780,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
...
@@ -770,10 +780,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
cyRedisServiceImpl
.
expire
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
userId
,
48
*
60
*
60
);
// 24小时
cyRedisServiceImpl
.
expire
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
userId
,
48
*
60
*
60
);
// 24小时
//新增点赞数据
//新增点赞数据
likeDTO
.
setUserId
(
Integer
.
valueOf
(
userId
));
likeDTO
.
setUserId
(
Integer
.
valueOf
(
userId
));
likeDTO
.
setLikeCount
(
0
);
likeDTO
.
setLikeCount
(
1
);
memInfoRepository
.
addLike
(
likeDTO
);
memInfoRepository
.
addLike
(
likeDTO
);
//给被点赞人+1点赞数
memInfoRepository
.
addMemLikeCount
(
likeDTO
);
return
new
CyPersistModel
(
1
);
return
new
CyPersistModel
(
1
);
}
else
{
}
else
{
//超出总次数限制
//超出总次数限制
...
@@ -788,73 +796,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
...
@@ -788,73 +796,8 @@ public class MemInfoServiceImpl extends ServiceImpl<MemInfoRepository,MemInfo>
*/
*/
@Override
@Override
public
IPage
<
MemInfo
>
findRankByPagination
(
CyPageInfo
<
MemInfo
>
paginationUtility
,
MemInfo
memInfo
){
public
IPage
<
MemInfo
>
findRankByPagination
(
CyPageInfo
<
MemInfo
>
paginationUtility
,
MemInfo
memInfo
){
return
baseMapper
.
queryRankPaged
(
paginationUtility
,
memInfo
);
IPage
<
MemInfo
>
memInfoIPage
=
baseMapper
.
queryRankPaged
(
paginationUtility
,
memInfo
);
}
return
memInfoIPage
;
/**
* 用户点赞 定时任务
*/
public
void
userLikeSchedule
()
{
log
.
info
(
"用户点赞数据定时任务执行中..."
);
//获取当前日期
LocalDate
today
=
LocalDate
.
now
();
DateTimeFormatter
monthFormatter
=
DateTimeFormatter
.
ofPattern
(
"MM"
);
DateTimeFormatter
dayFormatter
=
DateTimeFormatter
.
ofPattern
(
"dd"
);
// 格式化并获取月份和日期 例2025/2/20 date为0220 用来获取redis的key
String
month
=
today
.
format
(
monthFormatter
);
String
day
=
today
.
format
(
dayFormatter
);
String
date
=
month
+
day
;
// 获取今天的最小时间(00:00:00)
LocalDateTime
startOfDay
=
today
.
atStartOfDay
();
// 获取今天的最大时间(23:59:59)
LocalDateTime
endOfDay
=
today
.
atTime
(
LocalTime
.
MAX
);
// 定义日期时间格式
DateTimeFormatter
formatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
);
// 最大时间 和 最小时间 用来查询数据库当天的数据 用来落库
String
beginTime
=
startOfDay
.
format
(
formatter
);
String
endTime
=
endOfDay
.
format
(
formatter
);
//将redis中存储的点赞数同步到opm_user_like表中
Set
<
String
>
keys
=
redisTemplate
.
keys
(
MemberInfoRedisBean
.
USER_LIKE
+
date
+
":"
+
"*"
);
//删除1对多的key 并更新数据库
if
(
keys
!=
null
&&
!
keys
.
isEmpty
())
{
for
(
String
key
:
keys
)
{
//截取key最后一个:后的值,为userId
int
lastIndex
=
key
.
lastIndexOf
(
':'
);
Integer
userId
=
Integer
.
valueOf
(
key
.
substring
(
lastIndex
+
1
));
//获取hash里的所有key value
Map
<
Object
,
Object
>
hmget
=
cyRedisService
.
hmget
(
key
);
if
(
hmget
!=
null
&&
!
hmget
.
isEmpty
())
{
//遍历map
for
(
Map
.
Entry
<
Object
,
Object
>
entry
:
hmget
.
entrySet
())
{
//获取目标
String
targetId
=
(
String
)
entry
.
getKey
();
//获取点赞数
Integer
likeCount
=
(
Integer
)
entry
.
getValue
();
//将redis中存储的点赞数同步到opm_user_like表中
MemLikeDTO
memLikeDTO
=
new
MemLikeDTO
();
memLikeDTO
.
setUserId
(
userId
);
memLikeDTO
.
setLikeCount
(
likeCount
);
memLikeDTO
.
setTargetId
(
Integer
.
valueOf
(
targetId
));
memLikeDTO
.
setBeginTime
(
beginTime
);
memLikeDTO
.
setEndTime
(
endTime
);
//对点赞表 进行修改点赞数
Integer
integer
=
memInfoRepository
.
updateLikeCount
(
memLikeDTO
);
}
}
}
}
else
{
System
.
out
.
println
(
"No keys found."
);
}
SysScheduledTaskLog
sysScheduledTaskLog
=
new
SysScheduledTaskLog
();
sysScheduledTaskLog
.
setTaskName
(
"用户点赞数据定时任务"
);
sysScheduledTaskLog
.
setTaskState
(
"成功"
);
sysScheduledTaskLog
.
setTaskTime
(
"每2小时执行一次"
);
sysScheduledTaskLog
.
setCreateDate
(
new
Date
());
sysScheduledTaskLogServiceImpl
.
persist
(
sysScheduledTaskLog
);
log
.
info
(
"用户点赞数据定时任务结束---"
);
}
}
...
...
src/main/java/org/rcisoft/core/schedule/ScheduleTasks.java
View file @
1a591f1e
...
@@ -90,15 +90,6 @@ public class ScheduleTasks {
...
@@ -90,15 +90,6 @@ public class ScheduleTasks {
}
}
/**
* 每俩小时 执行一次点赞数据定时任务 将点赞数据同步到点赞表表中
*/
@Scheduled
(
cron
=
"0 0 */2 * * ?"
)
public
void
userLikeSchedule
()
{
memInfoService
.
userLikeSchedule
();
}
/**
/**
* 定时更新访问量表
* 定时更新访问量表
*/
*/
...
@@ -118,9 +109,9 @@ public class ScheduleTasks {
...
@@ -118,9 +109,9 @@ public class ScheduleTasks {
/**
/**
* 定时更新会员表 刷新会员的被关注数和被点赞数
* 定时更新会员表 刷新会员的被关注数和被点赞数
* 每
4
小时执行一次
* 每
2
小时执行一次
*/
*/
@Scheduled
(
cron
=
"0 0 */
4
* * ?"
)
@Scheduled
(
cron
=
"0 0 */
2
* * ?"
)
public
void
refreshMemLikeAndFollowCountSchedule
()
{
memInfoService
.
refreshMemLikeAndFollowCountSchedule
();
}
public
void
refreshMemLikeAndFollowCountSchedule
()
{
memInfoService
.
refreshMemLikeAndFollowCountSchedule
();
}
}
}
src/main/resources/mapper/business/memInfo/mapper/MemInfoMapper.xml
View file @
1a591f1e
...
@@ -587,24 +587,22 @@
...
@@ -587,24 +587,22 @@
and ouf.target_id = #{entity.targetId}),0) AS isFollowed;
and ouf.target_id = #{entity.targetId}),0) AS isFollowed;
</select>
</select>
<select
id=
"queryRankPaged"
resultType=
"org.rcisoft.business.memInfo.entity.MemInfo"
>
<select
id=
"queryRankPaged"
resultType=
"org.rcisoft.business.memInfo.entity.MemInfo"
>
select
SELECT mi.business_id,mi.avatar,mi.mem_code,mi.mem_nick_name,SUM(oul.like_count) as memLikedCount
m.mem_nick_name,
from opm_user_like oul
m.mem_liked_count,
LEFT JOIN mem_info mi ON mi.user_id = oul.target_id
m.mem_code,
where 1=1
m.avatar,
and mi.del_flag = '0'
m.business_id
from mem_info m
where m.del_flag = 0
<if
test=
"entity.memSex !=null and entity.memSex != '' "
>
<if
test=
"entity.memSex !=null and entity.memSex != '' "
>
and m.mem_sex = #{entity.memSex}
and m
i
.mem_sex = #{entity.memSex}
</if>
</if>
<if
test=
"entity.beginTime !=null and entity.beginTime != '' "
>
<if
test=
"entity.beginTime !=null and entity.beginTime != '' "
>
and
m
.create_date
>
= #{entity.beginTime}
and
oul
.create_date
>
= #{entity.beginTime}
</if>
</if>
<if
test=
"entity.endTime !=null and entity.endTime != '' "
>
<if
test=
"entity.endTime !=null and entity.endTime != '' "
>
and
m
.create_date
<
= #{entity.endTime}
and
oul
.create_date
<
= #{entity.endTime}
</if>
</if>
order by m.mem_liked_count desc
group by oul.target_id
order by memLikedCount desc
</select>
</select>
<select
id=
"queryFollowIdById"
resultType=
"java.lang.Integer"
>
<select
id=
"queryFollowIdById"
resultType=
"java.lang.Integer"
>
select ouf.target_id from opm_user_follow ouf WHERE ouf.user_id = #{userId}
select ouf.target_id from opm_user_follow ouf WHERE ouf.user_id = #{userId}
...
@@ -677,6 +675,15 @@
...
@@ -677,6 +675,15 @@
where 1=1
where 1=1
and user_id = #{entity.targetId}
and user_id = #{entity.targetId}
</insert>
</insert>
<insert
id=
"addLikeCount"
>
update opm_user_like
set like_count = like_count + 1
where 1=1
and user_id = #{entity.userId}
and target_id = #{entity.targetId}
and create_date
>
= #{entity.beginTime}
and create_date
<
= #{entity.endTime}
</insert>
<insert
id=
"leaveMessage"
>
<insert
id=
"leaveMessage"
>
insert into mem_user_leave_message (target_id,create_by,create_date,update_by,update_date,content)
insert into mem_user_leave_message (target_id,create_by,create_date,update_by,update_date,content)
values(#{targetId},#{userId},NOW(),#{userId},NOW(),#{content})
values(#{targetId},#{userId},NOW(),#{userId},NOW(),#{content})
...
...
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