FamilyController.java 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. package com.ruoyi.app.controller;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
  4. import com.github.pagehelper.PageHelper;
  5. import com.ruoyi.app.annotation.LoginAppUser;
  6. import com.ruoyi.app.controller.base.AppBaseController;
  7. import com.ruoyi.app.domain.TbAppUser;
  8. import com.ruoyi.app.domain.TbFamily;
  9. import com.ruoyi.app.domain.TbFamilyMember;
  10. import com.ruoyi.app.domain.TbMemberMiddle;
  11. import com.ruoyi.app.domain.vo.AppFamilyVo;
  12. import com.ruoyi.app.domain.vo.AppMemberVo;
  13. import com.ruoyi.app.service.ITbAppUserService;
  14. import com.ruoyi.app.service.ITbFamilyService;
  15. import com.ruoyi.app.service.ITbMemberMiddleService;
  16. import com.ruoyi.common.annotation.Log;
  17. import com.ruoyi.common.core.domain.AjaxResult;
  18. import com.ruoyi.common.core.page.TableDataInfo;
  19. import com.ruoyi.common.enums.BusinessType;
  20. import com.ruoyi.common.utils.StringUtils;
  21. import com.ruoyi.common.utils.bean.BeanUtils;
  22. import com.ruoyi.common.utils.spring.SpringUtils;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiImplicitParam;
  25. import io.swagger.annotations.ApiImplicitParams;
  26. import io.swagger.annotations.ApiOperation;
  27. import lombok.RequiredArgsConstructor;
  28. import org.apache.poi.ss.formula.functions.T;
  29. import org.aspectj.weaver.loadtime.Aj;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.security.access.prepost.PreAuthorize;
  32. import org.springframework.transaction.annotation.Transactional;
  33. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  34. import org.springframework.web.bind.annotation.*;
  35. import java.util.ArrayList;
  36. import java.util.Arrays;
  37. import java.util.Date;
  38. import java.util.List;
  39. /**
  40. * 家族管理
  41. *
  42. * @author Alex
  43. * @date 2020-09-24
  44. */
  45. @Api(value = "家族管理",tags = "家族管理")
  46. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  47. @RestController
  48. @RequestMapping("/app/family" )
  49. public class FamilyController extends AppBaseController {
  50. private final ITbFamilyService familyService;
  51. private final ITbAppUserService appUserService;
  52. private final ITbMemberMiddleService middleService;
  53. /**
  54. * 查询家族列表
  55. */
  56. @ApiOperation("查询家族列表")
  57. @GetMapping("/list")
  58. public TableDataInfo list(TbFamily tbFamily)
  59. {
  60. startPage();
  61. LambdaQueryWrapper<TbFamily> lqw = new LambdaQueryWrapper<>();
  62. if (StringUtils.isNotBlank(tbFamily.getCode())){
  63. lqw.eq(TbFamily::getCode ,tbFamily.getCode());
  64. }
  65. if (StringUtils.isNotBlank(tbFamily.getName())){
  66. lqw.like(TbFamily::getName ,tbFamily.getName());
  67. }
  68. if (StringUtils.isNotBlank(tbFamily.getFullName())){
  69. lqw.like(TbFamily::getFullName ,tbFamily.getFullName());
  70. }
  71. if (StringUtils.isNotBlank(tbFamily.getHometown())){
  72. lqw.eq(TbFamily::getHometown ,tbFamily.getHometown());
  73. }
  74. if (StringUtils.isNotBlank(tbFamily.getAddress())){
  75. lqw.eq(TbFamily::getAddress ,tbFamily.getAddress());
  76. }
  77. if (StringUtils.isNotBlank(tbFamily.getCity())){
  78. lqw.eq(TbFamily::getCity ,tbFamily.getCity());
  79. }
  80. List<AppFamilyVo> list = familyService.pageList(lqw);
  81. return getDataTable(list);
  82. }
  83. /**
  84. * 查询我的默认家族
  85. */
  86. @ApiOperation("我的默认家族")
  87. @GetMapping("/myFamily")
  88. public AjaxResult myFamily(){
  89. AppMemberVo memberVo = getLoginUser().getUser();
  90. Long memberId = memberVo.getMemberId();
  91. if (memberId == null) {
  92. return AjaxResult.error("成员id不能为空");
  93. }
  94. TbFamily family = familyService.myFamily(memberId);
  95. return AjaxResult.success(family);
  96. }
  97. @ApiOperation("我的家族列表")
  98. @GetMapping("/myList")
  99. public AjaxResult myList(){
  100. AppMemberVo memberVo = getLoginUser().getUser();
  101. Long memberId = memberVo.getMemberId();
  102. if (memberId == null) {
  103. return AjaxResult.error("成员id不能为空");
  104. }
  105. return AjaxResult.success(familyService.selectByMemberId(memberId));
  106. }
  107. /**
  108. * 创建家族
  109. */
  110. @ApiOperation("创建家族")
  111. @PostMapping("/create")
  112. @Transactional(rollbackFor = Exception.class)
  113. public AjaxResult add(@RequestBody TbFamily tbFamily) {
  114. AppMemberVo memberVo = getLoginUser().getUser();
  115. Date date = new Date();
  116. tbFamily.setCreateTime(date);
  117. tbFamily.setUpdateTime(date);
  118. if(!familyService.saveFamily(tbFamily)) {
  119. return AjaxResult.error("创建失败");
  120. }
  121. // 设置添加人为管理员
  122. TbMemberMiddle middle = new TbMemberMiddle();
  123. middle.setMemberId(memberVo.getMemberId());
  124. middle.setFamilyId(tbFamily.getId());
  125. middle.setAcquiesce("Y");
  126. middle.setAdmin("Y");
  127. middle.setStatus("2");
  128. if(!middleService.save(middle)) {
  129. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  130. return AjaxResult.error("创建失败");
  131. }
  132. return AjaxResult.success("创建成功");
  133. }
  134. @ApiOperation("切换家族")
  135. @ApiImplicitParam(name = "familyId", value = "切换的家族ID",paramType="Long")
  136. @GetMapping("/change")
  137. public AjaxResult change(Long familyId) {
  138. AppMemberVo memberVo = getLoginUser().getUser();
  139. Long memberId = memberVo.getMemberId();
  140. if(familyService.change(memberId,familyId)){
  141. return AjaxResult.success();
  142. }
  143. return AjaxResult.error("切换失败");
  144. }
  145. /**
  146. * 申请加入家族
  147. * @param familyId
  148. * @return
  149. */
  150. @ApiOperation("申请加入家族")
  151. @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
  152. @GetMapping("/join")
  153. public AjaxResult join(Long familyId) {
  154. if (familyId == null) {
  155. return AjaxResult.error("家族id不能为空");
  156. }
  157. AppMemberVo memberVo = getLoginUser().getUser();
  158. memberVo.setFamilyId(familyId);
  159. return familyService.applyFamily(memberVo);
  160. }
  161. @ApiOperation("申请列表")
  162. @ApiImplicitParams({
  163. @ApiImplicitParam(name = "familyId", value = "家族id",paramType="Long"),
  164. @ApiImplicitParam(name = "pageNum", value = "当前页",paramType="int"),
  165. @ApiImplicitParam(name = "pageSize", value = "每页行数",paramType="int")
  166. })
  167. @GetMapping("/selectApply")
  168. public TableDataInfo selectApply(Long familyId,Integer pageNum,Integer pageSize){
  169. if (familyId == null){
  170. return new TableDataInfo();
  171. }
  172. pageNum = pageNum == null ? 1 : pageNum;
  173. pageSize = pageSize == null ? 10 : pageSize;
  174. PageHelper.startPage(pageNum, pageSize, "mi.create_time desc");
  175. // 获取申请列表 1申请 3拒绝 4退出
  176. List<TbMemberMiddle> list = middleService.selectApplyMember(new LambdaQueryWrapper<TbMemberMiddle>()
  177. .eq(TbMemberMiddle::getFamilyId,familyId)
  178. .in(TbMemberMiddle::getStatus, Arrays.asList("1","3","4"))
  179. );
  180. return getDataTable(list);
  181. }
  182. @ApiOperation("通过/拒绝申请")
  183. @ApiImplicitParams({
  184. @ApiImplicitParam(name = "memberId", value = "申请的成员id",paramType="Long"),
  185. @ApiImplicitParam(name = "familyId", value = "家族id",paramType="Long"),
  186. @ApiImplicitParam(name = "status", value = "申请状态 2同意 3拒绝",paramType="String")
  187. })
  188. @GetMapping("/pass")
  189. public AjaxResult pass(Long memberId,Long familyId, String status){
  190. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  191. .eq(TbMemberMiddle::getFamilyId,familyId)
  192. .eq(TbMemberMiddle::getMemberId,memberId)
  193. .eq(TbMemberMiddle::getStatus,"1")
  194. .last("limit 1")
  195. );
  196. if (middle == null) {
  197. return AjaxResult.error("查无申请信息");
  198. }
  199. // 通过/拒绝申请
  200. middle.setStatus(status);
  201. if(!middleService.updateById(middle)){
  202. return AjaxResult.error("通过失败");
  203. }
  204. return AjaxResult.success("申请通过");
  205. }
  206. /**
  207. * 退出家族
  208. * @param familyId
  209. * @return
  210. */
  211. @ApiOperation("退出家族")
  212. @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
  213. @GetMapping("/quit")
  214. public AjaxResult quit(Long familyId) {
  215. if (familyId == null) {
  216. return AjaxResult.error("家族id为空");
  217. }
  218. AppMemberVo user = getLoginUser().getUser();
  219. TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
  220. .eq(TbMemberMiddle::getMemberId,user.getMemberId())
  221. .eq(TbMemberMiddle::getFamilyId,familyId)
  222. .last("limit 1")
  223. );
  224. if (middle == null){
  225. return AjaxResult.error("未加入家族");
  226. }
  227. if ("Y".equals(middle.getPatriarch())) {
  228. return AjaxResult.error("族长不能退出家族");
  229. }
  230. if ("4".equals(middle.getStatus())) {
  231. return AjaxResult.error("已退出");
  232. }
  233. middle.setStatus("4"); //退出
  234. middle.setAcquiesce("N");
  235. if(!middleService.updateById(middle)){
  236. return AjaxResult.error("退出失败");
  237. }
  238. return AjaxResult.success("退出成功");
  239. }
  240. }