diff --git a/jeecg-boot-module/jeecg-module-service/src/main/java/org/jeecg/modules/service/service/impl/AuthUserServiceImpl.java b/jeecg-boot-module/jeecg-module-service/src/main/java/org/jeecg/modules/service/service/impl/AuthUserServiceImpl.java index adad376..1cd07a5 100644 --- a/jeecg-boot-module/jeecg-module-service/src/main/java/org/jeecg/modules/service/service/impl/AuthUserServiceImpl.java +++ b/jeecg-boot-module/jeecg-module-service/src/main/java/org/jeecg/modules/service/service/impl/AuthUserServiceImpl.java @@ -6,8 +6,10 @@ import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.service.entity.AuthUser; import org.jeecg.modules.service.entity.GroupMembers; +import org.jeecg.modules.service.entity.GroupRecord; import org.jeecg.modules.service.mapper.AuthUserMapper; import org.jeecg.modules.service.mapper.GroupMembersMapper; +import org.jeecg.modules.service.mapper.GroupRecordMapper; import org.jeecg.modules.service.service.IAuthUserService; import org.jeecg.modules.service.vo.*; import org.jeecg.modules.system.entity.CardApplicationCustomers; @@ -19,9 +21,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -45,6 +45,8 @@ @Resource private GroupMembersMapper groupMembersMapper; + @Resource + private GroupRecordMapper groupRecordMapper; @Override public RecommendUserVO recommendUser(String userId) { @@ -77,26 +79,87 @@ @Override public List myGroupMemberList(String userId) { List list = new ArrayList<>(); - //查询我的团成员信息 + if (userId == null || userId.isEmpty()) { + return list; + } + + // 查询我的团成员信息 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("client_id", userId); List groupMembers = groupMembersMapper.selectList(queryWrapper); - for (GroupMembers groupMember : groupMembers) { - MyGroupMemberVO myGroupMemberVO = new MyGroupMemberVO(); - //查询会员信息 - AuthUser authUser = authUserMapper.selectById(groupMember.getClientId()); - if (authUser != null){ - myGroupMemberVO.setName(authUser.getWxName()); - myGroupMemberVO.setAvatar(authUser.getAvatar()); - } - //查询预约信息 - CardApplicationCustomers cardApplicationCustomers = cardApplicationCustomersMapper.selectById(groupMember.getReservationId()); - if (cardApplicationCustomers != null){ - myGroupMemberVO.setReservationTime(DateUtil.format(cardApplicationCustomers.getReservationTime(), "yyyy-MM-dd HH:mm:ss")); - myGroupMemberVO.setPhone(cardApplicationCustomers.getCardApplicationPhone()); - } - list.add(myGroupMemberVO); + + if (groupMembers == null || groupMembers.isEmpty()) { + return list; } + + // 提前收集所有需要查询的 ID + Set groupIds = groupMembers.stream() + .map(GroupMembers::getGroupId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Map groupRecords = groupRecordMapper.selectList( + new QueryWrapper().in("id", groupIds)).stream() + .collect(Collectors.toMap(GroupRecord::getId, record -> record)); + + Set clientIds = groupRecords.values().stream() + .map(GroupRecord::getGroupLeaderId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Set reservationIds = groupMembers.stream() + .map(GroupMembers::getReservationId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Map authUserMap = new HashMap<>(); + Map reservationMap = new HashMap<>(); + + try { + // 批量查询用户信息 + if (!clientIds.isEmpty()) { + QueryWrapper userQueryWrapper = new QueryWrapper<>(); + userQueryWrapper.in("id", clientIds); + List authUsers = authUserMapper.selectList(userQueryWrapper); + authUserMap = authUsers.stream() + .collect(Collectors.toMap(AuthUser::getId, user -> user)); + } + + // 批量查询预约信息 + if (!reservationIds.isEmpty()) { + QueryWrapper reservationQueryWrapper = new QueryWrapper<>(); + reservationQueryWrapper.in("id", reservationIds); + List reservations = cardApplicationCustomersMapper.selectList(reservationQueryWrapper); + reservationMap = reservations.stream() + .collect(Collectors.toMap(CardApplicationCustomers::getId, r -> r)); + } + + } catch (Exception e) { + throw new RuntimeException("查询团成员相关信息失败", e); + } + + // 组装 VO + for (GroupMembers groupMember : groupMembers) { + MyGroupMemberVO vo = new MyGroupMemberVO(); + GroupRecord groupRecord = groupRecords.get(groupMember.getGroupId()); + if (groupRecord != null){ + AuthUser authUser = authUserMap.get(groupRecord.getGroupLeaderId()); + if (authUser != null) { + vo.setName(authUser.getWxName()); + vo.setAvatar(authUser.getAvatar()); + } + } + + + CardApplicationCustomers reservation = reservationMap.get(groupMember.getReservationId()); + if (reservation != null) { + vo.setReservationTime(DateUtil.format(reservation.getReservationTime(), "yyyy-MM-dd HH:mm:ss")); + vo.setPhone(reservation.getCardApplicationPhone()); + } + + list.add(vo); + } + return list; }