From 75aa42c51ae2a63d7c1e5e813c0a88fd303bdbf4 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期五, 03 一月 2025 18:04:03 +0800
Subject: [PATCH] Merge remote-tracking branch 'gitee/master'

---
 medicalWaste-framework/src/main/java/com/sinata/framework/web/service/SysLoginService.java |   85 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 68 insertions(+), 17 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 66c0060..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
@@ -3,6 +3,7 @@
 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;
@@ -19,8 +20,10 @@
 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;
@@ -50,6 +53,8 @@
 
     @Autowired
     private ISysConfigService configService;
+    @Resource
+    private SysDepartmentService departmentService;
 
     /**
      * 登录验证
@@ -63,9 +68,9 @@
     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
@@ -95,6 +100,52 @@
         AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
         LoginUser loginUser = (LoginUser) authentication.getPrincipal();
         recordLoginInfo(loginUser.getUserId());
+        // 生成token
+        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;
     }
@@ -136,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