浏览代码

APP 修改我的家族

Alex 4 年之前
父节点
当前提交
4cbbb4592a

+ 123 - 2
ruoyi-app/src/main/java/com/ruoyi/app/controller/FamilyController.java

@@ -3,6 +3,7 @@ package com.ruoyi.app.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+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;
@@ -14,18 +15,26 @@ 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.bean.BeanUtils;
+import com.ruoyi.common.utils.spring.SpringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 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;
 
 /**
  * 家族管理
@@ -87,7 +96,10 @@ public class FamilyController extends AppBaseController {
         // 设置添加人为管理员
         TbAppUser user = getLoginUser().getUser();
         AppMemberVo memberVo = appUserService.getAppMember(user.getId().toString(),"");
-        appUserService.saveOrUpdate(memberVo);
+        if(!appUserService.saveOrUpdate(memberVo)){
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("创建失败");
+        }
         TbMemberMiddle middle = new TbMemberMiddle();
         middle.setMemberId(memberVo.getMemberId());
         middle.setFamilyId(tbFamily.getId());
@@ -114,5 +126,114 @@ public class FamilyController extends AppBaseController {
         return AjaxResult.error("切换失败");
     }
 
-    // 加入家族
+    /**
+     * 申请加入家族
+     * @param familyId
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @ApiOperation("申请加入家族")
+    @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
+    @GetMapping("/join")
+    public AjaxResult join(@LoginAppUser TbAppUser user, Long familyId) {
+
+        AppMemberVo memberVo = appUserService.getAppMember(user.getId().toString(),"");
+
+        List<TbMemberMiddle> middles = middleService.list(new LambdaQueryWrapper<TbMemberMiddle>()
+                .eq(TbMemberMiddle::getFamilyId,familyId)
+                .eq(TbMemberMiddle::getMemberId,memberVo.getMemberId())
+                .eq(TbMemberMiddle::getStatus,"2")
+        );
+        if (middles.size() > 0) {
+            return AjaxResult.error("已在该家族,不允许重复加入");
+        }
+
+        memberVo.setUserId(user.getId());
+        memberVo.setName(user.getNickName());
+        memberVo.setJoins("Y");
+        // 保存成员
+        if(appUserService.saveOrUpdate(memberVo)){
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("申请失败");
+        }
+        // 是否已加入过家族
+        List<TbMemberMiddle> middleList = middleService.list(new LambdaQueryWrapper<TbMemberMiddle>()
+                .eq(TbMemberMiddle::getMemberId,memberVo.getMemberId())
+        );
+        TbMemberMiddle middle = new TbMemberMiddle();
+        if (middleList.size() == 0) {
+            // 如果从未加入过家族,则设置为默认家族
+            middle.setAcquiesce("Y");
+        }
+        middle.setFamilyId(familyId);
+        middle.setMemberId(memberVo.getMemberId());
+        middle.setStatus("1"); // 申请
+        if(!middleService.save(middle)){
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return AjaxResult.error("申请失败");
+        }
+        return AjaxResult.success("申请成功");
+    }
+
+    // 申请列表
+    @GetMapping("/selectApply")
+    public TableDataInfo selectApply(@LoginAppUser TbAppUser user, Long familyId){
+        if (familyId == null){
+            return new TableDataInfo();
+        }
+        // 获取申请列表 1申请 3拒绝 4退出
+        List<TbMemberMiddle> middleList = middleService.list(new LambdaQueryWrapper<TbMemberMiddle>()
+                .eq(TbMemberMiddle::getFamilyId,familyId)
+                .in(TbMemberMiddle::getStatus, Arrays.asList("1","3","4"))
+        );
+        if (middleList.size() <= 0){
+            return new TableDataInfo();
+        }
+        // 查询申请的会员
+        List<Long> ids = new ArrayList<>();
+        middleList.forEach(item -> {
+            ids.add(item.getMemberId());
+        });
+        return null;
+    }
+
+    // 通过申请
+//    public AjaxResult pass(){
+//
+//    }
+
+    /**
+     * 退出家族
+     * @param familyId
+     * @return
+     */
+    @ApiOperation("退出家族")
+    @ApiImplicitParam(name = "familyId", value = "申请的家族ID",paramType="Long")
+    @GetMapping("/quit")
+    public AjaxResult quit(@LoginAppUser TbAppUser user, Long familyId) {
+        if (familyId == null) {
+            return AjaxResult.error("家族id为空");
+        }
+        AppMemberVo memberVo = appUserService.getAppMember(user.getId().toString(),"");
+        TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
+                .eq(TbMemberMiddle::getMemberId,memberVo.getMemberId())
+                .eq(TbMemberMiddle::getFamilyId,familyId)
+        );
+        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("退出成功");
+    }
+
 }

+ 2 - 4
ruoyi-app/src/main/java/com/ruoyi/app/controller/MyFriendController.java

@@ -22,6 +22,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.net.Inet4Address;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -134,10 +135,7 @@ public class MyFriendController extends AppBaseController {
         PageHelper.startPage(pageNum, pageSize, "create_time desc");
         List<TbMyFriends> list = friendsService.list(new LambdaQueryWrapper<TbMyFriends>()
                 .eq(TbMyFriends::getFriendsUserId, appUserId)
-                .and(
-                        i -> i.eq(TbMyFriends::getStatus,"1").or()
-                        .eq(TbMyFriends::getStatus,"3")
-                )
+                .in(TbMyFriends::getStatus, Arrays.asList("1","3"))
         );
         return getDataTable(list);
     }

+ 9 - 1
ruoyi-system/src/main/java/com/ruoyi/app/service/impl/TbFamilyServiceImpl.java

@@ -72,7 +72,15 @@ public class TbFamilyServiceImpl extends ServiceImpl<TbFamilyMapper, TbFamily> i
                 .eq(TbMemberMiddle::getAcquiesce, "Y")
         );
         if (middle == null) {
-            return null;
+            // 没有默认家族,则设置第一个家族为默认
+            middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
+                    .eq(TbMemberMiddle::getMemberId, memberId).last("limit 1")
+            );
+            if (middle == null) {
+                return null;
+            }
+            middle.setAcquiesce("Y");
+            middleService.save(middle);
         }
         TbFamily family = familyService.getOne(new LambdaQueryWrapper<TbFamily>()
                 .eq(TbFamily::getId, middle.getFamilyId())