Преглед изворни кода

创建角色
修改角色相关关联用code不用id

tanzhongran пре 3 година
родитељ
комит
115be494c6

+ 4 - 1
abi-cloud-qr-platform-server/pom.xml

@@ -113,7 +113,10 @@
             <groupId>org.apache.poi</groupId>
             <artifactId>poi-ooxml-schemas</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>commons-lang</groupId>
+            <artifactId>commons-lang</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.xuxueli</groupId>
             <artifactId>xxl-job-core</artifactId>

+ 2 - 2
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/entity/UserMappingRoleResource.java

@@ -28,8 +28,8 @@ public class UserMappingRoleResource {
     @ApiModelProperty(value = "角色code")
     private String roleCode;
 
-	@ApiModelProperty(value = "资源id")
-    private Long resourceId;
+    @ApiModelProperty(value = "资源code")
+    private String resourceCode;
 
 	@ApiModelProperty(value = "资源名称")
     private String resourceName;

+ 52 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/enums/RoleLevelEnum.java

@@ -0,0 +1,52 @@
+package com.abi.qms.platform.dao.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.EnumSet;
+import java.util.Set;
+
+/**
+ * 角色等级
+ * @Author AndyTan
+ */
+@Getter
+@AllArgsConstructor
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
+public enum RoleLevelEnum {
+
+	//角色等级: 0-admin 1-1级 2-2即 3-3级 4-4级 5-5级
+	ADMIN(0,"admin"),
+	LEVEL_1(1,"1级"),
+	LEVEL_2(2,"2即"),
+	LEVEL_3(3,"3级"),
+	LEVEL_4(4,"4级"),
+	LEVEL_5(5,"5级");
+
+	@EnumValue
+	private Integer code;
+	private String name;
+
+	private static final Set<RoleLevelEnum> ALL = EnumSet.allOf(RoleLevelEnum.class);
+
+    public static String getName(Integer code) {
+        return ALL.stream()
+                .filter(o -> o.code.equals(code))
+                .map(o -> o.getName())
+                .findAny().orElse(null);
+    }
+
+    public static Integer getCode(String name) {
+        return ALL.stream()
+                .filter(o -> o.name.equals(name))
+                .map(o -> o.getCode())
+                .findAny().orElse(null);
+    }
+
+	public boolean is(Integer code){
+		return getCode().equals(code);
+	}
+
+}

+ 3 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/CreateRoleReq.java

@@ -7,6 +7,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.ToString;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.List;
 
@@ -18,9 +19,11 @@ import java.util.List;
 @ApiModel
 public class CreateRoleReq implements Serializable {
 
+  @NotNull(message = "角色名称为空")
   @ApiModelProperty(value = "角色name")
   private String roleName;
 
+  @NotNull(message = "上级角色为空")
   @ApiModelProperty(value = "上级角色code")
   private String parentRoleCode;
 

+ 19 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/infrastructure/util/UserUtil.java

@@ -1,9 +1,27 @@
 package com.abi.qms.platform.infrastructure.util;
 
 import com.abi.qms.platform.dao.entity.UserInfo;
+import org.springframework.stereotype.Component;
 
+/**
+ * 用户工具类
+ * @author AndyTan
+ */
+@Component
 public class UserUtil {
 
-    private static final InheritableThreadLocal<UserInfo> USER_TL = new InheritableThreadLocal();
+    private final InheritableThreadLocal<UserInfo> USER_THREAD_LOCAL = new InheritableThreadLocal();
+
+    public void setUser(UserInfo userInfo){
+        USER_THREAD_LOCAL.set(userInfo);
+    }
+
+    public UserInfo getUser(){
+        return USER_THREAD_LOCAL.get();
+    }
+
+    public void releaseUser(){
+        USER_THREAD_LOCAL.remove();
+    }
 
 }

+ 12 - 1
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/RoleManagerService.java

@@ -1,6 +1,7 @@
 package com.abi.qms.platform.service;
 
 
+import com.abi.qms.platform.dao.entity.UserRole;
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetRoleInfoRes;
 import com.abi.qms.platform.dto.res.ListResourceRes;
@@ -15,6 +16,11 @@ import com.abi.qms.platform.dto.res.ListRoleRes;
  */
 public interface RoleManagerService{
 
+    /**
+     * 创建角色
+     * @param createRoleReq
+     * @throws Exception
+     */
     void createRole(CreateRoleReq createRoleReq) throws Exception;
 
     void updateRole(UpdateRoleReq updateRoleReq) throws Exception;
@@ -25,5 +31,10 @@ public interface RoleManagerService{
 
     ListResourceRes listResource(ListResourceReq listResourceReq) throws Exception;
 
-
+    /**
+     * 角色code查询角色信息
+     * @param roleCode
+     * @return
+     */
+    public UserRole getRoleByCode(String roleCode);
 }

+ 89 - 8
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/RoleManagerServiceImpl.java

@@ -1,16 +1,19 @@
 package com.abi.qms.platform.service.impl;
 
+import com.abi.qms.platform.dao.entity.UserRole;
+import com.abi.qms.platform.dao.enums.RoleLevelEnum;
+import com.abi.qms.platform.dao.mapper.UserMappingRoleResourceMapper;
+import com.abi.qms.platform.dao.mapper.UserRoleMapper;
 import com.abi.qms.platform.dto.req.*;
 import com.abi.qms.platform.dto.res.GetRoleInfoRes;
 import com.abi.qms.platform.dto.res.ListResourceRes;
 import com.abi.qms.platform.dto.res.ListRoleRes;
 import com.abi.qms.platform.service.RoleManagerService;
+import com.abi.task.common.api.exception.BusinessException;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
-
-import java.util.ArrayList;
-import java.util.List;
 
 /**
  * <p>
@@ -22,13 +25,79 @@ import java.util.List;
 @Service
 public class RoleManagerServiceImpl implements RoleManagerService {
 
+    @Autowired
+    private UserRoleMapper userRoleMapper;
+
+    @Autowired
+    private UserMappingRoleResourceMapper userMappingRoleResourceMapper;
+
+
     /**
      * 创建角色
      **/
     @Override
-    public void createRole(CreateRoleReq createRoleReq) {
-        //TODO
-        
+    public void createRole(CreateRoleReq req) {
+        //1-查询上级角色信息
+        UserRole parentRole = getRoleByCode(req.getParentRoleCode());
+        if(RoleLevelEnum.LEVEL_5.is(parentRole.getRoleLevel())){
+            throw new BusinessException("父类是最底层角色,不可继续创建角色");
+        }
+
+        //2-插入角色信息
+        UserRole userRole = new UserRole();
+        userRole.setRoleName(req.getRoleName());
+        userRole.setRoleDesc(req.getRoleDesc());
+        userRole.setRoleLevel(parentRole.getRoleLevel()+1);
+        userRole.setParentRoleCode(req.getParentRoleCode());
+        userRoleMapper.insert(userRole);
+
+        //3-放入角色code以及对应level的角色code
+        userRole.setRoleCode(generateRoleCode(userRole.getId(),userRole.getRoleLevel()));
+        setUserLevelRoleCode(userRole,parentRole);
+        userRoleMapper.updateById(userRole);
+
+        //4-放入角色资源mapping
+
+
+
+    }
+
+    /**
+     * 构造角色code
+     * 规则:level+n个0+id
+     * @param roleId
+     * @param roleLevel
+     * @return
+     */
+    private String generateRoleCode(Long roleId,Integer roleLevel){
+        return roleLevel+ StringUtils.leftPad(String.valueOf(roleId), 10, "0");
+    }
+
+    /**
+     * 填充level1-5的角色code
+     * @param userRole
+     * @param parentUserRole
+     */
+    private void setUserLevelRoleCode(UserRole userRole,UserRole parentUserRole){
+        //1-先循环把父类的级别拷贝过来
+        userRole.setL1RoleCode(parentUserRole.getL1RoleCode());
+        userRole.setL2RoleCode(parentUserRole.getL2RoleCode());
+        userRole.setL3RoleCode(parentUserRole.getL3RoleCode());
+        userRole.setL4RoleCode(parentUserRole.getL4RoleCode());
+        userRole.setL5RoleCode(parentUserRole.getL3RoleCode());
+
+        //2-然后根据自己的层级,填充对应那一层的code
+        if(RoleLevelEnum.LEVEL_1.is(userRole.getRoleLevel())){
+            userRole.setL1RoleCode(userRole.getRoleCode());
+        }else if(RoleLevelEnum.LEVEL_2.is(userRole.getRoleLevel())){
+            userRole.setL2RoleCode(userRole.getRoleCode());
+        }else if(RoleLevelEnum.LEVEL_3.is(userRole.getRoleLevel())){
+            userRole.setL3RoleCode(userRole.getRoleCode());
+        }else if(RoleLevelEnum.LEVEL_4.is(userRole.getRoleLevel())){
+            userRole.setL4RoleCode(userRole.getRoleCode());
+        }else if(RoleLevelEnum.LEVEL_5.is(userRole.getRoleLevel())){
+            userRole.setL5RoleCode(userRole.getRoleCode());
+        }
     }
 
     /**
@@ -67,6 +136,18 @@ public class RoleManagerServiceImpl implements RoleManagerService {
         return null;
     }
 
+    /**
+     * 角色code查询角色信息
+     * @param roleCode
+     * @return
+     */
+    @Override
+    public UserRole getRoleByCode(String roleCode) {
+        QueryWrapper<UserRole> userRoleQw = new QueryWrapper<>();
+        userRoleQw.eq("role_code",roleCode);
+        userRoleQw.eq("is_delete",0);
+        UserRole userRole = userRoleMapper.selectOne(userRoleQw);
 
-
+        return userRole;
+    }
 }

+ 2 - 2
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/UserMappingRoleResourceMapper.xml

@@ -6,7 +6,7 @@
     <resultMap id="BaseResultMap" type="com.abi.qms.platform.dao.entity.UserMappingRoleResource">
         <id column="ID" property="id" />
         <result column="role_code" property="roleCode" />
-        <result column="RESOURCE_ID" property="resourceId" />
+        <result column="resource_code" property="resourceCode" />
         <result column="RESOURCE_NAME" property="resourceName" />
         <result column="CREATE_TIME" property="createTime" />
         <result column="CREATE_BY" property="createBy" />
@@ -16,7 +16,7 @@
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        ID, role_code, RESOURCE_ID, RESOURCE_NAME, CREATE_TIME, CREATE_BY, UPDATE_TIME, IS_DELETE
+        ID, role_code, resource_code, RESOURCE_NAME, CREATE_TIME, CREATE_BY, UPDATE_TIME, IS_DELETE
     </sql>
 
 </mapper>

+ 8 - 1
pom.xml

@@ -23,7 +23,7 @@
     </parent>
 
     <properties>
-        <user.context.starter.version>1.2.0-SNAPSHOT</user.context.starter.version>
+        <!--<user.context.starter.version>1.2.0-SNAPSHOT</user.context.starter.version>-->
 
         <spring-cloud.version>Hoxton.SR8</spring-cloud.version>
         <spring-cloud-kubernetes.version>1.1.7.RELEASE</spring-cloud-kubernetes.version>
@@ -43,6 +43,7 @@
         <tomcat.embed.core.version>9.0.43</tomcat.embed.core.version>
         <tablestore.version>5.10.3</tablestore.version>
         <protobuf-java>2.4.1</protobuf-java>
+        <commons.lang.version>2.6</commons.lang.version>
     </properties>
 
     <dependencies>
@@ -138,7 +139,13 @@
                 <artifactId>protobuf-java</artifactId>
                 <version>${protobuf-java}</version>
             </dependency>
+            <dependency>
+                <groupId>commons-lang</groupId>
+                <artifactId>commons-lang</artifactId>
+                <version>${commons.lang.version}</version>
+            </dependency>
         </dependencies>
+
     </dependencyManagement>
 
     <distributionManagement>