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()); // 获取家族关联成员的信息 List middles = middleService.list(new LambdaQueryWrapper() .eq(TbMemberMiddle::getFamilyId, family.getId()) ); if (middles.size() <= 0) { return AjaxResult.success(); } List ids = new ArrayList<>(); middles.forEach(item -> { ids.add(item.getMemberId()); }); // 根据家族获取成员信息 // pageNum = pageNum == null ? 1 : pageNum; // pageSize = pageSize == null ? 10 : pageSize; // PageHelper.startPage(pageNum, pageSize, "py_first asc"); List list = memberService.list(new LambdaQueryWrapper() .in(TbFamilyMember::getId, ids) ); 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) { return null; } @ApiOperation("添加成员-家族树") @PostMapping("/addToTree") 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(!memberService.addFamilyTree(member)){ return AjaxResult.error("添加失败"); } return AjaxResult.success("添加成功"); } @ApiOperation(value = "逻辑删除家族树的成员", notes = "逻辑删除家族树的成员(去掉parentId),相当于这一支人将从家族树中删除") @PostMapping("/delToTree") public AjaxResult delToTree(Long memberId, Long familyId) { if (memberId == null || familyId ==null) { 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("删除失败"); } if (middle.getParentId() == null) { return AjaxResult.error("该成员没有在家族树中"); } // 设置parentId为空 middle.setParentId(null); if(!middleService.updateById(middle)){ return AjaxResult.error("删除失败"); } return AjaxResult.success("删除成功"); } @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 memberId) { if (memberId == null) { return AjaxResult.error("成员id不能为空"); } return AjaxResult.success(memberService.get(memberId)); } /** * 删除家族成员 */ @ApiOperation("删除家族成员") @DeleteMapping("/{familyId}/{ids}" ) public AjaxResult remove(@PathVariable String familyId, @PathVariable Long[] ids) { if (familyId == null) { return AjaxResult.error("家族id不能为空"); } if (ids.length <= 0) { return AjaxResult.error("未选择要删的成员"); } return memberService.delMember(familyId,ids); } }