FamilyMemberController.java 9.4 KB

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