From af8bceb495222859261834021475e879cdd76a04 Mon Sep 17 00:00:00 2001 From: easonzhu Date: Sat, 22 Feb 2025 22:41:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=88=E5=AD=90=E6=88=90?= =?UTF-8?q?=E5=91=98=E4=BA=BA=E6=95=B0=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/service/BusinessDataService.java | 24 ++-------- .../service/common/GroupCommonService.java | 48 +++++++++++++++---- 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/syzb/business/service/BusinessDataService.java b/src/main/java/com/syzb/business/service/BusinessDataService.java index c8a79df..dbe2409 100644 --- a/src/main/java/com/syzb/business/service/BusinessDataService.java +++ b/src/main/java/com/syzb/business/service/BusinessDataService.java @@ -18,6 +18,7 @@ import com.syzb.common.constant.IsOrNot; import com.syzb.common.util.logger.LoggerUtil; import com.syzb.group.entity.GroupInfo; import com.syzb.group.mapper.GroupInfoMapper; +import com.syzb.group.service.common.GroupCommonService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,7 +43,7 @@ public class BusinessDataService { private ModuleUserMapper moduleUserMapper; @Resource - private GroupInfoMapper groupInfoMapper; + private GroupCommonService groupCommonService; @Transactional(rollbackFor = Exception.class) public void syncOrder() { @@ -79,7 +80,7 @@ public class BusinessDataService { List lastModuleUserList = moduleUserMapper.selectList(wrapper); Map updateTimeMap = lastModuleUserList.stream().collect(Collectors.toMap(ModuleUser::getModuleId, ModuleUser::getUpdateTime)); LocalDateTime endTime = LocalDateTime.now(); - Set moduleIds = getModuleIds(); + Set moduleIds = groupCommonService.getModuleIds(null); for (Integer moduleId : moduleIds) { LocalDateTime startTime = updateTimeMap.getOrDefault(moduleId, INIT_SYNC_TIME); List moduleUserList = businessApiService.getModuleUserList(moduleId, startTime, endTime); @@ -100,25 +101,6 @@ public class BusinessDataService { } } - private Set getModuleIds() { - Set moduleIdSet = new HashSet<>(); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() - .select(GroupInfo::getAuthorityId); - List authIdList = groupInfoMapper.selectList(wrapper); - authIdList.stream().map(GroupInfo::getAuthorityId).filter(StrUtil::isNotBlank) - .forEach(authId -> { - String[] moduleIdStrArray = authId.split(","); - for (String moduleIdStr : moduleIdStrArray) { - try { - moduleIdSet.add(Integer.valueOf(moduleIdStr)); - } catch (NumberFormatException e) { - LoggerUtil.error("权限ID格式错误:" + authId + ":" + e.getMessage()); - } - } - }); - return moduleIdSet; - } - private AppOrder convertOrder(BusinessOrderVO order, boolean isNew) { AppOrder appOrder = new AppOrder(); appOrder.setOrderId(order.getOrderId()); diff --git a/src/main/java/com/syzb/group/service/common/GroupCommonService.java b/src/main/java/com/syzb/group/service/common/GroupCommonService.java index 73870a1..698f020 100644 --- a/src/main/java/com/syzb/group/service/common/GroupCommonService.java +++ b/src/main/java/com/syzb/group/service/common/GroupCommonService.java @@ -2,20 +2,23 @@ package com.syzb.group.service.common; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.util.StrUtil; 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.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; +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.entity.OnlineUser; +import com.syzb.common.util.logger.LoggerUtil; import com.syzb.common.vo.IdCountVO; import com.syzb.group.constant.GroupInteractiveType; import com.syzb.group.constant.GroupMessageUserType; import com.syzb.group.entity.*; import com.syzb.group.mapper.*; -import com.syzb.group.vo.GroupVO; import com.syzb.group.vo.message.GroupMessageReadVO; import com.syzb.group.vo.message.GroupMessageVO; import org.springframework.stereotype.Service; @@ -51,6 +54,9 @@ public class GroupCommonService { @Resource private GroupMessageReadMapper groupMessageReadMapper; + @Resource + private ModuleUserMapper moduleUserMapper; + @Transactional(rollbackFor = Exception.class) public void saveGroupMessageRead() { List cacheList = hazelcastInstance.getList(CacheKey.GroupKey.TEMP_READ_LIST); @@ -58,7 +64,7 @@ public class GroupCommonService { Map> map = new HashMap<>(cacheList.size()); for (GroupMessageReadVO read : cacheList) { if (read != null) { - read.getMessageIds().stream().forEach(m -> + read.getMessageIds().forEach(m -> map.computeIfAbsent(m, k -> new HashSet<>()).add(read.getUserId())); } } @@ -169,9 +175,9 @@ public class GroupCommonService { GroupCollect collect = new GroupCollect(); collect.setGroupId(groupId); collect.setDate(date); - collect.setTotalMembers(getTotalMembers(groupId)); + collect.setTotalMembers(getModuleMembers(groupId, false)); collect.setVisitedMembers(visitMemberMap.getOrDefault(groupId, 0)); - collect.setNewMembers(getNewMembers(groupId)); + collect.setNewMembers(getModuleMembers(groupId, true)); collect.setInteractionMembers(0); collect.setPrivateChatMembers(0); List messageMemberList = groupMessageMemberMap.get(groupId); @@ -235,13 +241,35 @@ public class GroupCommonService { } } - private Integer getTotalMembers(Integer groupId) { - // TODO - return 0; + public Set getModuleIds(Integer groupId) { + Set moduleIdSet = new HashSet<>(); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .select(GroupInfo::getAuthorityId) + .eq(groupId != null, GroupInfo::getId, groupId); + List authIdList = groupInfoMapper.selectList(wrapper); + authIdList.stream().map(GroupInfo::getAuthorityId).filter(StrUtil::isNotBlank) + .forEach(authId -> { + String[] moduleIdStrArray = authId.split(","); + for (String moduleIdStr : moduleIdStrArray) { + try { + moduleIdSet.add(Integer.valueOf(moduleIdStr)); + } catch (NumberFormatException e) { + LoggerUtil.error("权限ID格式错误:" + authId + ":" + e.getMessage()); + } + } + }); + return moduleIdSet; } - private Integer getNewMembers(Integer groupId) { - // TODO - return 0; + private Integer getModuleMembers(Integer groupId, boolean isNew) { + Set moduleIds = getModuleIds(groupId); + if (CollUtil.isEmpty(moduleIds)) { + return 0; + } + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .in(ModuleUser::getModuleId, moduleIds) + .ge(isNew, ModuleUser::getCreateTime, LocalDate.now().atStartOfDay()); + return moduleUserMapper.selectCount(wrapper).intValue(); } + } \ No newline at end of file