TbFamilyMemberServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package com.ruoyi.app.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.ruoyi.app.domain.TbMemberMiddle;
  4. import com.ruoyi.app.domain.vo.AppMemberVo;
  5. import com.ruoyi.app.service.ITbAppUserService;
  6. import com.ruoyi.app.service.ITbMemberMiddleService;
  7. import com.ruoyi.common.utils.StringUtils;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Service;
  10. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  11. import com.ruoyi.app.mapper.TbFamilyMemberMapper;
  12. import com.ruoyi.app.domain.TbFamilyMember;
  13. import com.ruoyi.app.service.ITbFamilyMemberService;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. /**
  17. * 家族成员Service业务层处理
  18. *
  19. * @author Alex
  20. * @date 2020-09-29
  21. */
  22. @Service
  23. public class TbFamilyMemberServiceImpl extends ServiceImpl<TbFamilyMemberMapper, TbFamilyMember> implements ITbFamilyMemberService {
  24. @Autowired
  25. private ITbAppUserService userService;
  26. @Autowired
  27. private ITbMemberMiddleService memberMiddleService;
  28. /**
  29. * 添加家族成员
  30. * @param memberVo
  31. * @return
  32. */
  33. @Override
  34. public boolean saveOrUpdate(AppMemberVo memberVo){
  35. if(!userService.saveOrUpdate(memberVo)){
  36. return false;
  37. }
  38. TbMemberMiddle memberMiddle = memberMiddleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  39. .eq(TbMemberMiddle::getFamilyId, memberVo.getFamilyId())
  40. .eq(TbMemberMiddle::getMemberId, memberVo.getMemberId())
  41. );
  42. //新增
  43. if (memberMiddle == null) {
  44. TbMemberMiddle item = new TbMemberMiddle();
  45. item.setFamilyId(memberVo.getFamilyId());
  46. item.setMemberId(memberVo.getMemberId());
  47. memberMiddleService.save(item);
  48. }
  49. return true;
  50. }
  51. @Override
  52. public List<AppMemberVo> selectFamilyMember(AppMemberVo memberVo) {
  53. LambdaQueryWrapper<AppMemberVo> lqw = new LambdaQueryWrapper<>();
  54. if (memberVo.getFamilyId() == null) {
  55. return new ArrayList<>();
  56. }
  57. lqw.eq(AppMemberVo::getFamilyId, memberVo.getFamilyId());
  58. if (StringUtils.isNotBlank(memberVo.getSearchValue())) {
  59. lqw.like(AppMemberVo::getName,memberVo.getSearchValue()).or()
  60. .like(AppMemberVo::getNickName,memberVo.getSearchValue()).or()
  61. .like(AppMemberVo::getMobile,memberVo.getSearchValue()).or()
  62. .like(AppMemberVo::getQrcode,memberVo.getSearchValue());
  63. }
  64. return baseMapper.selectFamilyMember(lqw);
  65. }
  66. @Override
  67. public TbMemberMiddle getFamilyTree(Long familyId){
  68. return getChildNode(zeroParent(familyId),allList(familyId));
  69. }
  70. /**
  71. * 获取所有的成员
  72. * @param familyId
  73. * @return
  74. */
  75. private List<TbMemberMiddle> allList(Long familyId){
  76. List<TbMemberMiddle> list = memberMiddleService.selectApplyMember(new LambdaQueryWrapper<TbMemberMiddle>()
  77. .eq(TbMemberMiddle::getFamilyId,familyId)
  78. .eq(TbMemberMiddle::getStatus,"2")
  79. );
  80. return list;
  81. }
  82. /**
  83. * 获取节点为0的父成员
  84. * @param familyId
  85. * @return
  86. */
  87. private TbMemberMiddle zeroParent(Long familyId){
  88. return memberMiddleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  89. .eq(TbMemberMiddle::getFamilyId,familyId)
  90. .eq(TbMemberMiddle::getStatus,"2")
  91. .eq(TbMemberMiddle::getParentId, 0).last("limit 1")
  92. );
  93. }
  94. /**
  95. * 递归获取家族树
  96. * @param middle 父成员
  97. * @param list 所有的成员
  98. * @return
  99. */
  100. private TbMemberMiddle getChildNode(TbMemberMiddle middle,List<TbMemberMiddle> list) {
  101. List<TbMemberMiddle> childList = new ArrayList<>();
  102. list.forEach(item -> {
  103. if(middle.getId().equals(item.getParentId())){
  104. childList.add(item);
  105. }
  106. });
  107. middle.setChild(childList);
  108. for (TbMemberMiddle item : childList) {
  109. getChildNode(item,list);
  110. }
  111. return middle;
  112. }
  113. }