Selaa lähdekoodia

登录新增角色来源

wangliang 3 vuotta sitten
vanhempi
commit
52f2b9b22c

+ 15 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/LoginResult.java

@@ -6,9 +6,11 @@ import com.qmth.teachcloud.common.entity.BasicSchool;
 import com.qmth.teachcloud.common.entity.SysOrg;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.AppSourceEnum;
+import com.qmth.teachcloud.common.enums.RoleSourceEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import com.qmth.teachcloud.common.util.ServletUtil;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.util.LinkedMultiValueMap;
 
 import java.io.Serializable;
 import java.util.Arrays;
@@ -60,11 +62,14 @@ public class LoginResult implements Serializable {
     @ApiModelProperty(value = "用户登录验证拦截信息")
     private UserLoginCheckResult userLoginCheckResult;
 
+    @ApiModelProperty(name = "角色来源")
+    LinkedMultiValueMap<RoleSourceEnum, String> roleSource;
+
     public LoginResult() {
 
     }
 
-    public LoginResult(SysUser sysUser, String sessionId, String accessToken, Set<String> roleList, AppSourceEnum appSource) {
+    public LoginResult(SysUser sysUser, String sessionId, String accessToken, Set<String> roleList, AppSourceEnum appSource, LinkedMultiValueMap<RoleSourceEnum, String> roleSource) {
         this.id = sysUser.getId();
         ServletUtil.setRequestId(Arrays.asList(id));
         this.loginName = sysUser.getLoginName();
@@ -74,6 +79,7 @@ public class LoginResult implements Serializable {
         this.roleList = roleList;
         this.appSource = appSource;
         this.pwdCount = sysUser.getPwdCount();
+        this.roleSource = roleSource;
     }
 
     public LoginResult(SysUser sysUser, String sessionId, String accessToken, SchoolNativeBean schoolInfo, OrgNativeBean orgInfo, AppSourceEnum appSource) {
@@ -86,6 +92,14 @@ public class LoginResult implements Serializable {
         this.appSource = appSource;
     }
 
+    public LinkedMultiValueMap<RoleSourceEnum, String> getRoleSource() {
+        return roleSource;
+    }
+
+    public void setRoleSource(LinkedMultiValueMap<RoleSourceEnum, String> roleSource) {
+        this.roleSource = roleSource;
+    }
+
     public AppSourceEnum getAppSource() {
         return appSource;
     }

+ 12 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/entity/SysRole.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.teachcloud.common.base.BaseEntity;
+import com.qmth.teachcloud.common.enums.RoleSourceEnum;
 import com.qmth.teachcloud.common.enums.RoleTypeEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -59,6 +60,17 @@ public class SysRole extends BaseEntity implements Serializable {
     @ApiModelProperty(value = "是否系统内置角色,1:是,0:不是")
     private Boolean defaultRole;
 
+    @ApiModelProperty(value = "角色来源")
+    private RoleSourceEnum source;
+
+    public RoleSourceEnum getSource() {
+        return source;
+    }
+
+    public void setSource(RoleSourceEnum source) {
+        this.source = source;
+    }
+
     public Boolean getDefaultRole() {
         return defaultRole;
     }

+ 59 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/RoleSourceEnum.java

@@ -0,0 +1,59 @@
+package com.qmth.teachcloud.common.enums;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 角色来源
+ * @Date: 2021/3/23.
+ */
+public enum RoleSourceEnum {
+
+    SYS("系统自带"),
+    ANALYSIS("教研分析");
+
+    RoleSourceEnum(String desc) {
+        this.desc = desc;
+    }
+
+    private String desc;
+
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * @param hasAdmin 是否需要管理员
+     * @return
+     */
+    public static List<EnumResult> listTypes(boolean hasAdmin) {
+        List<EnumResult> list = new ArrayList<EnumResult>();
+        for (RoleSourceEnum value : RoleSourceEnum.values()) {
+            if (!hasAdmin && "ADMIN".equals(value.name())) {
+                continue;
+            }
+            EnumResult result = new EnumResult();
+            result.setName(value.name());
+            result.setOrdinal(value.ordinal());
+            result.setCode(null);
+            result.setDesc(value.getDesc());
+            list.add(result);
+        }
+        return list;
+    }
+
+    /**
+     * 根据desc查找枚举类
+     * @param desc desc
+     * @return 枚举类
+     */
+    public static RoleSourceEnum convertDescToEnum(String desc){
+        RoleSourceEnum res = null;
+        for (RoleSourceEnum value : RoleSourceEnum.values()) {
+            if (desc.equals(value.getDesc())) {
+                res = value;
+            }
+        }
+        return res;
+    }
+}

+ 1 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/userPush/SpecialPrivilegeEnum.java

@@ -9,8 +9,7 @@ public enum SpecialPrivilegeEnum {
     SUBJECT_HEADER("科组长权限","SubjectHeader","S_", 4),
     MARKER("评卷员权限","Marker","M_", 5),
     COMPOSITE("复合权限","Composite",null, 0),
-    UNIDENTIFIED("无特殊权限","Unidentified",null, 0),
-    ;
+    UNIDENTIFIED("无特殊权限","Unidentified",null, 0);
 
     SpecialPrivilegeEnum(String title, String id, String prefix, int value) {
         this.title = title;

+ 6 - 9
teachcloud-common/src/main/java/com/qmth/teachcloud/common/service/impl/TeachcloudCommonServiceImpl.java

@@ -9,8 +9,6 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.google.common.reflect.TypeToken;
 import com.google.gson.Gson;
 import com.qmth.boot.core.enums.Platform;
-import com.qmth.boot.tools.signature.SignatureType;
-import com.qmth.teachcloud.common.SignatureEntityTest;
 import com.qmth.teachcloud.common.bean.auth.AuthBean;
 import com.qmth.teachcloud.common.bean.auth.ExpireTimeBean;
 import com.qmth.teachcloud.common.bean.dto.MenuDto;
@@ -91,9 +89,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     @Resource
     FileStoreUtil fileStoreUtil;
 
-    @Resource
-    private BasicSchoolService basicSchoolService;
-
     @Resource
     SysUserService sysUserService;
 
@@ -106,7 +101,6 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
     @Resource
     BasicCourseService basicCourseService;
 
-
     /**
      * 获取用户菜单
      *
@@ -916,11 +910,14 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         commonCacheService.userCache(sysUser.getId());
         //添加用户会话缓存
         Set<String> roleNames = new HashSet<>(), roleTypes = new HashSet<>();
+        LinkedMultiValueMap<RoleSourceEnum, String> roleSource = new LinkedMultiValueMap<>();
+        ;
         for (SysRole s : authBean.getRoleList()) {
             roleNames.add(s.getName());
-            if (Objects.nonNull(s.getType())) {
+            if (Objects.nonNull(s.getType()) && s.getType() == RoleTypeEnum.ADMIN) {
                 roleTypes.add(s.getType().name());
             }
+            roleSource.add(Objects.nonNull(s.getSource()) ? s.getSource() : RoleSourceEnum.SYS, Objects.nonNull(s.getType()) ? s.getType().name() : s.getName());
         }
         String sessionId = SessionUtil.digest(sysUser.getId(), Math.abs(roleNames.toString().hashCode()), platform.name());
         //TODO 测试用
@@ -932,8 +929,8 @@ public class TeachcloudCommonServiceImpl implements TeachcloudCommonService {
         tbSessionService.saveOrUpdate(tbSession);
         redisUtil.setUserSession(sessionId, tbSession, expireTime.getExpireSeconds());
 
-//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
-        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource);
+//        LoginResult loginResult = new LoginResult(sysUser, sessionId, test, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource, roleSource);
+        LoginResult loginResult = new LoginResult(sysUser, sessionId, token, Objects.nonNull(roleTypes) && roleTypes.size() > 0 ? roleTypes : roleNames, appSource, roleSource);
         loginResult.setSchoolInfo(Objects.nonNull(authBean.getSchool()) ? loginResult.new SchoolNativeBean(authBean.getSchool()) : null);
         loginResult.setOrgInfo(Objects.nonNull(authBean.getOrg()) ? loginResult.new OrgNativeBean(authBean.getOrg()) : null);
         loginResult.setTime(System.currentTimeMillis());