refactor(common): 统一通用常量与日志时间格式
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
21
src/main/java/com/bruce/common/constant/CommonConsts.java
Normal file
21
src/main/java/com/bruce/common/constant/CommonConsts.java
Normal 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() {
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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\""));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user