From aa566e55023f6d4fa0d4223434b95cd064c3d0d0 Mon Sep 17 00:00:00 2001
From: yuxc <653031404@qq.com>
Date: 星期一, 27 三月 2023 09:25:10 +0800
Subject: [PATCH] 直接使用业务字典完成功能,检查字典是否存在,存在即返回,不存在新增

---
 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java |   91 +++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
index 729f287..15a6b43 100644
--- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
+++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java
@@ -1,16 +1,17 @@
 package org.springblade.system.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.constant.CommonConstant;
 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.tool.utils.Func;
 import org.springblade.system.entity.Strategy;
 import org.springblade.system.mapper.StrategyMapper;
 import org.springblade.system.service.IStrategyService;
-import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -39,20 +40,28 @@
 	 */
 	@Override
 	public Strategy queryById(String id) {
-		return this.strategyMapper.queryById(id);
+		return this.getById(id);
+	}
+
+	/**
+	 * 鏌ヨ榛樿瀵嗙爜绛栫暐
+	 * @return
+	 */
+	@Override
+	public Strategy queryByIsDefault() {
+		return this.strategyMapper.queryByIsDefault();
 	}
 
 	/**
 	 * 鍒嗛〉鏌ヨ
 	 *
-	 * @param strategy 绛涢�夋潯浠�
-	 * @param pageRequest   鍒嗛〉瀵硅薄
+	 * @param query 鍒嗛〉瀵硅薄
 	 * @return 鏌ヨ缁撴灉
 	 */
 	@Override
-	public Page<Strategy> queryAllByPage(Strategy strategy, PageRequest pageRequest) {
-		long total = this.strategyMapper.count(strategy);
-		return new PageImpl<>(this.strategyMapper.queryAllByPage(strategy, pageRequest), pageRequest, total);
+	public PageImpl<Strategy> queryAllByPage(Query query) {
+		Page<Strategy> strategyPage = new Page<>(query.getCurrent(), query.getSize());
+		return new PageImpl<>(this.strategyMapper.queryAllByPage(strategyPage));
 	}
 
 	/**
@@ -65,12 +74,30 @@
 	public boolean submit(Strategy strategy) {
 		//鍒ゆ柇鏄惁鎼哄甫id
 		if(Func.isEmpty(strategy.getId())){
-			//鏂板
+			//鎵ц鏂板
 			Strategy dbstrategy = this.getOne(Wrappers.<Strategy>query().lambda()
 				.eq(Strategy::getStrategyName, strategy.getStrategyName()));
 			//濡傛灉鏁版嵁搴撲腑瀛樺湪杩欐潯缁勫悎鍚嶇О鐨勮褰曠洿鎺ヨ繑鍥�
 			if(!Func.isEmpty(dbstrategy)){
 				throw new ServiceException("璇ュ瘑鐮佺瓥鐣ュ凡瀛樺湪!");
+			}
+			//濡傛灉褰撳墠鏂板璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
+			if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
+				this.update(Wrappers.<Strategy>update().lambda()
+					.set(Strategy::getIsDefault, CommonConstant.NOT_SEALED_ID)
+					.eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY));
+			}
+			if(strategy.getRequiredType() > 0){
+				throw new ServiceException("蹇呭~绉嶇被涓嶈兘灏忎簬绛変簬0!");
+			}
+			if(strategy.getRequiredType() > strategy.getCombinationIds().split(",").length){
+				throw new ServiceException("蹇呭~绉嶇被涓嶈兘澶т簬鎵�閫夋嫨鐨勫瘑鐮佺粍鍚堟柟寮忕殑涓暟!");
+			}
+			if(strategy.getMaxPwdLen() > strategy.getMinPwdLen()){
+				throw new ServiceException("瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庢渶灏忛暱搴�!");
+			}
+			if(strategy.getMinPwdLen() < strategy.getCombinationIds().split(",").length || strategy.getMaxPwdLen() < strategy.getCombinationIds().split(",").length){
+				throw new ServiceException("瀵嗙爜鏈�灏忛暱搴︿笉鑳藉皬浜庣瀵嗙瓥鐣ョ殑鍊�!");
 			}
 			if(Func.isEmpty(strategy.getCreateTime())){
 				strategy.setCreateTime(new Date());
@@ -81,6 +108,16 @@
 			boolean temp = super.saveOrUpdate(strategy);
 			return temp;
 		}else {
+			//濡傛灉褰撳墠淇敼璁剧疆涓洪粯璁ゅ瘑鐮佺瓥鐣ワ紝闇�瑕佸皢宸插瓨鍦ㄩ粯璁ゅ瘑鐮佺瓥鐣ヤ慨鏀逛负闈為粯璁�
+			if(strategy.getIsDefault().equals("1") || strategy.getIsDefault() == 1){
+				this.update(Wrappers.<Strategy>update().lambda()
+					.set(Strategy::getIsDefault,CommonConstant.NOT_SEALED_ID)
+					.eq(Strategy::getIsDefault,CommonConstant.DATA_SCOPE_CATEGORY));
+			}else {
+				if(Func.isEmpty(queryByIsDefault())){
+					throw new ServiceException("榛樿瀵嗙爜绛栫暐蹇呴』鏈変笖浠呮湁涓�鏉�!");
+				}
+			}
 			if(Func.isEmpty(strategy.getUpdateTime())){
 				strategy.setUpdateTime(new Date());
 			}
@@ -97,8 +134,44 @@
 	 */
 	@Override
 	public boolean deleteByIds(List<String> ids) {
+		Strategy strategy = this.getOne(Wrappers.<Strategy>query().lambda()
+			.in(Strategy::getId,ids)
+			.eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY));
+		//濡傛灉瀛樺湪榛樿绛栫暐鐨刬d锛屽氨涓嶈兘鐩存帴鍒犻櫎缁欏嚭鎻愮ず
+		if(!Func.isEmpty(strategy)){
+			throw new ServiceException("涓嶈兘鍒犻櫎榛樿瀵嗙爜绛栫暐!");
+		}
 		boolean tenantTemp = this.removeBatchByIds(ids);
 		return tenantTemp;
 	}
 
+	/**
+	 * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣�
+	 * @param tenantId
+	 * @param name
+	 * @return
+	 */
+	@Override
+	public Strategy queryByNameAndTenantId(String tenantId, String name) {
+		Strategy strategy = this.strategyMapper.queryByNameAndTenantId(tenantId,name);
+		if(!Func.isEmpty(strategy)){
+			return strategy;
+		}
+		return queryByIsDefault();
+	}
+
+	/**
+	 * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐
+	 * @param userId
+	 * @return
+	 */
+	@Override
+	public Strategy queryByUserId(Long userId) {
+		Strategy strategy = this.strategyMapper.queryByUserId(userId);
+		if(!Func.isEmpty(strategy)){
+			return strategy;
+		}
+		return queryByIsDefault();
+	}
+
 }

--
Gitblit v1.9.3