FamilyMemberController.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package com.ruoyi.app.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.github.pagehelper.PageHelper;
  4. import com.ruoyi.app.annotation.LoginAppUser;
  5. import com.ruoyi.app.controller.base.AppBaseController;
  6. import com.ruoyi.app.domain.TbAppUser;
  7. import com.ruoyi.app.domain.TbFamily;
  8. import com.ruoyi.app.domain.TbFamilyMember;
  9. import com.ruoyi.app.domain.TbMemberMiddle;
  10. import com.ruoyi.app.domain.vo.AppMemberVo;
  11. import com.ruoyi.app.service.ITbAppUserService;
  12. import com.ruoyi.app.service.ITbFamilyMemberService;
  13. import com.ruoyi.app.service.ITbFamilyService;
  14. import com.ruoyi.app.service.ITbMemberMiddleService;
  15. import com.ruoyi.common.annotation.Log;
  16. import com.ruoyi.common.core.domain.AjaxResult;
  17. import com.ruoyi.common.core.page.TableDataInfo;
  18. import com.ruoyi.common.enums.BusinessType;
  19. import com.ruoyi.common.utils.StringUtils;
  20. import com.ruoyi.common.utils.bean.BeanUtils;
  21. import io.swagger.annotations.Api;
  22. import io.swagger.annotations.ApiImplicitParam;
  23. import io.swagger.annotations.ApiImplicitParams;
  24. import io.swagger.annotations.ApiOperation;
  25. import lombok.RequiredArgsConstructor;
  26. import org.aspectj.weaver.bcel.AtAjAttributes;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.security.access.prepost.PreAuthorize;
  29. import org.springframework.web.bind.annotation.*;
  30. import java.util.ArrayList;
  31. import java.util.List;
  32. /**
  33. * 家族成员管理
  34. *
  35. * @author Alex
  36. * @date 2020-09-24
  37. */
  38. @Api(value = "家族成员管理",tags = "家族成员管理")
  39. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  40. @RestController
  41. @RequestMapping("/app/member" )
  42. public class FamilyMemberController extends AppBaseController {
  43. private final ITbFamilyMemberService memberService;
  44. private final ITbAppUserService appUserService;
  45. private final ITbFamilyService familyService;
  46. private final ITbMemberMiddleService middleService;
  47. @ApiOperation("我的家族成员列表")
  48. @GetMapping("/list")
  49. public AjaxResult list() {
  50. // 登录用户
  51. AppMemberVo memberVo = getLoginUser().getUser();
  52. // 获取默认家族信息
  53. TbFamily family = familyService.myFamily(memberVo.getMemberId());
  54. // 获取家族关联成员的信息
  55. List<TbMemberMiddle> middles = middleService.list(new LambdaQueryWrapper<TbMemberMiddle>()
  56. .eq(TbMemberMiddle::getFamilyId, family.getId())
  57. );
  58. if (middles.size() <= 0) {
  59. return AjaxResult.success();
  60. }
  61. List<Long> ids = new ArrayList<>();
  62. middles.forEach(item -> {
  63. ids.add(item.getMemberId());
  64. });
  65. // 根据家族获取成员信息
  66. // pageNum = pageNum == null ? 1 : pageNum;
  67. // pageSize = pageSize == null ? 10 : pageSize;
  68. // PageHelper.startPage(pageNum, pageSize, "py_first asc");
  69. List<TbFamilyMember> list = memberService.list(new LambdaQueryWrapper<TbFamilyMember>()
  70. .in(TbFamilyMember::getId, ids)
  71. );
  72. return AjaxResult.success(list);
  73. }
  74. @ApiOperation("家族树")
  75. @GetMapping("/tree")
  76. public AjaxResult tree(Long familyId){
  77. if (familyId == null) {
  78. return AjaxResult.error("家族id不能为空");
  79. }
  80. return AjaxResult.success(memberService.getFamilyTree(familyId));
  81. }
  82. @ApiOperation("家族树 列表")
  83. @GetMapping("/treeList")
  84. public AjaxResult treeList(Long familyId) {
  85. return null;
  86. }
  87. @ApiOperation("添加成员-家族树")
  88. @PostMapping("/addToTree")
  89. public AjaxResult addToTree(@RequestBody TbMemberMiddle member){
  90. if (member == null) {
  91. return AjaxResult.error("数据为空");
  92. }
  93. if (member.getFamilyId()==null) {
  94. return AjaxResult.error("家族id不能为空");
  95. }
  96. if (member.getParentId()==null) {
  97. return AjaxResult.error("父辈不能为空");
  98. }
  99. if (member.getMemberId()==null) {
  100. return AjaxResult.error("姓名不能为空");
  101. }
  102. if(!memberService.addFamilyTree(member)){
  103. return AjaxResult.error("添加失败");
  104. }
  105. return AjaxResult.success("添加成功");
  106. }
  107. @ApiOperation(value = "逻辑删除家族树的成员", notes = "逻辑删除家族树的成员(去掉parentId),相当于这一支人将从家族树中删除")
  108. @PostMapping("/delToTree")
  109. public AjaxResult delToTree(Long memberId, Long familyId) {
  110. if (memberId == null || familyId ==null) {
  111. return AjaxResult.error("参数不能为空");
  112. }
  113. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  114. .eq(TbMemberMiddle::getFamilyId,familyId)
  115. .eq(TbMemberMiddle::getMemberId,memberId)
  116. .last("limit 1")
  117. );
  118. if (middle == null) {
  119. return AjaxResult.error("删除失败");
  120. }
  121. if (middle.getParentId() == null) {
  122. return AjaxResult.error("该成员没有在家族树中");
  123. }
  124. // 设置parentId为空
  125. middle.setParentId(null);
  126. if(!middleService.updateById(middle)){
  127. return AjaxResult.error("删除失败");
  128. }
  129. return AjaxResult.success("删除成功");
  130. }
  131. @ApiOperation("编辑成员")
  132. @PostMapping("/edit")
  133. public AjaxResult edit(@RequestBody AppMemberVo member) {
  134. if (member == null) {
  135. return AjaxResult.error("成员信息不能为空");
  136. }
  137. if (StringUtils.isBlank(member.getMobile())){
  138. return AjaxResult.error("手机号不能为空");
  139. }
  140. AppMemberVo memberVo = appUserService.getAppMember(null,member.getMobile());
  141. if (memberVo == null) {
  142. return AjaxResult.error("保存失败,成员信息不能为空");
  143. }
  144. // TODO copy后,id不知道还有没有
  145. BeanUtils.copyBeanProp(memberVo,member);
  146. if(!appUserService.saveOrUpdate(memberVo)){
  147. return AjaxResult.error("保存失败");
  148. }
  149. return AjaxResult.success("保存成功");
  150. }
  151. @ApiOperation("获取成员")
  152. @PostMapping("/get")
  153. public AjaxResult get(Long memberId) {
  154. if (memberId == null) {
  155. return AjaxResult.error("成员id不能为空");
  156. }
  157. return AjaxResult.success(memberService.get(memberId));
  158. }
  159. /**
  160. * 删除家族成员
  161. */
  162. @ApiOperation("删除家族成员")
  163. @DeleteMapping("/{familyId}/{ids}" )
  164. public AjaxResult remove(@PathVariable String familyId, @PathVariable Long[] ids) {
  165. if (familyId == null) {
  166. return AjaxResult.error("家族id不能为空");
  167. }
  168. if (ids.length <= 0) {
  169. return AjaxResult.error("未选择要删的成员");
  170. }
  171. return memberService.delMember(familyId,ids);
  172. }
  173. }