From 50fb58286ed3b718c39a97e0987ee7561a295651 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 04 七月 2025 17:56:41 +0800
Subject: [PATCH] git ch

---
 server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java |   35 ++++++++++++++++++++++++++++++++---
 1 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index 822a624..056421e 100644
--- a/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -3,7 +3,6 @@
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.extension.api.R;
 import com.doumee.config.shiro.ShiroToken;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
@@ -162,7 +161,7 @@
         }
         // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜
         Subject subject = SecurityUtils.getSubject();
-        ShiroToken token = new ShiroToken(dto.getUsername(), dto.getPassword(),true,type);
+        ShiroToken token = new ShiroToken(dto.getUsername(), dto.getPassword(),true,type,null);
         try {
             subject.login(token);
             loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId());
@@ -215,7 +214,7 @@
         }
         // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜
         Subject subject = SecurityUtils.getSubject();
-        ShiroToken token = new ShiroToken(dto.getPhone(), null,false,type);
+        ShiroToken token = new ShiroToken(dto.getPhone(), null,false,type,null);
         try {
             subject.login(token);
             loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId());
@@ -234,6 +233,36 @@
 
 
 
+    @Override
+    public String switchCompany (LoginUserInfo loginUserInfo,Integer companyId, HttpServletRequest request) {
+        SystemLoginLog loginLog = new SystemLoginLog();
+        loginLog.setLoginUsername(loginUserInfo.getMobile());
+        loginLog.setLoginTime(new Date());
+        loginLog.setSystemVersion(systemVersion);
+        loginLog.setIp(Utils.User_Client.getIP(request));
+        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
+        loginLog.setPlatform(Utils.User_Client.getPlatform(request));
+        loginLog.setClientInfo(Utils.User_Client.getBrowser(request));
+        loginLog.setOsInfo(Utils.User_Client.getOS(request));
+        loginLog.setServerIp(Utils.Server.getIP());
+
+        // 鏍¢獙鐢ㄦ埛鍚嶅拰瀵嗙爜
+        Subject subject = SecurityUtils.getSubject();
+        ShiroToken token = new ShiroToken(loginUserInfo.getMobile(), null,false,loginUserInfo.getType(),companyId);
+        try {
+            subject.login(token);
+            loginLog.setUserId(((LoginUserInfo)subject.getPrincipal()).getId());
+            loginLog.setSuccess(Boolean.TRUE);
+            systemLoginLogService.create(loginLog);
+            return (String)subject.getSession().getId();
+        } catch (AuthenticationException e) {
+            log.error(ResponseStatus.ACCOUNT_INCORRECT.getMessage(), e);
+            loginLog.setReason(e.getMessage().length() > 200 ? (e.getMessage().substring(0, 190) + "...") : e.getMessage());
+            loginLog.setSuccess(Boolean.FALSE);
+            systemLoginLogService.create(loginLog);
+            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(), Objects.isNull(e.getCause())?ResponseStatus.ACCOUNT_INCORRECT.getMessage():e.getCause().getMessage());
+        }
+    }
 
 
 }

--
Gitblit v1.9.3