RepalGroupMemberServiceImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package com.winhc.repal.service.impl;
  2. import cn.hutool.core.collection.CollUtil;
  3. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.winhc.common.base.BeanResponse;
  6. import com.winhc.common.enums.CodeMsg;
  7. import com.winhc.common.exception.CommonException;
  8. import com.winhc.repal.cloud.LoginService;
  9. import com.winhc.repal.cloud.dto.RepalRegUserDTO;
  10. import com.winhc.repal.cloud.dto.RepalRegUserInfoDTO;
  11. import com.winhc.repal.entity.RepalGroupMember;
  12. import com.winhc.repal.entity.RepalGroupRole;
  13. import com.winhc.repal.entity.UserInfo;
  14. import com.winhc.repal.enums.DeletedStatusEnum;
  15. import com.winhc.repal.enums.RepalBillTypeEnum;
  16. import com.winhc.repal.enums.RoleTypeEnum;
  17. import com.winhc.repal.model.dto.AddGroupMemberDTO;
  18. import com.winhc.repal.model.dto.UpdateMemberRoleDTO;
  19. import com.winhc.repal.model.vo.GroupRoleMemberVO;
  20. import com.winhc.repal.repository.RepalGroupMemberMapper;
  21. import com.winhc.repal.service.RepalGroupMemberService;
  22. import com.winhc.repal.service.RepalGroupRoleService;
  23. import com.winhc.repal.service.UserExtService;
  24. import com.winhc.repal.service.UserInfoService;
  25. import com.winhc.repal.util.UserContextUtil;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.stereotype.Service;
  28. import org.springframework.transaction.annotation.Transactional;
  29. import java.util.*;
  30. import java.util.stream.Collectors;
  31. /**
  32. * @description RepalGroupMember 接口实现类
  33. * @author Generator
  34. * @date 2022-04-08
  35. */
  36. @Service
  37. public class RepalGroupMemberServiceImpl extends ServiceImpl<RepalGroupMemberMapper, RepalGroupMember> implements RepalGroupMemberService {
  38. @Autowired
  39. private UserExtService userExtService;
  40. @Autowired
  41. private RepalGroupMemberMapper repalGroupMemberMapper;
  42. @Autowired
  43. private RepalGroupMemberService repalGroupMemberService;
  44. @Autowired
  45. private RepalGroupRoleService repalGroupRoleService;
  46. @Autowired
  47. private LoginService loginService;
  48. @Autowired
  49. private UserInfoService userInfoService;
  50. @Override
  51. public Long getUserGroupId(Long userId) {
  52. RepalGroupMember repalGroupMember = this.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
  53. .eq(RepalGroupMember::getUserId, userId)
  54. .eq(RepalGroupMember::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
  55. if (Objects.isNull(repalGroupMember)) {
  56. throw new CommonException(CodeMsg.FAILED, "组织错误");
  57. }
  58. return repalGroupMember.getRepalGroupId();
  59. }
  60. @Override
  61. public Boolean addGroupMember(Long userId, String userName, Long groupId, Long roleId, Integer roleType) {
  62. RepalGroupMember member = new RepalGroupMember();
  63. member.setRepalGroupId(groupId);
  64. member.setMemberUserName(userName);
  65. member.setUserId(userId);
  66. member.setRoleId(roleId);
  67. member.setRoleType(roleType);
  68. this.save(member);
  69. return true;
  70. }
  71. @Override
  72. public Boolean updateVisible(Integer type) {
  73. repalGroupMemberMapper.updateVisible(UserContextUtil.getUser().getUserId(), type);
  74. return true;
  75. }
  76. @Override
  77. public Boolean getMemberVisible(Integer type) {
  78. RepalGroupMember member = this.getOne(Wrappers.lambdaQuery(RepalGroupMember.class)
  79. .eq(RepalGroupMember::getUserId, UserContextUtil.getUser().getUserId())
  80. .eq(RepalGroupMember::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
  81. return (RepalBillTypeEnum.RECEIVABLE.getCode().equals(type) ? member.getReceivable() : member.getReceipt()) > 0;
  82. }
  83. @Override
  84. public List<GroupRoleMemberVO> getGroupRoleMemberList() {
  85. long userId = UserContextUtil.getUser().getUserId();
  86. long groupId = repalGroupMemberService.getUserGroupId(userId);
  87. List<RepalGroupMember> memberList = this.list(Wrappers.lambdaQuery(RepalGroupMember.class)
  88. .eq(RepalGroupMember::getRepalGroupId, groupId)
  89. .eq(RepalGroupMember::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
  90. if (CollUtil.isEmpty(memberList)) {
  91. return new ArrayList<>();
  92. }
  93. List<RepalGroupRole> roleList = repalGroupRoleService.getRoleByIdList(memberList.stream().map(RepalGroupMember::getRoleId).distinct().collect(Collectors.toList()));
  94. List<UserInfo> userInfoList = userInfoService.list(Wrappers.lambdaQuery(UserInfo.class).in(UserInfo::getUserId,
  95. memberList.stream().map(RepalGroupMember::getUserId).collect(Collectors.toList())));
  96. Map<Long, String> roleNameMap = roleList.stream().collect(Collectors.toMap(RepalGroupRole::getId, RepalGroupRole::getRoleName));
  97. Map<Long, List<RepalGroupMember>> memberMap = memberList.stream().collect(Collectors.groupingBy(RepalGroupMember::getRoleId, Collectors.toList()));
  98. Map<Long, String> avatarMap = new HashMap<>();
  99. if (CollUtil.isNotEmpty(userInfoList)) {
  100. avatarMap = userInfoList.stream().collect(Collectors.toMap(UserInfo::getUserId, UserInfo::getAvatar));
  101. }
  102. List<GroupRoleMemberVO> resultList = new ArrayList<>();
  103. for (Map.Entry<Long, List<RepalGroupMember>> entry : memberMap.entrySet()) {
  104. GroupRoleMemberVO vo = new GroupRoleMemberVO();
  105. vo.setRoleId(entry.getKey());
  106. vo.setRoleName(roleNameMap.get(entry.getKey()));
  107. Map<Long, String> finalAvatarMap = avatarMap;
  108. vo.setRoleMemberList(entry.getValue().stream().map(t -> {
  109. GroupRoleMemberVO.RoleMemberVO roleMemberVO = new GroupRoleMemberVO.RoleMemberVO();
  110. roleMemberVO.setMemberId(t.getId());
  111. roleMemberVO.setMemberName(t.getMemberUserName());
  112. roleMemberVO.setUserId(t.getUserId());
  113. roleMemberVO.setAvatar(finalAvatarMap.get(t.getUserId()));
  114. return roleMemberVO;
  115. }).sorted(Comparator.comparing(GroupRoleMemberVO.RoleMemberVO::getMemberId).reversed()).collect(Collectors.toList()));
  116. resultList.add(vo);
  117. }
  118. return resultList.stream().sorted(Comparator.comparing(GroupRoleMemberVO::getRoleId)).collect(Collectors.toList());
  119. }
  120. @Override
  121. @Transactional(rollbackFor = Exception.class)
  122. public Boolean updateMemberRole(UpdateMemberRoleDTO dto) {
  123. long groupId = this.getUserGroupId(UserContextUtil.getUser().getUserId());
  124. RepalGroupRole role = repalGroupRoleService.getById(dto.getRoleId());
  125. if (Objects.isNull(role)) {
  126. throw new CommonException(CodeMsg.FAILED, "角色错误");
  127. }
  128. if (RoleTypeEnum.CUSTOMER.getCode().equals(role.getRoleType()) && !role.getRepalGroupId().equals(groupId)) {
  129. throw new CommonException(CodeMsg.FAILED, "组织角色错误");
  130. }
  131. this.update(Wrappers.lambdaUpdate(RepalGroupMember.class)
  132. .eq(RepalGroupMember::getRepalGroupId, groupId)
  133. .eq(RepalGroupMember::getUserId, dto.getUserId())
  134. .set(RepalGroupMember::getRoleId, dto.getRoleId()));
  135. return true;
  136. }
  137. @Override
  138. @Transactional(rollbackFor = Exception.class)
  139. public Boolean addGroupMember(AddGroupMemberDTO dto) {
  140. RepalGroupRole role = repalGroupRoleService.getById(dto.getRoleId());
  141. if (Objects.isNull(role)) {
  142. throw new CommonException(CodeMsg.FAILED, "角色错误");
  143. }
  144. long userId = UserContextUtil.getUser().getUserId();
  145. long groupId = this.getUserGroupId(userId);
  146. RepalRegUserInfoDTO regUserInfoDTO = new RepalRegUserInfoDTO();
  147. regUserInfoDTO.setUserId(userId);
  148. regUserInfoDTO.setThirdPartyType(dto.getThirdPartyType());
  149. regUserInfoDTO.setRegUserList(dto.getRegList().stream().map(t -> {
  150. RepalRegUserDTO userDTO = new RepalRegUserDTO();
  151. userDTO.setAvatar(t.getAvatar());
  152. userDTO.setOpenId(t.getOpenId());
  153. return userDTO;
  154. }).collect(Collectors.toList()));
  155. BeanResponse<List<RepalRegUserDTO>> beanResponse = loginService.repalRegUser(regUserInfoDTO);
  156. if (Objects.isNull(beanResponse) || CollUtil.isEmpty(beanResponse.getBody())) {
  157. throw new CommonException(CodeMsg.FAILED, "添加用户失败");
  158. }
  159. for (RepalRegUserDTO regUserDTO : beanResponse.getBody()) {
  160. RepalGroupMember repalGroupMember = new RepalGroupMember();
  161. repalGroupMember.setUserId(regUserDTO.getUserId());
  162. repalGroupMember.setRepalGroupId(groupId);
  163. repalGroupMember.setMemberUserName(regUserDTO.getUserName());
  164. repalGroupMember.setRoleType(role.getRoleType());
  165. repalGroupMember.setRoleId(role.getId());
  166. this.save(repalGroupMember);
  167. }
  168. return true;
  169. }
  170. }