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-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java | 75 +++++++++++++++++++++++++++++++++++--
1 files changed, 70 insertions(+), 5 deletions(-)
diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
index 7465d53..f10a077 100644
--- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
+++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
@@ -36,6 +36,7 @@
import org.springblade.system.cache.DictCache;
import org.springblade.system.cache.ParamCache;
import org.springblade.system.cache.SysCache;
+import org.springblade.system.entity.Strategy;
import org.springblade.system.entity.Tenant;
import org.springblade.system.enums.DictEnum;
import org.springblade.system.feign.ISysClient;
@@ -51,11 +52,9 @@
import org.springblade.system.user.wrapper.UserWrapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
import static org.springblade.common.constant.CommonConstant.DEFAULT_PARAM_PASSWORD;
@@ -301,7 +300,39 @@
if (!user.getPassword().equals(DigestUtil.hex(oldPassword))) {
throw new ServiceException("鍘熷瘑鐮佷笉姝g‘!");
}
- return this.update(Wrappers.<User>update().lambda().set(User::getPassword, DigestUtil.hex(newPassword)).eq(User::getId, userId));
+ //鑾峰彇鐢ㄦ埛閲囩敤鐨勫瘑鐮佺瓥鐣�
+ Strategy strategy = sysClient.getByUserId(userId).getData();
+ //瀵嗙爜闀垮害鏍¢獙
+ if(newPassword1.length() < strategy.getMinPwdLen() || newPassword1.length() > strategy.getMaxPwdLen()){
+ throw new ServiceException("瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠瀵嗙爜缁勫悎鏂瑰紡锛屼笖瀵嗙爜闀垮害蹇呴』鍦ㄣ��"+strategy.getMinPwdLen()+"-"+strategy.getMaxPwdLen()+"銆戣寖鍥村唴");
+ }
+ List<String> regexs = sysClient.getRegexByList(Arrays.asList(strategy.getCombinationIds().split(","))).getData();
+ //鍒ゆ柇鏄惁婊¤冻缁勫悎鏂瑰紡涓殑蹇呭~绉嶇被鏁�
+ int reqType = 0;
+ for (int i = 0; i < regexs.size(); i++) {
+ if(reqType>=strategy.getRequiredType()){
+ break;
+ }
+ if(!Func.isEmpty(RegexUtil.findResult(regexs.get(i),newPassword1))){
+ reqType++;
+ }
+ }
+ String resException = "瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationNames()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠绫诲瀷锛岃閲嶆柊杈撳叆瀵嗙爜锛�";
+ if(reqType<strategy.getRequiredType()){
+ throw new ServiceException(resException);
+ }
+ // 鏄惁灞炰簬缁勫悎鏂瑰紡涓殑绫诲瀷
+ String regex = sysClient.getRegex(Arrays.asList(strategy.getCombinationIds().split(","))).getData();
+ regex = "^"+regex+"{"+strategy.getRequiredType()+",}$";
+ boolean result = RegexUtil.find(regex, newPassword1);
+ if(!result){
+ throw new ServiceException(resException);
+ }
+ //淇敼瀵嗙爜鍚屾椂锛屾敼鍙樼敤鎴蜂俊鎭腑鐨勫瘑鐮佷慨鏀圭姸鎬佸瓧娈�
+ return this.update(Wrappers.<User>update().lambda()
+ .set(User::getPassword, DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes())))
+ .set(User::getStrategyUpdateStatus,CommonConstant.TOP_PARENT_ID)
+ .eq(User::getId, userId));
}
@Override
@@ -438,4 +469,38 @@
return userVO;
}
+ @Override
+ public Long checkRenAndExpr(Long userId) {
+ //鑾峰彇鍒板瘑鐮佷慨鏀规椂闂�
+ Date pwdUpdateTime = this.getOne(Wrappers.<User>query().eq("ID", userId)).getPwdUpdateTime();
+ Long pwdupdateday = 0L;
+ if(!Func.isEmpty(pwdUpdateTime)){
+ pwdupdateday = dateToDay(pwdUpdateTime);
+ }
+ Strategy strategy = sysClient.getByUserId(userId).getData();
+ System.out.println("褰撳墠鏃堕棿=================="+dateToDay(new Date()));
+ System.out.println("瀵嗙爜淇敼鏃堕棿======================"+pwdupdateday);
+ System.out.println("鎻愰啋鏃堕棿======================"+strategy.getReminderTime());
+ System.out.println("杩囨湡鏃堕棿======================="+strategy.getExpirationTime());
+ //鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮�
+ long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(pwdUpdateTime);
+ //蹇呴』鍘讳慨鏀瑰瘑鐮�
+ if(reminder<=0){
+ return -1L;
+ }
+ //鎻愰啋鐢ㄦ埛杩樻湁澶氫箙杩囨湡
+ if(reminder<=strategy.getReminderTime()){
+ long res = (strategy.getReminderTime()+pwdupdateday)-dateToDay(new Date());
+ return res;
+ }
+ //浠h〃姝e父鐘舵�佽繕鏈埌鎻愰啋涓庤繃鏈熸椂闂达紝鏃笉鎻愰啋涔熶笉瑕佹眰淇敼
+ return 0L;
+ }
+
+ private Long dateToDay(Date date){
+ long time = date.getTime();
+ return time/(1000 * 60 * 60 * 24);
+ }
+
+
}
--
Gitblit v1.9.3