FamilyMemberController.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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(String search) {
  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. .and(
  61. i -> i.like(AppMemberVo::getQrcode,search).or()
  62. .like(AppMemberVo::getMobile,search).or()
  63. .like(AppMemberVo::getName,search)
  64. )
  65. );
  66. return AjaxResult.success(list);
  67. }
  68. @ApiOperation("家族树")
  69. @GetMapping("/tree")
  70. public AjaxResult tree(Long familyId){
  71. if (familyId == null) {
  72. return AjaxResult.error("家族id不能为空");
  73. }
  74. return AjaxResult.success(memberService.getFamilyTree(familyId));
  75. }
  76. @ApiOperation("家族树 列表")
  77. @GetMapping("/treeList")
  78. public AjaxResult treeList(Long familyId) {
  79. AppMemberVo memberVo = new AppMemberVo();
  80. memberVo.setFamilyId(familyId);
  81. List<AppMemberVo> list = memberService.selectFamilyTree(memberVo);
  82. return AjaxResult.success(list);
  83. }
  84. @ApiOperation("添加/修改成员-家族树")
  85. @PostMapping("/saveToTree")
  86. public AjaxResult addToTree(@RequestBody TbMemberMiddle member){
  87. if (member == null) {
  88. return AjaxResult.error("数据为空");
  89. }
  90. if (member.getFamilyId()==null) {
  91. return AjaxResult.error("家族id不能为空");
  92. }
  93. if (member.getParentId()==null) {
  94. return AjaxResult.error("父辈不能为空");
  95. }
  96. if (member.getMemberId()==null) {
  97. return AjaxResult.error("姓名不能为空");
  98. }
  99. if (member.getMemberId().equals(member.getParentId())) {
  100. return AjaxResult.error("不能设置自己为父辈");
  101. }
  102. if (member.getParentId().equals(member.getSpouseUserId())) {
  103. return AjaxResult.error("父辈与配偶不能为同一人");
  104. }
  105. if(!memberService.saveFamilyTree(member)){
  106. return AjaxResult.error("添加失败");
  107. }
  108. return AjaxResult.success("添加成功");
  109. }
  110. @ApiOperation(value = "逻辑删除家族树的成员", notes = "逻辑删除家族树的成员(去掉parentId),相当于这一支人将从家族树中删除")
  111. @DeleteMapping("/delToTree/{familyId}/{memberId}")
  112. public AjaxResult delToTree(@PathVariable Long memberId, @PathVariable Long familyId) {
  113. if (memberId == null || familyId ==null) {
  114. return AjaxResult.error("参数不能为空");
  115. }
  116. return memberService.delToTree(memberId,familyId);
  117. }
  118. /**
  119. * 新增家族成员
  120. */
  121. @ApiOperation("新增家族成员")
  122. @PostMapping("/add")
  123. public AjaxResult add(@RequestBody AppMemberVo memberVo) {
  124. if (org.apache.commons.lang3.StringUtils.isBlank(memberVo.getMobile())){
  125. return AjaxResult.error("手机号不能为空");
  126. }
  127. // 后台添加,状态直接为通过 2
  128. memberVo.setStatus("2");
  129. return toAjax(memberService.saveOrUpdate(memberVo) ? 1 : 0);
  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 familyId,Long memberId) {
  154. if (familyId == null) {
  155. return AjaxResult.error("家族id不能为空");
  156. }
  157. if (memberId == null) {
  158. return AjaxResult.error("成员id不能为空");
  159. }
  160. return AjaxResult.success(memberService.getMemberDetail(familyId,memberId));
  161. }
  162. /**
  163. * 删除家族成员
  164. */
  165. @ApiOperation("删除家族成员")
  166. @DeleteMapping("/{familyId}/{ids}" )
  167. public AjaxResult remove(@PathVariable String familyId, @PathVariable Long[] ids) {
  168. if (StringUtils.isBlank(familyId)) {
  169. return AjaxResult.error("家族id不能为空");
  170. }
  171. if (ids.length <= 0) {
  172. return AjaxResult.error("未选择要删的成员");
  173. }
  174. return memberService.delMember(familyId,ids);
  175. }
  176. @ApiOperation("家族管理员列表")
  177. @GetMapping("/adminList")
  178. public AjaxResult adminList(Long familyId){
  179. if (familyId == null) {
  180. return AjaxResult.error("家族id不能为空");
  181. }
  182. List<AppMemberVo> memberVos = memberService.myMemberList(new LambdaQueryWrapper<AppMemberVo>()
  183. .eq(AppMemberVo::getFamilyId,familyId)
  184. .eq(AppMemberVo::getStatus,"2")
  185. .eq(AppMemberVo::getAdmin,"Y")
  186. );
  187. return AjaxResult.success(memberVos);
  188. }
  189. @ApiOperation("添加家族管理员")
  190. @GetMapping("/addAdmin")
  191. public AjaxResult addAdmin(Long familyId, Long memberId) {
  192. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  193. .eq(TbMemberMiddle::getFamilyId,familyId)
  194. .eq(TbMemberMiddle::getMemberId,memberId)
  195. .last("limit 1")
  196. );
  197. if (middle == null) {
  198. return AjaxResult.error("该成员不存在");
  199. }
  200. middle.setAdmin("Y");
  201. if (!middleService.updateById(middle)){
  202. return AjaxResult.error("添加失败");
  203. }
  204. return AjaxResult.success("添加成功");
  205. }
  206. @ApiOperation("移除家族管理员")
  207. @GetMapping("/delAdmin")
  208. public AjaxResult delAdmin(Long familyId, Long memberId) {
  209. if (familyId == null || memberId == null) {
  210. return AjaxResult.error("参数为空");
  211. }
  212. AppMemberVo vo = getLoginUser().getUser();
  213. if (memberId.equals(vo.getMemberId())) {
  214. return AjaxResult.error("不能移除自己");
  215. }
  216. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  217. .eq(TbMemberMiddle::getFamilyId,familyId)
  218. .eq(TbMemberMiddle::getMemberId,memberId)
  219. .last("limit 1")
  220. );
  221. if (middle == null) {
  222. return AjaxResult.error("该成员不存在");
  223. }
  224. middle.setAdmin("N");
  225. if (!middleService.updateById(middle)){
  226. return AjaxResult.error("移除失败");
  227. }
  228. return AjaxResult.success("移除成功");
  229. }
  230. }