From aaea4819b873c5ca7b9be1a87af173ee2015a12a Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 25 一月 2024 14:52:24 +0800
Subject: [PATCH] 开发业务接口

---
 server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java |   62 +++++++++++++++++++++----------
 1 files changed, 42 insertions(+), 20 deletions(-)

diff --git a/server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java b/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
similarity index 71%
rename from server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java
rename to server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
index 64a8776..10bcf6d 100644
--- a/server/company/src/main/java/com/doumee/config/shiro/ShiroRealm.java
+++ b/server/service/src/main/java/com/doumee/config/shiro/ShiroRealm.java
@@ -4,12 +4,13 @@
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.DateUtil;
 import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.CompanyPermission;
 import com.doumee.dao.system.model.SystemPermission;
 import com.doumee.dao.system.model.SystemRole;
 import com.doumee.dao.system.model.SystemUser;
-import com.doumee.service.business.CompanyService;
+import com.doumee.service.business.CompanyPermissionService;
+import com.doumee.service.business.impl.CompanyServiceImpl;
 import com.doumee.service.system.SystemDataPermissionService;
 import com.doumee.service.system.SystemPermissionService;
 import com.doumee.service.system.SystemRoleService;
@@ -26,7 +27,7 @@
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 
-import java.util.Date;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -43,6 +44,12 @@
     @Lazy
     @Autowired
     private SystemUserService systemUserService;
+    @Lazy
+    @Autowired
+    private CompanyPermissionService companyPermissionService;
+    @Lazy
+    @Autowired
+    private CompanyServiceImpl companyService;
 
     @Lazy
     @Autowired
@@ -51,10 +58,6 @@
     @Lazy
     @Autowired
     private SystemPermissionService systemPermissionService;
-
-    @Lazy
-    @Autowired
-    private CompanyService companyService;
 
     /**
      * 鏉冮檺澶勭悊
@@ -77,34 +80,53 @@
      * @date 2022/03/15 09:54
      */
     @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authenticationToken) throws AuthenticationException{
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
         // 鑾峰彇鐢ㄦ埛鍚�
+        ShiroToken authenticationToken = (ShiroToken)token;
         String username = authenticationToken.getPrincipal().toString();
         // 鏍规嵁鐢ㄦ埛鍚嶆煡璇㈢敤鎴峰璞�
         SystemUser queryDto = new SystemUser();
-        queryDto.setUsername(username);
+        if(authenticationToken.isNeedPassword()){
+            //璐﹀彿瀵嗙爜鐧诲綍
+            queryDto.setUsername(username);
+        }else{
+            //鎵嬫満鍙烽獙璇佺爜鐧诲綍
+            queryDto.setMobile(username);
+        }
+        queryDto.setType(authenticationToken.getUserType());
         queryDto.setDeleted(Boolean.FALSE);
         SystemUser user = systemUserService.findOne(queryDto);
         if(user == null){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿鎴栧瘑鐮佷笉姝g‘锛�");
-        }
-        if(!Constants.equalsInteger(user.getType(),Constants.UserType.COMPANY.getKey())){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝闈炰紒涓氳处鎴疯韩浠斤紝鏃犳硶鐧诲綍璇ュ钩鍙帮紒锛�");
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅涓嶆纭紒");
         }
         if(!Constants.equalsInteger(user.getStatus(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璐﹀彿淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
-        }
-        if(!user.getType().equals(Constants.UserType.SYSTEM)){
-            Company company = companyService.findById(user.getCompanyId());
-            if(company.getStatus().equals(Constants.ONE)){
-                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟淇℃伅宸茶绂佺敤锛屽鏈夌枒闂鑱旂郴绯荤粺绠$悊鍛橈紒");
-            }
-            user.setCompany(company);
         }
         // 鑾峰彇鐧诲綍鐢ㄦ埛淇℃伅
         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());
+                }
+            }
+        }else{
+            Company company = companyService.findById(user.getCompanyId());
+            if(company == null){
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟璐﹀彿淇℃伅涓嶆纭紒");
+            }
+            user.setCompany(company);
+        }
+
         // 楠岃瘉鐢ㄦ埛
         return new SimpleAuthenticationInfo(userInfo, user.getPassword(), this.getName());
     }

--
Gitblit v1.9.3