From 5aae43c2d47e8c7c5ea6457fbb2db99fa9357642 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期二, 01 七月 2025 12:27:10 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 112 insertions(+), 7 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
index 5e8f1fe..3540c10 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java
@@ -6,13 +6,16 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.constant.CacheConstant;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.constant.enums.RoleIndexConfigEnum;
 import org.jeecg.common.desensitization.annotation.SensitiveEncode;
+import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.system.vo.SysUserCacheInfo;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.PasswordUtil;
 import org.jeecg.common.util.UUIDGenerator;
 import org.jeecg.common.util.oConvertUtils;
@@ -20,9 +23,11 @@
 import org.jeecg.modules.system.entity.*;
 import org.jeecg.modules.system.mapper.*;
 import org.jeecg.modules.system.model.SysUserSysDepartModel;
+import org.jeecg.modules.system.service.ISysDictService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.jeecg.modules.system.vo.MdcUserProVo;
 import org.jeecg.modules.system.vo.SysUserDepVo;
+import org.jeecg.modules.system.vo.UserSelector;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
@@ -45,7 +50,7 @@
 @Service
 @Slf4j
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
-	
+
 	@Autowired
 	private SysUserMapper userMapper;
 	@Autowired
@@ -74,6 +79,8 @@
 	SysRoleIndexMapper sysRoleIndexMapper;
 	@Resource
 	MdcUserProductionMapper mdcUserProductionMapper;
+	@Resource
+	private ISysDictService sysDictService;
 
     @Override
     @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true)
@@ -89,8 +96,12 @@
         if (!newpassword.equals(confirmpassword)) {
             return Result.error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!");
         }
+		//璁剧疆瀵嗙爜鏇存柊鏃堕棿
+		//sysUser.setPasswordTime(new Date());
+		//璁剧疆瀵嗙爜棣栨鐧诲綍澶辨晥
+		//sysUser.setPasswordFlag(CommonConstant.DEL_FLAG_0);
         String password = PasswordUtil.encrypt(username, newpassword, user.getSalt());
-        this.userMapper.update(new SysUser().setPassword(password), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId()));
+        this.userMapper.update(new SysUser().setPassword(password).setPasswordTime(new Date()).setPasswordFlag(CommonConstant.DEL_FLAG_0), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId()));
         return Result.ok("瀵嗙爜閲嶇疆鎴愬姛!");
     }
 
@@ -99,6 +110,10 @@
     public Result<?> changePassword(SysUser sysUser) {
         String salt = oConvertUtils.randomGen(8);
         sysUser.setSalt(salt);
+		//璁剧疆瀵嗙爜鏇存柊鏃堕棿
+		sysUser.setPasswordTime(new Date());
+		//绠$悊鍛樹慨鏀瑰瘑鐮侊紝璁剧疆鐢ㄦ埛棣栨鐧诲綍
+		//sysUser.setPasswordFlag();
         String password = sysUser.getPassword();
         String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt);
         sysUser.setPassword(passwordEncode);
@@ -128,8 +143,8 @@
 	public SysUser getUserByName(String username) {
 		return userMapper.getUserByName(username);
 	}
-	
-	
+
+
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public void addUserWithRole(SysUser user, String roles) {
@@ -190,7 +205,7 @@
 				roleIndex = list.get(0);
 			}
 		}
-		
+
 		//濡傛灉componentUrl涓虹┖锛屽垯杩斿洖绌�
 		if(oConvertUtils.isEmpty(roleIndex.getComponent())){
 			return null;
@@ -256,7 +271,7 @@
 			info.setSysUserName(sysUser.getRealname());
 			info.setSysOrgCode(sysUser.getOrgCode());
 		}
-		
+
 		//澶氶儴闂ㄦ敮鎸乮n鏌ヨ
 		List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId());
 		List<String> sysMultiOrgCode = new ArrayList<String>();
@@ -272,7 +287,7 @@
 			}
 		}
 		info.setSysMultiOrgCode(sysMultiOrgCode);
-		
+
 		return info;
 	}
 
@@ -342,6 +357,16 @@
 	@Override
 	public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) {
 		return userMapper.getUserByRoleId(page,roleId,username);
+	}
+
+	/**
+	 * 鏍规嵁璁惧杞﹂棿绠$悊Id鏌ヨ
+	 * @param page
+	 * @param workShopDepartId 璁惧杞﹂棿绠$悊Id
+	 * @return
+	 */
+	public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String workShopDepartId,String username){
+		return userMapper.getUserByWorkShopDepartId(page,workShopDepartId,username);
 	}
 
 
@@ -441,6 +466,32 @@
 			baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "宸插喕缁擄紒", CommonConstant.LOG_TYPE_1, null);
 			result.error500("璇ョ敤鎴峰凡鍐荤粨");
 			return result;
+		}
+		//鎯呭喌4锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佺郴棣栨浣跨敤锛岄渶淇敼瀵嗙爜
+		List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN);
+		if (dictList != null && !dictList.isEmpty()) {
+			if (CommonConstant.DEL_FLAG_1.equals(Integer.valueOf(dictList.get(0).getValue())) && CommonConstant.DEL_FLAG_1.equals(sysUser.getPasswordFlag())) {
+				baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "绯婚娆$櫥褰曠郴缁燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null);
+				result.setCode(5001);
+				result.setMessage("鐢ㄦ埛瀵嗙爜绯婚粯璁ゅ瘑鐮侊紝闇�閲嶇疆瀵嗙爜鍚庨噸鏂扮櫥褰曞瘑鐮侊紒");
+				result.setSuccess(false);
+				return result;
+			}
+		}
+		//鎯呭喌5锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佹槸鍚﹀凡杩囨洿鏀瑰懆鏈�
+		Date passwordTime = sysUser.getPasswordTime();
+		//Integer passwordExpirationPeriod = CommonConstant.PASSWORD_EXPIRATION_PERIOD;
+		List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_PASSWORD_EXPIRATION);
+		if (dictModelList != null && !dictModelList.isEmpty()) {
+			Integer passwordExpirationPeriod = Integer.valueOf(dictModelList.get(0).getValue());
+			Date dayAfter = DateUtils.getDayAfter(passwordTime, passwordExpirationPeriod);
+			if (new Date().after(dayAfter)) {
+				baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "瀵嗙爜宸茶繃鏈夋晥鏈燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null);
+				result.setCode(5002);
+				result.setMessage("鐢ㄦ埛瀵嗙爜宸茶繃鏈夋晥鏈燂紝璇烽噸缃瘑鐮侊紒");
+				result.setSuccess(false);
+				return result;
+			}
 		}
 		return result;
 	}
@@ -658,4 +709,58 @@
 	public List<SysUser> getAllUsersByRoleId(String roleId) {
 		return userMapper.getAllUsersByRoleId(roleId);
 	}
+
+	/**
+	 * 鏍规嵁瑙掕壊缂栫爜鏌ヨ鐢ㄦ埛id闆嗗悎
+	 */
+	@Override
+	public List<String> getUserByRoleCode(String roleCode) {
+		return this.baseMapper.getUserByRoleCode(roleCode);
+	}
+
+	/**
+	 * 鏍规嵁瑙掕壊缂栫爜鍒楄〃鏌ヨ鐢ㄦ埛id闆嗗悎
+	 */
+	@Override
+	public List<SysUser> getUserByRoleCodeList(List<String> roleCodeList) {
+		return this.baseMapper.getUserByRoleCodeList(roleCodeList);
+	}
+
+	/**
+	 * 鏍规嵁瑙掕壊缂栫爜鍜岃澶囩紪鍙锋煡璇㈢敤鎴�
+	 */
+	@Override
+	public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) {
+		return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId);
+	}
+
+	@Override
+	public List<UserSelector> selectOperatorList(String equipmentCode, String productionId, String positionCode) {
+		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(SysUser::getPost, positionCode);
+		if(StringUtils.isNotBlank(equipmentCode)) {
+			queryWrapper.and(q -> q.isNull(SysUser::getEquipmentIds).or().eq(SysUser::getEquipmentIds, "").or().like(SysUser::getEquipmentIds, equipmentCode));
+		}
+		if(StringUtils.isNotBlank(productionId)) {
+			queryWrapper.exists("select 1 from mdc_user_production t where t.user_id=sys_user.id and t.pro_id={0}", productionId);
+		}
+		queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0);
+		queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1);
+		queryWrapper.orderByDesc(SysUser::getId);
+		List<SysUser> sysUsers = userMapper.selectList(queryWrapper);
+		List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList());
+		return collect;
+	}
+
+	@Override
+	public List<UserSelector> selectOperatorList(String positionCode) {
+		LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+		queryWrapper.eq(SysUser::getPost, positionCode);
+		queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0);
+		queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1);
+		queryWrapper.orderByDesc(SysUser::getId);
+		List<SysUser> sysUsers = userMapper.selectList(queryWrapper);
+		List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList());
+		return collect;
+	}
 }

--
Gitblit v1.9.3