From 27018d0787915dbb89ee778b09a0bcccca2be8f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Wed, 12 Mar 2025 20:32:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E6=B6=88=E6=81=AF=E6=95=B0=E9=87=8F=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/MessageController.java | 15 +++++++-- .../cfs/controller/MessageController.java | 14 ++++++-- .../common/constant/Constant.java | 4 +++ .../service/IAdminMessageService.java | 6 ++-- .../service/IAppMessageService.java | 6 ++-- .../service/impl/AdminMessageServiceImpl.java | 29 +++++++++++++++-- .../service/impl/AppMessageServiceImpl.java | 32 +++++++++++++++---- 7 files changed, 89 insertions(+), 17 deletions(-) diff --git a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java index 832f3582..e9efcbd2 100644 --- a/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java +++ b/nflg-mobilebroken-admin/src/main/java/com/nflg/mobilebroken/admin/controller/MessageController.java @@ -88,7 +88,7 @@ public class MessageController extends ControllerBase { @MethodInfoMark(value = "设置消息已读", menuName = "消息管理") @ApiMark(moduleName = "消息管理", apiName = "设置消息已读") public ApiResult setReaded(@Valid @RequestBody List ids) { - adminMessageService.setReaded(ids); + adminMessageService.setReaded(AdminUserUtil.getUserId(),ids); return ApiResult.success(); } @@ -100,7 +100,7 @@ public class MessageController extends ControllerBase { @MethodInfoMark(value = "设置消息未读", menuName = "消息管理") @ApiMark(moduleName = "消息管理", apiName = "设置消息未读") public ApiResult setNotRead(@Valid @RequestBody List ids) { - adminMessageService.setNotRead(ids); + adminMessageService.setNotRead(AdminUserUtil.getUserId(),ids); return ApiResult.success(); } @@ -110,10 +110,21 @@ public class MessageController extends ControllerBase { * @return 未读消息列表 */ @GetMapping("getNotReadMessages") + @ApiMark(moduleName = "消息管理", apiName = "获取未读消息") public ApiResult> getNotReadMessages(@RequestParam(defaultValue = "10") Integer num) { return ApiResult.success(adminMessageService.getNotReadMessage(AdminUserUtil.getUserId(), num)); } + /** + * 获取未读消息数量 + * @return 未读消息数量 + */ + @GetMapping("getNotReadMessageCount") + @ApiMark(moduleName = "消息管理", apiName = "获取未读消息数量") + public ApiResult getNotReadMessageCount(){ + return ApiResult.success(adminMessageService.getNotReadMessageCount(AdminUserUtil.getUserId())); + } + /** * 获取消息配置 * @return 消息配置 diff --git a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java index 4357ec38..4cd54a23 100644 --- a/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java +++ b/nflg-mobilebroken-cfs-app/src/main/java/com/nflg/mobilebroken/cfs/controller/MessageController.java @@ -50,18 +50,17 @@ public class MessageController extends ControllerBase { */ @PostMapping("setReaded") public ApiResult setReaded(@Valid @RequestBody List ids) { - appMessageService.setReaded(ids); + appMessageService.setReaded(AppUserUtil.getUserId(),ids); return ApiResult.success(); } /** * 设置消息未读 - * * @param ids 消息id列表 */ @PostMapping("setNotRead") public ApiResult setNotRead(@Valid @RequestBody List ids) { - appMessageService.setNotRead(ids); + appMessageService.setNotRead(AppUserUtil.getUserId(),ids); return ApiResult.success(); } @@ -75,6 +74,15 @@ public class MessageController extends ControllerBase { return ApiResult.success(appMessageService.getNotReadMessage(AppUserUtil.getUserId(), num)); } + /** + * 获取未读消息数量 + * @return 未读消息数量 + */ + @GetMapping("getNotReadMessageCount") + public ApiResult getNotReadMessageCount(){ + return ApiResult.success(appMessageService.getNotReadMessageCount(AppUserUtil.getUserId())); + } + /** * 获取消息配置 * @return 消息配置 diff --git a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java index fafd5c8f..97a8321a 100644 --- a/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java +++ b/nflg-mobilebroken-common/src/main/java/com/nflg/mobilebroken/common/constant/Constant.java @@ -20,6 +20,10 @@ public class Constant { public static final String REDIS_KEY_USER_UPDATE_KAPTCHA_ADMIN = "admin:kaptcha:user:update:{}"; + public static final String REDIS_KEY_MESSAGE_NOT_READ_COUNT_ADMIN = "admin:message:unread"; + + public static final String REDIS_KEY_MESSAGE_NOT_READ_COUNT_APP = "app:message:unread"; + public static final String REDIS_KEY_MESSAGECONFIG_WX = "wxNotifyEnabled"; public static final String REDIS_KEY_MESSAGECONFIG_EMAIL = "emailNotifyEnabled"; diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java index ffe10f82..998e7e0d 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAdminMessageService.java @@ -20,11 +20,13 @@ public interface IAdminMessageService extends IService { IPage search(Integer userId, AdminMessageSearchRequest request); - void setReaded(List ids); + void setReaded(Integer userId,List ids); - void setNotRead(List ids); + void setNotRead(Integer userId,List ids); void add(AdminMessage message); IPage getNotReadMessage(Integer userId, Integer num); + + Integer getNotReadMessageCount(Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java index 275d5fcc..285def2b 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/IAppMessageService.java @@ -22,9 +22,11 @@ public interface IAppMessageService extends IService { IPage search(Integer userId, AppMessageSearchRequest request); - void setReaded(List ids); + void setReaded(Integer userId,List ids); - void setNotRead(List ids); + void setNotRead(Integer userId,List ids); void add(AppMessage message); + + Integer getNotReadMessageCount(Integer userId); } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java index 818f794f..86d7bfd7 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AdminMessageServiceImpl.java @@ -4,15 +4,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.request.AdminMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AdminMessageVO; import com.nflg.mobilebroken.repository.entity.AdminMessage; import com.nflg.mobilebroken.repository.mapper.AdminMessageMapper; import com.nflg.mobilebroken.repository.service.IAdminMessageService; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.util.List; +import java.util.Optional; /** *

@@ -25,25 +29,32 @@ import java.util.List; @Service public class AdminMessageServiceImpl extends ServiceImpl implements IAdminMessageService { + @Resource + private RedisTemplate redisTemplate; + @Override public IPage search(Integer userId, AdminMessageSearchRequest request) { return baseMapper.search(userId, request, new Page<>(request.getPage(), request.getPageSize())); } @Override - public void setReaded(List ids) { + public void setReaded(Integer userId, List ids) { lambdaUpdate() .set(AdminMessage::getIsRead, true) + .eq(AdminMessage::getUserId, userId) .in(AdminMessage::getId, ids) .update(); + setUnreadMessageCount(userId); } @Override - public void setNotRead(List ids) { + public void setNotRead(Integer userId, List ids) { lambdaUpdate() .set(AdminMessage::getIsRead, false) + .eq(AdminMessage::getUserId, userId) .in(AdminMessage::getId, ids) .update(); + setUnreadMessageCount(userId); } @Transactional @@ -54,10 +65,24 @@ public class AdminMessageServiceImpl extends ServiceImpl getNotReadMessage(Integer userId, Integer num) { return baseMapper.getNotReadMessage(userId, num, new Page<>(1, num)); } + + private void setUnreadMessageCount(Integer userId){ + Integer count= Math.toIntExact(lambdaQuery() + .eq(AdminMessage::getIsRead, false) + .eq(AdminMessage::getUserId, userId) + .count()); + redisTemplate.opsForHash().put(Constant.REDIS_KEY_MESSAGE_NOT_READ_COUNT_ADMIN, userId, count); + } + + @Override + public Integer getNotReadMessageCount(Integer userId) { + return Optional.ofNullable((Integer) redisTemplate.opsForHash().get(Constant.REDIS_KEY_MESSAGE_NOT_READ_COUNT_ADMIN, userId)).orElse(0); + } } diff --git a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java index b1a00543..11997445 100644 --- a/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java +++ b/nflg-mobilebroken-repository/src/main/java/com/nflg/mobilebroken/repository/service/impl/AppMessageServiceImpl.java @@ -5,19 +5,18 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.nflg.mobilebroken.common.constant.Constant; import com.nflg.mobilebroken.common.pojo.request.AppMessageSearchRequest; import com.nflg.mobilebroken.common.pojo.vo.AppMessageVO; import com.nflg.mobilebroken.repository.entity.AppMessage; import com.nflg.mobilebroken.repository.mapper.AppMessageMapper; import com.nflg.mobilebroken.repository.service.IAdminUserService; import com.nflg.mobilebroken.repository.service.IAppMessageService; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -34,6 +33,9 @@ public class AppMessageServiceImpl extends ServiceImpl redisTemplate; + @Override public IPage getNotReadMessage(Integer userId, Integer num) { return baseMapper.getNotReadMessage(userId, num, new Page<>(1, num)); @@ -62,19 +64,23 @@ public class AppMessageServiceImpl extends ServiceImpl ids) { + public void setReaded(Integer userId,List ids) { lambdaUpdate() .set(AppMessage::getIsRead, true) + .eq(AppMessage::getUserId, userId) .in(AppMessage::getId, ids) .update(); + setUnreadMessageCount(userId); } @Override - public void setNotRead(List ids) { + public void setNotRead(Integer userId,List ids) { lambdaUpdate() .set(AppMessage::getIsRead, false) + .eq(AppMessage::getUserId, userId) .in(AppMessage::getId, ids) .update(); + setUnreadMessageCount(userId); } @Override @@ -84,5 +90,19 @@ public class AppMessageServiceImpl extends ServiceImpl