From bf12237f0cedf8c2a9f0fe298f457772790c7d86 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 28 三月 2023 18:38:54 +0800
Subject: [PATCH] 提交code服务代码
---
Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java | 128 +++++++++++++++++++++++++++++++++++-------
1 files changed, 106 insertions(+), 22 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 9b0ada5..6e92d92 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
@@ -21,9 +21,8 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import lombok.AllArgsConstructor;
+import lombok.RequiredArgsConstructor;
import org.springblade.common.constant.CommonConstant;
-import org.springblade.common.constant.TenantConstant;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
@@ -32,12 +31,12 @@
import org.springblade.core.tenant.BladeTenantProperties;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.constant.BladeConstant;
-import org.springblade.core.tool.jackson.JsonUtil;
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.*;
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,13 +50,12 @@
import org.springblade.system.user.service.IUserService;
import org.springblade.system.user.vo.UserVO;
import org.springblade.system.user.wrapper.UserWrapper;
+import org.springframework.beans.factory.annotation.Value;
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;
@@ -67,7 +65,7 @@
* @author Chill
*/
@Service
-@AllArgsConstructor
+@RequiredArgsConstructor
public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implements IUserService {
private static final String GUEST_NAME = "guest";
@@ -75,6 +73,10 @@
private final IUserOauthService userOauthService;
private final ISysClient sysClient;
private final BladeTenantProperties tenantProperties;
+ //鎷垮埌閰嶇疆鐨勮秴绠d
+ @Value("${user-info.id}")
+ private String adminUserId;
+
@Override
@Transactional(rollbackFor = Exception.class)
@@ -83,19 +85,7 @@
user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
}
String tenantId = user.getTenantId();
- Tenant tenant = SysCache.getTenant(tenantId);
- if (Func.isNotEmpty(tenant)) {
- Integer accountNumber = tenant.getAccountNumber();
- if (tenantProperties.getLicense()) {
- String licenseKey = tenant.getLicenseKey();
- String decrypt = DesUtil.decryptFormHex(licenseKey, TenantConstant.DES_KEY);
- accountNumber = JsonUtil.parse(decrypt, Tenant.class).getAccountNumber();
- }
- Long tenantCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId));
- if (accountNumber != null && accountNumber > 0 && accountNumber <= tenantCount) {
- throw new ServiceException("褰撳墠绉熸埛宸插埌鏈�澶ц处鍙烽搴�!");
- }
- }
+ //Tenant tenant = SysCache.getTenant(tenantId);
if (Func.isNotEmpty(user.getPassword())) {
user.setPassword(DigestUtil.encrypt(user.getPassword()));
}
@@ -104,6 +94,28 @@
throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
}
return save(user) && submitUserDept(user);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean submitList(List<User> users) {
+ Boolean flag = true;
+ for (User user : users){
+ if (StringUtil.isBlank(user.getTenantId())) {
+ user.setTenantId(BladeConstant.ADMIN_TENANT_ID);
+ }
+ String tenantId = user.getTenantId();
+ if (Func.isNotEmpty(user.getPassword())) {
+ user.setPassword(DigestUtil.encrypt(user.getPassword()));
+ }
+ Long userCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId).eq(User::getAccount, user.getAccount()));
+ if (userCount > 0L && Func.isEmpty(user.getId())) {
+ throw new ServiceException(StringUtil.format("褰撳墠鐢ㄦ埛 [{}] 宸插瓨鍦�!", user.getAccount()));
+ }
+ flag = save(user) && submitUserDept(user);
+
+ }
+ return flag;
}
@Override
@@ -293,7 +305,40 @@
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)
+ .set(User::getPwdUpdateTime,new Date())
+ .eq(User::getId, userId));
}
@Override
@@ -430,4 +475,43 @@
return userVO;
}
+ @Override
+ public Long checkRenAndExpr(Long userId) {
+ //瓒呯骇绠$悊鍛樼洿鎺ヨ繑鍥炰笉闇�瑕佹彁閱掑瘑鐮佷慨鏀�
+ if(adminUserId.equals(userId)){
+ return 0L;
+ }
+ //鑾峰彇鍒板瘑鐮佷慨鏀规椂闂�
+ 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();
+ //鏄惁鎻愰啋閫氳繃鏈�鍚庝竴娆′慨鏀瑰瘑鐮佺殑鏃堕棿鍔犱笂杩囨湡鏃堕棿鍑忓幓褰撳墠鏃堕棿锛屽鏋滃皬浜庤繃鏈熸彁閱掓椂闂村氨杩涜鎻愰啋锛屽鏋�<=0灏辨彁閱掑繀椤讳慨鏀瑰瘑鐮�
+ long reminder = pwdupdateday+strategy.getExpirationTime()-dateToDay(new Date());
+ //鎻愰啋鐢ㄦ埛蹇呴』淇敼瀵嗙爜
+ if(reminder<=0){
+ return -1L;
+ }
+ //鎻愰啋鐢ㄦ埛杩樻湁澶氫箙杩囨湡
+ if(reminder<=strategy.getReminderTime()){
+ long res = (strategy.getReminderTime()+pwdupdateday)-dateToDay(new Date());
+ return res;
+ }
+ //浠h〃姝e父鐘舵�佽繕鏈埌鎻愰啋涓庤繃鏈熸椂闂达紝鏃笉鎻愰啋涔熶笉瑕佹眰淇敼
+ return 0L;
+ }
+
+ /**
+ * 鏃堕棿鏍煎紡杞ぉ
+ * @param date
+ * @return
+ */
+ private Long dateToDay(Date date){
+ long time = date.getTime();
+ return time/(1000 * 60 * 60 * 24);
+ }
+
+
}
--
Gitblit v1.9.3