From 89a327920e082b7be8561f4ca2fcd92e4200f0f0 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sat, 4 Mar 2023 14:35:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E5=9F=BA=E4=BA=8E?= =?UTF-8?q?=E9=98=BF=E9=87=8C=E5=B7=B4=E5=B7=B4=20Java=20=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E6=89=8B=E5=86=8C(=E9=BB=84=E5=B1=B1=E7=89=88)?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=B8=B8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.编程规约>常量定义>第1条: 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。 --- .../cnadmin/common/base/BaseController.java | 3 +- .../easyexcel/ExcelBaseEnumConverter.java | 3 +- .../config/jackson/JacksonConfiguration.java | 11 +++---- .../{CharConsts.java => StringConsts.java} | 31 +++++++++++++++++-- .../cnadmin/common/constant/SysConsts.java | 10 ++++++ .../cnadmin/common/model/query/SortQuery.java | 6 ++-- .../cnadmin/common/util/ExcelUtils.java | 4 ++- .../cnadmin/common/util/FileUtils.java | 4 ++- .../cnadmin/common/util/MailUtils.java | 10 +++--- .../cnadmin/common/util/StreamUtils.java | 4 +-- .../monitor/service/impl/LogServiceImpl.java | 5 +-- 11 files changed, 65 insertions(+), 26 deletions(-) rename continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/{CharConsts.java => StringConsts.java} (57%) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java index d1031b8c..02ed886e 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/BaseController.java @@ -35,6 +35,7 @@ import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.StrUtil; import top.charles7c.cnadmin.common.annotation.CrudRequestMapping; +import top.charles7c.cnadmin.common.constant.StringConsts; import top.charles7c.cnadmin.common.model.query.PageQuery; import top.charles7c.cnadmin.common.model.query.SortQuery; import top.charles7c.cnadmin.common.model.vo.PageDataVO; @@ -208,7 +209,7 @@ public abstract class BaseController, V, D, Q, private void checkPermission(String subPermission) { CrudRequestMapping crudRequestMapping = this.getClass().getDeclaredAnnotation(CrudRequestMapping.class); String path = crudRequestMapping.value(); - String permissionPrefix = String.join(":", StrUtil.splitTrim(path, "/")); + String permissionPrefix = String.join(StringConsts.COLON, StrUtil.splitTrim(path, StringConsts.SLASH)); StpUtil.checkPermission(String.format("%s:%s", permissionPrefix, subPermission)); } } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBaseEnumConverter.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBaseEnumConverter.java index 237fe30b..103b2c8a 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBaseEnumConverter.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/easyexcel/ExcelBaseEnumConverter.java @@ -28,6 +28,7 @@ import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ObjectUtil; import top.charles7c.cnadmin.common.base.BaseEnum; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * Easy Excel 枚举基类转换器 @@ -63,7 +64,7 @@ public class ExcelBaseEnumConverter implements Converter convertToExcelData(BaseEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (ObjectUtil.isNull(value)) { - return new WriteCellData<>(""); + return new WriteCellData<>(StringConsts.EMPTY); } return new WriteCellData<>(value.getDescription()); } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java index 99f7d6a8..9988da00 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/jackson/JacksonConfiguration.java @@ -43,6 +43,7 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import top.charles7c.cnadmin.common.base.BaseEnum; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * Jackson 配置 @@ -59,10 +60,6 @@ public class JacksonConfiguration { */ @Bean public Jackson2ObjectMapperBuilderCustomizer customizer() { - String dateTimeFormatPattern = "yyyy-MM-dd HH:mm:ss"; - String dateFormatPattern = "yyyy-MM-dd"; - String timeFormatPattern = "HH:mm:ss"; - return builder -> { // 针对数值类型:Long、BigInteger、BigDecimal 的序列化和反序列化 JavaTimeModule javaTimeModule = new JavaTimeModule(); @@ -72,15 +69,15 @@ public class JacksonConfiguration { javaTimeModule.addSerializer(BigDecimal.class, ToStringSerializer.instance); // 针对时间类型:LocalDateTime、LocalDate、LocalTime 的序列化和反序列化 - DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dateTimeFormatPattern); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(StringConsts.NORM_DATE_TIME_PATTERN); javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter)); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter)); - DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(dateFormatPattern); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(StringConsts.NORM_DATE_PATTERN); javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(dateFormatter)); javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormatter)); - DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(timeFormatPattern); + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern(StringConsts.NORM_TIME_PATTERN); javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormatter)); javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter)); builder.modules(javaTimeModule); diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/CharConsts.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java similarity index 57% rename from continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/CharConsts.java rename to continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java index c319567e..b33f259c 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/CharConsts.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java @@ -19,16 +19,16 @@ package top.charles7c.cnadmin.common.constant; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import cn.hutool.core.text.CharPool; +import cn.hutool.core.text.StrPool; /** - * 字符相关常量 + * 字符串相关常量 * * @author Charles7c * @since 2023/2/10 20:14 */ @NoArgsConstructor(access = AccessLevel.PRIVATE) -public class CharConsts implements CharPool { +public class StringConsts implements StrPool { /** * 分号 @@ -39,4 +39,29 @@ public class CharConsts implements CharPool { * 空字符串 */ public static final String EMPTY = ""; + + /** + * 标准日期时间格式 + */ + public static final String NORM_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + /** + * 标准日期时间格式(紧凑) + */ + public static final String PURE_DATE_TIME_PATTERN = "yyyyMMddHHmmss"; + + /** + * 标准日期时间格式(紧凑,带毫秒) + */ + public static final String PURE_DATE_TIME_MS_PATTERN = "yyyyMMddHHmmssSSS"; + + /** + * 标准日期格式 + */ + public static final String NORM_DATE_PATTERN = "yyyy-MM-dd"; + + /** + * 标准时间格式 + */ + public static final String NORM_TIME_PATTERN = "HH:mm:ss"; } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/SysConsts.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/SysConsts.java index c53a7bb7..19b4011d 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/SysConsts.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/SysConsts.java @@ -42,4 +42,14 @@ public class SysConsts { * 默认密码 */ public static final String DEFAULT_PASSWORD = "123456"; + + /** + * 登录 URI + */ + public static final String LOGIN_URI = "/auth/login"; + + /** + * 退出登录 URI + */ + public static final String LOGOUT_URI = "/auth/logout"; } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java index 797462ee..f1e98f11 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/model/query/SortQuery.java @@ -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.cnadmin.common.constant.CharConsts; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * 排序查询条件 @@ -62,10 +62,10 @@ public class SortQuery implements Serializable { } List orders = new ArrayList<>(sort.length); - if (StrUtil.contains(sort[0], CharConsts.COMMA)) { + if (StrUtil.contains(sort[0], StringConsts.COMMA)) { // e.g "sort=published,desc&sort=title,asc" for (String s : sort) { - List sortList = StrUtil.splitTrim(s, CharConsts.COMMA); + List sortList = StrUtil.splitTrim(s, StringConsts.COMMA); Sort.Order order = new Sort.Order(Sort.Direction.valueOf(sortList.get(1).toUpperCase()), sortList.get(0)); orders.add(order); diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExcelUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExcelUtils.java index d4d79090..d3906457 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExcelUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/ExcelUtils.java @@ -33,6 +33,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.URLUtil; import top.charles7c.cnadmin.common.config.easyexcel.ExcelBigNumberConverter; +import top.charles7c.cnadmin.common.constant.StringConsts; import top.charles7c.cnadmin.common.exception.ServiceException; /** @@ -78,7 +79,8 @@ public class ExcelUtils { public static void export(List list, String fileName, String sheetName, Class clazz, HttpServletResponse response) { try { - fileName = String.format("%s_%s.xlsx", fileName, DateUtil.format(new Date(), "yyyyMMddHHmmss")); + fileName = + String.format("%s_%s.xlsx", fileName, DateUtil.format(new Date(), StringConsts.PURE_DATE_TIME_PATTERN)); fileName = URLUtil.encode(fileName); response.setHeader("Content-disposition", "attachment;filename=" + fileName); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/FileUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/FileUtils.java index 910f14cc..405bc423 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/FileUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/FileUtils.java @@ -29,6 +29,8 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.util.IdUtil; +import top.charles7c.cnadmin.common.constant.StringConsts; + /** * 文件工具类 * @@ -57,7 +59,7 @@ public class FileUtils { String filename; if (isKeepOriginalFilename) { filename = String.format("%s-%s.%s", FileNameUtil.getPrefix(originalFilename), - DateUtil.format(LocalDateTime.now(), "yyyyMMddHHmmssS"), extensionName); + DateUtil.format(LocalDateTime.now(), StringConsts.PURE_DATE_TIME_MS_PATTERN), extensionName); } else { filename = String.format("%s.%s", IdUtil.fastSimpleUUID(), extensionName); } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/MailUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/MailUtils.java index 6f8ceeb4..00a4e525 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/MailUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/MailUtils.java @@ -37,7 +37,7 @@ import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.spring.SpringUtil; -import top.charles7c.cnadmin.common.constant.CharConsts; +import top.charles7c.cnadmin.common.constant.StringConsts; import top.charles7c.cnadmin.common.util.validate.CheckUtils; /** @@ -233,10 +233,10 @@ public class MailUtils { } List result; - if (StrUtil.contains(addresses, CharConsts.COMMA)) { - result = StrUtil.splitTrim(addresses, CharConsts.COMMA); - } else if (StrUtil.contains(addresses, CharConsts.SEMICOLON)) { - result = StrUtil.splitTrim(addresses, CharConsts.SEMICOLON); + 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); } else { result = CollUtil.newArrayList(addresses); } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/StreamUtils.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/StreamUtils.java index 48d44b43..90af9113 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/StreamUtils.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/StreamUtils.java @@ -26,7 +26,7 @@ import lombok.NoArgsConstructor; import cn.hutool.core.collection.CollUtil; -import top.charles7c.cnadmin.common.constant.CharConsts; +import top.charles7c.cnadmin.common.constant.StringConsts; /** * Stream 工具类 @@ -52,7 +52,7 @@ public class StreamUtils { */ public static String join(Collection collection, Function function, CharSequence delimiter) { if (CollUtil.isEmpty(collection)) { - return CharConsts.EMPTY; + return StringConsts.EMPTY; } return collection.stream().map(function).filter(Objects::nonNull).collect(Collectors.joining(delimiter)); } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java index 6239f185..50c1b2b4 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/service/impl/LogServiceImpl.java @@ -33,6 +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.model.query.PageQuery; import top.charles7c.cnadmin.common.model.vo.PageDataVO; import top.charles7c.cnadmin.common.service.CommonUserService; @@ -95,8 +96,8 @@ public class LogServiceImpl implements LogService { @Override public PageDataVO page(LoginLogQuery query, PageQuery pageQuery) { QueryWrapper queryWrapper = QueryHelper.build(query); - queryWrapper.lambda() - .and(qw -> qw.like(LogDO::getRequestUrl, "/auth/login").or().like(LogDO::getRequestUrl, "/auth/logout")); + queryWrapper.lambda().and(qw -> qw.like(LogDO::getRequestUrl, SysConsts.LOGIN_URI).or() + .like(LogDO::getRequestUrl, SysConsts.LOGOUT_URI)); // 限定查询信息 String[] fieldsName = ReflectUtils.getNonStaticFieldsName(LoginLogVO.class);