From cd00884c3db8fa6808b3b5949ab1a2b1459d6bdc Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期三, 11 六月 2025 10:36:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java |   31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
index 8f04773..e577cb7 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java
@@ -6,9 +6,11 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
@@ -70,6 +72,8 @@
 	private JeecgBaseConfig jeecgBaseConfig;
 
 	private final String BASE_CHECK_CODES = "qwertyuiplkjhgfdsazxcvbnmQWERTYUPLKJHGFDSAZXCVBNM1234567890";
+	private final String TERMINAL = "terminal";
+	private final String PCR0001 = "PCR0001";
 
 	@ApiOperation("鐧诲綍鎺ュ彛")
 	@RequestMapping(value = "/login", method = RequestMethod.POST)
@@ -77,6 +81,8 @@
 		Result<JSONObject> result = new Result<JSONObject>();
 		String username = sysLoginModel.getUsername();
 		String password = sysLoginModel.getPassword();
+		String workNo = sysLoginModel.getWorkNo();
+		String loginType = sysLoginModel.getLoginType();
 		//update-begin--Author:scott  Date:20190805 for锛氭殏鏃舵敞閲婃帀瀵嗙爜鍔犲瘑閫昏緫锛屾湁鐐归棶棰�
 		//鍓嶇瀵嗙爜鍔犲瘑锛屽悗绔繘琛屽瘑鐮佽В瀵�
 		//password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//瀵嗙爜瑙e瘑
@@ -108,18 +114,29 @@
 		//1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥
 		//update-begin-author:wangshuai date:20200601 for: 鐧诲綍浠g爜楠岃瘉鐢ㄦ埛鏄惁娉ㄩ攢bug锛宨f鏉′欢姘歌繙涓篺alse
 		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
-		queryWrapper.eq(SysUser::getUsername,username);
+		if (StringUtils.isNotBlank(workNo)) {
+			queryWrapper.eq(SysUser::getWorkNo,workNo);
+		}else {
+			queryWrapper.eq(SysUser::getUsername,username);
+		}
 		SysUser sysUser = sysUserService.getOne(queryWrapper);
 		//update-end-author:wangshuai date:20200601 for: 鐧诲綍浠g爜楠岃瘉鐢ㄦ埛鏄惁娉ㄩ攢bug锛宨f鏉′欢姘歌繙涓篺alse
-		result = sysUserService.checkUserIsEffective(sysUser);
+		result = sysUserService.checkUserIsEffective(sysUser, loginType);
 		if(!result.isSuccess()) {
 			return result;
 		}
 
+		//鏍¢獙鎿嶄綔宸ョ粓绔櫥褰曡处鍙锋槸鍚︿负鎿嶄綔宸�
+		if (TERMINAL.equals(loginType) && !PCR0001.equals(sysUser.getPost())) {
+			result.error500("褰撳墠鐧诲綍璐﹀彿宀椾綅闈炴搷浣滃伐锛岃璋冩暣宀椾綅鎴栧垏鎹㈡搷浣滃伐璐﹀彿鐧诲綍");
+			return result;
+		}
+
+		username = sysUser.getUsername();
 		//2. 鏍¢獙鐢ㄦ埛鍚嶆垨瀵嗙爜鏄惁姝g‘
-		String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt());
+		String userpassword = StringUtils.isBlank(workNo) ? PasswordUtil.encrypt(username, password, sysUser.getSalt()) : StringPool.EMPTY;
 		String syspassword = sysUser.getPassword();
-		if (!syspassword.equals(userpassword)) {
+		if (StringUtils.isBlank(workNo) && !syspassword.equals(userpassword)) {
 			// 鑾峰彇鐢ㄦ埛澶辫触鏈�澶ф鏁�
 			//Integer maxAttempts = CommonConstant.MAX_ATTEMPTS;
 			List<DictModel> dictModels = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_MAX_ATTEMPTS);
@@ -380,7 +397,7 @@
 			}else {
 				//鐧诲綍妯″紡锛屾牎楠岀敤鎴锋湁鏁堟��
 				SysUser sysUser = sysUserService.getUserByPhone(mobile);
-				result = sysUserService.checkUserIsEffective(sysUser);
+				result = sysUserService.checkUserIsEffective(sysUser, null);
 				if(!result.isSuccess()) {
 					String message = result.getMessage();
 					String userNotExist="璇ョ敤鎴蜂笉瀛樺湪锛岃娉ㄥ唽";
@@ -441,7 +458,7 @@
 
 		//鏍¢獙鐢ㄦ埛鏈夋晥鎬�
 		SysUser sysUser = sysUserService.getUserByPhone(phone);
-		result = sysUserService.checkUserIsEffective(sysUser);
+		result = sysUserService.checkUserIsEffective(sysUser, null);
 		if(!result.isSuccess()) {
 			return result;
 		}
@@ -609,7 +626,7 @@
 
 		//1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥
 		SysUser sysUser = sysUserService.getUserByName(username);
-		result = sysUserService.checkUserIsEffective(sysUser);
+		result = sysUserService.checkUserIsEffective(sysUser, null);
 		if(!result.isSuccess()) {
 			return result;
 		}

--
Gitblit v1.9.3