|
@@ -1,20 +1,26 @@
|
|
|
package com.winhc.repal.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.winhc.common.enums.CodeMsg;
|
|
|
import com.winhc.common.exception.CommonException;
|
|
|
import com.winhc.repal.entity.RepalGroupMember;
|
|
|
+import com.winhc.repal.entity.RepalGroupRole;
|
|
|
+import com.winhc.repal.entity.UserExt;
|
|
|
import com.winhc.repal.enums.DeletedStatusEnum;
|
|
|
import com.winhc.repal.enums.RepalBillTypeEnum;
|
|
|
+import com.winhc.repal.model.vo.GroupRoleMemberVO;
|
|
|
import com.winhc.repal.repository.RepalGroupMemberMapper;
|
|
|
import com.winhc.repal.service.RepalGroupMemberService;
|
|
|
+import com.winhc.repal.service.RepalGroupRoleService;
|
|
|
import com.winhc.repal.service.UserExtService;
|
|
|
import com.winhc.repal.util.UserContextUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @description RepalGroupMember 接口实现类
|
|
@@ -30,6 +36,12 @@ public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMap
|
|
|
@Autowired
|
|
|
private RepalGroupMemberMapper repalGroupMemberMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private RepalGroupMemberService repalGroupMemberService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepalGroupRoleService repalGroupRoleService;
|
|
|
+
|
|
|
@Override
|
|
|
public Long getUserGroupId(Long userId) {
|
|
|
RepalGroupMember repalGroupMember = this.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
|
|
@@ -66,4 +78,36 @@ public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMap
|
|
|
.eq(RepalGroupMember::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
|
|
|
return (RepalBillTypeEnum.RECEIVABLE.getCode().equals(type) ? member.getReceivable() : member.getReceipt()) > 0;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<GroupRoleMemberVO> getGroupRoleMemberList() {
|
|
|
+ long userId = UserContextUtil.getUser().getUserId();
|
|
|
+ long groupId = repalGroupMemberService.getUserGroupId(userId);
|
|
|
+ List<RepalGroupMember> memberList = this.list(Wrappers.lambdaQuery(RepalGroupMember.class)
|
|
|
+ .eq(RepalGroupMember::getRepalGroupId, groupId)
|
|
|
+ .eq(RepalGroupMember::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
|
|
|
+ if (CollUtil.isEmpty(memberList)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+ List<RepalGroupRole> roleList = repalGroupRoleService.getRoleByIdList(memberList.stream().map(RepalGroupMember::getRoleId).distinct().collect(Collectors.toList()));
|
|
|
+ Map<Long, String> roleNameMap = roleList.stream().collect(Collectors.toMap(RepalGroupRole::getId, RepalGroupRole::getRoleName));
|
|
|
+ Map<Long, List<RepalGroupMember>> memberMap = memberList.stream().collect(Collectors.groupingBy(RepalGroupMember::getRoleId, Collectors.toList()));
|
|
|
+ List<GroupRoleMemberVO> resultList = new ArrayList<>();
|
|
|
+ for (Map.Entry<Long, List<RepalGroupMember>> entry : memberMap.entrySet()) {
|
|
|
+ GroupRoleMemberVO vo = new GroupRoleMemberVO();
|
|
|
+ vo.setRoleId(entry.getKey());
|
|
|
+ vo.setRoleName(roleNameMap.get(entry.getKey()));
|
|
|
+ vo.setRoleMemberList(entry.getValue().stream().map(t -> {
|
|
|
+ GroupRoleMemberVO.RoleMemberVO roleMemberVO = new GroupRoleMemberVO.RoleMemberVO();
|
|
|
+ roleMemberVO.setMemberId(t.getId());
|
|
|
+ roleMemberVO.setMemberName(t.getMemberUserName());
|
|
|
+ roleMemberVO.setUserId(t.getUserId());
|
|
|
+ // todo
|
|
|
+ //roleMemberVO.setAvatar();
|
|
|
+ return roleMemberVO;
|
|
|
+ }).sorted(Comparator.comparing(GroupRoleMemberVO.RoleMemberVO::getMemberId).reversed()).collect(Collectors.toList()));
|
|
|
+ resultList.add(vo);
|
|
|
+ }
|
|
|
+ return resultList.stream().sorted(Comparator.comparing(GroupRoleMemberVO::getRoleId)).collect(Collectors.toList());
|
|
|
+ }
|
|
|
}
|