FamilyMemberController.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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. // pageNum = pageNum == null ? 1 : pageNum;
  55. // pageSize = pageSize == null ? 10 : pageSize;
  56. // PageHelper.startPage(pageNum, pageSize, "py_first asc");
  57. List<AppMemberVo> list = memberService.myMemberList(new LambdaQueryWrapper<AppMemberVo>()
  58. .eq(AppMemberVo::getFamilyId,family.getId())
  59. .eq(AppMemberVo::getStatus,"2")
  60. );
  61. return AjaxResult.success(list);
  62. }
  63. @ApiOperation("家族树")
  64. @GetMapping("/tree")
  65. public AjaxResult tree(Long familyId){
  66. if (familyId == null) {
  67. return AjaxResult.error("家族id不能为空");
  68. }
  69. return AjaxResult.success(memberService.getFamilyTree(familyId));
  70. }
  71. @ApiOperation("家族树 列表")
  72. @GetMapping("/treeList")
  73. public AjaxResult treeList(Long familyId) {
  74. AppMemberVo memberVo = new AppMemberVo();
  75. memberVo.setFamilyId(familyId);
  76. List<AppMemberVo> list = memberService.selectFamilyTree(memberVo);
  77. return AjaxResult.success(list);
  78. }
  79. @ApiOperation("添加/修改成员-家族树")
  80. @PostMapping("/saveToTree")
  81. public AjaxResult addToTree(@RequestBody TbMemberMiddle member){
  82. if (member == null) {
  83. return AjaxResult.error("数据为空");
  84. }
  85. if (member.getFamilyId()==null) {
  86. return AjaxResult.error("家族id不能为空");
  87. }
  88. if (member.getParentId()==null) {
  89. return AjaxResult.error("父辈不能为空");
  90. }
  91. if (member.getMemberId()==null) {
  92. return AjaxResult.error("姓名不能为空");
  93. }
  94. if (member.getMemberId().equals(member.getParentId())) {
  95. return AjaxResult.error("不能设置自己为父辈");
  96. }
  97. if(!memberService.saveFamilyTree(member)){
  98. return AjaxResult.error("添加失败");
  99. }
  100. return AjaxResult.success("添加成功");
  101. }
  102. @ApiOperation(value = "逻辑删除家族树的成员", notes = "逻辑删除家族树的成员(去掉parentId),相当于这一支人将从家族树中删除")
  103. @DeleteMapping("/delToTree/{familyId}/{memberId}")
  104. public AjaxResult delToTree(@PathVariable Long memberId, @PathVariable Long familyId) {
  105. if (memberId == null || familyId ==null) {
  106. return AjaxResult.error("参数不能为空");
  107. }
  108. return memberService.delToTree(memberId,familyId);
  109. }
  110. @ApiOperation("编辑成员")
  111. @PostMapping("/edit")
  112. public AjaxResult edit(@RequestBody AppMemberVo member) {
  113. if (member == null) {
  114. return AjaxResult.error("成员信息不能为空");
  115. }
  116. if (StringUtils.isBlank(member.getMobile())){
  117. return AjaxResult.error("手机号不能为空");
  118. }
  119. AppMemberVo memberVo = appUserService.getAppMember(null,member.getMobile());
  120. if (memberVo == null) {
  121. return AjaxResult.error("保存失败,成员信息不能为空");
  122. }
  123. // TODO copy后,id不知道还有没有
  124. BeanUtils.copyBeanProp(memberVo,member);
  125. if(!appUserService.saveOrUpdate(memberVo)){
  126. return AjaxResult.error("保存失败");
  127. }
  128. return AjaxResult.success("保存成功");
  129. }
  130. @ApiOperation("获取家族成员详情")
  131. @PostMapping("/get")
  132. public AjaxResult get(Long familyId,Long memberId) {
  133. if (familyId == null) {
  134. return AjaxResult.error("家族id不能为空");
  135. }
  136. if (memberId == null) {
  137. return AjaxResult.error("成员id不能为空");
  138. }
  139. return AjaxResult.success(memberService.getMemberDetail(familyId,memberId));
  140. }
  141. /**
  142. * 删除家族成员
  143. */
  144. @ApiOperation("删除家族成员")
  145. @DeleteMapping("/{familyId}/{ids}" )
  146. public AjaxResult remove(@PathVariable String familyId, @PathVariable Long[] ids) {
  147. if (StringUtils.isBlank(familyId)) {
  148. return AjaxResult.error("家族id不能为空");
  149. }
  150. if (ids.length <= 0) {
  151. return AjaxResult.error("未选择要删的成员");
  152. }
  153. return memberService.delMember(familyId,ids);
  154. }
  155. @ApiOperation("家族管理员列表")
  156. @GetMapping("/adminList")
  157. public AjaxResult adminList(Long familyId){
  158. if (familyId == null) {
  159. return AjaxResult.error("家族id不能为空");
  160. }
  161. List<AppMemberVo> memberVos = memberService.myMemberList(new LambdaQueryWrapper<AppMemberVo>()
  162. .eq(AppMemberVo::getFamilyId,familyId)
  163. .eq(AppMemberVo::getStatus,"2")
  164. .eq(AppMemberVo::getAdmin,"Y")
  165. );
  166. return AjaxResult.success(memberVos);
  167. }
  168. @ApiOperation("添加家族管理员")
  169. @GetMapping("/addAdmin")
  170. public AjaxResult addAdmin(Long familyId, Long memberId) {
  171. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  172. .eq(TbMemberMiddle::getFamilyId,familyId)
  173. .eq(TbMemberMiddle::getMemberId,memberId)
  174. .last("limit 1")
  175. );
  176. if (middle == null) {
  177. return AjaxResult.error("该成员不存在");
  178. }
  179. middle.setAdmin("Y");
  180. if (!middleService.updateById(middle)){
  181. return AjaxResult.error("添加失败");
  182. }
  183. return AjaxResult.success("添加成功");
  184. }
  185. @ApiOperation("移除家族管理员")
  186. @GetMapping("/delAdmin")
  187. public AjaxResult delAdmin(Long familyId, Long memberId) {
  188. if (familyId == null || memberId == null) {
  189. return AjaxResult.error("参数为空");
  190. }
  191. AppMemberVo vo = getLoginUser().getUser();
  192. if (memberId.equals(vo.getMemberId())) {
  193. return AjaxResult.error("不能移除自己");
  194. }
  195. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  196. .eq(TbMemberMiddle::getFamilyId,familyId)
  197. .eq(TbMemberMiddle::getMemberId,memberId)
  198. .last("limit 1")
  199. );
  200. if (middle == null) {
  201. return AjaxResult.error("该成员不存在");
  202. }
  203. middle.setAdmin("N");
  204. if (!middleService.updateById(middle)){
  205. return AjaxResult.error("移除失败");
  206. }
  207. return AjaxResult.success("移除成功");
  208. }
  209. }