From 0baeb5d2b147bf29add1e5373652ae70dd749b69 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 24 三月 2023 21:08:55 +0800 Subject: [PATCH] 更新密码策略功能 --- Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java | 15 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java | 20 + Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java | 7 Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java | 14 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java | 16 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml | 17 + Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java | 9 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java | 2 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java | 29 ++ Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java | 15 + Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java | 4 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java | 6 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml | 17 + Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java | 3 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java | 54 +++- Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java | 22 + Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java | 7 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java | 62 ++++ Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java | 18 + Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java | 6 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java | 7 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java | 5 Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java | 1 Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java | 58 ++++ Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml | 15 Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java | 22 + Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java | 10 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java | 30 ++ Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml | 11 Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java | 11 Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java | 7 Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java | 29 ++ Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java | 24 + Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java | 15 + Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java | 4 Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java | 24 + Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/StrategyServiceImpl.java | 49 +++ Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml | 70 +---- 38 files changed, 591 insertions(+), 144 deletions(-) diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java index 979a7c8..562c53d 100644 --- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java +++ b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetails.java @@ -79,6 +79,28 @@ * 鐢ㄦ埛璇︽儏 */ private final Kv detail; + /** + * 瀵嗙爜绛栫暐淇敼鐘舵�� + */ + private Long strategyUpdateStatus; + + + public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities,Long strategyUpdateStatus) { + super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); + this.userId = userId; + this.tenantId = tenantId; + this.oauthId = oauthId; + this.name = name; + this.realName = realName; + this.account = username; + this.deptId = deptId; + this.postId = postId; + this.roleId = roleId; + this.roleName = roleName; + this.avatar = avatar; + this.detail = detail; + this.strategyUpdateStatus = strategyUpdateStatus; + } public BladeUserDetails(Long userId, String tenantId, String oauthId, String name, String realName, String deptId, String postId, String roleId, String roleName, String avatar, String username, String password, Kv detail, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection<? extends GrantedAuthority> authorities) { super(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java index d5c89f4..3efc4ed 100644 --- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java +++ b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/service/BladeUserDetailsServiceImpl.java @@ -31,6 +31,7 @@ import org.springblade.core.tool.support.Kv; import org.springblade.core.tool.utils.*; import org.springblade.system.cache.ParamCache; +import org.springblade.system.entity.Strategy; import org.springblade.system.entity.Tenant; import org.springblade.system.feign.ISysClient; import org.springblade.system.user.entity.User; @@ -77,6 +78,7 @@ private final JwtProperties jwtProperties; + /** * 瓒呯骇绠$悊鍛樹俊鎭� */ @@ -116,16 +118,21 @@ // 鎸囧畾绉熸埛ID String tenantId = StringUtils.isBlank(headerTenant) ? paramTenant : headerTenant; + + Log.debug("褰撳墠鐧诲綍鐢ㄦ埛鐨勭鎴稩d涓猴細"+tenantId+"褰撳墠鐧诲綍鐢ㄦ埛鍚嶄负锛�"+username); + Strategy strategy = sysClient.getByTenantIdAndName(tenantId, username).getData(); + // 鍒ゆ柇鐧诲綍鏄惁閿佸畾 int count = getFailCount(tenantId, username); - int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), FAIL_COUNT); + int failCount = Func.toInt(ParamCache.getValue(FAIL_COUNT_VALUE), Func.toInt(strategy.getLockingNum())); + if (count >= failCount) { throw new UserDeniedAuthorizationException(TokenUtil.USER_HAS_TOO_MANY_FAILS); } //瓒呯骇绠$悊鍛橀厤缃枃浠堕厤缃处鍙峰瘑鐮侊紝瀹炵幇鐧诲綍, 榛樿绉熸埛id涓�000000 if(tenantId.equals(this.tenantId)){ if (!this.userName.equals(username) && !password.equalsIgnoreCase(this.password)) { - setFailCount(tenantId, username, count); + setFailCount(tenantId, username, count,strategy.getLockingTime()); throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); } //濡傛灉ip姣斿鍚巊et鎶涘嚭寮傚父No value present灏辩洿鎺ユ姏寮傚父缁撴潫鐧诲綍 @@ -180,12 +187,13 @@ User user = userInfo.getUser(); // 鐢ㄦ埛涓嶅瓨鍦�,浣嗘彁绀虹敤鎴峰悕涓庡瘑鐮侀敊璇苟閿佸畾璐﹀彿 if (user == null || user.getId() == null) { - setFailCount(tenantId, username, count); + setFailCount(tenantId, username, count,strategy.getLockingTime()); throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); } + String hex = DigestUtil.hex(password); // 鐢ㄦ埛瀛樺湪浣嗗瘑鐮侀敊璇�,瓒呰繃娆℃暟鍒欓攣瀹氳处鍙� - if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(DigestUtil.hex(password))) { - setFailCount(tenantId, username, count); + if (grantType != null && !grantType.equals(TokenUtil.REFRESH_TOKEN_KEY) && !user.getPassword().equals(hex)) { + setFailCount(tenantId, username, count,strategy.getLockingTime()); throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND); } // 鐢ㄦ埛瑙掕壊涓嶅瓨鍦� @@ -210,7 +218,7 @@ BladeUserDetails bladeUserDetails = new BladeUserDetails(user.getId(), user.getTenantId(), StringPool.EMPTY, user.getName(), user.getRealName(), user.getDeptId(), user.getPostId(), user.getRoleId(), Func.join(userInfo.getRoles()), Func.toStr(user.getAvatar(), TokenUtil.DEFAULT_AVATAR), username, AuthConstant.ENCRYPT + user.getPassword(), userInfo.getDetail(), true, true, true, true, - AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles()))); + AuthorityUtils.commaSeparatedStringToAuthorityList(Func.join(result.getData().getRoles())),user.getStrategyUpdateStatus()); return bladeUserDetails; } else { throw new UsernameNotFoundException(result.getMsg()); @@ -279,8 +287,8 @@ * @param username 璐﹀彿 * @param count 娆℃暟 */ - private void setFailCount(String tenantId, String username, int count) { - bladeRedis.setEx(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username), count + 1, Duration.ofMinutes(30)); + private void setFailCount(String tenantId, String username, int count, Long expir) { + bladeRedis.setEx(CacheNames.tenantKey(tenantId, CacheNames.USER_FAIL_KEY, username), count + 1, Duration.ofMinutes(expir)); } /** diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java index c9fed81..5baaaee 100644 --- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java +++ b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/support/BladeJwtTokenEnhancer.java @@ -64,6 +64,7 @@ info.put(TokenUtil.AVATAR, principal.getAvatar()); info.put(TokenUtil.DETAIL, principal.getDetail()); info.put(TokenUtil.LICENSE, TokenUtil.LICENSE_NAME); + info.put(TokenUtil.STRATEGYUPDATESTATUS, principal.getStrategyUpdateStatus()); ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(info); //token鐘舵�佽缃� diff --git a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java index b513083..f1f3f3c 100644 --- a/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java +++ b/Source/BladeX/blade-auth/src/main/java/org/springblade/auth/utils/TokenUtil.java @@ -21,7 +21,6 @@ import org.springblade.core.launch.constant.TokenConstant; import org.springblade.core.tenant.BladeTenantProperties; import org.springblade.core.tool.constant.BladeConstant; -import org.springblade.core.tool.jackson.JsonUtil; import org.springblade.core.tool.utils.*; import org.springblade.system.entity.Tenant; import org.springframework.security.authentication.BadCredentialsException; @@ -30,7 +29,6 @@ import java.util.Base64; import java.util.Calendar; -import java.util.Date; /** * 璁よ瘉宸ュ叿绫� @@ -55,6 +53,7 @@ public final static String DETAIL = TokenConstant.DETAIL; public final static String LICENSE = TokenConstant.LICENSE; public final static String LICENSE_NAME = TokenConstant.LICENSE_NAME; + public final static String STRATEGYUPDATESTATUS = "strategyUpdateStatus"; public final static String DEPT_HEADER_KEY = "Dept-Id"; public final static String ROLE_HEADER_KEY = "Role-Id"; diff --git a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index f6f3d28..fdd1df6 100644 --- a/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/Source/BladeX/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -40,8 +40,8 @@ /** * nacos dev 鍦板潃 */ - String NACOS_DEV_ADDR = "dev.vci-tech.com:38848"; - //String NACOS_DEV_ADDR = "192.168.93.133:38848"; + //String NACOS_DEV_ADDR = "dev.vci-tech.com:38848"; + String NACOS_DEV_ADDR = "192.168.93.133:38848"; /** * nacos prod 鍦板潃 diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java index 63aecd3..8e9eaef 100644 --- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java +++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/Strategy.java @@ -146,6 +146,12 @@ private String licensors; /** + * 缁勫悎鏂瑰紡姝e垯 + */ + @ApiModelProperty(value = "鎺堟潈浜�") + private String regex; + + /** * 缁勫悎鍚嶇О */ @ApiModelProperty(value = "缁勫悎鍚嶇О") diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java index 9048e87..aefd34e 100644 --- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java +++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/entity/UserPwdstrategy.java @@ -1,6 +1,7 @@ package org.springblade.system.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -26,15 +27,15 @@ @ApiModel(value = "UserPwdStrtategy", description = "UserPwdStrtategy") public class UserPwdstrategy implements Serializable { - private static final long serialVersionUID = -556926788101426521L; + private static final long serialVersionUid = -556926788101426521L; /** * 涓婚敭 */ @JsonSerialize(using = ToStringSerializer.class) @ApiModelProperty(value = "涓婚敭") - @TableId(value = "id", type = IdType.ASSIGN_ID) - private Long Id; + @TableId(value = "ID", type = IdType.ASSIGN_ID) + private Long id; /** * 鐢ㄦ埛id @@ -46,6 +47,7 @@ * 瀵嗙爜绛栫暐id */ @ApiModelProperty(value = "瀵嗙爜绛栫暐id") + @TableField(value = "PWDSTRATEGY_ID") private Long pwdstrategyId; public UserPwdstrategy(Long userId, Long pwdStrategyId) { @@ -62,11 +64,14 @@ return false; } UserPwdstrategy that = (UserPwdstrategy) o; - return Objects.equals(Id, that.Id) && Objects.equals(userId, that.userId) && Objects.equals(pwdstrategyId, that.pwdstrategyId); + return Objects.equals(id, that.id) && Objects.equals(userId, that.userId) && Objects.equals(pwdstrategyId, that.pwdstrategyId); } @Override public int hashCode() { - return Objects.hash(Id, userId, pwdstrategyId); + return Objects.hash(id, userId, pwdstrategyId); } + + + } diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java index 278ba4a..94d56f2 100644 --- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java +++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java @@ -21,6 +21,8 @@ import org.springblade.system.entity.*; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.List; @@ -63,6 +65,9 @@ String PARAM = API_PREFIX + "/param"; String PARAM_VALUE = API_PREFIX + "/param-value"; String REGION = API_PREFIX + "/region"; + String STRATEGY = API_PREFIX + "/query-tenantid-name"; + String STRATEGYBYID = API_PREFIX + "/query-userid"; + String REGEX = API_PREFIX + "/combination-regex"; /** * 鑾峰彇鑿滃崟 @@ -285,4 +290,28 @@ @GetMapping(REGION) R<Region> getRegion(@RequestParam("code") String code); + /** + * 鏍规嵁绉熸埛id浠ュ強鐢ㄦ埛鍚嶈幏鍙栧瘑鐮佺瓥鐣� + * @param tenantId + * @param name + * @return + */ + @PostMapping(STRATEGY) + R<Strategy> getByTenantIdAndName(@RequestParam("tenantId") String tenantId, @RequestParam("name") String name); + + /** + * 鏍规嵁鐢ㄦ埛id鑾峰彇瀵嗙爜绛栫暐 + * @param userId + * @return + */ + @PostMapping(STRATEGYBYID) + R<Strategy> getByUserId(@RequestParam("id") Long userId); + + /** + * 鏍规嵁缁勫悎鏂瑰紡id鑾峰彇鍊� + * @return + */ + @PostMapping(REGEX) + R<String> getRegex(@RequestBody List<String> combinationIds); + } diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java index 069878c..10cf0a0 100644 --- a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java +++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java @@ -150,5 +150,20 @@ return R.fail("鑾峰彇鏁版嵁澶辫触"); } + @Override + public R<Strategy> getByTenantIdAndName(String tenantId, String name) { + return R.fail("鑾峰彇鏁版嵁澶辫触"); + } + + @Override + public R<Strategy> getByUserId(Long userId) { + return R.fail("鑾峰彇鏁版嵁澶辫触"); + } + + @Override + public R<String> getRegex(List<String> combinationIds) { + return R.fail("鑾峰彇鏁版嵁澶辫触"); + } + } diff --git a/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java new file mode 100644 index 0000000..ba40eb1 --- /dev/null +++ b/Source/BladeX/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/UserPwdstrategyVO.java @@ -0,0 +1,29 @@ +package org.springblade.system.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.system.entity.UserPwdstrategy; + +import java.util.List; + +/** + * (UserPwdStrtategy)瀹炰綋绫� + * + * @author makejava + * @since 2023-03-20 14:59:29 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "TenantVO瀵硅薄", description = "TenantVO瀵硅薄") +public class UserPwdstrategyVO extends UserPwdstrategy { + + private static final long serialVersionUID = 336389756425054417L; + + @ApiModelProperty(value = "闇�瑕佷慨鏀规垨鑰呮柊澧炲瘑鐮佺瓥鐣ョ殑鐢ㄦ埛id") + private List<Long> userIds; + + +} diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java index 4d39097..b04494c 100644 --- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java +++ b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java @@ -52,11 +52,6 @@ * 瀵嗙爜 */ private String password; - @TableField(exist = false) - /** - * 瀵嗙爜绛栫暐 - */ - private String pwdStrategy; /** * 鏄电О */ @@ -94,8 +89,25 @@ */ private String deptId; /** + * 瀵嗙爜绛栫暐 + */ + @TableField(exist = false) + private String pwdStrategy; + /** * 宀椾綅id */ private String postId; + /** + * 瀵嗙爜淇敼鏃堕棿 + */ + private Date pwdUpdateTime; + /** + * 鐢ㄦ埛瀵嗙骇 + */ + private String secretgrade; + /** + * 瀵嗙爜绛栫暐淇敼鐘舵�� + */ + private Long strategyUpdateStatus; } diff --git a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java index c04e629..8a412cc 100644 --- a/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java +++ b/Source/BladeX/blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java @@ -49,6 +49,7 @@ String SAVE_USER = API_PREFIX + "/save-user"; String SAVE_USER_LIST = API_PREFIX + "/save-user-list"; String REMOVE_USER = API_PREFIX + "/remove-user"; + String UPDATE_USER = API_PREFIX+"/update-user"; /** * 鑾峰彇鐢ㄦ埛淇℃伅 @@ -58,7 +59,6 @@ */ @GetMapping(USER_INFO_BY_ID) R<User> userInfoById(@RequestParam("userId") Long userId); - /** * 鏍规嵁璐﹀彿鑾峰彇鐢ㄦ埛淇℃伅 @@ -126,4 +126,12 @@ @PostMapping(REMOVE_USER) R<Boolean> removeUser(@RequestParam("tenantIds") String tenantIds); + /** + * 淇敼鐢ㄦ埛鍩虹淇℃伅 + * @param user + * @return + */ + @PostMapping(UPDATE_USER) + R<Boolean> updateUser(@RequestBody User user); + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java index be8eb8a..d89b21a 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/StrategyController.java @@ -20,7 +20,7 @@ import java.util.List; /** - * 瀵嗙爜绛栫暐(PlSysStrategy)琛ㄦ帶鍒跺眰 + * 瀵嗙爜绛栫暐(Strategy)琛ㄦ帶鍒跺眰 * * @author makejava * @since 2023-03-20 16:45:31 @@ -47,10 +47,23 @@ */ @GetMapping("/page") @ApiOperationSupport(order = 1) - @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆combination锛屽垎椤靛弬鏁皅uery") + @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "浼犲叆鍒嗛〉鍙傛暟query") public R<Page<Strategy>> queryByPage(Query query) { Page<Strategy> strategyPage = strategyService.queryAllByPage(query); return R.data(strategyPage); + } + + /** + * 鏌ヨ榛樿瀵嗙爜绛栫暐 + * + * @return 鏌ヨ缁撴灉 + */ + @GetMapping("/default") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "鏌ヨ榛樿瀵嗙爜绛栫暐") + public R<Strategy> queryByIsDefault() { + Strategy strategy = strategyService.queryByIsDefault(); + return R.data(strategy); } /** @@ -92,5 +105,18 @@ return ResponseEntity.ok(this.strategyService.deleteByIds(ids)); } + /** + * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐 + * + * @param userId 瀹炰綋 + * @return 鏂板缁撴灉 + */ + @PostMapping("/query-userid") + @ApiOperationSupport(order = 5) + @ApiOperation(value = "鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐", notes = "浼犲叆userId") + public R<Strategy> queryByUserId(@Valid @RequestParam Long userId) { + return R.data(this.strategyService.queryByUserId(userId)); + } + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java new file mode 100644 index 0000000..aaa6062 --- /dev/null +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/UserPwdstrategyController.java @@ -0,0 +1,62 @@ +package org.springblade.system.controller; + +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.system.service.IUserPwdstrategyService; +import org.springblade.system.vo.UserPwdstrategyVO; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import springfox.documentation.annotations.ApiIgnore; + +import javax.annotation.Resource; +import javax.validation.Valid; + +/** + * 鐢ㄦ埛瀵嗙爜绛栫暐鍏宠仈(UserPwdstrategy)琛ㄦ帶鍒跺眰 + * + * @author ludc + * @since 2023-03-20 15:23:24 + */ +@NonDS +@ApiIgnore +@AllArgsConstructor +@RestController +@RequestMapping("/user-pwdstrategy") +@Api(value = "鐢ㄦ埛瀵嗙爜瀹夊叏绛栫暐鍏宠仈琛�", tags = "鎺ュ彛") +public class UserPwdstrategyController { + + @Resource + private IUserPwdstrategyService userPwdstrategyService; + + /** + * 鏂板鍜屼慨鏀规暟鎹� + * + * @param userPwdstrategyVO 瀹炰綋 + * @return 鏂板缁撴灉 + */ + @PutMapping("/insert") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "鏂板鏁版嵁", notes = "浼犲叆userPwdstrategy") + public ResponseEntity<Boolean> insert(@Valid @RequestBody UserPwdstrategyVO userPwdstrategyVO) { + return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO)); + } + + /** + * 鏂板鍜屼慨鏀规暟鎹� + * + * @param userPwdstrategyVO 瀹炰綋 + * @return 鏂板缁撴灉 + */ + @PostMapping("/update") + @ApiOperationSupport(order = 3) + @ApiOperation(value = "淇敼鏁版嵁", notes = "浼犲叆userPwdstrategy") + public ResponseEntity<Boolean> update(@Valid @RequestBody UserPwdstrategyVO userPwdstrategyVO) { + return ResponseEntity.ok(this.userPwdstrategyService.submit(userPwdstrategyVO)); + } + + + +} diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java index 59c1594..6dca0b9 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/controller/ValueRangeController.java @@ -21,9 +21,9 @@ import java.util.List; /** - * (ValueRange)琛ㄦ帶鍒跺眰 + * (ValueRangeController)琛ㄦ帶鍒跺眰 * - * @author makejava + * @author ludc * @since 2023-03-20 15:23:24 */ @NonDS diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java index 24898fa..ae2be56 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java @@ -22,6 +22,8 @@ import org.springblade.system.entity.*; import org.springblade.system.service.*; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import springfox.documentation.annotations.ApiIgnore; @@ -53,6 +55,10 @@ private final IParamService paramService; private final IRegionService regionService; + + private final IStrategyService strategyService; + + private final ICombinationService combinationService; @Override @GetMapping(MENU) @@ -191,5 +197,23 @@ return R.data(regionService.getById(code)); } + @Override + @PostMapping(STRATEGY) + public R<Strategy> getByTenantIdAndName(String tenantId, String name) { + return R.data(strategyService.queryByNameAndTenantId(tenantId,name)); + } + + @Override + @PostMapping(STRATEGYBYID) + public R<Strategy> getByUserId(Long userId) { + return R.data(strategyService.queryByUserId(userId)); + } + + @Override + @PostMapping(REGEX) + public R<String> getRegex(@RequestBody List<String> combinationIds) { + return R.data(combinationService.getRegex(combinationIds)); + } + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java index 6305297..f3fee85 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; import org.springblade.system.entity.Combination; import java.util.List; @@ -38,5 +39,13 @@ */ long count(Combination combination); + /** + * 鏌ヨ缁勫悎鏂瑰紡姝e垯 + * + * @param combinationIds 鏌ヨ鏉′欢 + * @return 鎬昏鏁� + */ + String queryRegex(@Param("combinationIds") List<String> combinationIds); + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml index 401a0fc..159254d 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/CombinationMapper.xml @@ -6,10 +6,10 @@ <result property="id" column="ID" jdbcType="VARCHAR"/> <result property="name" column="NAME" jdbcType="VARCHAR"/> <result property="desc" column="DESC" jdbcType="VARCHAR"/> - <result property="createtime" column="CREATETIME" jdbcType="TIMESTAMP"/> - <result property="createuser" column="CREATEUSER" jdbcType="VARCHAR"/> - <result property="updatetime" column="UPDATETIME" jdbcType="TIMESTAMP"/> - <result property="updateuser" column="UPDATEUSER" jdbcType="VARCHAR"/> + <result property="createTime" column="CREATETIME" jdbcType="TIMESTAMP"/> + <result property="createUser" column="CREATEUSER" jdbcType="VARCHAR"/> + <result property="updateTime" column="UPDATETIME" jdbcType="TIMESTAMP"/> + <result property="updateUser" column="UPDATEUSER" jdbcType="VARCHAR"/> <result property="licensors" column="LICENSORS" jdbcType="VARCHAR"/> </resultMap> @@ -87,5 +87,14 @@ limit #{pageable.offset}, #{pageable.pageSize} </select> + <select id="queryRegex" resultType="java.lang.String"> + SELECT REPLACE(WM_CONCAT(psc.REGEX),',[','[') from PL_SYS_COMBINATION psc + WHERE psc.ID IN ( + <foreach collection="combinationIds" item="id" separator=","> + #{id} + </foreach> + ) + </select> + </mapper> diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java index 4d6db55..40916fa 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; import org.springblade.system.entity.Strategy; import java.util.List; @@ -31,5 +32,19 @@ */ long count(Strategy plSysStrategy); + /** + * 鏍规嵁鐢ㄦ埛鍚嶄互鍙婄鎴稩D鏌ヨ瀵嗙爜绛栫暐 + * @return + */ + Strategy queryByNameAndTenantId(@Param("tenantId") String tenantId,@Param("name") String name); + + /** + * 鏍规嵁鐢ㄦ埛id杩涜鏌ヨ + * + * @param userId 鐢ㄦ埛id + * @return 瀵硅薄 + */ + Strategy queryByUserId(@Param("userId") Long userId); + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml index fdd77f4..5b3e32f 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/StrategyMapper.xml @@ -7,7 +7,7 @@ <result property="strategyName" column="STRATEGY_NAME" jdbcType="VARCHAR"/> <result property="minPwdLen" column="MIN_PWD_LEN" jdbcType="VARCHAR"/> <result property="maxPwdLen" column="MAX_PWD_LEN" jdbcType="VARCHAR"/> - <result property="combinationIds" column="COMBINATION " jdbcType="VARCHAR"/> + <result property="combinationIds" column="COMBINATION_IDS" jdbcType="VARCHAR"/> <result property="requiredType" column="REQUIRED_TYPE" jdbcType="VARCHAR"/> <result property="expirationTime" column="EXPIRATION_TIME" jdbcType="TIMESTAMP"/> <result property="reminderTime" column="REMINDER_TIME" jdbcType="TIMESTAMP"/> @@ -20,6 +20,7 @@ <result property="updateTime" column="UPDATE_TIME" jdbcType="TIMESTAMP"/> <result property="updateUser" column="UPDATE_USER" jdbcType="TIMESTAMP"/> <result property="combinationNames" column="COMBINATIONNAMES"/> + <result property="regex" column="REGEX"/> </resultMap> <!--鏌ヨ鎸囧畾琛屾暟鎹�--> @@ -87,63 +88,18 @@ </where> </select> - <!--閫氳繃涓婚敭淇敼鏁版嵁--> - <!--<update id="update"> - update PL_SYS_STRATEGY - <set> - <if test="strategyName != null and strategyName != ''"> - STRATEGY_NAME = #{strategyName}, - </if> - <if test="minPwdLen != null and minPwdLen != ''"> - MIN_PWD_LEN = #{minPwdLen}, - </if> - <if test="maxPwdLen != null and maxPwdLen != ''"> - MAX_PWD_LEN = #{maxPwdLen}, - </if> - <if test="combination != null and combination != ''"> - COMBINATION = #{combination }, - </if> - <if test="requiredType != null and requiredType != ''"> - REQUIRED_TYPE = #{requiredType}, - </if> - <if test="expirationTime != null"> - EXPIRATION_TIME = #{expirationTime}, - </if> - <if test="reminderTime != null"> - REMINDER_TIME = #{reminderTime}, - </if> - <if test="lockingNum != null and lockingNum != ''"> - LOCKING_NUM = #{lockingNum}, - </if> - <if test="lockingTime != null"> - LOCKING_TIME = #{lockingTime}, - </if> - <if test="desc != null and desc != ''"> - DESC = #{desc}, - </if> - <if test="isDefault != null and isDefault != ''"> - IS_DEFAULT = #{isDefault}, - </if> - <if test="createDate != null"> - CREATE_DATE = #{createDate}, - </if> - <if test="createUser != null"> - CREATE_USER = #{createUser}, - </if> - <if test="updateDate != null"> - UPDATE_DATE = #{updateDate}, - </if> - <if test="updateUser != null"> - UPDATE_USER = #{updateUser}, - </if> - </set> - where ID = #{id} - </update> - <!–閫氳繃涓婚敭鍒犻櫎–> - <delete id="deleteById"> - delete from PL_SYS_STRATEGY where ID = #{id} - </delete>--> + <select id="queryByNameAndTenantId" resultMap="StrategyMap"> + SELECT PSS.* FROM PL_SYS_STRATEGY PSS + LEFT JOIN PL_SYS_USER_PWDSTRATEGY PSUP ON PSS.ID=PSUP.PWDSTRATEGY_ID + LEFT JOIN PL_ORG_USER POU ON POU.ID=PSUP.USER_ID + WHERE POU.TENANT_ID = #{tenantId} AND POU.NAME=#{name}; + </select> + + <select id="queryByUserId" resultMap="StrategyMap"> + SELECT PSS.* FROM PL_SYS_STRATEGY PSS LEFT JOIN PL_SYS_USER_PWDSTRATEGY PSUP ON PSS.ID=psup.PWDSTRATEGY_ID + WHERE PSUP.USER_ID = #{userId} + </select> </mapper> diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java index 5fab84e..15876ae 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.springblade.system.entity.UserPwdstrategy; +import java.util.List; + /** * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ暟鎹簱璁块棶灞� * @@ -20,14 +22,6 @@ UserPwdstrategy queryById(Long id); /** - * 缁熻鎬昏鏁� - * - * @param UserPwdstrategy 鏌ヨ鏉′欢 - * @return 鎬昏鏁� - */ - long count(UserPwdstrategy UserPwdstrategy); - - /** * 淇敼鏁版嵁 * * @param UserPwdstrategy 瀹炰緥瀵硅薄 @@ -36,12 +30,12 @@ int update(UserPwdstrategy UserPwdstrategy); /** - * 閫氳繃涓婚敭鍒犻櫎鏁版嵁 + * 閫氳繃鐢ㄦ埛id杩涜鍒犻櫎鏁版嵁 * - * @param id 涓婚敭 + * @param userIds 鐢ㄦ埛id * @return 褰卞搷琛屾暟 */ - int deleteById(Long id); + int deleteByUserIds(List<Long> userIds); } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml index 6092003..62eea8a 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/UserPwdstrategyMapper.xml @@ -48,11 +48,12 @@ where ID = #{id} </update> - <!--閫氳繃涓婚敭鍒犻櫎--> - <delete id="deleteById"> - delete - from PL_SYS_USER_PWDSTRATEGY - where ID = #{id} + <delete id="deleteByUserIds"> + DELETE FROM PL_SYS_USER_PWDSTRATEGY WHERE USER_ID IN ( + <foreach collection="userIds" item="uId" separator=","> + #{uId} + </foreach> + ) </delete> </mapper> diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java index caf701c..05ef2cd 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.java @@ -32,5 +32,12 @@ */ long count(ValueRange valueRannge); + + /** + * 鏍圭┒缁勫悎id鏌ヨ鍙栧�� + * @return + */ + List<String> queryByCombinationIds(@Param("combinationIds") List<String> combinationIds); + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml index ebfcfa8..6b38726 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/mapper/ValueRangeMapper.xml @@ -6,10 +6,10 @@ <result property="id" column="ID" jdbcType="VARCHAR"/> <result property="value" column="VALUE" jdbcType="VARCHAR"/> <result property="combinationId" column="COMBINATION_ID" jdbcType="VARCHAR"/> - <result property="createuser" column="CREATEUSER" jdbcType="VARCHAR"/> - <result property="updatetime" column="UPDATETIME" jdbcType="TIMESTAMP"/> - <result property="updateuser" column="UPDATEUSER" jdbcType="VARCHAR"/> - <result property="createtime" column="CREATETIME" jdbcType="TIMESTAMP"/> + <result property="updateTime" column="CREATEUSER" jdbcType="VARCHAR"/> + <result property="updateTime" column="UPDATETIME" jdbcType="TIMESTAMP"/> + <result property="createUser" column="UPDATEUSER" jdbcType="VARCHAR"/> + <result property="createTime" column="CREATETIME" jdbcType="TIMESTAMP"/> </resultMap> <!--鏌ヨ鎸囧畾琛屾暟鎹�--> @@ -72,5 +72,14 @@ </where> </select> + <select id="queryByCombinationIds" resultType="java.util.List"> + SELECT "VALUE" FROM PL_SYS_VALUE_RANGE PSVR + WHERE PSVR.COMBINATION_ID IN ( + <foreach collection="combinationIds" item="id" separator=","> + #{id} + </foreach> + ) + </select> + </mapper> diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java index 5d26a8a..fa3438d 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/ICombinationService.java @@ -55,4 +55,11 @@ */ List<Map<String,Object>> selectMaps(); + /** + * 涓嬫媺鏁版嵁婧愭煡璇� + * 鏌ヨ缁勫悎id锛坘ey锛夛細缁勫悎鍚嶏紙value锛� + * @return + */ + String getRegex(List<String> combinationIds); + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java index 00e002d..bc3e471 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IStrategyService.java @@ -24,6 +24,13 @@ Strategy queryById(String id); /** + * 鏌ヨ榛樿瀵嗙爜绛栫暐 + * + * @return 瀹炰緥瀵硅薄 + */ + Strategy queryByIsDefault(); + + /** * 鍒嗛〉鏌ヨ * * @param query 鍒嗛〉瀵硅薄 @@ -48,9 +55,18 @@ boolean deleteByIds(List<String> ids); /** - * 鏌ヨ榛樿瀵嗙爜绛栫暐 + * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣� + * @param tenantId + * @param name * @return */ - Long queryByIsDefault(); + Strategy queryByNameAndTenantId(String tenantId, String name); + + /** + * 鏍规嵁鐢ㄦ埛id鏌ヨ瀵嗙爜绛栫暐 + * @param userId + * @return + */ + Strategy queryByUserId(Long userId); } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java index 633d270..03e26cf 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IUserPwdstrategyService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.system.entity.UserPwdstrategy; +import org.springblade.system.vo.UserPwdstrategyVO; /** * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ湇鍔℃帴鍙� @@ -12,11 +13,22 @@ public interface IUserPwdstrategyService extends IService<UserPwdstrategy> { /** - * 鏂板鎴栦慨鏀规暟鎹� + * 閫氳繃ID鏌ヨ鍗曟潯鏁版嵁 * - * @param UserPwdstrategy 瀹炰緥瀵硅薄 + * @param id 涓婚敭 * @return 瀹炰緥瀵硅薄 */ - boolean submit(UserPwdstrategy UserPwdstrategy); + UserPwdstrategy queryById(Long id); + + /** + * 鏂板鎴栦慨鏀规暟鎹� + * + * @param userPwdstrategyVO 瀹炰緥瀵硅薄 + * @return 瀹炰緥瀵硅薄 + */ + Boolean submit(UserPwdstrategyVO userPwdstrategyVO); + + + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java index adb9581..9dcea9b 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/IValueRangeService.java @@ -46,4 +46,11 @@ */ boolean deleteByIds(List<String> ids); + /** + * 鑾峰彇鍙栧�� + * + * @return 鏄惁鎴愬姛 + */ + List<String> getByAllString(List<String> combinationIds); + } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java index 80be3ee..5f27705 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/CombinationServiceImpl.java @@ -114,4 +114,9 @@ return maps; } + @Override + public String getRegex(List<String> combinationIds) { + return combinationMapper.queryRegex(combinationIds); + } + } 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 f76c5aa..8d0c523 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 @@ -44,6 +44,16 @@ } /** + * 鏌ヨ榛樿瀵嗙爜绛栫暐 + * @return + */ + @Override + public Strategy queryByIsDefault() { + return this.getOne(Wrappers.<Strategy>query().lambda() + .eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY)); + } + + /** * 鍒嗛〉鏌ヨ * * @param query 鍒嗛〉瀵硅薄 @@ -77,6 +87,18 @@ 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()); @@ -125,13 +147,32 @@ } /** - * 鏌ヨ榛樿瀵嗙爜绛栫暐 + * 閫氳繃绉熸埛id浠ュ強鐢ㄦ埛鍚嶆煡璇㈠瘑鐮佺瓥鐣� + * @param tenantId + * @param name * @return */ @Override - public Long queryByIsDefault() { - return this.getOne(Wrappers.<Strategy>query().lambda() - .eq(Strategy::getIsDefault, CommonConstant.DATA_SCOPE_CATEGORY)).getId(); + 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(); } } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java index 0d440f1..c6c8bde 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java @@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +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.base.BaseServiceImpl; @@ -231,6 +232,7 @@ user.setName(role.getRoleAlias()); user.setRealName(role.getRoleName()); user.setAccount(role.getRoleAlias()); + user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID); // 鑾峰彇鍙傛暟閰嶇疆鐨勫瘑鐮� String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD); user.setPassword(password); diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java index ad913a8..c277d31 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/UserPwdstrategyServiceImpl.java @@ -1,16 +1,20 @@ package org.springblade.system.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springblade.core.cache.utils.CacheUtil; -import org.springblade.core.tool.utils.Func; +import lombok.RequiredArgsConstructor; +import org.springblade.common.constant.CommonConstant; import org.springblade.system.entity.UserPwdstrategy; import org.springblade.system.mapper.UserPwdstrategyMapper; import org.springblade.system.service.IUserPwdstrategyService; +import org.springblade.system.user.entity.User; +import org.springblade.system.user.feign.IUserClient; +import org.springblade.system.vo.UserPwdstrategyVO; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; - -import static org.springblade.core.cache.constant.CacheConstant.SYS_CACHE; +import java.util.ArrayList; +import java.util.List; /** * 鐢ㄦ埛瀵嗙爜绛栫暐绠$悊琛�(UserPwdstrategy)琛ㄦ湇鍔″疄鐜扮被 @@ -19,25 +23,45 @@ * @since 2023-03-22 15:24:55 */ @Service +@RequiredArgsConstructor public class UserPwdstrategyServiceImpl extends ServiceImpl<UserPwdstrategyMapper,UserPwdstrategy> implements IUserPwdstrategyService { @Resource private UserPwdstrategyMapper userPwdstrategyMapper; /** - * 鏂板鏁版嵁 - * - * @param userPwdstrategy 瀹炰緥瀵硅薄 - * @return 瀹炰緥瀵硅薄 + * user鏈嶅姟璋冪敤绫� + */ + private final IUserClient userClient; + + @Override + public UserPwdstrategy queryById(Long id) { + return this.getById(id); + } + + /** + * 鏂板鎴栦慨鏀� + * @param userPwdstrategyVO 瀹炰緥瀵硅薄 + * @return */ @Override - public boolean submit(UserPwdstrategy userPwdstrategy) { - if(Func.isEmpty(userPwdstrategy.getId())){ - return this.saveOrUpdate(userPwdstrategy); - }else { - CacheUtil.clear(SYS_CACHE,Boolean.FALSE); - return this.saveOrUpdate(userPwdstrategy); - } + @Transactional(rollbackFor = Exception.class) + public Boolean submit(UserPwdstrategyVO userPwdstrategyVO) { + //鍏堝垹闄� + int eft = this.userPwdstrategyMapper.deleteByUserIds(userPwdstrategyVO.getUserIds()); + //鍦ㄦ柊澧� + List<UserPwdstrategy> userPwdstrategyList = new ArrayList<>(); + userPwdstrategyVO.getUserIds().forEach(id->{ + boolean temp = userPwdstrategyList.add(new UserPwdstrategy(id, userPwdstrategyVO.getPwdstrategyId())); + if(temp){ + //瀵嗙爜绛栫暐鏀瑰姩鎴愬姛涔嬪悗淇敼鐢ㄦ埛鐘舵�� + User user = new User(); + user.setId(id); + user.setStrategyUpdateStatus(CommonConstant.TOP_PARENT_ID); + userClient.updateUser(user); + } + }); + return this.saveBatch(userPwdstrategyList); } } diff --git a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java index 9046e5e..69eaa0b 100644 --- a/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java +++ b/Source/BladeX/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/ValueRangeServiceImpl.java @@ -101,4 +101,15 @@ return tenantTemp; } + /** + * 鑾峰彇鍙栧�� + * + * @return 鏄惁鎴愬姛 + */ + @Override + public List<String> getByAllString(List<String> combinationIds) { + List<String> list = valueRangeMapper.queryByCombinationIds(combinationIds); + return list; + } + } diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java index 729c211..a385c0b 100644 --- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java +++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java @@ -33,12 +33,10 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.annotation.PreAuth; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.core.tool.constant.BladeConstant; -import org.springblade.core.tool.constant.RoleConstant; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringPool; @@ -317,7 +315,6 @@ return R.data(userService.selectUserSearch(user, query)); } - /** * 鐢ㄦ埛瑙i攣 */ @@ -333,4 +330,15 @@ return R.success("鎿嶄綔鎴愬姛"); } + /** + * 鐢ㄦ埛瑙i攣 + */ + @PostMapping("/check-renexpr") + @ApiOperationSupport(order = 19) + @ApiOperation(value = "鏌ヨ鐢ㄦ埛瀵嗙爜绛栫暐鏄惁闇�瑕佹彁閱�", notes = "浼犲叆id") + public R<Long> checkRenAndExpr(@RequestParam Long userId) { + Long res = userService.checkRenAndExpr(userId); + return R.data(res); + } + } diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java index 37eba38..7081387 100644 --- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java +++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/feign/UserClient.java @@ -93,4 +93,10 @@ return R.data(service.remove(Wrappers.<User>query().lambda().in(User::getTenantId, Func.toStrList(tenantIds)))); } + @Override + @PostMapping(UPDATE_USER) + public R<Boolean> updateUser(@RequestBody User user) { + return R.data(service.updateUser(user)); + } + } diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml index 3ac3d12..992cd82 100644 --- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml +++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml @@ -16,7 +16,6 @@ <result column="user_type" property="userType"/> <result column="account" property="account"/> <result column="password" property="password"/> - <result column="strategy_name" property="pwdStrategy"/> <result column="name" property="name"/> <result column="real_name" property="realName"/> <result column="email" property="email"/> @@ -26,10 +25,16 @@ <result column="role_id" property="roleId"/> <result column="dept_id" property="deptId"/> <result column="post_id" property="postId"/> + <result column="strategy_name" property="pwdStrategy"/> + <result column="pwd_update_time" property="pwdUpdateTime"/> + <result column="secretgrade" property="secretgrade"/> + <result column="strategy_update_status" property="strategyUpdateStatus"/> </resultMap> + <select id="selectUserPage" resultMap="userResultMap"> - SELECT pou.id, pou.tenant_id, user_type, account, name, real_name, email, phone, birthday,role_id, dept_id, post_id,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name + SELECT + pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name FROM pl_org_user pou LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID LEFT JOIN PL_SYS_STRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID @@ -66,7 +71,8 @@ </select> <select id="getUser" resultMap="userResultMap"> - SELECT pou.id, tenant_id, user_type, account, name, real_name, email, phone, birthday,role_id, dept_id, post_id,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name + SELECT + pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name FROM pl_org_user pou LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID LEFT JOIN PL_SYS_STRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID @@ -75,7 +81,8 @@ </select> <select id="exportUser" resultType="org.springblade.system.user.excel.UserExcel"> - SELECT pou.id, tenant_id, user_type, account, name, real_name, email, phone, birthday,role_id, dept_id, post_id,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name + SELECT + pou.*,nvl(pss.STRATEGY_NAME,(SELECT STRATEGY_NAME FROM PL_SYS_STRATEGY WHERE IS_DEFAULT=1)) strategy_name FROM pl_org_user pou LEFT JOIN PL_SYS_USER_PWDSTRATEGY plup on plup.USER_ID=pou.ID LEFT JOIN PL_SYS_STRATEGY pss on pss.ID=plup.PWDSTRATEGY_ID diff --git a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java index 239a0a2..ef74d82 100644 --- a/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java +++ b/Source/BladeX/blade-service/blade-user/src/main/java/org/springblade/system/user/service/IUserService.java @@ -213,4 +213,11 @@ * @return */ UserVO platformDetail(User user); + + /** + * 妫�鏌ョ敤鎴锋槸鍚﹀埌浜嗘彁閱掔敤鎴蜂慨鏀瑰瘑鐮佹垨鑰呭瘑鐮佽繃鏈熺殑鏃堕棿 + * + */ + Long checkRenAndExpr(Long userId); + } 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..5138b90 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; @@ -294,6 +293,7 @@ @Override public boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1) { + String hex = DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes())); User user = getById(userId); if (!newPassword.equals(newPassword1)) { throw new ServiceException("璇疯緭鍏ユ纭殑纭瀵嗙爜!"); @@ -301,7 +301,21 @@ 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(); + String resException = "瀵嗙爜涓繀椤诲惈鏈夈��"+strategy.getCombinationIds()+"銆戜腑鐨勩��"+strategy.getRequiredType()+"銆戠瀵嗙爜缁勫悎鏂瑰紡锛屼笖瀵嗙爜闀垮害蹇呴』鍦ㄣ��"+strategy.getMinPwdLen()+"-"+strategy.getMaxPwdLen()+"銆戣寖鍥村唴"; + //瀵嗙爜闀垮害鏍¢獙 + if(newPassword1.length() < strategy.getMinPwdLen() || newPassword1.length() > strategy.getMaxPwdLen()){ + throw new ServiceException(resException); + } + //鏌ヨ瀵嗙爜绛栫暐鍙栧�� + String regex = sysClient.getRegex(Arrays.asList(strategy.getCombinationIds().split(","))).getData(); + System.out.println("===============regex================"+regex); + regex = "^"+regex+"$"; + String result = RegexUtil.findResult(regex, newPassword); + System.out.println(result); + return this.update(Wrappers.<User>update().lambda().set(User::getPassword, DigestUtil.hex(DigestUtils.md5DigestAsHex((newPassword1).getBytes()))).eq(User::getId, userId)); + //return true; } @Override @@ -438,4 +452,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