Procházet zdrojové kódy

Util获取是否主账号

tanzhongran před 3 roky
rodič
revize
daa03563ea

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

@@ -1,10 +1,21 @@
 package com.abi.qms.platform.infrastructure.util;
 
 import com.abi.qms.platform.dao.entity.UserInfo;
+import com.abi.qms.platform.dao.entity.UserRoleDetail;
+import com.abi.qms.platform.dao.enums.TrueFalseEnum;
 import com.abi.qms.platform.dao.mapper.UserInfoMapper;
+import com.abi.qms.platform.service.RoleManagerService;
+import com.abi.task.common.utils.PojoConverterUtils;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.ToString;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.io.Serializable;
+
 /**
  * 用户工具类
  *
@@ -16,8 +27,11 @@ public class UserUtil {
     @Autowired
     private UserInfoMapper userInfoMapper;
 
+    @Autowired
+    private RoleManagerService roleManagerService;
+
     /**
-     * 仅token中的user信息
+     * 仅token数据的user
      */
     private final InheritableThreadLocal<UserInfo> USER_THREAD_LOCAL = new InheritableThreadLocal();
 
@@ -36,21 +50,46 @@ public class UserUtil {
     /**
      * 查询数据库后完整的user信息
      */
-    private final InheritableThreadLocal<UserInfo> USER_WHOLE_THREAD_LOCAL = new InheritableThreadLocal();
+    private final InheritableThreadLocal<UserBean> USER_WHOLE_THREAD_LOCAL = new InheritableThreadLocal();
 
     private synchronized void initWholeUser() {
         if(USER_WHOLE_THREAD_LOCAL.get()!=null){
             return;
         }
+        //查询用户数据
         UserInfo wholeUser = userInfoMapper.selectById(USER_THREAD_LOCAL.get().getId());
-        USER_WHOLE_THREAD_LOCAL.set(wholeUser);
+
+        //查询其他数据
+        UserRoleDetail roleDetail = roleManagerService.getRoleDetail(wholeUser.getRoleCode());
+        int isMainAccount = (TrueFalseEnum.TRUE.is(roleDetail.getIsActivateMiniAppMainAccount()))?1:0;
+
+        //转为userBean
+        UserBean userBean = PojoConverterUtils.copy(wholeUser, UserBean.class);
+        //塞入其他信息
+        userBean.setIsMainAccount(isMainAccount);
+
+        USER_WHOLE_THREAD_LOCAL.set(userBean);
     }
 
-    public UserInfo getWholeUser() {
+    public UserBean getWholeUser() {
         if(USER_WHOLE_THREAD_LOCAL.get()==null && USER_THREAD_LOCAL.get()!=null && USER_THREAD_LOCAL.get().getId()!=null){
             initWholeUser();
         }
         return USER_WHOLE_THREAD_LOCAL.get();
     }
 
+    /**
+    * 用户信息
+    */
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @ToString
+    public static class UserBean extends UserInfo implements Serializable {
+
+        @Schema(name = "是小程序用户主账号 1-是 0-不是")
+        private Integer isMainAccount;
+
+    }
+
 }

+ 3 - 2
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/LoginServiceImpl.java

@@ -120,9 +120,10 @@ public class LoginServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> impl
         }
         //查询是否主子账号
         UserRoleDetail roleDetail = roleManagerService.getRoleDetail(userRole.getRoleCode());
-        if(roleDetail==null
+        boolean canNotLoginConsole = roleDetail==null
                 ||(!TrueFalseEnum.TRUE.is(roleDetail.getIsActivateMiniAppSubAccount())
-                 &&!TrueFalseEnum.TRUE.is(roleDetail.getIsActivateMiniAppMainAccount()))){
+                &&!TrueFalseEnum.TRUE.is(roleDetail.getIsActivateMiniAppMainAccount()));
+        if(canNotLoginConsole){
             throw new BusinessException("该用户的角色不包含登录小程序权限");
         }