mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 22:57:17 +08:00 
			
		
		
		
	优化:基于阿里巴巴 Java 开发手册(黄山版)优化常量及包命名
1.编程规约>常量定义>第4条: 【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。 说明:大而全的常量类,杂乱无章,使用查找功能才能定位到要修改的常量,不利于理解,也不利于维护。 正例:缓存相关常量放在类 CacheConsts 下;系统配置相关常量放在类 SystemConfigConsts 下。 2.编程规约>常量定义>第5条: 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常 量、类内共享常量。 1)跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。 2)应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。 反例:易懂常量也要统一定义成应用内共享常量,两个程序员在两个类中分别定义了表示“是”的常量: 类 A 中:public static final String YES = "yes"; 类 B 中:public static final String YES = "y"; A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。 3)子工程内部共享常量:即在当前子工程的 constant 目录下。 4)包内共享常量:即在当前包下单独的 constant 目录下。 5)类内共享常量:直接在类内部 private static final 定义。
This commit is contained in:
		| @@ -239,7 +239,7 @@ continew-admin  # 全局通用项目配置及依赖版本管理 | |||||||
|   │                │  ├─ mybatis      # MyBatis Plus 配置 |   │                │  ├─ mybatis      # MyBatis Plus 配置 | ||||||
|   │                │  ├─ threadpool   # 线程池配置 |   │                │  ├─ threadpool   # 线程池配置 | ||||||
|   │                │  └─ properties   # 公共配置属性 |   │                │  └─ properties   # 公共配置属性 | ||||||
|   │                ├─ consts       # 公共常量 |   │                ├─ constant     # 公共常量 | ||||||
|   │                ├─ enums        # 公共枚举 |   │                ├─ enums        # 公共枚举 | ||||||
|   │                ├─ exception    # 公共异常 |   │                ├─ exception    # 公共异常 | ||||||
|   │                ├─ handler      # 公共处理器 |   │                ├─ handler      # 公共处理器 | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								code-style/Java开发手册(黄山版).pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								code-style/Java开发手册(黄山版).pdf
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -14,19 +14,19 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package top.charles7c.cnadmin.common.consts; | package top.charles7c.cnadmin.common.constant; | ||||||
| 
 | 
 | ||||||
| import lombok.AccessLevel; | import lombok.AccessLevel; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 缓存键常量 |  * 缓存相关常量 | ||||||
|  * |  * | ||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2022/12/22 19:30 |  * @since 2022/12/22 19:30 | ||||||
|  */ |  */ | ||||||
| @NoArgsConstructor(access = AccessLevel.PRIVATE) | @NoArgsConstructor(access = AccessLevel.PRIVATE) | ||||||
| public class CacheConstants { | public class CacheConsts { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 登录用户缓存键 |      * 登录用户缓存键 | ||||||
| @@ -42,5 +42,4 @@ public class CacheConstants { | |||||||
|      * 限流缓存键 |      * 限流缓存键 | ||||||
|      */ |      */ | ||||||
|     public static final String LIMIT_CACHE_KEY = "LIMIT"; |     public static final String LIMIT_CACHE_KEY = "LIMIT"; | ||||||
| 
 |  | ||||||
| } | } | ||||||
| @@ -14,7 +14,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package top.charles7c.cnadmin.common.consts; | package top.charles7c.cnadmin.common.constant; | ||||||
| 
 | 
 | ||||||
| import lombok.AccessLevel; | import lombok.AccessLevel; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
| @@ -22,13 +22,13 @@ import lombok.NoArgsConstructor; | |||||||
| import cn.hutool.core.text.CharPool; | import cn.hutool.core.text.CharPool; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 字符常量 |  * 字符相关常量 | ||||||
|  * |  * | ||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2023/2/10 20:14 |  * @since 2023/2/10 20:14 | ||||||
|  */ |  */ | ||||||
| @NoArgsConstructor(access = AccessLevel.PRIVATE) | @NoArgsConstructor(access = AccessLevel.PRIVATE) | ||||||
| public class CharConstants implements CharPool { | public class CharConsts implements CharPool { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 分号 |      * 分号 | ||||||
| @@ -14,23 +14,22 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package top.charles7c.cnadmin.common.consts; | package top.charles7c.cnadmin.common.constant; | ||||||
| 
 | 
 | ||||||
| import lombok.AccessLevel; | import lombok.AccessLevel; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 文件常量 |  * 文件相关常量 | ||||||
|  * |  * | ||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2023/1/2 21:19 |  * @since 2023/1/2 21:19 | ||||||
|  */ |  */ | ||||||
| @NoArgsConstructor(access = AccessLevel.PRIVATE) | @NoArgsConstructor(access = AccessLevel.PRIVATE) | ||||||
| public class FileConstants { | public class FileConsts { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 头像支持的图片类型 |      * 头像支持的图片类型 | ||||||
|      */ |      */ | ||||||
|     public static final String[] AVATAR_SUPPORTED_IMG_TYPES = {"jpg", "png", "gif", "jpeg"}; |     public static final String[] AVATAR_SUPPORTED_IMG_TYPES = {"jpg", "png", "gif", "jpeg"}; | ||||||
| 
 |  | ||||||
| } | } | ||||||
| @@ -14,17 +14,19 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package top.charles7c.cnadmin.common.consts; | package top.charles7c.cnadmin.common.constant; | ||||||
| 
 | 
 | ||||||
| import lombok.AccessLevel; | import lombok.AccessLevel; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  |  * 正则相关常量 | ||||||
|  |  * | ||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2023/1/10 20:06 |  * @since 2023/1/10 20:06 | ||||||
|  */ |  */ | ||||||
| @NoArgsConstructor(access = AccessLevel.PRIVATE) | @NoArgsConstructor(access = AccessLevel.PRIVATE) | ||||||
| public class RegExpConstants { | public class RegExpConsts { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 密码正则(必须包含字母和数字的组合,可以使用特殊字符,长度在6-32之间) |      * 密码正则(必须包含字母和数字的组合,可以使用特殊字符,长度在6-32之间) | ||||||
| @@ -14,19 +14,19 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package top.charles7c.cnadmin.common.consts; | package top.charles7c.cnadmin.common.constant; | ||||||
| 
 | 
 | ||||||
| import lombok.AccessLevel; | import lombok.AccessLevel; | ||||||
| import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 系统常量 |  * 系统相关常量 | ||||||
|  * |  * | ||||||
|  * @author Charles7c |  * @author Charles7c | ||||||
|  * @since 2023/2/9 22:11 |  * @since 2023/2/9 22:11 | ||||||
|  */ |  */ | ||||||
| @NoArgsConstructor(access = AccessLevel.PRIVATE) | @NoArgsConstructor(access = AccessLevel.PRIVATE) | ||||||
| public class Constants { | public class SysConsts { | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
|      * 超级管理员角色编码 |      * 超级管理员角色编码 | ||||||
| @@ -30,7 +30,7 @@ import org.springframework.data.domain.Sort; | |||||||
| import cn.hutool.core.util.ArrayUtil; | import cn.hutool.core.util.ArrayUtil; | ||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.consts.CharConstants; | import top.charles7c.cnadmin.common.constant.CharConsts; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 排序查询条件 |  * 排序查询条件 | ||||||
| @@ -62,10 +62,10 @@ public class SortQuery implements Serializable { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         List<Sort.Order> orders = new ArrayList<>(sort.length); |         List<Sort.Order> orders = new ArrayList<>(sort.length); | ||||||
|         if (StrUtil.contains(sort[0], CharConstants.COMMA)) { |         if (StrUtil.contains(sort[0], CharConsts.COMMA)) { | ||||||
|             // e.g "sort=published,desc&sort=title,asc" |             // e.g "sort=published,desc&sort=title,asc" | ||||||
|             for (String s : sort) { |             for (String s : sort) { | ||||||
|                 List<String> sortList = StrUtil.split(s, CharConstants.COMMA); |                 List<String> sortList = StrUtil.split(s, CharConsts.COMMA); | ||||||
|                 Sort.Order order = |                 Sort.Order order = | ||||||
|                     new Sort.Order(Sort.Direction.valueOf(sortList.get(1).toUpperCase()), sortList.get(0)); |                     new Sort.Order(Sort.Direction.valueOf(sortList.get(1).toUpperCase()), sortList.get(0)); | ||||||
|                 orders.add(order); |                 orders.add(order); | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ import cn.hutool.core.util.ArrayUtil; | |||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
| import cn.hutool.extra.spring.SpringUtil; | import cn.hutool.extra.spring.SpringUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.consts.CharConstants; | import top.charles7c.cnadmin.common.constant.CharConsts; | ||||||
| import top.charles7c.cnadmin.common.util.validate.CheckUtils; | import top.charles7c.cnadmin.common.util.validate.CheckUtils; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -233,10 +233,10 @@ public class MailUtils { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         List<String> result; |         List<String> result; | ||||||
|         if (StrUtil.contains(addresses, CharConstants.COMMA)) { |         if (StrUtil.contains(addresses, CharConsts.COMMA)) { | ||||||
|             result = StrUtil.splitTrim(addresses, CharConstants.COMMA); |             result = StrUtil.splitTrim(addresses, CharConsts.COMMA); | ||||||
|         } else if (StrUtil.contains(addresses, CharConstants.SEMICOLON)) { |         } else if (StrUtil.contains(addresses, CharConsts.SEMICOLON)) { | ||||||
|             result = StrUtil.splitTrim(addresses, CharConstants.SEMICOLON); |             result = StrUtil.splitTrim(addresses, CharConsts.SEMICOLON); | ||||||
|         } else { |         } else { | ||||||
|             result = CollUtil.newArrayList(addresses); |             result = CollUtil.newArrayList(addresses); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ import cn.dev33.satoken.context.SaHolder; | |||||||
| import cn.dev33.satoken.stp.StpUtil; | import cn.dev33.satoken.stp.StpUtil; | ||||||
| import cn.hutool.extra.servlet.ServletUtil; | import cn.hutool.extra.servlet.ServletUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.consts.CacheConstants; | import top.charles7c.cnadmin.common.constant.CacheConsts; | ||||||
| import top.charles7c.cnadmin.common.model.dto.LogContext; | import top.charles7c.cnadmin.common.model.dto.LogContext; | ||||||
| import top.charles7c.cnadmin.common.model.dto.LoginUser; | import top.charles7c.cnadmin.common.model.dto.LoginUser; | ||||||
| import top.charles7c.cnadmin.common.util.ExceptionUtils; | import top.charles7c.cnadmin.common.util.ExceptionUtils; | ||||||
| @@ -66,8 +66,8 @@ public class LoginHelper { | |||||||
|         // 登录保存用户信息 |         // 登录保存用户信息 | ||||||
|         StpUtil.login(loginUser.getUserId()); |         StpUtil.login(loginUser.getUserId()); | ||||||
|         loginUser.setToken(StpUtil.getTokenValue()); |         loginUser.setToken(StpUtil.getTokenValue()); | ||||||
|         SaHolder.getStorage().set(CacheConstants.LOGIN_USER_CACHE_KEY, loginUser); |         SaHolder.getStorage().set(CacheConsts.LOGIN_USER_CACHE_KEY, loginUser); | ||||||
|         StpUtil.getTokenSession().set(CacheConstants.LOGIN_USER_CACHE_KEY, loginUser); |         StpUtil.getTokenSession().set(CacheConsts.LOGIN_USER_CACHE_KEY, loginUser); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -76,13 +76,13 @@ public class LoginHelper { | |||||||
|      * @return / |      * @return / | ||||||
|      */ |      */ | ||||||
|     public static LoginUser getLoginUser() { |     public static LoginUser getLoginUser() { | ||||||
|         LoginUser loginUser = (LoginUser)SaHolder.getStorage().get(CacheConstants.LOGIN_USER_CACHE_KEY); |         LoginUser loginUser = (LoginUser)SaHolder.getStorage().get(CacheConsts.LOGIN_USER_CACHE_KEY); | ||||||
|         if (loginUser != null) { |         if (loginUser != null) { | ||||||
|             return loginUser; |             return loginUser; | ||||||
|         } |         } | ||||||
|         try { |         try { | ||||||
|             loginUser = (LoginUser)StpUtil.getTokenSession().get(CacheConstants.LOGIN_USER_CACHE_KEY); |             loginUser = (LoginUser)StpUtil.getTokenSession().get(CacheConsts.LOGIN_USER_CACHE_KEY); | ||||||
|             SaHolder.getStorage().set(CacheConstants.LOGIN_USER_CACHE_KEY, loginUser); |             SaHolder.getStorage().set(CacheConsts.LOGIN_USER_CACHE_KEY, loginUser); | ||||||
|         } catch (Exception ignored) { |         } catch (Exception ignored) { | ||||||
|         } |         } | ||||||
|         return loginUser; |         return loginUser; | ||||||
| @@ -95,8 +95,8 @@ public class LoginHelper { | |||||||
|      *            登录用户信息 |      *            登录用户信息 | ||||||
|      */ |      */ | ||||||
|     public static void updateLoginUser(LoginUser loginUser) { |     public static void updateLoginUser(LoginUser loginUser) { | ||||||
|         SaHolder.getStorage().set(CacheConstants.LOGIN_USER_CACHE_KEY, loginUser); |         SaHolder.getStorage().set(CacheConsts.LOGIN_USER_CACHE_KEY, loginUser); | ||||||
|         StpUtil.getTokenSession().set(CacheConstants.LOGIN_USER_CACHE_KEY, loginUser); |         StpUtil.getTokenSession().set(CacheConsts.LOGIN_USER_CACHE_KEY, loginUser); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ import org.springframework.stereotype.Service; | |||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.auth.service.PermissionService; | import top.charles7c.cnadmin.auth.service.PermissionService; | ||||||
| import top.charles7c.cnadmin.common.consts.Constants; | import top.charles7c.cnadmin.common.constant.SysConsts; | ||||||
| import top.charles7c.cnadmin.system.service.MenuService; | import top.charles7c.cnadmin.system.service.MenuService; | ||||||
| import top.charles7c.cnadmin.system.service.RoleService; | import top.charles7c.cnadmin.system.service.RoleService; | ||||||
|  |  | ||||||
| @@ -46,8 +46,8 @@ public class PermissionServiceImpl implements PermissionService { | |||||||
|     public Set<String> listPermissionsByUserId(Long userId) { |     public Set<String> listPermissionsByUserId(Long userId) { | ||||||
|         Set<String> roleCodeSet = this.listRoleCodesByUserId(userId); |         Set<String> roleCodeSet = this.listRoleCodesByUserId(userId); | ||||||
|         // 超级管理员赋予全部权限 |         // 超级管理员赋予全部权限 | ||||||
|         if (roleCodeSet.contains(Constants.SUPER_ADMIN)) { |         if (roleCodeSet.contains(SysConsts.SUPER_ADMIN)) { | ||||||
|             return CollUtil.newHashSet(Constants.ALL_PERMISSION); |             return CollUtil.newHashSet(SysConsts.ALL_PERMISSION); | ||||||
|         } |         } | ||||||
|         return menuService.listPermissionsByUserId(userId); |         return menuService.listPermissionsByUserId(userId); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ import io.swagger.v3.oas.annotations.media.Schema; | |||||||
| import com.fasterxml.jackson.annotation.JsonInclude; | import com.fasterxml.jackson.annotation.JsonInclude; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.base.BaseVO; | import top.charles7c.cnadmin.common.base.BaseVO; | ||||||
| import top.charles7c.cnadmin.common.consts.Constants; | import top.charles7c.cnadmin.common.constant.SysConsts; | ||||||
| import top.charles7c.cnadmin.common.enums.DataScopeEnum; | import top.charles7c.cnadmin.common.enums.DataScopeEnum; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
|  |  | ||||||
| @@ -90,7 +90,7 @@ public class RoleVO extends BaseVO { | |||||||
|     private Boolean disabled; |     private Boolean disabled; | ||||||
|  |  | ||||||
|     public Boolean getDisabled() { |     public Boolean getDisabled() { | ||||||
|         if (Constants.SUPER_ADMIN.equals(roleCode)) { |         if (SysConsts.SUPER_ADMIN.equals(roleCode)) { | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|         return disabled; |         return disabled; | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ import org.springframework.transaction.annotation.Transactional; | |||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.base.BaseServiceImpl; | import top.charles7c.cnadmin.common.base.BaseServiceImpl; | ||||||
| import top.charles7c.cnadmin.common.consts.Constants; | import top.charles7c.cnadmin.common.constant.SysConsts; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
| import top.charles7c.cnadmin.common.model.vo.LabelValueVO; | import top.charles7c.cnadmin.common.model.vo.LabelValueVO; | ||||||
| import top.charles7c.cnadmin.common.util.validate.CheckUtils; | import top.charles7c.cnadmin.common.util.validate.CheckUtils; | ||||||
| @@ -136,7 +136,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleVO, | |||||||
|         if (detailObj instanceof RoleDetailVO) { |         if (detailObj instanceof RoleDetailVO) { | ||||||
|             RoleDetailVO detailVO = (RoleDetailVO)detailObj; |             RoleDetailVO detailVO = (RoleDetailVO)detailObj; | ||||||
|             Long roleId = detailVO.getRoleId(); |             Long roleId = detailVO.getRoleId(); | ||||||
|             if (Constants.SUPER_ADMIN.equals(detailVO.getRoleCode())) { |             if (SysConsts.SUPER_ADMIN.equals(detailVO.getRoleCode())) { | ||||||
|                 List<MenuVO> list = menuService.list(null, null); |                 List<MenuVO> list = menuService.list(null, null); | ||||||
|                 List<Long> menuIds = list.stream().map(MenuVO::getMenuId).collect(Collectors.toList()); |                 List<Long> menuIds = list.stream().map(MenuVO::getMenuId).collect(Collectors.toList()); | ||||||
|                 detailVO.setMenuIds(menuIds); |                 detailVO.setMenuIds(menuIds); | ||||||
|   | |||||||
| @@ -34,8 +34,8 @@ import cn.hutool.core.util.StrUtil; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.base.BaseServiceImpl; | import top.charles7c.cnadmin.common.base.BaseServiceImpl; | ||||||
| import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties; | import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties; | ||||||
| import top.charles7c.cnadmin.common.consts.Constants; | import top.charles7c.cnadmin.common.constant.FileConsts; | ||||||
| import top.charles7c.cnadmin.common.consts.FileConstants; | import top.charles7c.cnadmin.common.constant.SysConsts; | ||||||
| import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum; | ||||||
| import top.charles7c.cnadmin.common.model.dto.LoginUser; | import top.charles7c.cnadmin.common.model.dto.LoginUser; | ||||||
| import top.charles7c.cnadmin.common.service.CommonUserService; | import top.charles7c.cnadmin.common.service.CommonUserService; | ||||||
| @@ -81,7 +81,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|         request.setStatus(DisEnableStatusEnum.ENABLE); |         request.setStatus(DisEnableStatusEnum.ENABLE); | ||||||
|         Long userId = super.add(request); |         Long userId = super.add(request); | ||||||
|         super.lambdaUpdate() |         super.lambdaUpdate() | ||||||
|             .set(UserDO::getPassword, SecureUtils.md5Salt(Constants.DEFAULT_PASSWORD, userId.toString())) |             .set(UserDO::getPassword, SecureUtils.md5Salt(SysConsts.DEFAULT_PASSWORD, userId.toString())) | ||||||
|             .set(UserDO::getPwdResetTime, LocalDateTime.now()).eq(UserDO::getUserId, userId).update(); |             .set(UserDO::getPwdResetTime, LocalDateTime.now()).eq(UserDO::getUserId, userId).update(); | ||||||
|         // 保存用户和角色关联 |         // 保存用户和角色关联 | ||||||
|         userRoleService.save(request.getRoleIds(), userId); |         userRoleService.save(request.getRoleIds(), userId); | ||||||
| @@ -139,7 +139,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|         CheckUtils.throwIf(() -> avatarFile.getSize() > avatarMaxSizeInMb * 1024 * 1024, |         CheckUtils.throwIf(() -> avatarFile.getSize() > avatarMaxSizeInMb * 1024 * 1024, | ||||||
|             String.format("请上传小于 %s MB 的图片", avatarMaxSizeInMb)); |             String.format("请上传小于 %s MB 的图片", avatarMaxSizeInMb)); | ||||||
|         String avatarImageType = FileNameUtil.extName(avatarFile.getOriginalFilename()); |         String avatarImageType = FileNameUtil.extName(avatarFile.getOriginalFilename()); | ||||||
|         String[] avatarSupportImgTypes = FileConstants.AVATAR_SUPPORTED_IMG_TYPES; |         String[] avatarSupportImgTypes = FileConsts.AVATAR_SUPPORTED_IMG_TYPES; | ||||||
|         CheckUtils.throwIf(() -> !StrUtil.equalsAnyIgnoreCase(avatarImageType, avatarSupportImgTypes), |         CheckUtils.throwIf(() -> !StrUtil.equalsAnyIgnoreCase(avatarImageType, avatarSupportImgTypes), | ||||||
|             String.format("头像仅支持 %s 格式的图片", String.join(",", avatarSupportImgTypes))); |             String.format("头像仅支持 %s 格式的图片", String.join(",", avatarSupportImgTypes))); | ||||||
|  |  | ||||||
| @@ -206,7 +206,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserVO, | |||||||
|     @Override |     @Override | ||||||
|     public void resetPassword(Long userId) { |     public void resetPassword(Long userId) { | ||||||
|         UserDO userDO = super.getById(userId); |         UserDO userDO = super.getById(userId); | ||||||
|         userDO.setPassword(SecureUtils.md5Salt(Constants.DEFAULT_PASSWORD, userId.toString())); |         userDO.setPassword(SecureUtils.md5Salt(SysConsts.DEFAULT_PASSWORD, userId.toString())); | ||||||
|         userDO.setPwdResetTime(LocalDateTime.now()); |         userDO.setPwdResetTime(LocalDateTime.now()); | ||||||
|         baseMapper.updateById(userDO); |         baseMapper.updateById(userDO); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ import top.charles7c.cnadmin.auth.model.request.LoginRequest; | |||||||
| import top.charles7c.cnadmin.auth.model.vo.LoginVO; | import top.charles7c.cnadmin.auth.model.vo.LoginVO; | ||||||
| import top.charles7c.cnadmin.auth.model.vo.UserInfoVO; | import top.charles7c.cnadmin.auth.model.vo.UserInfoVO; | ||||||
| import top.charles7c.cnadmin.auth.service.LoginService; | import top.charles7c.cnadmin.auth.service.LoginService; | ||||||
| import top.charles7c.cnadmin.common.consts.CacheConstants; | import top.charles7c.cnadmin.common.constant.CacheConsts; | ||||||
| import top.charles7c.cnadmin.common.model.dto.LoginUser; | import top.charles7c.cnadmin.common.model.dto.LoginUser; | ||||||
| import top.charles7c.cnadmin.common.model.vo.R; | import top.charles7c.cnadmin.common.model.vo.R; | ||||||
| import top.charles7c.cnadmin.common.util.ExceptionUtils; | import top.charles7c.cnadmin.common.util.ExceptionUtils; | ||||||
| @@ -62,7 +62,7 @@ public class LoginController { | |||||||
|     @PostMapping("/login") |     @PostMapping("/login") | ||||||
|     public R<LoginVO> login(@Validated @RequestBody LoginRequest loginRequest) { |     public R<LoginVO> login(@Validated @RequestBody LoginRequest loginRequest) { | ||||||
|         // 校验验证码 |         // 校验验证码 | ||||||
|         String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_CACHE_KEY, loginRequest.getUuid()); |         String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_CACHE_KEY, loginRequest.getUuid()); | ||||||
|         String captcha = RedisUtils.getCacheObject(captchaKey); |         String captcha = RedisUtils.getCacheObject(captchaKey); | ||||||
|         ValidationUtils.throwIfBlank(captcha, "验证码已失效"); |         ValidationUtils.throwIfBlank(captcha, "验证码已失效"); | ||||||
|         RedisUtils.deleteCacheObject(captchaKey); |         RedisUtils.deleteCacheObject(captchaKey); | ||||||
|   | |||||||
| @@ -42,7 +42,7 @@ import cn.hutool.core.util.RandomUtil; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.config.properties.CaptchaProperties; | import top.charles7c.cnadmin.common.config.properties.CaptchaProperties; | ||||||
| import top.charles7c.cnadmin.common.config.properties.ContiNewAdminProperties; | import top.charles7c.cnadmin.common.config.properties.ContiNewAdminProperties; | ||||||
| import top.charles7c.cnadmin.common.consts.CacheConstants; | import top.charles7c.cnadmin.common.constant.CacheConsts; | ||||||
| import top.charles7c.cnadmin.common.model.vo.CaptchaVO; | import top.charles7c.cnadmin.common.model.vo.CaptchaVO; | ||||||
| import top.charles7c.cnadmin.common.model.vo.R; | import top.charles7c.cnadmin.common.model.vo.R; | ||||||
| import top.charles7c.cnadmin.common.util.*; | import top.charles7c.cnadmin.common.util.*; | ||||||
| @@ -74,7 +74,7 @@ public class CaptchaController { | |||||||
|  |  | ||||||
|         // 保存验证码 |         // 保存验证码 | ||||||
|         String uuid = IdUtil.fastSimpleUUID(); |         String uuid = IdUtil.fastSimpleUUID(); | ||||||
|         String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_CACHE_KEY, uuid); |         String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_CACHE_KEY, uuid); | ||||||
|         RedisUtils.setCacheObject(captchaKey, captcha.text(), |         RedisUtils.setCacheObject(captchaKey, captcha.text(), | ||||||
|             Duration.ofMinutes(captchaImage.getExpirationInMinutes())); |             Duration.ofMinutes(captchaImage.getExpirationInMinutes())); | ||||||
|  |  | ||||||
| @@ -88,8 +88,8 @@ public class CaptchaController { | |||||||
|     public R getMailCaptcha( |     public R getMailCaptcha( | ||||||
|         @NotBlank(message = "邮箱不能为空") @Pattern(regexp = RegexPool.EMAIL, message = "邮箱格式错误") String email) |         @NotBlank(message = "邮箱不能为空") @Pattern(regexp = RegexPool.EMAIL, message = "邮箱格式错误") String email) | ||||||
|         throws MessagingException { |         throws MessagingException { | ||||||
|         String limitCacheKey = CacheConstants.LIMIT_CACHE_KEY; |         String limitCacheKey = CacheConsts.LIMIT_CACHE_KEY; | ||||||
|         String captchaCacheKey = CacheConstants.CAPTCHA_CACHE_KEY; |         String captchaCacheKey = CacheConsts.CAPTCHA_CACHE_KEY; | ||||||
|         String limitCaptchaKey = RedisUtils.formatKey(limitCacheKey, captchaCacheKey, email); |         String limitCaptchaKey = RedisUtils.formatKey(limitCacheKey, captchaCacheKey, email); | ||||||
|         long limitTimeInMillisecond = RedisUtils.getTimeToLive(limitCaptchaKey); |         long limitTimeInMillisecond = RedisUtils.getTimeToLive(limitCaptchaKey); | ||||||
|         CheckUtils.throwIf(() -> limitTimeInMillisecond > 0, |         CheckUtils.throwIf(() -> limitTimeInMillisecond > 0, | ||||||
| @@ -106,7 +106,7 @@ public class CaptchaController { | |||||||
|         MailUtils.sendHtml(email, String.format("【%s】邮箱验证码", properties.getName()), content); |         MailUtils.sendHtml(email, String.format("【%s】邮箱验证码", properties.getName()), content); | ||||||
|  |  | ||||||
|         // 保存验证码 |         // 保存验证码 | ||||||
|         String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_CACHE_KEY, email); |         String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_CACHE_KEY, email); | ||||||
|         RedisUtils.setCacheObject(captchaKey, captcha, Duration.ofMinutes(expirationInMinutes)); |         RedisUtils.setCacheObject(captchaKey, captcha, Duration.ofMinutes(expirationInMinutes)); | ||||||
|         RedisUtils.setCacheObject(limitCaptchaKey, captcha, Duration.ofSeconds(captchaMail.getLimitInSeconds())); |         RedisUtils.setCacheObject(limitCaptchaKey, captcha, Duration.ofSeconds(captchaMail.getLimitInSeconds())); | ||||||
|         return R.ok(String.format("发送成功,验证码有效期 %s 分钟", expirationInMinutes)); |         return R.ok(String.format("发送成功,验证码有效期 %s 分钟", expirationInMinutes)); | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ import cn.hutool.core.collection.CollUtil; | |||||||
| import cn.hutool.core.date.DateUtil; | import cn.hutool.core.date.DateUtil; | ||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.consts.CacheConstants; | import top.charles7c.cnadmin.common.constant.CacheConsts; | ||||||
| import top.charles7c.cnadmin.common.model.dto.LoginUser; | import top.charles7c.cnadmin.common.model.dto.LoginUser; | ||||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||||
| @@ -74,7 +74,7 @@ public class OnlineUserController { | |||||||
|  |  | ||||||
|             // 获取 Token Session |             // 获取 Token Session | ||||||
|             SaSession saSession = StpUtil.getTokenSessionByToken(token); |             SaSession saSession = StpUtil.getTokenSessionByToken(token); | ||||||
|             LoginUser loginUser = saSession.get(CacheConstants.LOGIN_USER_CACHE_KEY, new LoginUser()); |             LoginUser loginUser = saSession.get(CacheConsts.LOGIN_USER_CACHE_KEY, new LoginUser()); | ||||||
|  |  | ||||||
|             // 检查是否符合查询条件 |             // 检查是否符合查询条件 | ||||||
|             if (Boolean.TRUE.equals(checkQuery(query, loginUser))) { |             if (Boolean.TRUE.equals(checkQuery(query, loginUser))) { | ||||||
|   | |||||||
| @@ -30,8 +30,8 @@ import org.springframework.web.multipart.MultipartFile; | |||||||
| import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||||
| import cn.hutool.core.util.ReUtil; | import cn.hutool.core.util.ReUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.consts.CacheConstants; | import top.charles7c.cnadmin.common.constant.CacheConsts; | ||||||
| import top.charles7c.cnadmin.common.consts.RegExpConstants; | import top.charles7c.cnadmin.common.constant.RegExpConsts; | ||||||
| import top.charles7c.cnadmin.common.model.vo.R; | import top.charles7c.cnadmin.common.model.vo.R; | ||||||
| import top.charles7c.cnadmin.common.util.ExceptionUtils; | import top.charles7c.cnadmin.common.util.ExceptionUtils; | ||||||
| import top.charles7c.cnadmin.common.util.RedisUtils; | import top.charles7c.cnadmin.common.util.RedisUtils; | ||||||
| @@ -89,7 +89,7 @@ public class UserCenterController { | |||||||
|         String rawNewPassword = |         String rawNewPassword = | ||||||
|             ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updatePasswordRequest.getNewPassword())); |             ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updatePasswordRequest.getNewPassword())); | ||||||
|         ValidationUtils.throwIfBlank(rawNewPassword, "新密码解密失败"); |         ValidationUtils.throwIfBlank(rawNewPassword, "新密码解密失败"); | ||||||
|         ValidationUtils.throwIf(() -> !ReUtil.isMatch(RegExpConstants.PASSWORD, rawNewPassword), |         ValidationUtils.throwIf(() -> !ReUtil.isMatch(RegExpConsts.PASSWORD, rawNewPassword), | ||||||
|             "密码长度 6 到 32 位,同时包含数字和字母"); |             "密码长度 6 到 32 位,同时包含数字和字母"); | ||||||
|  |  | ||||||
|         // 修改密码 |         // 修改密码 | ||||||
| @@ -105,7 +105,7 @@ public class UserCenterController { | |||||||
|         ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败"); |         ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败"); | ||||||
|  |  | ||||||
|         // 校验验证码 |         // 校验验证码 | ||||||
|         String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_CACHE_KEY, updateEmailRequest.getNewEmail()); |         String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_CACHE_KEY, updateEmailRequest.getNewEmail()); | ||||||
|         String captcha = RedisUtils.getCacheObject(captchaKey); |         String captcha = RedisUtils.getCacheObject(captchaKey); | ||||||
|         ValidationUtils.throwIfBlank(captcha, "验证码已失效"); |         ValidationUtils.throwIfBlank(captcha, "验证码已失效"); | ||||||
|         ValidationUtils.throwIfNotEqualIgnoreCase(updateEmailRequest.getCaptcha(), captcha, "验证码错误"); |         ValidationUtils.throwIfNotEqualIgnoreCase(updateEmailRequest.getCaptcha(), captcha, "验证码错误"); | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; | |||||||
| import top.charles7c.cnadmin.common.annotation.CrudRequestMapping; | import top.charles7c.cnadmin.common.annotation.CrudRequestMapping; | ||||||
| import top.charles7c.cnadmin.common.base.BaseController; | import top.charles7c.cnadmin.common.base.BaseController; | ||||||
| import top.charles7c.cnadmin.common.base.BaseRequest; | import top.charles7c.cnadmin.common.base.BaseRequest; | ||||||
| import top.charles7c.cnadmin.common.consts.Constants; | import top.charles7c.cnadmin.common.constant.SysConsts; | ||||||
| import top.charles7c.cnadmin.common.model.vo.R; | import top.charles7c.cnadmin.common.model.vo.R; | ||||||
| import top.charles7c.cnadmin.system.model.query.UserQuery; | import top.charles7c.cnadmin.system.model.query.UserQuery; | ||||||
| import top.charles7c.cnadmin.system.model.request.UpdateUserRoleRequest; | import top.charles7c.cnadmin.system.model.request.UpdateUserRoleRequest; | ||||||
| @@ -55,7 +55,7 @@ public class UserController extends BaseController<UserService, UserVO, UserDeta | |||||||
|     @SaCheckPermission("system:user:add") |     @SaCheckPermission("system:user:add") | ||||||
|     protected R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody UserRequest request) { |     protected R<Long> add(@Validated(BaseRequest.Add.class) @RequestBody UserRequest request) { | ||||||
|         Long id = baseService.add(request); |         Long id = baseService.add(request); | ||||||
|         return R.ok(String.format("新增成功,请牢记默认密码:%s", Constants.DEFAULT_PASSWORD), id); |         return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD), id); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Operation(summary = "重置密码", description = "重置用户登录密码为默认密码") |     @Operation(summary = "重置密码", description = "重置用户登录密码为默认密码") | ||||||
| @@ -63,7 +63,7 @@ public class UserController extends BaseController<UserService, UserVO, UserDeta | |||||||
|     @PatchMapping("/{userId}/password") |     @PatchMapping("/{userId}/password") | ||||||
|     public R resetPassword(@PathVariable Long userId) { |     public R resetPassword(@PathVariable Long userId) { | ||||||
|         baseService.resetPassword(userId); |         baseService.resetPassword(userId); | ||||||
|         return R.ok(String.format("重置密码成功,请牢记默认密码:%s", Constants.DEFAULT_PASSWORD)); |         return R.ok(String.format("重置密码成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Operation(summary = "分配角色", description = "为用户新增或移除角色") |     @Operation(summary = "分配角色", description = "为用户新增或移除角色") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user