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 |   98 ++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 81 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 10bcf6d..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,8 @@
 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;
 import org.apache.shiro.authc.AuthenticationToken;
@@ -29,6 +34,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鑷畾涔塕ealm锛屽鐞嗚璇佸拰鏉冮檺
@@ -58,6 +64,7 @@
     @Lazy
     @Autowired
     private SystemPermissionService systemPermissionService;
+
 
     /**
      * 鏉冮檺澶勭悊
@@ -102,31 +109,88 @@
         if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
         }
+        List<SystemRole> roles = null;
+        List<SystemPermission> permissions =null;
         // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
-        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
-        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
-        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions);
-        if(authenticationToken.getUserType() == 0){
-            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());
-                }
-            }
+         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());
+                 }
+             }
+             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);
+            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,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