Quellcode durchsuchen

增加角色管理部分

xda vor 3 Jahren
Ursprung
Commit
787ab9bae2

+ 5 - 1
src/main/java/com/winhc/repal/controller/RepalRoleController.java

@@ -9,6 +9,7 @@ import com.winhc.repal.model.dto.UpdateRolePermissionDTO;
 import com.winhc.repal.model.vo.GroupRoleVO;
 import com.winhc.repal.model.vo.RolePermissionVO;
 import com.winhc.repal.service.RepalGroupRoleService;
+import com.winhc.repal.service.RepalRolePermissionService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +30,9 @@ public class RepalRoleController {
     @Autowired
     private RepalGroupRoleService repalGroupRoleService;
 
+    @Autowired
+    private RepalRolePermissionService repalRolePermissionService;
+
     @ApiOperation("新增角色")
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @RolePermission(permission = PermissionEnum.ROLE_SETUP)
@@ -61,7 +65,7 @@ public class RepalRoleController {
     @ApiOperation("修改角色的权限")
     @RequestMapping(value = "/update", method = RequestMethod.POST)
     public BeanResponse<Boolean> updateRolePermission(@RequestBody UpdateRolePermissionDTO dto) {
-        return BeanResponse.success(CodeMsg.SUCCESS, repalGroupRoleService.updateRolePermission(dto));
+        return BeanResponse.success(CodeMsg.SUCCESS, repalRolePermissionService.updateRolePermission(dto));
     }
 
 }

+ 2 - 2
src/main/java/com/winhc/repal/model/dto/UpdateRolePermissionDTO.java

@@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.List;
+import java.util.Set;
 
 /**
  * @Description: UpdateRolePermission
@@ -19,5 +19,5 @@ public class UpdateRolePermissionDTO {
     private Long roleId;
 
     @ApiModelProperty("权限编码list")
-    private List<String> codeList;
+    private Set<String> codeSet;
 }

+ 10 - 0
src/main/java/com/winhc/repal/repository/RepalRolePermissionMapper.java

@@ -4,6 +4,7 @@ import com.winhc.repal.entity.RepalRolePermission;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -24,5 +25,14 @@ public interface RepalRolePermissionMapper extends BaseMapper<RepalRolePermissio
      */
     Set<String> getUserPermissionCodeSet(Long userId);
 
+    /**
+     * 获取角色权限编码
+     * @param roleId roleId
+     * @return java.util.List<java.lang.String>
+     * @author xda
+     * @date 2022/5/11 19:42
+     */
+    List<String> getRolePermissionCodeList(Long roleId);
+
 
 }

+ 1 - 8
src/main/java/com/winhc/repal/service/RepalGroupRoleService.java

@@ -62,13 +62,6 @@ public interface RepalGroupRoleService extends IService<RepalGroupRole> {
      */
     Boolean deleteRoleById(Long roleId);
 
-    /**
-     * 修改角色权限
-     * @param dto dto 
-     * @return java.lang.Boolean
-     * @author xda
-     * @date 2022/5/11 18:24 
-     */
-    Boolean updateRolePermission(UpdateRolePermissionDTO dto);
+
 
 }

+ 12 - 0
src/main/java/com/winhc/repal/service/RepalRolePermissionService.java

@@ -2,6 +2,7 @@ package com.winhc.repal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.winhc.repal.entity.RepalRolePermission;
+import com.winhc.repal.model.dto.UpdateRolePermissionDTO;
 
 import java.util.List;
 import java.util.Set;
@@ -65,4 +66,15 @@ public interface RepalRolePermissionService extends IService<RepalRolePermission
     List<RepalRolePermission> getRolePermissionList(Long roleId);
 
 
+    /**
+     * 修改角色权限
+     * @param dto dto
+     * @return java.lang.Boolean
+     * @author xda
+     * @date 2022/5/11 19:55
+     */
+    Boolean updateRolePermission(UpdateRolePermissionDTO dto);
+
+
+
 }

+ 2 - 11
src/main/java/com/winhc/repal/service/impl/RepalGroupRoleServiceImpl.java

@@ -19,14 +19,11 @@ import com.winhc.repal.service.RepalGroupMemberService;
 import com.winhc.repal.service.RepalGroupRoleService;
 import com.winhc.repal.service.RepalRolePermissionService;
 import com.winhc.repal.util.UserContextUtil;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -119,11 +116,5 @@ public class RepalGroupRoleServiceImpl extends ServiceImpl<RepalGroupRoleMapper,
         return true;
     }
 
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public Boolean updateRolePermission(UpdateRolePermissionDTO dto) {
-        // todo
-        // 取差集
-        return true;
-    }
+
 }

+ 31 - 0
src/main/java/com/winhc/repal/service/impl/RepalRolePermissionServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.winhc.repal.constant.Constant;
 import com.winhc.repal.entity.RepalRolePermission;
 import com.winhc.repal.enums.DeletedStatusEnum;
+import com.winhc.repal.model.dto.UpdateRolePermissionDTO;
 import com.winhc.repal.repository.RepalRolePermissionMapper;
 import com.winhc.repal.service.RepalRolePermissionService;
 import com.winhc.repal.util.RedisUtil;
@@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -81,4 +83,33 @@ public class RepalRolePermissionServiceImpl extends ServiceImpl<RepalRolePermiss
                 .eq(RepalRolePermission::getRepalGroupRoleId, roleId)
                 .eq(RepalRolePermission::getDeleted, DeletedStatusEnum.NORMAL.getCode()));
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean updateRolePermission(UpdateRolePermissionDTO dto) {
+        Set<String> codeSet = new HashSet<>(repalRolePermissionMapper.getRolePermissionCodeList(dto.getRoleId()));
+        List<String> disjunction = new ArrayList<>(CollUtil.disjunction(dto.getCodeSet(), codeSet));
+        if (CollUtil.isEmpty(disjunction)) {
+            // 无修改
+            return true;
+        }
+        for (String code : disjunction) {
+            if (codeSet.contains(code) && !dto.getCodeSet().contains(code)) {
+                // remove
+                this.update(Wrappers.lambdaUpdate(RepalRolePermission.class)
+                        .eq(RepalRolePermission::getRepalGroupRoleId, dto.getRoleId())
+                        .eq(RepalRolePermission::getPermissionCode, code)
+                        .set(RepalRolePermission::getDeleted, DeletedStatusEnum.DELETE.getCode()));
+            }
+            if (!codeSet.contains(code) && dto.getCodeSet().contains(code)) {
+                // add
+                RepalRolePermission permission = new RepalRolePermission();
+                permission.setPermissionCode(code);
+                permission.setPermissionName(Constant.PERMISSION_MAP.get(code));
+                permission.setRepalGroupRoleId(dto.getRoleId());
+                this.save(permission);
+            }
+        }
+        return true;
+    }
 }

+ 7 - 0
src/main/resources/mapper/RepalRolePermissionMapper.xml

@@ -10,5 +10,12 @@
         WHERE member.USER_ID = #{userId}
     </select>
 
+    <select id="getRolePermissionCodeList" parameterType="java.lang.Long" resultType="java.lang.String">
+        SELECT permission.PERMISSION_CODE FROM REPAL_ROLE_PERMISSION AS permission
+        WHERE permission.REPAL_GROUP_ROLE_ID = #{roleId}
+          AND permission.DELETED = 0
+    </select>
+
+
 
 </mapper>