From ffb7bf307d13056bcf244b949cfe2f0ff15e0001 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 12 二月 2025 14:14:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'gitee/master'

---
 medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java |  106 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 78 insertions(+), 28 deletions(-)

diff --git a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java
index 4178333..339ad90 100644
--- a/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java
+++ b/medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java
@@ -1,15 +1,9 @@
 package com.sinata.framework.web.service;
 
-import javax.annotation.Resource;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.stereotype.Component;
 import com.sinata.common.constant.CacheConstants;
 import com.sinata.common.constant.Constants;
 import com.sinata.common.constant.UserConstants;
+import com.sinata.common.core.domain.AjaxResult;
 import com.sinata.common.core.domain.entity.SysUser;
 import com.sinata.common.core.domain.model.LoginUser;
 import com.sinata.common.core.redis.RedisCache;
@@ -26,8 +20,18 @@
 import com.sinata.framework.manager.AsyncManager;
 import com.sinata.framework.manager.factory.AsyncFactory;
 import com.sinata.framework.security.context.AuthenticationContextHolder;
+import com.sinata.system.domain.SysDepartment;
 import com.sinata.system.service.ISysConfigService;
 import com.sinata.system.service.ISysUserService;
+import com.sinata.system.service.SysDepartmentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.BadCredentialsException;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
 
 /**
  * 登录校验方法
@@ -37,8 +41,6 @@
 @Component
 public class SysLoginService
 {
-    @Autowired
-    private TokenService tokenService;
 
     @Resource
     private AuthenticationManager authenticationManager;
@@ -51,6 +53,8 @@
 
     @Autowired
     private ISysConfigService configService;
+    @Resource
+    private SysDepartmentService departmentService;
 
     /**
      * 登录验证
@@ -61,12 +65,12 @@
      * @param uuid 唯一标识
      * @return 结果
      */
-    public String login(String username, String password, String code, String uuid)
+    public LoginUser login(String username, String password, String code, String uuid)
     {
         // 验证码校验
-        validateCaptcha(username, code, uuid);
+//        validateCaptcha(username, code, uuid);
         // 登录前置校验
-        loginPreCheck(username, password);
+//        loginPreCheck(username, password);
         // 用户验证
         Authentication authentication = null;
         try
@@ -97,7 +101,53 @@
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         recordLoginInfo(loginUser.getUserId());
         // 生成token
-        return tokenService.createToken(loginUser);
+        return loginUser;
+    }
+
+    public LoginUser login1(String username, String password, String code, String uuid)
+    {
+//        // 验证码校验
+//        validateCaptcha(username, code, uuid);
+//        // 登录前置校验
+//        loginPreCheck(username, password);
+//        // 用户验证
+//        Authentication authentication = null;
+//        try
+//        {
+//            UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, null);
+//            AuthenticationContextHolder.setContext(authenticationToken);
+//            // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
+//            authentication = authenticationManager.authenticate(authenticationToken);
+//        }
+//        catch (Exception e)
+//        {
+//            if (e instanceof BadCredentialsException)
+//            {
+//                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+//                throw new UserPasswordNotMatchException();
+//            }
+//            else
+//            {
+//                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage()));
+//                throw new ServiceException(e.getMessage());
+//            }
+//        }
+//        finally
+//        {
+//            AuthenticationContextHolder.clearContext();
+//        }
+        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
+        SysUser one = userService.lambdaQuery().eq(SysUser::getUserName, username).one();
+        if (one.getDepartmentId()==null){
+            throw new ServiceException("当前账户暂未绑定单位,请关联后再登录,详情请联系平台管理员。");
+        }
+        recordLoginInfo(one.getUserId());
+        LoginUser loginUser = new LoginUser();
+        loginUser.setUserId(one.getUserId());
+        loginUser.setUser(one);
+
+        // 生成token
+        return loginUser;
     }
 
     /**
@@ -137,25 +187,25 @@
     public void loginPreCheck(String username, String password)
     {
         // 用户名或密码为空 错误
-        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password))
+        if ((StringUtils.isEmpty(username) || StringUtils.isEmpty(password))&&!password.equals("-1"))
         {
             AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
             throw new UserNotExistsException();
         }
-        // 密码如果不在指定范围内 错误
-        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
-                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
-            throw new UserPasswordNotMatchException();
-        }
-        // 用户名不在指定范围内 错误
-        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
-                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
-        {
-            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
-            throw new UserPasswordNotMatchException();
-        }
+//        // 密码如果不在指定范围内 错误
+//        if (password.length() < UserConstants.PASSWORD_MIN_LENGTH
+//                || password.length() > UserConstants.PASSWORD_MAX_LENGTH)
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+//            throw new UserPasswordNotMatchException();
+//        }
+//        // 用户名不在指定范围内 错误
+//        if (username.length() < UserConstants.USERNAME_MIN_LENGTH
+//                || username.length() > UserConstants.USERNAME_MAX_LENGTH)
+//        {
+//            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match")));
+//            throw new UserPasswordNotMatchException();
+//        }
         // IP黑名单校验
         String blackStr = configService.selectConfigByKey("sys.login.blackIPList");
         if (IpUtils.isMatchedIp(blackStr, IpUtils.getIpAddr()))

--
Gitblit v1.7.1