refactor(common): 统一通用常量与日志时间格式

This commit is contained in:
zhiye.sun
2026-05-21 15:36:51 +08:00
parent 8532628171
commit 2ab02fb574
10 changed files with 107 additions and 8 deletions

View File

@@ -1,5 +1,6 @@
package com.bruce.common.config; package com.bruce.common.config;
import com.bruce.common.constant.CommonConsts;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -11,6 +12,6 @@ import org.springframework.stereotype.Component;
@ConfigurationProperties(prefix = "common.attachment") @ConfigurationProperties(prefix = "common.attachment")
public class AttachmentProperties { public class AttachmentProperties {
private String basePath = "data/attachments"; private String basePath = CommonConsts.DEFAULT_ATTACHMENT_BASE_PATH;
} }

View File

@@ -0,0 +1,21 @@
package com.bruce.common.constant;
public final class CommonConsts {
public static final String DATE_FORMAT_LONG_STR = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_MILLIS_STR = "yyyy-MM-dd HH:mm:ss.SSS";
public static final String TIME_ZONE_GMT8 = "GMT+8";
public static final String DEFAULT_ATTACHMENT_BASE_PATH = "data/attachments";
public static final String STORAGE_TYPE_LOCAL = "LOCAL";
public static final String REQUEST_RESULT_SUCCESS_CODE = "0";
public static final String REQUEST_RESULT_FAIL_CODE = "-1";
private CommonConsts() {
}
}

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version; import com.baomidou.mybatisplus.annotation.Version;
import com.bruce.common.constant.CommonConsts;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
@@ -24,7 +25,7 @@ public class BaseEntity {
private String createBy; private String createBy;
@Schema(description = "创建时间", example = "2026-05-18 20:00:00") @Schema(description = "创建时间", example = "2026-05-18 20:00:00")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = CommonConsts.DATE_FORMAT_LONG_STR, timezone = CommonConsts.TIME_ZONE_GMT8)
@TableField(value = "create_time", fill = FieldFill.INSERT) @TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime; private Date createTime;
@@ -33,7 +34,7 @@ public class BaseEntity {
private String updateBy; private String updateBy;
@Schema(description = "更新时间", example = "2026-05-18 20:00:00") @Schema(description = "更新时间", example = "2026-05-18 20:00:00")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = CommonConsts.DATE_FORMAT_LONG_STR, timezone = CommonConsts.TIME_ZONE_GMT8)
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Date updateTime; private Date updateTime;

View File

@@ -1,5 +1,6 @@
package com.bruce.common.domain.model; package com.bruce.common.domain.model;
import com.bruce.common.constant.CommonConsts;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
@@ -10,9 +11,9 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public class RequestResult<T> { public class RequestResult<T> {
public static final String FAIL_CODE = "-1"; public static final String FAIL_CODE = CommonConsts.REQUEST_RESULT_FAIL_CODE;
public static final String SUCCESS_CODE = "0"; public static final String SUCCESS_CODE = CommonConsts.REQUEST_RESULT_SUCCESS_CODE;
@Schema(description = "错误消息") @Schema(description = "错误消息")
private String message; private String message;

View File

@@ -2,6 +2,7 @@ package com.bruce.common.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bruce.common.config.AttachmentProperties; import com.bruce.common.config.AttachmentProperties;
import com.bruce.common.constant.CommonConsts;
import com.bruce.common.domain.entity.SysAttachment; import com.bruce.common.domain.entity.SysAttachment;
import com.bruce.common.dto.request.SysAttachmentUploadRequest; import com.bruce.common.dto.request.SysAttachmentUploadRequest;
import com.bruce.common.mapper.SysAttachmentMapper; import com.bruce.common.mapper.SysAttachmentMapper;
@@ -22,8 +23,6 @@ import java.util.UUID;
@Service @Service
public class SysAttachmentServiceImpl extends ServiceImpl<SysAttachmentMapper, SysAttachment> implements ISysAttachmentService { public class SysAttachmentServiceImpl extends ServiceImpl<SysAttachmentMapper, SysAttachment> implements ISysAttachmentService {
private static final String STORAGE_TYPE_LOCAL = "LOCAL";
@Autowired @Autowired
private AttachmentProperties attachmentProperties; private AttachmentProperties attachmentProperties;
@@ -64,7 +63,7 @@ public class SysAttachmentServiceImpl extends ServiceImpl<SysAttachmentMapper, S
attachment.setFileSuffix(suffix); attachment.setFileSuffix(suffix);
attachment.setContentType(file.getContentType()); attachment.setContentType(file.getContentType());
attachment.setFileSize(file.getSize()); attachment.setFileSize(file.getSize());
attachment.setStorageType(STORAGE_TYPE_LOCAL); attachment.setStorageType(CommonConsts.STORAGE_TYPE_LOCAL);
attachment.setFilePath(dateDirectory + "/" + storedFileName); attachment.setFilePath(dateDirectory + "/" + storedFileName);
attachment.setFileUrl(null); attachment.setFileUrl(null);
attachment.setVersion(1); attachment.setVersion(1);

View File

@@ -1,8 +1,10 @@
package com.bruce.rag.dto.response; package com.bruce.rag.dto.response;
import com.bruce.common.constant.CommonConsts;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.bruce.rag.entity.RagStore; import com.bruce.rag.entity.RagStore;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data; import lombok.Data;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@@ -33,9 +35,11 @@ public class RagStoreResponse {
private String remark; private String remark;
@Schema(description = "创建时间") @Schema(description = "创建时间")
@JsonFormat(pattern = CommonConsts.DATE_FORMAT_LONG_STR, timezone = CommonConsts.TIME_ZONE_GMT8)
private Date createTime; private Date createTime;
@Schema(description = "更新时间") @Schema(description = "更新时间")
@JsonFormat(pattern = CommonConsts.DATE_FORMAT_LONG_STR, timezone = CommonConsts.TIME_ZONE_GMT8)
private Date updateTime; private Date updateTime;
public static RagStoreResponse fromEntity(RagStore entity) { public static RagStoreResponse fromEntity(RagStore entity) {

View File

@@ -7,3 +7,7 @@ spring:
common: common:
attachment: attachment:
base-path: data/attachments base-path: data/attachments
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss.SSS, GMT+8} %5p ${PID:- } --- [%15.15t] %-40.40logger{39} : %m%n%wEx"

View File

@@ -0,0 +1,30 @@
package com.bruce.common.constant;
import com.bruce.common.config.AttachmentProperties;
import com.bruce.common.domain.model.RequestResult;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class CommonConstsStructureTests {
@Test
void commonConstsShouldExposeReusableInfrastructureConstants() {
assertEquals("yyyy-MM-dd HH:mm:ss", CommonConsts.DATE_FORMAT_LONG_STR);
assertEquals("yyyy-MM-dd HH:mm:ss.SSS", CommonConsts.DATE_FORMAT_MILLIS_STR);
assertEquals("GMT+8", CommonConsts.TIME_ZONE_GMT8);
assertEquals("data/attachments", CommonConsts.DEFAULT_ATTACHMENT_BASE_PATH);
assertEquals("LOCAL", CommonConsts.STORAGE_TYPE_LOCAL);
assertEquals("0", CommonConsts.REQUEST_RESULT_SUCCESS_CODE);
assertEquals("-1", CommonConsts.REQUEST_RESULT_FAIL_CODE);
}
@Test
void sharedDefaultConstantsShouldBeReusedByCommonComponents() {
AttachmentProperties properties = new AttachmentProperties();
assertEquals(CommonConsts.DEFAULT_ATTACHMENT_BASE_PATH, properties.getBasePath());
assertEquals(CommonConsts.REQUEST_RESULT_SUCCESS_CODE, RequestResult.SUCCESS_CODE);
assertEquals(CommonConsts.REQUEST_RESULT_FAIL_CODE, RequestResult.FAIL_CODE);
}
}

View File

@@ -1,9 +1,12 @@
package com.bruce.rag; package com.bruce.rag;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.bruce.rag.dto.response.RagDocumentResponse;
import com.bruce.rag.dto.response.RagStoreResponse; import com.bruce.rag.dto.response.RagStoreResponse;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.util.Date;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
class RagStoreResponseSerializationTests { class RagStoreResponseSerializationTests {
@@ -19,4 +22,24 @@ class RagStoreResponseSerializationTests {
assertTrue(json.contains("\"id\":\"2057302206052372481\"")); assertTrue(json.contains("\"id\":\"2057302206052372481\""));
} }
@Test
void responseTimeShouldSerializeWithUnifiedFormat() throws Exception {
RagStoreResponse storeResponse = new RagStoreResponse();
storeResponse.setCreateTime(new Date(1747816496000L));
storeResponse.setUpdateTime(new Date(1747816496000L));
RagDocumentResponse documentResponse = new RagDocumentResponse();
documentResponse.setCreateTime(new Date(1747816496000L));
documentResponse.setUpdateTime(new Date(1747816496000L));
ObjectMapper objectMapper = new ObjectMapper();
String storeJson = objectMapper.writeValueAsString(storeResponse);
String documentJson = objectMapper.writeValueAsString(documentResponse);
assertTrue(storeJson.contains("\"createTime\":\"2025-05-21 16:34:56\""));
assertTrue(storeJson.contains("\"updateTime\":\"2025-05-21 16:34:56\""));
assertTrue(documentJson.contains("\"createTime\":\"2025-05-21 16:34:56\""));
assertTrue(documentJson.contains("\"updateTime\":\"2025-05-21 16:34:56\""));
}
} }

View File

@@ -1,10 +1,13 @@
package com.bruce.rag; package com.bruce.rag;
import com.bruce.common.enums.EnableStatusEnum;
import com.bruce.rag.dto.request.RagStoreSaveRequest; import com.bruce.rag.dto.request.RagStoreSaveRequest;
import com.bruce.rag.entity.RagStore;
import com.bruce.rag.service.impl.RagStoreServiceImpl; import com.bruce.rag.service.impl.RagStoreServiceImpl;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
class RagStoreSaveValidationTests { class RagStoreSaveValidationTests {
@@ -36,4 +39,16 @@ class RagStoreSaveValidationTests {
assertDoesNotThrow(() -> service.validateSaveRequest(request)); assertDoesNotThrow(() -> service.validateSaveRequest(request));
} }
@Test
void saveShouldDefaultStatusToEnabledEnumLabel() {
RagStoreServiceImpl service = new RagStoreServiceImpl();
RagStoreSaveRequest request = new RagStoreSaveRequest();
request.setStoreCode("PROD_DOC");
request.setStoreName("产品制度库");
RagStore ragStore = service.buildEntity(request);
assertEquals(EnableStatusEnum.ENABLED.getLabel(), ragStore.getStatus());
}
} }