Procházet zdrojové kódy

修改管理员不能删除管理员和创建者,修改管理员重新加入家族还是管理员的问题,添加根据会员id获取留言列表

Alex před 4 roky
rodič
revize
2533bcdb05

+ 19 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/ApiTemplateController.java

@@ -140,6 +140,25 @@ public class ApiTemplateController extends BaseController {
         List<TPersonalMessage> list = messageService.list(lqw);
         return getDataTable(list);
     }
+    /**
+     * 根据会员id查询个人页留言内容列表
+     */
+    @ApiOperation("根据会员id查询个人页留言内容列表")
+    @GetMapping("/messageListByUserId")
+    public TableDataInfo listByUserId(Integer pageNum,Integer pageSize,Long userId) {
+        if (userId == null) {
+            return new TableDataInfo();
+        }
+
+        pageNum = pageNum == null ? 1 : pageNum;
+        pageSize = pageSize == null ? 10 : pageSize;
+        PageHelper.startPage(pageNum, pageSize, "create_time desc");
+
+        LambdaQueryWrapper<TPersonalMessage> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(TPersonalMessage::getAppUserId , userId);
+        List<TPersonalMessage> list = messageService.list(lqw);
+        return getDataTable(list);
+    }
 
     @ApiOperation("个人详情列表")
     @GetMapping("/profileList")

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

@@ -249,7 +249,8 @@ public class FamilyController extends AppBaseController {
             return AjaxResult.error("已退出");
         }
         middle.setStatus("4"); //退出
-        middle.setAcquiesce("N");
+        middle.setAcquiesce("N"); //取消默认
+        middle.setAdmin("N"); // 取消管理员
         if(!middleService.updateById(middle)){
             return AjaxResult.error("退出失败");
         }

+ 34 - 1
ruoyi-app/src/main/java/com/ruoyi/app/controller/FamilyMemberController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.app.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageHelper;
 import com.ruoyi.app.annotation.LoginAppUser;
 import com.ruoyi.app.controller.base.AppBaseController;
@@ -30,6 +31,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -217,7 +219,38 @@ public class FamilyMemberController extends AppBaseController {
         if (ids.length <= 0) {
             return AjaxResult.error("未选择要删的成员");
         }
-        return memberService.delMember(familyId,ids);
+        // 删除操作人
+        AppMemberVo user = getLoginUser().getUser();
+        TbMemberMiddle middle = middleService.getOne(new LambdaQueryWrapper<TbMemberMiddle>()
+                .eq(TbMemberMiddle::getFamilyId,familyId)
+                .eq(TbMemberMiddle::getMemberId,user.getMemberId())
+                .last("limit 1")
+        );
+        // 被删除人
+        List<TbMemberMiddle> middleList = middleService.list(new LambdaQueryWrapper<TbMemberMiddle>()
+                .eq(TbMemberMiddle::getFamilyId,familyId)
+                .in(TbMemberMiddle::getMemberId, Arrays.asList(ids))
+        );
+        if (middleList.size() <= 0){
+            return AjaxResult.error("删除失败,没有找到要删除的数据");
+        }
+        for (TbMemberMiddle item : middleList) {
+            if (item.getParentId() != null){
+                return AjaxResult.error("删除失败,成员已加入家族树");
+            }
+            if ("Y".equals(item.getPatriarch())){
+                return AjaxResult.error("删除失败,不能删除创建者");
+            }
+            if ("N".equals(middle.getPatriarch())) {
+                if ("Y".equals(item.getAdmin())) {
+                    return AjaxResult.error("删除失败,不能删除管理员");
+                }
+            }
+        }
+        if(!middleService.removeByIds(Arrays.asList(ids))) {
+            return AjaxResult.error("删除失败");
+        }
+        return AjaxResult.success();
     }
 
     @ApiOperation("家族管理员列表")

+ 15 - 3
ruoyi-system/src/main/java/com/ruoyi/app/service/impl/TbFamilyMemberServiceImpl.java

@@ -136,18 +136,30 @@ public class TbFamilyMemberServiceImpl extends ServiceImpl<TbFamilyMemberMapper,
         if (middleList.size() <= 0){
             return AjaxResult.error("删除失败,没有找到要删除的数据");
         }
-        AtomicInteger ck = new AtomicInteger(0);
+        AtomicInteger ckTree = new AtomicInteger(0);
+        AtomicInteger ckAdmin = new AtomicInteger(0);
+        AtomicInteger ckPatriarch = new AtomicInteger(0);
         List<Long> mids = new ArrayList<>();
         middleList.forEach(item -> {
             if (item.getParentId() != null) {
-                ck.set(1);
+                ckTree.set(1);
+            }
+            if ("Y".equals(item.getAdmin())){
+                ckAdmin.set(1);
+            }
+            if ("Y".equals(item.getPatriarch())){
+                ckPatriarch.set(1);
             }
             mids.add(item.getId());
         });
         // 如果成员已加入家族树,则需要先从家族树删除,才能删除成员
-        if(ck.intValue() > 0) {
+        if(ckTree.intValue() > 0) {
             return AjaxResult.error("删除失败,成员已加入家族树");
         }
+        // 是否有创建者
+        if(ckPatriarch.intValue() > 0) {
+            return AjaxResult.error("删除失败,不能删除创建者");
+        }
         if(!memberMiddleService.removeByIds(mids)) {
             return AjaxResult.error("删除失败");
         }