style: 优化常量命名风格,XxxConsts => XxxConstants
This commit is contained in:
parent
a40e609ea1
commit
ec28705b6f
@ -42,7 +42,7 @@ import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 控制器基类
|
||||
@ -212,7 +212,7 @@ public abstract class BaseController<S extends BaseService<L, D, Q, C>, L, D, Q,
|
||||
private void checkPermission(Api api) {
|
||||
CrudRequestMapping crudRequestMapping = this.getClass().getDeclaredAnnotation(CrudRequestMapping.class);
|
||||
String path = crudRequestMapping.value();
|
||||
String permissionPrefix = String.join(StringConsts.COLON, StrUtil.splitTrim(path, StringConsts.SLASH));
|
||||
String permissionPrefix = String.join(StringConstants.COLON, StrUtil.splitTrim(path, StringConstants.SLASH));
|
||||
StpUtil.checkPermission(String.format("%s:%s", permissionPrefix, api.name().toLowerCase()));
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
|
||||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||
|
||||
import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* Web MVC 配置
|
||||
@ -52,8 +52,8 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
|
||||
@Override
|
||||
public void addResourceHandlers(ResourceHandlerRegistry registry) {
|
||||
LocalStorageProperties.LocalStoragePath path = localStorageProperties.getPath();
|
||||
String avatarUtl = "file:" + path.getAvatar().replace(StringConsts.BACKSLASH, StringConsts.SLASH);
|
||||
String fileUrl = "file:" + path.getFile().replace(StringConsts.BACKSLASH, StringConsts.SLASH);
|
||||
String avatarUtl = "file:" + path.getAvatar().replace(StringConstants.BACKSLASH, StringConstants.SLASH);
|
||||
String fileUrl = "file:" + path.getFile().replace(StringConstants.BACKSLASH, StringConstants.SLASH);
|
||||
registry.addResourceHandler(localStorageProperties.getFilePattern()).addResourceLocations(fileUrl)
|
||||
.setCachePeriod(0);
|
||||
registry.addResourceHandler(localStorageProperties.getAvatarPattern()).addResourceLocations(avatarUtl)
|
||||
|
@ -27,7 +27,7 @@ import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.ClassUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.IBaseEnum;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* Easy Excel 枚举基类转换器
|
||||
@ -63,7 +63,7 @@ public class ExcelBaseEnumConverter implements Converter<IBaseEnum<Integer>> {
|
||||
public WriteCellData<String> convertToExcelData(IBaseEnum<Integer> value, ExcelContentProperty contentProperty,
|
||||
GlobalConfiguration globalConfiguration) {
|
||||
if (null == value) {
|
||||
return new WriteCellData<>(StringConsts.EMPTY);
|
||||
return new WriteCellData<>(StringConstants.EMPTY);
|
||||
}
|
||||
return new WriteCellData<>(value.getDescription());
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.common.config.justauth;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.continew.starter.cache.redisson.util.RedisUtils;
|
||||
|
||||
import me.zhyd.oauth.cache.AuthStateCache;
|
||||
@ -42,7 +42,7 @@ public class JustAuthRedisStateCache implements AuthStateCache {
|
||||
@Override
|
||||
public void cache(String key, String value) {
|
||||
// 参考:在 JustAuth 中,内置了一个基于 map 的 state 缓存器,默认缓存有效期为 3 分钟
|
||||
RedisUtils.set(RedisUtils.formatKey(CacheConsts.SOCIAL_AUTH_STATE_KEY_PREFIX, key), value,
|
||||
RedisUtils.set(RedisUtils.formatKey(CacheConstants.SOCIAL_AUTH_STATE_KEY_PREFIX, key), value,
|
||||
Duration.ofMinutes(3));
|
||||
}
|
||||
|
||||
@ -58,7 +58,7 @@ public class JustAuthRedisStateCache implements AuthStateCache {
|
||||
*/
|
||||
@Override
|
||||
public void cache(String key, String value, long timeout) {
|
||||
RedisUtils.set(RedisUtils.formatKey(CacheConsts.SOCIAL_AUTH_STATE_KEY_PREFIX, key), value,
|
||||
RedisUtils.set(RedisUtils.formatKey(CacheConstants.SOCIAL_AUTH_STATE_KEY_PREFIX, key), value,
|
||||
Duration.ofMillis(timeout));
|
||||
}
|
||||
|
||||
@ -71,7 +71,7 @@ public class JustAuthRedisStateCache implements AuthStateCache {
|
||||
*/
|
||||
@Override
|
||||
public String get(String key) {
|
||||
return RedisUtils.get(RedisUtils.formatKey(CacheConsts.SOCIAL_AUTH_STATE_KEY_PREFIX, key));
|
||||
return RedisUtils.get(RedisUtils.formatKey(CacheConstants.SOCIAL_AUTH_STATE_KEY_PREFIX, key));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,6 +83,6 @@ public class JustAuthRedisStateCache implements AuthStateCache {
|
||||
*/
|
||||
@Override
|
||||
public boolean containsKey(String key) {
|
||||
return RedisUtils.hasKey(RedisUtils.formatKey(CacheConsts.SOCIAL_AUTH_STATE_KEY_PREFIX, key));
|
||||
return RedisUtils.hasKey(RedisUtils.formatKey(CacheConstants.SOCIAL_AUTH_STATE_KEY_PREFIX, key));
|
||||
}
|
||||
}
|
@ -29,7 +29,7 @@ import top.charles7c.cnadmin.common.enums.DataScopeEnum;
|
||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
import top.charles7c.cnadmin.common.model.dto.RoleDTO;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
import net.sf.jsqlparser.expression.Expression;
|
||||
import net.sf.jsqlparser.expression.Function;
|
||||
@ -75,8 +75,8 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler {
|
||||
public Expression getSqlSegment(Expression where, String mappedStatementId) {
|
||||
try {
|
||||
Class<?> clazz =
|
||||
Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(StringConsts.DOT)));
|
||||
String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(StringConsts.DOT) + 1);
|
||||
Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(StringConstants.DOT)));
|
||||
String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(StringConstants.DOT) + 1);
|
||||
Method[] methodArr = clazz.getMethods();
|
||||
for (Method method : methodArr) {
|
||||
DataPermission dataPermission = method.getAnnotation(DataPermission.class);
|
||||
|
@ -26,7 +26,7 @@ import lombok.NoArgsConstructor;
|
||||
* @since 2022/12/22 19:30
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class CacheConsts {
|
||||
public class CacheConstants {
|
||||
|
||||
/**
|
||||
* 登录用户键
|
@ -26,7 +26,7 @@ import lombok.NoArgsConstructor;
|
||||
* @since 2023/1/2 21:19
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class FileConsts {
|
||||
public class FileConstants {
|
||||
|
||||
/**
|
||||
* 头像支持的图片类型
|
@ -28,7 +28,7 @@ import cn.hutool.core.lang.RegexPool;
|
||||
* @since 2023/1/10 20:06
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class RegexConsts implements RegexPool {
|
||||
public class RegexConstants implements RegexPool {
|
||||
|
||||
/**
|
||||
* 用户名正则(长度为 4 到 64 位,可以包含字母、数字,下划线,以字母开头)
|
@ -19,7 +19,7 @@ package top.charles7c.cnadmin.common.constant;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 系统相关常量
|
||||
@ -28,7 +28,7 @@ import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
* @since 2023/2/9 22:11
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class SysConsts {
|
||||
public class SysConstants {
|
||||
|
||||
/**
|
||||
* 管理员角色编码
|
||||
@ -48,7 +48,7 @@ public class SysConsts {
|
||||
/**
|
||||
* 全部权限标识
|
||||
*/
|
||||
public static final String ALL_PERMISSION = StringConsts.ASTERISK;
|
||||
public static final String ALL_PERMISSION = StringConstants.ASTERISK;
|
||||
|
||||
/**
|
||||
* 默认密码
|
@ -26,7 +26,7 @@ import lombok.NoArgsConstructor;
|
||||
* @since 2023/9/17 14:12
|
||||
*/
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class UIConsts {
|
||||
public class UIConstants {
|
||||
|
||||
/**
|
||||
* 主色(极致蓝)
|
@ -20,7 +20,7 @@ import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.IBaseEnum;
|
||||
import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
import top.charles7c.cnadmin.common.constant.UIConstants;
|
||||
|
||||
/**
|
||||
* 启用/禁用状态枚举
|
||||
@ -33,10 +33,10 @@ import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
public enum DisEnableStatusEnum implements IBaseEnum<Integer> {
|
||||
|
||||
/** 启用 */
|
||||
ENABLE(1, "启用", UIConsts.COLOR_SUCCESS),
|
||||
ENABLE(1, "启用", UIConstants.COLOR_SUCCESS),
|
||||
|
||||
/** 禁用 */
|
||||
DISABLE(2, "禁用", UIConsts.COLOR_ERROR),;
|
||||
DISABLE(2, "禁用", UIConstants.COLOR_ERROR),;
|
||||
|
||||
private final Integer value;
|
||||
private final String description;
|
||||
|
@ -20,7 +20,7 @@ import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.IBaseEnum;
|
||||
import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
import top.charles7c.cnadmin.common.constant.UIConstants;
|
||||
|
||||
/**
|
||||
* 消息类型枚举
|
||||
@ -33,7 +33,7 @@ import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
public enum MessageTypeEnum implements IBaseEnum<Integer> {
|
||||
|
||||
/** 系统消息 */
|
||||
SYSTEM(1, "系统消息", UIConsts.COLOR_PRIMARY),;
|
||||
SYSTEM(1, "系统消息", UIConstants.COLOR_PRIMARY),;
|
||||
|
||||
private final Integer value;
|
||||
private final String description;
|
||||
|
@ -20,7 +20,7 @@ import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.IBaseEnum;
|
||||
import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
import top.charles7c.cnadmin.common.constant.UIConstants;
|
||||
|
||||
/**
|
||||
* 成功/失败状态枚举
|
||||
@ -33,10 +33,10 @@ import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
public enum SuccessFailureStatusEnum implements IBaseEnum<Integer> {
|
||||
|
||||
/** 成功 */
|
||||
SUCCESS(1, "成功", UIConsts.COLOR_SUCCESS),
|
||||
SUCCESS(1, "成功", UIConstants.COLOR_SUCCESS),
|
||||
|
||||
/** 失败 */
|
||||
FAILURE(2, "失败", UIConsts.COLOR_ERROR),;
|
||||
FAILURE(2, "失败", UIConstants.COLOR_ERROR),;
|
||||
|
||||
private final Integer value;
|
||||
private final String description;
|
||||
|
@ -25,7 +25,7 @@ import lombok.Data;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
|
||||
/**
|
||||
* 登录用户信息
|
||||
@ -103,6 +103,6 @@ public class LoginUser implements Serializable {
|
||||
if (CollUtil.isEmpty(roleCodes)) {
|
||||
return false;
|
||||
}
|
||||
return roleCodes.contains(SysConsts.ADMIN_ROLE_CODE);
|
||||
return roleCodes.contains(SysConstants.ADMIN_ROLE_CODE);
|
||||
}
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ import org.springframework.data.domain.Sort;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 排序查询条件
|
||||
@ -62,10 +62,10 @@ public class SortQuery implements Serializable {
|
||||
}
|
||||
|
||||
List<Sort.Order> orders = new ArrayList<>(sort.length);
|
||||
if (StrUtil.contains(sort[0], StringConsts.COMMA)) {
|
||||
if (StrUtil.contains(sort[0], StringConstants.COMMA)) {
|
||||
// e.g "sort=createTime,desc&sort=name,asc"
|
||||
for (String s : sort) {
|
||||
List<String> sortList = StrUtil.splitTrim(s, StringConsts.COMMA);
|
||||
List<String> sortList = StrUtil.splitTrim(s, StringConstants.COMMA);
|
||||
Sort.Order order =
|
||||
new Sort.Order(Sort.Direction.valueOf(sortList.get(1).toUpperCase()), sortList.get(0));
|
||||
orders.add(order);
|
||||
|
@ -38,7 +38,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 邮件工具类
|
||||
@ -233,10 +233,10 @@ public class MailUtils {
|
||||
}
|
||||
|
||||
List<String> result;
|
||||
if (StrUtil.contains(addresses, StringConsts.COMMA)) {
|
||||
result = StrUtil.splitTrim(addresses, StringConsts.COMMA);
|
||||
} else if (StrUtil.contains(addresses, StringConsts.SEMICOLON)) {
|
||||
result = StrUtil.splitTrim(addresses, StringConsts.SEMICOLON);
|
||||
if (StrUtil.contains(addresses, StringConstants.COMMA)) {
|
||||
result = StrUtil.splitTrim(addresses, StringConstants.COMMA);
|
||||
} else if (StrUtil.contains(addresses, StringConstants.SEMICOLON)) {
|
||||
result = StrUtil.splitTrim(addresses, StringConstants.SEMICOLON);
|
||||
} else {
|
||||
result = CollUtil.newArrayList(addresses);
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ import lombok.NoArgsConstructor;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* Stream 工具类
|
||||
@ -53,7 +53,7 @@ public class StreamUtils {
|
||||
*/
|
||||
public static <E> String join(Collection<E> collection, Function<E, String> function, CharSequence delimiter) {
|
||||
if (CollUtil.isEmpty(collection)) {
|
||||
return StringConsts.EMPTY;
|
||||
return StringConstants.EMPTY;
|
||||
}
|
||||
return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter));
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.extra.servlet.JakartaServletUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.model.dto.LogContext;
|
||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
import top.charles7c.cnadmin.common.service.CommonUserService;
|
||||
@ -65,10 +65,10 @@ public class LoginHelper {
|
||||
loginUser.setLoginTime(null != logContext ? logContext.getCreateTime() : LocalDateTime.now());
|
||||
// 登录并缓存用户信息
|
||||
StpUtil.login(loginUser.getId());
|
||||
SaHolder.getStorage().set(CacheConsts.LOGIN_USER_KEY, loginUser);
|
||||
SaHolder.getStorage().set(CacheConstants.LOGIN_USER_KEY, loginUser);
|
||||
String tokenValue = StpUtil.getTokenValue();
|
||||
loginUser.setToken(tokenValue);
|
||||
StpUtil.getTokenSession().set(CacheConsts.LOGIN_USER_KEY, loginUser);
|
||||
StpUtil.getTokenSession().set(CacheConstants.LOGIN_USER_KEY, loginUser);
|
||||
return tokenValue;
|
||||
}
|
||||
|
||||
@ -78,7 +78,7 @@ public class LoginHelper {
|
||||
* @return 登录用户信息(获取 TokenSession 时如未登录,会抛出异常)
|
||||
*/
|
||||
public static LoginUser getLoginUser() {
|
||||
LoginUser loginUser = (LoginUser)SaHolder.getStorage().get(CacheConsts.LOGIN_USER_KEY);
|
||||
LoginUser loginUser = (LoginUser)SaHolder.getStorage().get(CacheConstants.LOGIN_USER_KEY);
|
||||
if (null != loginUser) {
|
||||
return loginUser;
|
||||
}
|
||||
@ -86,8 +86,8 @@ public class LoginHelper {
|
||||
if (null == tokenSession) {
|
||||
return null;
|
||||
}
|
||||
loginUser = (LoginUser)tokenSession.get(CacheConsts.LOGIN_USER_KEY);
|
||||
SaHolder.getStorage().set(CacheConsts.LOGIN_USER_KEY, loginUser);
|
||||
loginUser = (LoginUser)tokenSession.get(CacheConstants.LOGIN_USER_KEY);
|
||||
SaHolder.getStorage().set(CacheConstants.LOGIN_USER_KEY, loginUser);
|
||||
return loginUser;
|
||||
}
|
||||
|
||||
@ -103,7 +103,7 @@ public class LoginHelper {
|
||||
if (null == tokenSession) {
|
||||
return null;
|
||||
}
|
||||
return (LoginUser)tokenSession.get(CacheConsts.LOGIN_USER_KEY);
|
||||
return (LoginUser)tokenSession.get(CacheConstants.LOGIN_USER_KEY);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -25,7 +25,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.exception.ServiceException;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 业务参数校验工具类(抛出 500 ServiceException)
|
||||
@ -54,7 +54,7 @@ public class CheckUtils extends Validator {
|
||||
*/
|
||||
public static void throwIfNotExists(Object obj, String entityName, String fieldName, Object fieldValue) {
|
||||
String message = String.format("%s 为 [%s] 的 %s 记录已不存在", fieldName, fieldValue,
|
||||
StrUtil.replace(entityName, "DO", StringConsts.EMPTY));
|
||||
StrUtil.replace(entityName, "DO", StringConstants.EMPTY));
|
||||
throwIfNull(obj, message, EXCEPTION_TYPE);
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
|
||||
import top.charles7c.cnadmin.auth.model.req.AccountLoginReq;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.model.dto.LogContext;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.IpUtils;
|
||||
@ -63,7 +63,7 @@ import top.charles7c.cnadmin.monitor.config.properties.LogProperties;
|
||||
import top.charles7c.cnadmin.monitor.enums.LogStatusEnum;
|
||||
import top.charles7c.cnadmin.monitor.model.entity.LogDO;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
import top.charles7c.continew.starter.core.util.ExceptionUtils;
|
||||
|
||||
/**
|
||||
@ -171,8 +171,8 @@ public class LogInterceptor implements HandlerInterceptor {
|
||||
// (本框架代码规范)例如:@Tag(name = "部门管理 API") -> 部门管理
|
||||
if (null != classTag) {
|
||||
String name = classTag.name();
|
||||
logDO
|
||||
.setModule(StrUtil.isNotBlank(name) ? name.replace("API", StringConsts.EMPTY).trim() : "请在该接口类上指定所属模块");
|
||||
logDO.setModule(
|
||||
StrUtil.isNotBlank(name) ? name.replace("API", StringConstants.EMPTY).trim() : "请在该接口类上指定所属模块");
|
||||
}
|
||||
// 例如:@Log(module = "部门管理") -> 部门管理
|
||||
if (null != classLog && StrUtil.isNotBlank(classLog.module())) {
|
||||
@ -213,8 +213,8 @@ public class LogInterceptor implements HandlerInterceptor {
|
||||
* 请求对象
|
||||
*/
|
||||
private void logRequest(LogDO logDO, HttpServletRequest request) {
|
||||
logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString()
|
||||
: request.getRequestURL().append(StringConsts.QUESTION_MARK).append(request.getQueryString()).toString());
|
||||
logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString() : request
|
||||
.getRequestURL().append(StringConstants.QUESTION_MARK).append(request.getQueryString()).toString());
|
||||
String method = request.getMethod();
|
||||
logDO.setRequestMethod(method);
|
||||
logDO.setRequestHeaders(this.desensitize(JakartaServletUtil.getHeaderMap(request)));
|
||||
@ -224,7 +224,7 @@ public class LogInterceptor implements HandlerInterceptor {
|
||||
if (requestURI.startsWith("/oauth")) {
|
||||
logDO.setCreateUser(null);
|
||||
}
|
||||
if (null == logDO.getCreateUser() && SysConsts.LOGIN_URI.equals(requestURI)) {
|
||||
if (null == logDO.getCreateUser() && SysConstants.LOGIN_URI.equals(requestURI)) {
|
||||
AccountLoginReq loginReq = JSONUtil.toBean(requestBody, AccountLoginReq.class);
|
||||
logDO.setCreateUser(
|
||||
ExceptionUtils.exToNull(() -> userService.getByUsername(loginReq.getUsername()).getId()));
|
||||
|
@ -29,7 +29,7 @@ import org.springframework.stereotype.Service;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardAccessTrendResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardGeoDistributionResp;
|
||||
import top.charles7c.cnadmin.monitor.model.resp.DashboardPopularModuleResp;
|
||||
@ -47,7 +47,7 @@ import top.charles7c.cnadmin.system.service.AnnouncementService;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@CacheConfig(cacheNames = CacheConsts.DASHBOARD_KEY_PREFIX)
|
||||
@CacheConfig(cacheNames = CacheConstants.DASHBOARD_KEY_PREFIX)
|
||||
public class DashboardServiceImpl implements DashboardService {
|
||||
|
||||
private final LogService logService;
|
||||
|
@ -33,7 +33,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.service.CommonUserService;
|
||||
@ -76,7 +76,7 @@ public class LogServiceImpl implements LogService {
|
||||
// 限定查询信息
|
||||
List<String> fieldNameList = ReflectUtils.getNonStaticFieldsName(OperationLogResp.class);
|
||||
List<String> columnNameList =
|
||||
fieldNameList.stream().filter(n -> !n.endsWith(SysConsts.DESCRIPTION_FIELD_SUFFIX))
|
||||
fieldNameList.stream().filter(n -> !n.endsWith(SysConstants.DESCRIPTION_FIELD_SUFFIX))
|
||||
.map(StrUtil::toUnderlineCase).collect(Collectors.toList());
|
||||
queryWrapper.select(columnNameList);
|
||||
|
||||
@ -102,7 +102,7 @@ public class LogServiceImpl implements LogService {
|
||||
// 限定查询信息
|
||||
List<String> fieldNameList = ReflectUtils.getNonStaticFieldsName(LoginLogResp.class);
|
||||
List<String> columnNameList =
|
||||
fieldNameList.stream().filter(n -> !n.endsWith(SysConsts.DESCRIPTION_FIELD_SUFFIX))
|
||||
fieldNameList.stream().filter(n -> !n.endsWith(SysConstants.DESCRIPTION_FIELD_SUFFIX))
|
||||
.map(StrUtil::toUnderlineCase).collect(Collectors.toList());
|
||||
queryWrapper.select(columnNameList);
|
||||
|
||||
@ -122,7 +122,7 @@ public class LogServiceImpl implements LogService {
|
||||
// 限定查询信息
|
||||
List<String> fieldNameList = ReflectUtils.getNonStaticFieldsName(SystemLogResp.class);
|
||||
List<String> columnNameList =
|
||||
fieldNameList.stream().filter(n -> !n.endsWith(SysConsts.DESCRIPTION_FIELD_SUFFIX))
|
||||
fieldNameList.stream().filter(n -> !n.endsWith(SysConstants.DESCRIPTION_FIELD_SUFFIX))
|
||||
.map(StrUtil::toUnderlineCase).collect(Collectors.toList());
|
||||
queryWrapper.select(columnNameList);
|
||||
|
||||
|
@ -28,7 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
|
||||
/**
|
||||
* 邮箱登录信息
|
||||
@ -48,7 +48,7 @@ public class EmailLoginReq implements Serializable {
|
||||
*/
|
||||
@Schema(description = "邮箱", example = "123456789@qq.com")
|
||||
@NotBlank(message = "邮箱不能为空")
|
||||
@Pattern(regexp = RegexConsts.EMAIL, message = "邮箱格式错误")
|
||||
@Pattern(regexp = RegexConstants.EMAIL, message = "邮箱格式错误")
|
||||
private String email;
|
||||
|
||||
/**
|
||||
|
@ -28,7 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
|
||||
/**
|
||||
* 手机号登录信息
|
||||
@ -48,7 +48,7 @@ public class PhoneLoginReq implements Serializable {
|
||||
*/
|
||||
@Schema(description = "手机号", example = "13811111111")
|
||||
@NotBlank(message = "手机号不能为空")
|
||||
@Pattern(regexp = RegexConsts.MOBILE, message = "手机号格式错误")
|
||||
@Pattern(regexp = RegexConstants.MOBILE, message = "手机号格式错误")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
|
@ -40,8 +40,8 @@ import top.charles7c.cnadmin.auth.service.LoginService;
|
||||
import top.charles7c.cnadmin.auth.service.PermissionService;
|
||||
import top.charles7c.cnadmin.common.annotation.TreeField;
|
||||
import top.charles7c.cnadmin.common.config.properties.ProjectProperties;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.enums.GenderEnum;
|
||||
import top.charles7c.cnadmin.common.enums.MenuTypeEnum;
|
||||
@ -119,10 +119,10 @@ public class LoginServiceImpl implements LoginService {
|
||||
String nickname = authUser.getNickname();
|
||||
UserDO existsUser = userService.getByUsername(username);
|
||||
String randomStr = RandomUtil.randomString(RandomUtil.BASE_CHAR, 5);
|
||||
if (null != existsUser || !ReUtil.isMatch(RegexConsts.USERNAME, username)) {
|
||||
if (null != existsUser || !ReUtil.isMatch(RegexConstants.USERNAME, username)) {
|
||||
username = randomStr + IdUtil.fastSimpleUUID();
|
||||
}
|
||||
if (!ReUtil.isMatch(RegexConsts.GENERAL_NAME, nickname)) {
|
||||
if (!ReUtil.isMatch(RegexConstants.GENERAL_NAME, nickname)) {
|
||||
nickname = source.toLowerCase() + randomStr;
|
||||
}
|
||||
user = new UserDO();
|
||||
@ -130,9 +130,9 @@ public class LoginServiceImpl implements LoginService {
|
||||
user.setNickname(nickname);
|
||||
user.setGender(GenderEnum.valueOf(authUser.getGender().name()));
|
||||
user.setAvatar(authUser.getAvatar());
|
||||
user.setDeptId(SysConsts.SUPER_DEPT_ID);
|
||||
user.setDeptId(SysConstants.SUPER_DEPT_ID);
|
||||
Long userId = userService.save(user);
|
||||
RoleDO role = roleService.getByCode(SysConsts.ADMIN_ROLE_CODE);
|
||||
RoleDO role = roleService.getByCode(SysConstants.ADMIN_ROLE_CODE);
|
||||
userRoleService.save(Collections.singletonList(role.getId()), userId);
|
||||
userSocial = new UserSocialDO();
|
||||
userSocial.setUserId(userId);
|
||||
@ -157,7 +157,7 @@ public class LoginServiceImpl implements LoginService {
|
||||
}
|
||||
// 查询菜单列表
|
||||
Set<MenuResp> menuSet = new LinkedHashSet<>();
|
||||
if (roleCodeSet.contains(SysConsts.ADMIN_ROLE_CODE)) {
|
||||
if (roleCodeSet.contains(SysConstants.ADMIN_ROLE_CODE)) {
|
||||
menuSet.addAll(menuService.list());
|
||||
} else {
|
||||
roleCodeSet.forEach(roleCode -> menuSet.addAll(menuService.listByRoleCode(roleCode)));
|
||||
|
@ -38,7 +38,7 @@ import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||
import top.charles7c.cnadmin.common.model.resp.PageDataResp;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 在线用户业务实现
|
||||
@ -63,9 +63,9 @@ public class OnlineUserServiceImpl implements OnlineUserService {
|
||||
public List<LoginUser> list(OnlineUserQuery query) {
|
||||
List<LoginUser> loginUserList = new ArrayList<>();
|
||||
// 查询所有登录用户
|
||||
List<String> tokenKeyList = StpUtil.searchTokenValue(StringConsts.EMPTY, 0, -1, false);
|
||||
List<String> tokenKeyList = StpUtil.searchTokenValue(StringConstants.EMPTY, 0, -1, false);
|
||||
for (String tokenKey : tokenKeyList) {
|
||||
String token = StrUtil.subAfter(tokenKey, StringConsts.COLON, true);
|
||||
String token = StrUtil.subAfter(tokenKey, StringConstants.COLON, true);
|
||||
// 忽略已过期或失效 Token
|
||||
if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) < SaTokenDao.NEVER_EXPIRE) {
|
||||
continue;
|
||||
|
@ -25,7 +25,7 @@ import org.springframework.stereotype.Service;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
|
||||
import top.charles7c.cnadmin.auth.service.PermissionService;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.system.service.MenuService;
|
||||
import top.charles7c.cnadmin.system.service.RoleService;
|
||||
|
||||
@ -46,8 +46,8 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
public Set<String> listPermissionByUserId(Long userId) {
|
||||
Set<String> roleCodeSet = this.listRoleCodeByUserId(userId);
|
||||
// 超级管理员赋予全部权限
|
||||
if (roleCodeSet.contains(SysConsts.ADMIN_ROLE_CODE)) {
|
||||
return CollUtil.newHashSet(SysConsts.ALL_PERMISSION);
|
||||
if (roleCodeSet.contains(SysConstants.ADMIN_ROLE_CODE)) {
|
||||
return CollUtil.newHashSet(SysConstants.ALL_PERMISSION);
|
||||
}
|
||||
return menuService.listPermissionByUserId(userId);
|
||||
}
|
||||
|
@ -20,7 +20,7 @@ import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.IBaseEnum;
|
||||
import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
import top.charles7c.cnadmin.common.constant.UIConstants;
|
||||
|
||||
/**
|
||||
* 公告状态枚举
|
||||
@ -33,13 +33,13 @@ import top.charles7c.cnadmin.common.constant.UIConsts;
|
||||
public enum AnnouncementStatusEnum implements IBaseEnum<Integer> {
|
||||
|
||||
/** 待发布 */
|
||||
PENDING_RELEASE(1, "待发布", UIConsts.COLOR_PRIMARY),
|
||||
PENDING_RELEASE(1, "待发布", UIConstants.COLOR_PRIMARY),
|
||||
|
||||
/** 已发布 */
|
||||
PUBLISHED(2, "已发布", UIConsts.COLOR_SUCCESS),
|
||||
PUBLISHED(2, "已发布", UIConstants.COLOR_SUCCESS),
|
||||
|
||||
/** 已过期 */
|
||||
EXPIRED(3, "已过期", UIConsts.COLOR_ERROR),;
|
||||
EXPIRED(3, "已过期", UIConstants.COLOR_ERROR),;
|
||||
|
||||
private final Integer value;
|
||||
private final String description;
|
||||
|
@ -31,7 +31,7 @@ import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseReq;
|
||||
import top.charles7c.cnadmin.common.base.ValidateGroup;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
|
||||
/**
|
||||
@ -59,7 +59,7 @@ public class DeptReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "部门名称", example = "测试部")
|
||||
@NotBlank(message = "部门名称不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "部门名称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_NAME, message = "部门名称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
|
@ -27,7 +27,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseReq;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
|
||||
/**
|
||||
* 创建或修改字典信息
|
||||
@ -47,7 +47,7 @@ public class DictReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "字典名称", example = "公告类型")
|
||||
@NotBlank(message = "字典名称不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "字典名称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_NAME, message = "字典名称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
@ -55,7 +55,7 @@ public class DictReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "字典编码", example = "announcement_type")
|
||||
@NotBlank(message = "字典编码不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_CODE, message = "字典编码长度为 2 到 30 位,可以包含字母、数字,下划线,以字母开头")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_CODE, message = "字典编码长度为 2 到 30 位,可以包含字母、数字,下划线,以字母开头")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
|
@ -31,7 +31,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseReq;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DataScopeEnum;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
|
||||
@ -53,7 +53,7 @@ public class RoleReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "角色名称", example = "测试人员")
|
||||
@NotBlank(message = "角色名称不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "角色名称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_NAME, message = "角色名称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
private String name;
|
||||
|
||||
/**
|
||||
@ -61,7 +61,7 @@ public class RoleReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "角色编码", example = "test")
|
||||
@NotBlank(message = "角色编码不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_CODE, message = "角色编码长度为 2 到 30 位,可以包含字母、数字,下划线,以字母开头")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_CODE, message = "角色编码长度为 2 到 30 位,可以包含字母、数字,下划线,以字母开头")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
|
@ -27,7 +27,7 @@ import lombok.Data;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.enums.GenderEnum;
|
||||
|
||||
/**
|
||||
@ -48,7 +48,7 @@ public class UserBasicInfoUpdateReq implements Serializable {
|
||||
*/
|
||||
@Schema(description = "昵称", example = "张三")
|
||||
@NotBlank(message = "昵称不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "昵称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_NAME, message = "昵称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
|
@ -28,7 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
|
||||
/**
|
||||
* 用户邮箱修改信息
|
||||
@ -48,7 +48,7 @@ public class UserEmailUpdateRequest implements Serializable {
|
||||
*/
|
||||
@Schema(description = "新邮箱", example = "123456789@qq.com")
|
||||
@NotBlank(message = "新邮箱不能为空")
|
||||
@Pattern(regexp = RegexConsts.EMAIL, message = "邮箱格式错误")
|
||||
@Pattern(regexp = RegexConstants.EMAIL, message = "邮箱格式错误")
|
||||
private String newEmail;
|
||||
|
||||
/**
|
||||
|
@ -28,7 +28,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
|
||||
/**
|
||||
* 用户手机号修改信息
|
||||
@ -48,7 +48,7 @@ public class UserPhoneUpdateReq implements Serializable {
|
||||
*/
|
||||
@Schema(description = "新手机号", example = "13811111111")
|
||||
@NotBlank(message = "新手机号不能为空")
|
||||
@Pattern(regexp = RegexConsts.MOBILE, message = "手机号格式错误")
|
||||
@Pattern(regexp = RegexConstants.MOBILE, message = "手机号格式错误")
|
||||
private String newPhone;
|
||||
|
||||
/**
|
||||
|
@ -31,7 +31,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseReq;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.enums.GenderEnum;
|
||||
|
||||
@ -53,7 +53,7 @@ public class UserReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "用户名", example = "zhangsan")
|
||||
@NotBlank(message = "用户名不能为空")
|
||||
@Pattern(regexp = RegexConsts.USERNAME, message = "用户名长度为 4 到 64 位,可以包含字母、数字,下划线,以字母开头")
|
||||
@Pattern(regexp = RegexConstants.USERNAME, message = "用户名长度为 4 到 64 位,可以包含字母、数字,下划线,以字母开头")
|
||||
private String username;
|
||||
|
||||
/**
|
||||
@ -61,14 +61,14 @@ public class UserReq extends BaseReq {
|
||||
*/
|
||||
@Schema(description = "昵称", example = "张三")
|
||||
@NotBlank(message = "昵称不能为空")
|
||||
@Pattern(regexp = RegexConsts.GENERAL_NAME, message = "昵称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
@Pattern(regexp = RegexConstants.GENERAL_NAME, message = "昵称长度为 2 到 30 位,可以包含中文、字母、数字、下划线,短横线")
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 邮箱
|
||||
*/
|
||||
@Schema(description = "邮箱", example = "123456789@qq.com")
|
||||
@Pattern(regexp = "^$|" + RegexConsts.EMAIL, message = "邮箱格式错误")
|
||||
@Pattern(regexp = "^$|" + RegexConstants.EMAIL, message = "邮箱格式错误")
|
||||
@Length(max = 255, message = "邮箱长度不能超过 {max} 个字符")
|
||||
private String email;
|
||||
|
||||
@ -76,7 +76,7 @@ public class UserReq extends BaseReq {
|
||||
* 手机号码
|
||||
*/
|
||||
@Schema(description = "手机号码", example = "13811111111")
|
||||
@Pattern(regexp = "^$|" + RegexConsts.MOBILE, message = "手机号码格式错误")
|
||||
@Pattern(regexp = "^$|" + RegexConstants.MOBILE, message = "手机号码格式错误")
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
|
@ -32,7 +32,7 @@ import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.system.mapper.DeptMapper;
|
||||
@ -128,7 +128,7 @@ public class DeptServiceImpl extends BaseServiceImpl<DeptMapper, DeptDO, DeptRes
|
||||
public void fillDetail(Object detailObj) {
|
||||
super.fillDetail(detailObj);
|
||||
if (detailObj instanceof DeptDetailResp detail) {
|
||||
if (Objects.equals(SysConsts.SUPER_PARENT_ID, detail.getParentId())) {
|
||||
if (Objects.equals(SysConstants.SUPER_PARENT_ID, detail.getParentId())) {
|
||||
return;
|
||||
}
|
||||
detail.setParentName(ExceptionUtils.exToNull(() -> this.get(detail.getParentId()).getName()));
|
||||
|
@ -26,7 +26,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.resp.LabelValueResp;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
@ -46,7 +46,7 @@ import top.charles7c.cnadmin.system.service.DictItemService;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@CacheConfig(cacheNames = CacheConsts.DICT_KEY_PREFIX)
|
||||
@CacheConfig(cacheNames = CacheConstants.DICT_KEY_PREFIX)
|
||||
public class DictItemServiceImpl
|
||||
extends BaseServiceImpl<DictItemMapper, DictItemDO, DictItemResp, DictItemDetailResp, DictItemQuery, DictItemReq>
|
||||
implements DictItemService {
|
||||
|
@ -29,7 +29,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||
import top.charles7c.cnadmin.system.mapper.MenuMapper;
|
||||
@ -47,7 +47,7 @@ import top.charles7c.cnadmin.system.service.MenuService;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@CacheConfig(cacheNames = CacheConsts.MENU_KEY_PREFIX)
|
||||
@CacheConfig(cacheNames = CacheConstants.MENU_KEY_PREFIX)
|
||||
public class MenuServiceImpl extends BaseServiceImpl<MenuMapper, MenuDO, MenuResp, MenuResp, MenuQuery, MenuReq>
|
||||
implements MenuService {
|
||||
|
||||
|
@ -26,7 +26,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
||||
import top.charles7c.cnadmin.system.mapper.OptionMapper;
|
||||
import top.charles7c.cnadmin.system.model.entity.OptionDO;
|
||||
@ -44,7 +44,7 @@ import top.charles7c.cnadmin.system.service.OptionService;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@CacheConfig(cacheNames = CacheConsts.OPTION_KEY_PREFIX)
|
||||
@CacheConfig(cacheNames = CacheConstants.OPTION_KEY_PREFIX)
|
||||
public class OptionServiceImpl implements OptionService {
|
||||
|
||||
private final OptionMapper baseMapper;
|
||||
|
@ -31,8 +31,8 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
|
||||
import top.charles7c.cnadmin.auth.service.OnlineUserService;
|
||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DataScopeEnum;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.model.dto.RoleDTO;
|
||||
@ -82,7 +82,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(cacheNames = CacheConsts.MENU_KEY_PREFIX, key = "#req.code == 'admin' ? 'ALL' : #req.code")
|
||||
@CacheEvict(cacheNames = CacheConstants.MENU_KEY_PREFIX, key = "#req.code == 'admin' ? 'ALL' : #req.code")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void update(RoleReq req, Long id) {
|
||||
String name = req.getName();
|
||||
@ -101,7 +101,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes
|
||||
// 更新信息
|
||||
super.update(req, id);
|
||||
// 更新关联信息
|
||||
if (!SysConsts.ADMIN_ROLE_CODE.equals(oldRole.getCode())) {
|
||||
if (!SysConstants.ADMIN_ROLE_CODE.equals(oldRole.getCode())) {
|
||||
// 保存角色和菜单关联
|
||||
boolean isSaveMenuSuccess = roleMenuService.save(req.getMenuIds(), id);
|
||||
// 保存角色和部门关联
|
||||
@ -136,7 +136,7 @@ public class RoleServiceImpl extends BaseServiceImpl<RoleMapper, RoleDO, RoleRes
|
||||
super.fillDetail(detailObj);
|
||||
if (detailObj instanceof RoleDetailResp detail) {
|
||||
Long roleId = detail.getId();
|
||||
if (SysConsts.ADMIN_ROLE_CODE.equals(detail.getCode())) {
|
||||
if (SysConstants.ADMIN_ROLE_CODE.equals(detail.getCode())) {
|
||||
List<MenuResp> list = menuService.list(null, null);
|
||||
List<Long> menuIds = list.stream().map(MenuResp::getId).collect(Collectors.toList());
|
||||
detail.setMenuIds(menuIds);
|
||||
|
@ -38,9 +38,9 @@ import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.base.BaseServiceImpl;
|
||||
import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.FileConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.constant.FileConstants;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||
import top.charles7c.cnadmin.common.service.CommonUserService;
|
||||
import top.charles7c.cnadmin.common.util.FileUtils;
|
||||
@ -59,7 +59,7 @@ import top.charles7c.cnadmin.system.service.DeptService;
|
||||
import top.charles7c.cnadmin.system.service.RoleService;
|
||||
import top.charles7c.cnadmin.system.service.UserRoleService;
|
||||
import top.charles7c.cnadmin.system.service.UserService;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
import top.charles7c.continew.starter.core.util.ExceptionUtils;
|
||||
|
||||
/**
|
||||
@ -70,7 +70,7 @@ import top.charles7c.continew.starter.core.util.ExceptionUtils;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@CacheConfig(cacheNames = CacheConsts.USER_KEY_PREFIX)
|
||||
@CacheConfig(cacheNames = CacheConstants.USER_KEY_PREFIX)
|
||||
public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserResp, UserDetailResp, UserQuery, UserReq>
|
||||
implements UserService, CommonUserService {
|
||||
|
||||
@ -100,7 +100,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
req.setStatus(DisEnableStatusEnum.ENABLE);
|
||||
Long userId = super.add(req);
|
||||
baseMapper.lambdaUpdate()
|
||||
.set(UserDO::getPassword, SecureUtils.md5Salt(SysConsts.DEFAULT_PASSWORD, userId.toString()))
|
||||
.set(UserDO::getPassword, SecureUtils.md5Salt(SysConstants.DEFAULT_PASSWORD, userId.toString()))
|
||||
.set(UserDO::getPwdResetTime, LocalDateTime.now()).eq(UserDO::getId, userId).update();
|
||||
// 保存用户和角色关联
|
||||
userRoleService.save(req.getRoleIds(), userId);
|
||||
@ -156,7 +156,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
detail.setDeptName(ExceptionUtils.exToNull(() -> deptService.get(detail.getDeptId()).getName()));
|
||||
List<Long> roleIdList = userRoleService.listRoleIdByUserId(detail.getId());
|
||||
detail.setRoleIds(roleIdList);
|
||||
detail.setRoleNames(String.join(StringConsts.CHINESE_COMMA, roleService.listNameByIds(roleIdList)));
|
||||
detail.setRoleNames(String.join(StringConstants.CHINESE_COMMA, roleService.listNameByIds(roleIdList)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -166,9 +166,9 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
Long avatarMaxSizeInMb = localStorageProperties.getAvatarMaxSizeInMb();
|
||||
CheckUtils.throwIf(avatarFile.getSize() > avatarMaxSizeInMb * 1024 * 1024, "请上传小于 {}MB 的图片", avatarMaxSizeInMb);
|
||||
String avatarImageType = FileNameUtil.extName(avatarFile.getOriginalFilename());
|
||||
String[] avatarSupportImgTypes = FileConsts.AVATAR_SUPPORTED_IMG_TYPES;
|
||||
String[] avatarSupportImgTypes = FileConstants.AVATAR_SUPPORTED_IMG_TYPES;
|
||||
CheckUtils.throwIf(!StrUtil.equalsAnyIgnoreCase(avatarImageType, avatarSupportImgTypes), "头像仅支持 {} 格式的图片",
|
||||
String.join(StringConsts.CHINESE_COMMA, avatarSupportImgTypes));
|
||||
String.join(StringConstants.CHINESE_COMMA, avatarSupportImgTypes));
|
||||
// 上传新头像
|
||||
UserDO user = super.getById(id);
|
||||
String avatarPath = localStorageProperties.getPath().getAvatar();
|
||||
@ -236,7 +236,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, UserDO, UserRes
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void resetPassword(Long id) {
|
||||
UserDO user = super.getById(id);
|
||||
user.setPassword(SecureUtils.md5Salt(SysConsts.DEFAULT_PASSWORD, id.toString()));
|
||||
user.setPassword(SecureUtils.md5Salt(SysConstants.DEFAULT_PASSWORD, id.toString()));
|
||||
user.setPwdResetTime(LocalDateTime.now());
|
||||
baseMapper.updateById(user);
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ import cn.hutool.setting.dialect.PropsUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.enums.QueryTypeEnum;
|
||||
import top.charles7c.cnadmin.tool.enums.FormTypeEnum;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 字段配置实体
|
||||
@ -142,7 +142,7 @@ public class FieldConfigDO implements Serializable {
|
||||
private LocalDateTime createTime;
|
||||
|
||||
public FieldConfigDO(@NonNull Column column) {
|
||||
String columnType = StrUtil.splitToArray(column.getTypeName(), StringConsts.SPACE)[0].toLowerCase();
|
||||
String columnType = StrUtil.splitToArray(column.getTypeName(), StringConstants.SPACE)[0].toLowerCase();
|
||||
boolean isRequired = !column.isPk() && !column.isNullable();
|
||||
this.tableName = column.getTableName();
|
||||
this.setColumnName(column.getName());
|
||||
|
@ -38,7 +38,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
|
||||
/**
|
||||
* 生成配置实体
|
||||
@ -76,7 +76,7 @@ public class GenConfigDO implements Serializable {
|
||||
*/
|
||||
@Schema(description = "包名称", example = "top.charles7c.cnadmin.system")
|
||||
@NotBlank(message = "包名称不能为空")
|
||||
@Pattern(regexp = RegexConsts.PACKAGE_NAME, message = "包名称格式错误")
|
||||
@Pattern(regexp = RegexConstants.PACKAGE_NAME, message = "包名称格式错误")
|
||||
@Length(max = 60, message = "包名称不能超过 {max} 个字符")
|
||||
private String packageName;
|
||||
|
||||
|
@ -60,7 +60,7 @@ import top.charles7c.cnadmin.tool.model.resp.TableResp;
|
||||
import top.charles7c.cnadmin.tool.service.GeneratorService;
|
||||
import top.charles7c.cnadmin.tool.util.MetaUtils;
|
||||
import top.charles7c.cnadmin.tool.util.Table;
|
||||
import top.charles7c.continew.starter.core.constant.StringConsts;
|
||||
import top.charles7c.continew.starter.core.constant.StringConstants;
|
||||
|
||||
/**
|
||||
* 代码生成业务实现
|
||||
@ -108,12 +108,12 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
genConfig = new GenConfigDO(tableName);
|
||||
// 默认包名(当前包名)
|
||||
String packageName = ClassUtil.getPackage(GeneratorService.class);
|
||||
genConfig.setPackageName(StrUtil.subBefore(packageName, StringConsts.DOT, true));
|
||||
genConfig.setPackageName(StrUtil.subBefore(packageName, StringConstants.DOT, true));
|
||||
// 默认业务名(表注释)
|
||||
List<Table> tableList = MetaUtils.getTables(dataSource, tableName);
|
||||
if (CollUtil.isNotEmpty(tableList)) {
|
||||
Table table = tableList.get(0);
|
||||
genConfig.setBusinessName(StrUtil.replace(table.getComment(), "表", StringConsts.EMPTY));
|
||||
genConfig.setBusinessName(StrUtil.replace(table.getComment(), "表", StringConstants.EMPTY));
|
||||
}
|
||||
// 默认作者名称(上次保存使用的作者名称)
|
||||
GenConfigDO lastGenConfig = genConfigMapper.selectOne(
|
||||
@ -122,7 +122,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
genConfig.setAuthor(lastGenConfig.getAuthor());
|
||||
}
|
||||
// 默认表前缀(sys_user -> sys_)
|
||||
int underLineIndex = StrUtil.indexOf(tableName, StringConsts.C_UNDERLINE);
|
||||
int underLineIndex = StrUtil.indexOf(tableName, StringConstants.C_UNDERLINE);
|
||||
if (-1 != underLineIndex) {
|
||||
genConfig.setTablePrefix(StrUtil.subPre(tableName, underLineIndex + 1));
|
||||
}
|
||||
@ -151,7 +151,8 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
FieldConfigDO fieldConfig = fieldConfigMap.get(column.getName());
|
||||
if (null != fieldConfig) {
|
||||
// 更新已有字段配置
|
||||
String columnType = StrUtil.splitToArray(column.getTypeName(), StringConsts.SPACE)[0].toLowerCase();
|
||||
String columnType =
|
||||
StrUtil.splitToArray(column.getTypeName(), StringConstants.SPACE)[0].toLowerCase();
|
||||
fieldConfig.setColumnType(columnType);
|
||||
fieldConfig.setComment(column.getComment());
|
||||
} else {
|
||||
@ -217,7 +218,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
genConfigMap.put("date", DateUtil.date().toString("yyyy/MM/dd HH:mm"));
|
||||
String packageName = genConfig.getPackageName();
|
||||
String apiModuleName =
|
||||
StrUtil.subSuf(packageName, StrUtil.lastIndexOfIgnoreCase(packageName, StringConsts.DOT) + 1);
|
||||
StrUtil.subSuf(packageName, StrUtil.lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1);
|
||||
genConfigMap.put("apiModuleName", apiModuleName);
|
||||
genConfigMap.put("apiName", StrUtil.lowerFirst(genConfig.getClassNamePrefix()));
|
||||
|
||||
@ -232,7 +233,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
File backendModuleFile = new File(projectPath, genConfig.getModuleName());
|
||||
// 例如:D:/continew-admin/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool
|
||||
List<String> backendModuleChildPathList = CollUtil.newArrayList("src", "main", "java");
|
||||
backendModuleChildPathList.addAll(StrUtil.split(genConfig.getPackageName(), StringConsts.DOT));
|
||||
backendModuleChildPathList.addAll(StrUtil.split(genConfig.getPackageName(), StringConstants.DOT));
|
||||
File backendParentFile =
|
||||
FileUtil.file(backendModuleFile, backendModuleChildPathList.toArray(new String[0]));
|
||||
// 2、生成代码
|
||||
@ -244,7 +245,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
||||
genConfigMap.put("className", className);
|
||||
TemplateConfig templateConfig = templateConfigEntry.getValue();
|
||||
File classParentFile = FileUtil.file(backendParentFile,
|
||||
StrUtil.splitToArray(templateConfig.getPackageName(), StringConsts.DOT));
|
||||
StrUtil.splitToArray(templateConfig.getPackageName(), StringConstants.DOT));
|
||||
File classFile = new File(classParentFile, className + FileNameUtil.EXT_JAVA);
|
||||
// 如果已经存在,且不允许覆盖,则跳过
|
||||
if (classFile.exists() && !isOverride) {
|
||||
|
@ -39,7 +39,7 @@ import top.charles7c.cnadmin.auth.model.resp.LoginResp;
|
||||
import top.charles7c.cnadmin.auth.model.resp.RouteResp;
|
||||
import top.charles7c.cnadmin.auth.model.resp.UserInfoResp;
|
||||
import top.charles7c.cnadmin.auth.service.LoginService;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||
@ -70,7 +70,7 @@ public class AuthController {
|
||||
@Operation(summary = "账号登录", description = "根据账号和密码进行登录认证")
|
||||
@PostMapping("/account")
|
||||
public LoginResp accountLogin(@Validated @RequestBody AccountLoginReq loginReq) {
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, loginReq.getUuid());
|
||||
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, loginReq.getUuid());
|
||||
String captcha = RedisUtils.get(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
RedisUtils.delete(captchaKey);
|
||||
@ -87,7 +87,7 @@ public class AuthController {
|
||||
@PostMapping("/email")
|
||||
public LoginResp emailLogin(@Validated @RequestBody EmailLoginReq loginReq) {
|
||||
String email = loginReq.getEmail();
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, email);
|
||||
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, email);
|
||||
String captcha = RedisUtils.get(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误");
|
||||
@ -101,7 +101,7 @@ public class AuthController {
|
||||
@PostMapping("/phone")
|
||||
public LoginResp phoneLogin(@Validated @RequestBody PhoneLoginReq loginReq) {
|
||||
String phone = loginReq.getPhone();
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, phone);
|
||||
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, phone);
|
||||
String captcha = RedisUtils.get(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(loginReq.getCaptcha(), captcha, "验证码错误");
|
||||
|
@ -48,8 +48,8 @@ import cn.hutool.core.util.RandomUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.config.properties.CaptchaProperties;
|
||||
import top.charles7c.cnadmin.common.config.properties.ProjectProperties;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.model.resp.CaptchaResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.MailUtils;
|
||||
@ -82,7 +82,7 @@ public class CaptchaController {
|
||||
Captcha captcha = captchaImage.getCaptcha();
|
||||
// 保存验证码
|
||||
String uuid = IdUtil.fastUUID();
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, uuid);
|
||||
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, uuid);
|
||||
RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaImage.getExpirationInMinutes()));
|
||||
return CaptchaResp.builder().uuid(uuid).img(captcha.toBase64()).build();
|
||||
}
|
||||
@ -90,10 +90,10 @@ public class CaptchaController {
|
||||
@Operation(summary = "获取邮箱验证码", description = "发送验证码到指定邮箱")
|
||||
@GetMapping("/mail")
|
||||
public R getMailCaptcha(
|
||||
@NotBlank(message = "邮箱不能为空") @Pattern(regexp = RegexConsts.EMAIL, message = "邮箱格式错误") String email)
|
||||
@NotBlank(message = "邮箱不能为空") @Pattern(regexp = RegexConstants.EMAIL, message = "邮箱格式错误") String email)
|
||||
throws MessagingException {
|
||||
String limitKeyPrefix = CacheConsts.LIMIT_KEY_PREFIX;
|
||||
String captchaKeyPrefix = CacheConsts.CAPTCHA_KEY_PREFIX;
|
||||
String limitKeyPrefix = CacheConstants.LIMIT_KEY_PREFIX;
|
||||
String captchaKeyPrefix = CacheConstants.CAPTCHA_KEY_PREFIX;
|
||||
String limitCaptchaKey = RedisUtils.formatKey(limitKeyPrefix, captchaKeyPrefix, email);
|
||||
long limitTimeInMillisecond = RedisUtils.getTimeToLive(limitCaptchaKey);
|
||||
CheckUtils.throwIf(limitTimeInMillisecond > 0, "发送验证码过于频繁,请您 {}s 后再试", limitTimeInMillisecond / 1000);
|
||||
@ -115,9 +115,9 @@ public class CaptchaController {
|
||||
@Operation(summary = "获取短信验证码", description = "发送验证码到指定手机号")
|
||||
@GetMapping("/sms")
|
||||
public R getSmsCaptcha(
|
||||
@NotBlank(message = "手机号不能为空") @Pattern(regexp = RegexConsts.MOBILE, message = "手机号格式错误") String phone) {
|
||||
String limitKeyPrefix = CacheConsts.LIMIT_KEY_PREFIX;
|
||||
String captchaKeyPrefix = CacheConsts.CAPTCHA_KEY_PREFIX;
|
||||
@NotBlank(message = "手机号不能为空") @Pattern(regexp = RegexConstants.MOBILE, message = "手机号格式错误") String phone) {
|
||||
String limitKeyPrefix = CacheConstants.LIMIT_KEY_PREFIX;
|
||||
String captchaKeyPrefix = CacheConstants.CAPTCHA_KEY_PREFIX;
|
||||
String limitCaptchaKey = RedisUtils.formatKey(limitKeyPrefix, captchaKeyPrefix, phone);
|
||||
long limitTimeInMillisecond = RedisUtils.getTimeToLive(limitCaptchaKey);
|
||||
CheckUtils.throwIf(limitTimeInMillisecond > 0, "发送验证码过于频繁,请您 {}s 后再试", limitTimeInMillisecond / 1000);
|
||||
|
@ -45,7 +45,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import top.charles7c.cnadmin.common.base.IBaseEnum;
|
||||
import top.charles7c.cnadmin.common.config.properties.LocalStorageProperties;
|
||||
import top.charles7c.cnadmin.common.config.properties.ProjectProperties;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.model.query.SortQuery;
|
||||
import top.charles7c.cnadmin.common.model.resp.LabelValueResp;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
@ -117,7 +117,7 @@ public class CommonController {
|
||||
@Operation(summary = "查询字典", description = "查询字典列表")
|
||||
@Parameter(name = "code", description = "字典编码", example = "announcement_type", in = ParameterIn.PATH)
|
||||
@GetMapping("/dict/{code}")
|
||||
@Cacheable(key = "#code", cacheNames = CacheConsts.DICT_KEY_PREFIX)
|
||||
@Cacheable(key = "#code", cacheNames = CacheConstants.DICT_KEY_PREFIX)
|
||||
public List<LabelValueResp> listDict(@PathVariable String code) {
|
||||
Optional<Class<?>> enumClass = this.getEnumClassByName(code);
|
||||
return enumClass.map(this::listEnumDict).orElseGet(() -> dictItemService.listByDictCode(code));
|
||||
@ -126,7 +126,7 @@ public class CommonController {
|
||||
@SaIgnore
|
||||
@Operation(summary = "查询参数", description = "查询参数")
|
||||
@GetMapping("/option")
|
||||
@Cacheable(cacheNames = CacheConsts.OPTION_KEY_PREFIX)
|
||||
@Cacheable(cacheNames = CacheConstants.OPTION_KEY_PREFIX)
|
||||
public List<LabelValueResp> listOption(@Validated OptionQuery query) {
|
||||
return optionService.list(query).stream().map(option -> new LabelValueResp(option.getCode(),
|
||||
StrUtil.nullToDefault(option.getValue(), option.getDefaultValue()))).collect(Collectors.toList());
|
||||
|
@ -36,8 +36,8 @@ import com.xkcoding.justauth.AuthRequestFactory;
|
||||
|
||||
import cn.hutool.core.util.ReUtil;
|
||||
|
||||
import top.charles7c.cnadmin.common.constant.CacheConsts;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConsts;
|
||||
import top.charles7c.cnadmin.common.constant.CacheConstants;
|
||||
import top.charles7c.cnadmin.common.constant.RegexConstants;
|
||||
import top.charles7c.cnadmin.common.enums.SocialSourceEnum;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||
@ -101,7 +101,7 @@ public class UserCenterController {
|
||||
String rawNewPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getNewPassword()));
|
||||
ValidationUtils.throwIfNull(rawNewPassword, "新密码解密失败");
|
||||
ValidationUtils.throwIf(!ReUtil.isMatch(RegexConsts.PASSWORD, rawNewPassword),
|
||||
ValidationUtils.throwIf(!ReUtil.isMatch(RegexConstants.PASSWORD, rawNewPassword),
|
||||
"密码长度为 6 到 32 位,可以包含字母、数字、下划线,特殊字符,同时包含字母和数字");
|
||||
userService.updatePassword(rawOldPassword, rawNewPassword, LoginHelper.getUserId());
|
||||
return R.ok("修改成功");
|
||||
@ -113,7 +113,7 @@ public class UserCenterController {
|
||||
String rawCurrentPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getCurrentPassword()));
|
||||
ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败");
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, updateReq.getNewPhone());
|
||||
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, updateReq.getNewPhone());
|
||||
String captcha = RedisUtils.get(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(updateReq.getCaptcha(), captcha, "验证码错误");
|
||||
@ -128,7 +128,7 @@ public class UserCenterController {
|
||||
String rawCurrentPassword =
|
||||
ExceptionUtils.exToNull(() -> SecureUtils.decryptByRsaPrivateKey(updateReq.getCurrentPassword()));
|
||||
ValidationUtils.throwIfBlank(rawCurrentPassword, "当前密码解密失败");
|
||||
String captchaKey = RedisUtils.formatKey(CacheConsts.CAPTCHA_KEY_PREFIX, updateReq.getNewEmail());
|
||||
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, updateReq.getNewEmail());
|
||||
String captcha = RedisUtils.get(captchaKey);
|
||||
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
|
||||
ValidationUtils.throwIfNotEqualIgnoreCase(updateReq.getCaptcha(), captcha, "验证码错误");
|
||||
|
@ -32,7 +32,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
|
||||
import top.charles7c.cnadmin.common.base.BaseController;
|
||||
import top.charles7c.cnadmin.common.base.ValidateGroup;
|
||||
import top.charles7c.cnadmin.common.constant.SysConsts;
|
||||
import top.charles7c.cnadmin.common.constant.SysConstants;
|
||||
import top.charles7c.cnadmin.common.model.resp.R;
|
||||
import top.charles7c.cnadmin.system.model.query.UserQuery;
|
||||
import top.charles7c.cnadmin.system.model.req.UserReq;
|
||||
@ -57,7 +57,7 @@ public class UserController extends BaseController<UserService, UserResp, UserDe
|
||||
@SaCheckPermission("system:user:add")
|
||||
public R<Long> add(@Validated(ValidateGroup.Crud.Add.class) @RequestBody UserReq req) {
|
||||
Long id = baseService.add(req);
|
||||
return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD), id);
|
||||
return R.ok(String.format("新增成功,请牢记默认密码:%s", SysConstants.DEFAULT_PASSWORD), id);
|
||||
}
|
||||
|
||||
@Operation(summary = "重置密码", description = "重置用户登录密码为默认密码")
|
||||
@ -66,7 +66,7 @@ public class UserController extends BaseController<UserService, UserResp, UserDe
|
||||
@PatchMapping("/{id}/password")
|
||||
public R resetPassword(@PathVariable Long id) {
|
||||
baseService.resetPassword(id);
|
||||
return R.ok(String.format("重置密码成功,请牢记默认密码:%s", SysConsts.DEFAULT_PASSWORD));
|
||||
return R.ok(String.format("重置密码成功,请牢记默认密码:%s", SysConstants.DEFAULT_PASSWORD));
|
||||
}
|
||||
|
||||
@Operation(summary = "分配角色", description = "为用户新增或移除角色")
|
||||
|
Loading…
Reference in New Issue
Block a user