From 4d571ecaabae01dc825f01ce92ff4a5023f56fb0 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 10 七月 2024 17:03:39 +0800
Subject: [PATCH] 代码提交

---
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java |  106 +++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 86 insertions(+), 20 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
index d73d658..11799d0 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/StrategyServiceImpl.java
@@ -1,18 +1,22 @@
 package com.vci.ubcs.system.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vci.ubcs.common.constant.CommonConstant;
+import com.vci.ubcs.system.cache.NacosConfigCache;
+import com.vci.ubcs.system.entity.Strategy;
 import com.vci.ubcs.system.mapper.StrategyMapper;
 import com.vci.ubcs.system.service.IStrategyService;
+import com.vci.ubcs.system.user.feign.IUserClient;
 import org.springblade.core.cache.utils.CacheUtil;
 import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
-import com.vci.ubcs.system.entity.Strategy;
-import org.springframework.data.domain.PageImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.Date;
@@ -32,6 +36,12 @@
 	@Resource
 	private StrategyMapper strategyMapper;
 
+	@Resource
+	private UserPwdstrategyServiceImpl userPwdstrategyService;
+
+	@Resource
+	private IUserClient userClient;
+
 	/**
 	 * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁
 	 *
@@ -49,7 +59,13 @@
 	 */
 	@Override
 	public Strategy queryByIsDefault() {
-		return this.strategyMapper.queryByIsDefault();
+		return this.strategyMapper.queryByIsDefault(AuthUtil.getTenantId()
+			.equals(
+				NacosConfigCache
+					.getAdminUserInfo()
+					.getTenantId()
+			) ? null:AuthUtil.getTenantId()
+		);
 	}
 
 	/**
@@ -59,9 +75,20 @@
 	 * @return 鏌ヨ缁撴灉
 	 */
 	@Override
-	public PageImpl<Strategy> queryAllByPage(Query query) {
+	public IPage<Strategy> queryAllByPage(Query query) {
 		Page<Strategy> strategyPage = new Page<>(query.getCurrent(), query.getSize());
-		return new PageImpl<>(this.strategyMapper.queryAllByPage(strategyPage));
+		// 娣诲姞绉熸埛鏌ヨ鏉′欢
+		IPage<Strategy> strategyIPage = this.strategyMapper.queryAllByPage(
+			strategyPage,
+			AuthUtil.getTenantId()
+				.equals(
+					NacosConfigCache
+					.getAdminUserInfo()
+					.getTenantId()
+				)
+			? null:AuthUtil.getTenantId()
+		);
+		return strategyIPage;
 	}
 
 	/**
@@ -71,8 +98,11 @@
 	 * @return 瀹炰緥瀵硅薄
 	 */
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public boolean submit(Strategy strategy) {
-		//鍒ゆ柇鏄惁鎼哄甫id
+		//鑰佺殑榛樿瀵嗙爜绛栫暐
+		Long oldIsDefaultStrategy = null;
+		//鍒ゆ柇鏄惁鎼哄甫id锛屼笉鎼哄甫id涓烘柊澧炴搷浣�
 		if(Func.isEmpty(strategy.getId())){
 			//鎵ц鏂板
 			Strategy dbstrategy = this.getOne(Wrappers.<Strategy>query().lambda()
@@ -85,53 +115,89 @@
 			checkPwdStrategy(strategy);
 			//濡傛灉褰撳墠鏂板璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
 			if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
+				//鏌ヨ鑰佺殑榛樿瀵嗙爜绛栫暐锛屼究浜庝笅闈慨鏀�
+				oldIsDefaultStrategy = this.queryByIsDefault().getId();
 				this.update(Wrappers.<Strategy>update().lambda()
 					.set(Strategy::getIsDefault, CommonConstant.NOT_DEFAULT)
 					.eq(Strategy::getIsDefault, CommonConstant.IS_DEFAULT));
 			}
-			if(Func.isEmpty(strategy.getCreateTime())){
+			//鍒涘缓鏃堕棿鍜屼慨鏀规椂闂存坊鍔�
+			if(Func.isEmpty(strategy.getCreateTime())||Func.isEmpty(strategy.getUpdateTime())){
 				strategy.setCreateTime(new Date());
-			}
-			if(Func.isEmpty(strategy.getUpdateTime())){
 				strategy.setUpdateTime(new Date());
 			}
 			boolean temp = super.saveOrUpdate(strategy);
-			return temp;
+			return temp && updateUserStrategyDefault(temp,oldIsDefaultStrategy);
 		}else {
 			//妫�楠屽瘑鐮佺瓥鐣ユ槸鍚︾鍚堣姹�
 			checkPwdStrategy(strategy);
 			//濡傛灉褰撳墠淇敼璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
-			if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
-				this.update(Wrappers.<Strategy>update().lambda()
-					.set(Strategy::getIsDefault,CommonConstant.NOT_DEFAULT)
-					.eq(Strategy::getIsDefault,CommonConstant.IS_DEFAULT));
+			if((strategy.getIsDefault().toString()).equals("1")){
+				//鏌ヨ鑰佺殑榛樿瀵嗙爜绛栫暐锛屼究浜庝笅闈慨鏀�
+				Strategy strategyDefault = this.queryByIsDefault();
+				// 鍦ㄦ暟鎹笉鍑虹幇闂鐨勬儏鍐典笅涓嶄細鍑虹幇strategyDefault涓虹┖鐨勬儏鍐�
+				if(Func.isNotEmpty(strategyDefault)){
+					oldIsDefaultStrategy = strategyDefault.getId();
+					this.update(Wrappers.<Strategy>update().lambda()
+						.set(Strategy::getIsDefault,CommonConstant.NOT_DEFAULT)
+						.eq(Strategy::getIsDefault,CommonConstant.IS_DEFAULT));
+				}
 			}else {
+				// 閬垮厤鐢ㄦ埛灏嗗敮涓�鐨勯粯璁ゅ瘑鐮佺瓥鐣ユ敼涓洪潪榛樿
 				if(Func.isEmpty(queryByIsDefault())){
 					throw new ServiceException("榛樿瀵嗙爜绛栫暐蹇呴』鏈変笖浠呮湁涓�鏉�!");
 				}
 			}
-			if(Func.isEmpty(strategy.getUpdateTime())){
-				strategy.setUpdateTime(new Date());
-			}
+			strategy.setUpdateTime(new Date());
 			CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
-			return super.saveOrUpdate(strategy);
+			boolean temp1 = this.update(strategy,Wrappers.<Strategy>update().lambda().eq(Strategy::getId,strategy.getId()));
+			boolean temp2 = false;
+			if(Func.isNotEmpty(oldIsDefaultStrategy)){
+				temp2 = updateUserStrategyDefault(temp1, oldIsDefaultStrategy);
+			}
+			return temp1 || temp2;
 		}
+	}
+
+	/**
+	 * 淇敼浣跨敤榛樿瀵嗙爜绛栫暐鐨勭敤鎴风姸鎬�
+	 * @param oldIsDefaultStrategy
+	 */
+	private boolean updateUserStrategyDefault(boolean temp,Long oldIsDefaultStrategy){
+		boolean resBoolean = false;
+		/**
+		 * 浜х敓鏂扮殑榛樿瀵嗙爜绛栫暐锛岄渶瑕佸皢浠ュ墠閲囩敤榛樿瀵嗙爜绛栫暐鐨勭敤鎴峰仛涓�涓洿鏀规彁閱掞紝鐢变簬鏈嚭鐜板湪鍏宠仈琛ㄤ腑鐨勭敤鎴烽兘鏄噰鐢ㄧ殑榛樿瀵嗙爜绛栫暐锛屾墍浠ラ渶瑕佸仛涓�涓繛鎺ユ煡璇㈠嚭鐢ㄦ埛id
+		 */
+		if(temp && Func.isNotEmpty(oldIsDefaultStrategy)){
+			List<Long> userIds = userPwdstrategyService.queryByUseISDefault(oldIsDefaultStrategy);
+			if (Func.isNotEmpty(userIds)){
+				resBoolean = userClient.updateStrategyStatus(userIds).getData();
+			}
+		}
+		return resBoolean;
 	}
 
 	/**
 	 * 	妫�楠屽瘑鐮佺瓥鐣ユ槸鍚︾鍚堣姹�
 	 * @param strategy
 	 */
-	public void checkPwdStrategy(Strategy strategy){
+	private void checkPwdStrategy(Strategy strategy){
 		if(strategy.getRequiredType() > strategy.getCombinationIds().split(",").length){
 			throw new ServiceException("蹇呭~绉嶇被涓嶈兘澶т簬鎵�閫夋嫨鐨勫瘑鐮佺粍鍚堟柟寮忕殑涓暟!");
 		}
 		if(strategy.getMaxPwdLen() < strategy.getMinPwdLen()){
 			throw new ServiceException("瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庢渶灏忛暱搴�!");
 		}
-		if(strategy.getMinPwdLen() < strategy.getRequiredType() || strategy.getMaxPwdLen() < strategy.getRequiredType()){
+		if(Func.isNotEmpty(strategy.getRequiredType()) && (strategy.getMinPwdLen() < strategy.getRequiredType() || strategy.getMaxPwdLen() < strategy.getRequiredType())){
 			throw new ServiceException("瀵嗙爜鏈�灏忛暱搴︿笉鑳藉皬浜庡繀濉绫荤殑鍊�!");
 		}
+		if(strategy.getExpirationTime() <= strategy.getReminderTime()){
+			throw new ServiceException("杩囨湡鏃堕棿涓嶈兘灏忎簬鎻愰啋鏃堕棿!");
+		}
+		//鍒ゆ柇鍓嶇鏄惁鏈彁浜わ紝鏄惁榛樿瀛楁
+		if(Func.isEmpty(strategy.getIsDefault())){
+			strategy.setIsDefault(0L);
+		}
 	}
 
 	/**

--
Gitblit v1.9.3