From 0fbcb50b44618b83d8db3e80ab17a4c4a2708bc6 Mon Sep 17 00:00:00 2001 From: easonzhu Date: Sat, 1 Mar 2025 19:54:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=8E=B7=E5=8F=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/AdminGroupMessageController.java | 8 +++++ .../admin/AdminGroupMessageService.java | 32 +++++++++++++++++++ .../syzb/group/vo/message/GroupMessageVO.java | 4 +++ 3 files changed, 44 insertions(+) diff --git a/src/main/java/com/syzb/group/controller/admin/AdminGroupMessageController.java b/src/main/java/com/syzb/group/controller/admin/AdminGroupMessageController.java index 3a3a6df..e24c949 100644 --- a/src/main/java/com/syzb/group/controller/admin/AdminGroupMessageController.java +++ b/src/main/java/com/syzb/group/controller/admin/AdminGroupMessageController.java @@ -64,6 +64,14 @@ public class AdminGroupMessageController { return CommonResult.success(list); } + @ApiOperation("后台获取用户列表") + @PostMapping("/admin/group/message/getCustomerList") + public CommonResult> getCustomerList(@Validated @RequestBody @ApiParam(required = true) OnlyIdQuery query, + @RequestAttribute(value = "backendUser", required = false) BackendUserVO backendUserVO) { + List list = adminGroupMessageService.getCustomerList(query, backendUserVO); + return CommonResult.success(list); + } + @ApiOperation("后台推荐产品消息") @PostMapping("/admin/group/message/sendProductMessage") public CommonResult sendProductMessage(@Validated @RequestBody @ApiParam(required = true) GroupMessageProductQuery query, diff --git a/src/main/java/com/syzb/group/service/admin/AdminGroupMessageService.java b/src/main/java/com/syzb/group/service/admin/AdminGroupMessageService.java index 0d766ad..bd7922c 100644 --- a/src/main/java/com/syzb/group/service/admin/AdminGroupMessageService.java +++ b/src/main/java/com/syzb/group/service/admin/AdminGroupMessageService.java @@ -6,10 +6,13 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.base.Functions; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; import com.syzb.advisor.service.AdvisorInfoService; import com.syzb.advisor.vo.AdvisorBasicVO; +import com.syzb.business.entity.ModuleUser; +import com.syzb.business.mapper.ModuleUserMapper; import com.syzb.common.config.cache.CacheKey; import com.syzb.common.constant.IsOrNot; import com.syzb.common.constant.ProductType; @@ -30,6 +33,7 @@ import com.syzb.group.mapper.GroupMessageMapper; import com.syzb.group.mapper.GroupMessageReadMapper; import com.syzb.group.query.message.*; import com.syzb.group.service.common.GroupCacheService; +import com.syzb.group.service.common.GroupCommonService; import com.syzb.group.service.common.GroupMessageService; import com.syzb.group.vo.message.GroupMessageReadVO; import com.syzb.group.vo.message.GroupMessageVO; @@ -77,6 +81,12 @@ public class AdminGroupMessageService { @Resource private GroupMessageReadMapper groupMessageReadMapper; + @Resource + private GroupCommonService groupCommonService; + + @Resource + private ModuleUserMapper moduleUserMapper; + @Transactional(rollbackFor = Exception.class) public OnlyIdVO sendAdvisorMessage(SendGroupMessageAdminQuery query, BackendUserVO backendUser) { GroupInfo group = groupInfoMapper.selectById(query.getGroupId()); @@ -179,6 +189,28 @@ public class AdminGroupMessageService { return list.stream().map(GroupMessage::getId).map(id -> groupCacheService.getMessage(id, advisorMap)).collect(Collectors.toList()); } + public List getCustomerList(OnlyIdQuery query, BackendUserVO backendUserVO) { + Integer groupId = query.getId(); + Set moduleIdSet = groupCommonService.getModuleIds(groupId); + if (CollUtil.isEmpty(moduleIdSet)) { + return Collections.emptyList(); + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .select(ModuleUser::getUserId) + .in(ModuleUser::getModuleId, moduleIdSet) + .orderByDesc(ModuleUser::getCreateTime); + List moduleUserList = moduleUserMapper.selectList(wrapper); + if (CollUtil.isEmpty(moduleUserList)) { + return Collections.emptyList(); + } + List privateChatList = getPrivateChatList(query, backendUserVO); + Map privateChatMap = privateChatList.stream().collect(Collectors.toMap(GroupMessageVO::getId, Functions.identity())); + return moduleUserList.stream().map(moduleUser -> { + String userId = moduleUser.getUserId(); + return privateChatMap.getOrDefault(userId, new GroupMessageVO(userId)); + }).collect(Collectors.toList()); + } + @Transactional(rollbackFor = Exception.class) public OnlyIdVO saveProductMessage(GroupMessageProductQuery query, BackendUserVO backendUser) { GroupMessage message = new GroupMessage(); diff --git a/src/main/java/com/syzb/group/vo/message/GroupMessageVO.java b/src/main/java/com/syzb/group/vo/message/GroupMessageVO.java index 8e75a1f..2cfe378 100644 --- a/src/main/java/com/syzb/group/vo/message/GroupMessageVO.java +++ b/src/main/java/com/syzb/group/vo/message/GroupMessageVO.java @@ -87,6 +87,10 @@ public class GroupMessageVO implements Serializable { public GroupMessageVO() { } + public GroupMessageVO(String userId) { + this.userId = userId; + } + public GroupMessageVO(GroupMessage message, AdvisorBasicVO advisor) { this.id = message.getId(); this.msgType = message.getMsgType();