123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- package com.ruoyi.app.controller;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
- 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.AppFamilyVo;
- import com.ruoyi.app.domain.vo.AppMemberVo;
- import com.ruoyi.app.service.ITbAppUserService;
- 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 com.ruoyi.common.utils.spring.SpringUtils;
- 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.apache.poi.ss.formula.functions.T;
- import org.aspectj.weaver.loadtime.Aj;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.access.prepost.PreAuthorize;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.transaction.interceptor.TransactionAspectSupport;
- import org.springframework.web.bind.annotation.*;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- /**
- * 家族管理
- *
- * @author Alex
- * @date 2020-09-24
- */
- @Api(value = "家族管理",tags = "家族管理")
- @RequiredArgsConstructor(onConstructor_ = @Autowired)
- @RestController
- @RequestMapping("/app/family" )
- public class FamilyController extends AppBaseController {
- private final ITbFamilyService familyService;
- private final ITbAppUserService appUserService;
- private final ITbMemberMiddleService middleService;
- /**
- * 查询家族列表
- */
- @ApiOperation("查询家族列表")
- @GetMapping("/list")
- public TableDataInfo list(TbFamily tbFamily)
- {
- startPage();
- LambdaQueryWrapper<TbFamily> lqw = new LambdaQueryWrapper<>();
- if (StringUtils.isNotBlank(tbFamily.getCode())){
- lqw.eq(TbFamily::getCode ,tbFamily.getCode());
- }
- if (StringUtils.isNotBlank(tbFamily.getName())){
- lqw.like(TbFamily::getName ,tbFamily.getName());
- }
- if (StringUtils.isNotBlank(tbFamily.getFullName())){
- lqw.like(TbFamily::getFullName ,tbFamily.getFullName());
- }
- if (StringUtils.isNotBlank(tbFamily.getHometown())){
- lqw.eq(TbFamily::getHometown ,tbFamily.getHometown());
- }
- if (StringUtils.isNotBlank(tbFamily.getAddress())){
- lqw.eq(TbFamily::getAddress ,tbFamily.getAddress());
- }
- if (StringUtils.isNotBlank(tbFamily.getCity())){
- lqw.eq(TbFamily::getCity ,tbFamily.getCity());
- }
- List<AppFamilyVo> list = familyService.pageList(lqw);
- return getDataTable(list);
- }
- /**
- * 查询我的默认家族
- */
- @ApiOperation("我的默认家族")
- @GetMapping("/myFamily")
- public AjaxResult myFamily(){
- AppMemberVo memberVo = getLoginUser().getUser();
- Long memberId = memberVo.getMemberId();
- if (memberId == null) {
- return AjaxResult.error("成员id不能为空");
- }
- TbFamily family = familyService.myFamily(memberId);
- return AjaxResult.success(family);
- }
- @ApiOperation("我的家族列表")
- @GetMapping("/myList")
- public AjaxResult myList(){
- AppMemberVo memberVo = getLoginUser().getUser();
- Long memberId = memberVo.getMemberId();
- if (memberId == null) {
- return AjaxResult.error("成员id不能为空");
- }
- return AjaxResult.success(familyService.selectByMemberId(memberId));
- }
- /**
- * 创建家族
- */
- @ApiOperation("创建家族")
- @PostMapping("/create")
- @Transactional(rollbackFor = Exception.class)
- public AjaxResult add(@RequestBody TbFamily tbFamily) {
- AppMemberVo memberVo = getLoginUser().getUser();
- Date date = new Date();
- tbFamily.setCreateTime(date);
- tbFamily.setUpdateTime(date);
- if(!familyService.saveFamily(tbFamily)) {
- return AjaxResult.error("创建失败");
- }
- // 设置添加人为管理员
- TbMemberMiddle middle = new TbMemberMiddle();
- middle.setMemberId(memberVo.getMemberId());
- middle.setFamilyId(tbFamily.getId());
- middle.setAcquiesce("Y");
- middle.setAdmin("Y");
- middle.setStatus("2");
- if(!middleService.save(middle)) {
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- return AjaxResult.error("创建失败");
- }
- return AjaxResult.success("创建成功");
- }
- @ApiOperation("切换家族")
- @ApiImplicitParam(name = "familyId", value = "切换的家族ID",paramType="Long")
- @GetMapping("/change")
- public AjaxResult change(Long familyId) {
- AppMemberVo memberVo = getLoginUser().getUser();
- Long memberId = memberVo.getMemberId();
- if(familyService.change(memberId,familyId)){
- return AjaxResult.success();
- }
- return AjaxResult.error("切换失败");
- }
- /**
- * 申请加入家族
- * @param familyId
- * @return
- */
- @ApiOperation("申请加入家族")
- @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
- @GetMapping("/join")
- public AjaxResult join(Long familyId) {
- if (familyId == null) {
- return AjaxResult.error("家族id不能为空");
- }
- AppMemberVo memberVo = getLoginUser().getUser();
- memberVo.setFamilyId(familyId);
- return familyService.applyFamily(memberVo);
- }
- @ApiOperation("申请列表")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "familyId", value = "家族id",paramType="Long"),
- @ApiImplicitParam(name = "pageNum", value = "当前页",paramType="int"),
- @ApiImplicitParam(name = "pageSize", value = "每页行数",paramType="int")
- })
- @GetMapping("/selectApply")
- public TableDataInfo selectApply(Long familyId,Integer pageNum,Integer pageSize){
- if (familyId == null){
- return new TableDataInfo();
- }
- pageNum = pageNum == null ? 1 : pageNum;
- pageSize = pageSize == null ? 10 : pageSize;
- PageHelper.startPage(pageNum, pageSize, "mi.create_time desc");
- // 获取申请列表 1申请 3拒绝 4退出
- List<TbMemberMiddle> list = middleService.selectApplyMember(new LambdaQueryWrapper<TbMemberMiddle>()
- .eq(TbMemberMiddle::getFamilyId,familyId)
- .in(TbMemberMiddle::getStatus, Arrays.asList("1","3","4"))
- );
- return getDataTable(list);
- }
- @ApiOperation("通过/拒绝申请")
- @ApiImplicitParams({
- @ApiImplicitParam(name = "memberId", value = "申请的成员id",paramType="Long"),
- @ApiImplicitParam(name = "familyId", value = "家族id",paramType="Long"),
- @ApiImplicitParam(name = "status", value = "申请状态 2同意 3拒绝",paramType="String")
- })
- @GetMapping("/pass")
- public AjaxResult pass(Long memberId,Long familyId, String status){
- TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
- .eq(TbMemberMiddle::getFamilyId,familyId)
- .eq(TbMemberMiddle::getMemberId,memberId)
- .eq(TbMemberMiddle::getStatus,"1")
- .last("limit 1")
- );
- if (middle == null) {
- return AjaxResult.error("查无申请信息");
- }
- // 通过/拒绝申请
- middle.setStatus(status);
- if(!middleService.updateById(middle)){
- return AjaxResult.error("通过失败");
- }
- return AjaxResult.success("申请通过");
- }
- /**
- * 退出家族
- * @param familyId
- * @return
- */
- @ApiOperation("退出家族")
- @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
- @GetMapping("/quit")
- public AjaxResult quit(Long familyId) {
- if (familyId == null) {
- return AjaxResult.error("家族id为空");
- }
- AppMemberVo user = getLoginUser().getUser();
- TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
- .eq(TbMemberMiddle::getMemberId,user.getMemberId())
- .eq(TbMemberMiddle::getFamilyId,familyId)
- .last("limit 1")
- );
- if (middle == null){
- return AjaxResult.error("未加入家族");
- }
- if ("Y".equals(middle.getPatriarch())) {
- return AjaxResult.error("族长不能退出家族");
- }
- if ("4".equals(middle.getStatus())) {
- return AjaxResult.error("已退出");
- }
- middle.setStatus("4"); //退出
- middle.setAcquiesce("N");
- if(!middleService.updateById(middle)){
- return AjaxResult.error("退出失败");
- }
- return AjaxResult.success("退出成功");
- }
- }
|