package com.ruoyi.app.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.pagehelper.PageHelper; import com.ruoyi.app.annotation.LoginAppUser; import com.ruoyi.app.controller.base.AppBaseController; import com.ruoyi.app.domain.TbAppUser; import com.ruoyi.app.domain.TbFamily; import com.ruoyi.app.domain.TbFamilyMember; import com.ruoyi.app.domain.TbMemberMiddle; import com.ruoyi.app.domain.vo.AppMemberVo; import com.ruoyi.app.service.ITbAppUserService; import com.ruoyi.app.service.ITbFamilyMemberService; import com.ruoyi.app.service.ITbFamilyService; import com.ruoyi.app.service.ITbMemberMiddleService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.aspectj.weaver.bcel.AtAjAttributes; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; /** * 家族成员管理 * * @author Alex * @date 2020-09-24 */ @Api(value = "家族成员管理",tags = "家族成员管理") @RequiredArgsConstructor(onConstructor_ = @Autowired) @RestController @RequestMapping("/app/member" ) public class FamilyMemberController extends AppBaseController { private final ITbFamilyMemberService memberService; private final ITbAppUserService appUserService; private final ITbFamilyService familyService; private final ITbMemberMiddleService middleService; @ApiOperation("我的家族成员列表") @GetMapping("/list") public AjaxResult list() { // 登录用户 AppMemberVo memberVo = getLoginUser().getUser(); // 获取默认家族信息 TbFamily family = familyService.myFamily(memberVo.getMemberId()); // pageNum = pageNum == null ? 1 : pageNum; // pageSize = pageSize == null ? 10 : pageSize; // PageHelper.startPage(pageNum, pageSize, "py_first asc"); List list = memberService.myMemberList(new LambdaQueryWrapper() .eq(AppMemberVo::getFamilyId,family.getId()) .eq(AppMemberVo::getStatus,"2") ); return AjaxResult.success(list); } @ApiOperation("家族树") @GetMapping("/tree") public AjaxResult tree(Long familyId){ if (familyId == null) { return AjaxResult.error("家族id不能为空"); } return AjaxResult.success(memberService.getFamilyTree(familyId)); } @ApiOperation("家族树 列表") @GetMapping("/treeList") public AjaxResult treeList(Long familyId) { AppMemberVo memberVo = new AppMemberVo(); memberVo.setFamilyId(familyId); List list = memberService.selectFamilyTree(memberVo); return AjaxResult.success(list); } @ApiOperation("添加/修改成员-家族树") @PostMapping("/saveToTree") public AjaxResult addToTree(@RequestBody TbMemberMiddle member){ if (member == null) { return AjaxResult.error("数据为空"); } if (member.getFamilyId()==null) { return AjaxResult.error("家族id不能为空"); } if (member.getParentId()==null) { return AjaxResult.error("父辈不能为空"); } if (member.getMemberId()==null) { return AjaxResult.error("姓名不能为空"); } if (member.getMemberId().equals(member.getParentId())) { return AjaxResult.error("不能设置自己为父辈"); } if(!memberService.saveFamilyTree(member)){ return AjaxResult.error("添加失败"); } return AjaxResult.success("添加成功"); } @ApiOperation(value = "逻辑删除家族树的成员", notes = "逻辑删除家族树的成员(去掉parentId),相当于这一支人将从家族树中删除") @DeleteMapping("/delToTree/{familyId}/{memberId}") public AjaxResult delToTree(@PathVariable Long memberId, @PathVariable Long familyId) { if (memberId == null || familyId ==null) { return AjaxResult.error("参数不能为空"); } return memberService.delToTree(memberId,familyId); } @ApiOperation("编辑成员") @PostMapping("/edit") public AjaxResult edit(@RequestBody AppMemberVo member) { if (member == null) { return AjaxResult.error("成员信息不能为空"); } if (StringUtils.isBlank(member.getMobile())){ return AjaxResult.error("手机号不能为空"); } AppMemberVo memberVo = appUserService.getAppMember(null,member.getMobile()); if (memberVo == null) { return AjaxResult.error("保存失败,成员信息不能为空"); } // TODO copy后,id不知道还有没有 BeanUtils.copyBeanProp(memberVo,member); if(!appUserService.saveOrUpdate(memberVo)){ return AjaxResult.error("保存失败"); } return AjaxResult.success("保存成功"); } @ApiOperation("获取家族成员详情") @PostMapping("/get") public AjaxResult get(Long familyId,Long memberId) { if (familyId == null) { return AjaxResult.error("家族id不能为空"); } if (memberId == null) { return AjaxResult.error("成员id不能为空"); } return AjaxResult.success(memberService.getMemberDetail(familyId,memberId)); } /** * 删除家族成员 */ @ApiOperation("删除家族成员") @DeleteMapping("/{familyId}/{ids}" ) public AjaxResult remove(@PathVariable String familyId, @PathVariable Long[] ids) { if (StringUtils.isBlank(familyId)) { return AjaxResult.error("家族id不能为空"); } if (ids.length <= 0) { return AjaxResult.error("未选择要删的成员"); } return memberService.delMember(familyId,ids); } @ApiOperation("家族管理员列表") @GetMapping("/adminList") public AjaxResult adminList(Long familyId){ if (familyId == null) { return AjaxResult.error("家族id不能为空"); } List memberVos = memberService.myMemberList(new LambdaQueryWrapper() .eq(AppMemberVo::getFamilyId,familyId) .eq(AppMemberVo::getStatus,"2") .eq(AppMemberVo::getAdmin,"Y") ); return AjaxResult.success(memberVos); } @ApiOperation("添加家族管理员") @GetMapping("/addAdmin") public AjaxResult addAdmin(Long familyId, Long memberId) { TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper() .eq(TbMemberMiddle::getFamilyId,familyId) .eq(TbMemberMiddle::getMemberId,memberId) .last("limit 1") ); if (middle == null) { return AjaxResult.error("该成员不存在"); } middle.setAdmin("Y"); if (!middleService.updateById(middle)){ return AjaxResult.error("添加失败"); } return AjaxResult.success("添加成功"); } @ApiOperation("移除家族管理员") @GetMapping("/delAdmin") public AjaxResult delAdmin(Long familyId, Long memberId) { if (familyId == null || memberId == null) { return AjaxResult.error("参数为空"); } AppMemberVo vo = getLoginUser().getUser(); if (memberId.equals(vo.getMemberId())) { return AjaxResult.error("不能移除自己"); } TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper() .eq(TbMemberMiddle::getFamilyId,familyId) .eq(TbMemberMiddle::getMemberId,memberId) .last("limit 1") ); if (middle == null) { return AjaxResult.error("该成员不存在"); } middle.setAdmin("N"); if (!middleService.updateById(middle)){ return AjaxResult.error("移除失败"); } return AjaxResult.success("移除成功"); } }