From cdd6551b190b981b807a3b95e9635c559ccc769d Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 19 五月 2025 09:45:07 +0800
Subject: [PATCH] git ch

---
 server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java |   83 +++++++++++++++++++++++++++++++++--------
 1 files changed, 66 insertions(+), 17 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
index 00a3c2c..9c9af4b 100644
--- a/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ b/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -4,8 +4,11 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.CompanyPermissionMapper;
+import com.doumee.dao.business.join.CompanyPermissionJoinMapper;
 import com.doumee.dao.business.model.Company;
 import com.doumee.dao.business.model.CompanyPermission;
+import com.doumee.dao.system.model.SystemDataPermission;
 import com.doumee.dao.system.model.SystemPermission;
 import com.doumee.dao.system.model.SystemRole;
 import com.doumee.dao.system.model.SystemUser;
@@ -15,6 +18,7 @@
 import com.doumee.service.system.SystemPermissionService;
 import com.doumee.service.system.SystemRoleService;
 import com.doumee.service.system.SystemUserService;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.authc.AuthenticationException;
 import org.apache.shiro.authc.AuthenticationInfo;
@@ -30,6 +34,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
@@ -59,6 +64,7 @@
     @Lazy
     @Autowired
     private SystemPermissionService systemPermissionService;
+
 
     /**
      * 鏉冮檺澶勭悊
@@ -107,40 +113,83 @@
         List<SystemPermission> permissions =null;
         // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
          if(authenticationToken.getUserType() == 0){
-             roles =   systemRoleService.findByUserId(user.getId());
-
-            CompanyPermission c = new CompanyPermission();
-            c.setUserId(user.getId());
-            c.setIsdeleted(Constants.ZERO);
-            List<CompanyPermission> pList = companyPermissionService.findList(c);
-            if(pList!=null){
-                for (CompanyPermission cc : pList){
-                    if(user.getCompanyIdList() == null){
-                        user.setCompanyIdList(new ArrayList<>());
-                    }
-                    user.getCompanyIdList().add(cc.getCompanyId());
-                }
-            }
+            roles =   systemRoleService.findByUserId(user.getId());
+             CompanyPermission c = new CompanyPermission();
+             c.setUserId(user.getId());
+             c.setIsdeleted(Constants.ZERO);
+             List<CompanyPermission> pList = companyPermissionService.findList(c);
+             if(pList!=null){
+                 for (CompanyPermission cc : pList){
+                     if(user.getCompanyIdList() == null){
+                         user.setCompanyIdList(new ArrayList<>());
+                     }
+                     user.getCompanyIdList().add(cc.getCompanyId());
+                 }
+             }
              permissions =  systemPermissionService.findByUserId(user.getId());
         }else{
-            Company company = companyService.findById(user.getCompanyId());
+            Integer selfCompanyId = user.getCompanyId();
+            Company company = companyService.findById(selfCompanyId);
             if(company == null){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟璐﹀彿淇℃伅涓嶆纭紒");
             }
             user.setCompany(company);
-            if(StringUtils.equals(company.getUsername(),user.getUsername())){
+            user.setShowCompany(company);
+             if(authenticationToken.getUserType() == 1){
+                 List<CompanyPermission> pList  = companyPermissionService.getUserCompanyPermission(user.getId());
+                 //鍔犲叆鑷繁鐨勯粯璁や紒涓�
+                 CompanyPermission companyPermission = new CompanyPermission();
+                 companyPermission.setUserId(user.getId());
+                 companyPermission.setCompanyId(company.getId());
+                 companyPermission.setType(Constants.ONE);
+                 companyPermission.setId(Constants.ONE);
+                 companyPermission.setIsSelfCompany(Constants.ONE);
+                 companyPermission.setIsShow(Constants.ONE);
+                 companyPermission.setCompanyName(company.getName());
+                 pList.add(companyPermission);
+                 if(Objects.nonNull(authenticationToken.getCompanyId())){
+                     for (CompanyPermission c:pList) {
+                         if(Constants.equalsInteger(c.getCompanyId(),authenticationToken.getCompanyId())){
+                             c.setIsShow(Constants.ONE);
+                             Company showCompany = companyService.findById(authenticationToken.getCompanyId());
+                             user.setShowCompany(showCompany);
+                         }else{
+                             c.setIsShow(Constants.ZERO);
+                         }
+                     }
+                 }
+                 if(CollectionUtils.isNotEmpty(pList)) {
+                     user.setCompanyPermissionList(pList);
+                 }
+             }
+             //濡傛灉鐢ㄦ埛涓庝紒涓氳秴绠¤处鍙风浉鍚� 鎴栬�� 浼佷笟涓婚敭涓庡綋鍓嶅垏鎹㈠悗鐨勪富閿笉鐩稿悓鏃� 缁欒秴绠℃潈闄�
+            if(StringUtils.equals(company.getUsername(),user.getUsername())
+                    ||( Objects.nonNull(authenticationToken.getCompanyId()) && !Constants.equalsInteger(company.getId(),authenticationToken.getCompanyId())  )){
+                if(Objects.nonNull(authenticationToken.getCompanyId())){
+                    user.setCompanyId(authenticationToken.getCompanyId());
+                }
                 //濡傛灉鏄秴绠★紝
                 SystemRole role = new SystemRole();
                 role.setType(Constants.ONE);
                 role.setDeleted(Boolean.FALSE);
                 roles =   systemRoleService.findList(role);
                 SystemPermission p = new SystemPermission();
-                permissions =  systemPermissionService.findList(p);
+                permissions =  systemPermissionService.findList(p,user.getType());
             }else{
                 roles =   systemRoleService.findByUserId(user.getId());
                 permissions =  systemPermissionService.findByUserId(user.getId());
             }
         }
+
+        SystemRole rt = new SystemRole();
+        rt.setDeleted(Boolean.FALSE);
+        //鏁版嵁閮ㄩ棬鏉冮檺闆嗗悎
+        if(Constants.equalsInteger(user.getType(),Constants.ONE) && Constants.equalsInteger(user.getCompany().getId(),user.getCompanyId())){
+            user.setDepartIdList(null);
+        }else{
+            user.setDepartIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user));
+        }
+
         LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
         // 楠岃瘉鐢ㄦ埛
         return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());

--
Gitblit v1.9.3