feat: 完善sys_enum枚举管理与初始化能力

This commit is contained in:
2026-05-18 22:33:20 +08:00
parent 4a20a25282
commit 736f400119
10 changed files with 211 additions and 33 deletions

View File

@@ -1,30 +1,42 @@
package com.bruce.common.enumconfig;
import com.bruce.common.enums.BaseDictEnum;
import com.bruce.common.enums.CommonStatusEnum;
import com.bruce.common.enums.EnableStatusEnum;
import com.bruce.rag.enums.RagIndexStatusEnum;
import com.bruce.rag.enums.RagParseStatusEnum;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
class EnumDefinitionTests {
@Test
void enumDefinitionsShouldExist() {
assertTrue(BaseDictEnum.class.isAssignableFrom(EnableStatusEnum.class));
assertTrue(BaseDictEnum.class.isAssignableFrom(RagParseStatusEnum.class));
assertTrue(BaseDictEnum.class.isAssignableFrom(RagIndexStatusEnum.class));
void enumValuesShouldBeStable() {
assertEquals(1, EnableStatusEnum.ENABLED.getValue());
assertEquals(0, EnableStatusEnum.DISABLED.getValue());
assertEquals(0, CommonStatusEnum.DISABLED.getValue());
assertEquals(1, CommonStatusEnum.ENABLED.getValue());
assertEquals(2, CommonStatusEnum.DRAFT.getValue());
assertEquals(3, CommonStatusEnum.PROCESSING.getValue());
assertEquals(4, CommonStatusEnum.COMPLETED.getValue());
assertEquals(5, CommonStatusEnum.FAILED.getValue());
assertEquals(1, RagParseStatusEnum.UPLOADED.getValue());
assertEquals(4, RagParseStatusEnum.FAILED.getValue());
assertEquals(1, RagIndexStatusEnum.PENDING.getValue());
assertEquals(3, RagIndexStatusEnum.INDEXED.getValue());
}
@Test
void enumCodesShouldBeStable() {
assertEquals("ENABLED", EnableStatusEnum.ENABLED.getCode());
assertEquals("DISABLED", EnableStatusEnum.DISABLED.getCode());
assertEquals("UPLOADED", RagParseStatusEnum.UPLOADED.getCode());
assertEquals("FAILED", RagParseStatusEnum.FAILED.getCode());
assertEquals("PENDING", RagIndexStatusEnum.PENDING.getCode());
assertEquals("INDEXED", RagIndexStatusEnum.INDEXED.getCode());
void enumNamesShouldBeStable() {
assertEquals("启用", EnableStatusEnum.ENABLED.getLabel());
assertEquals("禁用", EnableStatusEnum.DISABLED.getLabel());
assertEquals("草稿", CommonStatusEnum.DRAFT.getLabel());
assertEquals("处理中", CommonStatusEnum.PROCESSING.getLabel());
assertEquals("已完成", CommonStatusEnum.COMPLETED.getLabel());
assertEquals("失败", CommonStatusEnum.FAILED.getLabel());
assertEquals("已上传", RagParseStatusEnum.UPLOADED.getLabel());
assertEquals("解析失败", RagParseStatusEnum.FAILED.getLabel());
assertEquals("待索引", RagIndexStatusEnum.PENDING.getLabel());
assertEquals("已索引", RagIndexStatusEnum.INDEXED.getLabel());
}
}

View File

@@ -34,4 +34,20 @@ class SysEnumComponentStructureTests {
assertNotNull(serviceMethod);
assertNotNull(controllerMethod);
}
@Test
void sysEnumShouldExposeSaveOrUpdateAndDeleteInterfaces() throws NoSuchMethodException {
Method saveOrUpdateMethod = SysEnumController.class.getMethod("saveOrUpdate", SysEnum.class);
Method deleteMethod = SysEnumController.class.getMethod("deleteById", Long.class);
assertNotNull(saveOrUpdateMethod);
assertNotNull(deleteMethod);
}
@Test
void sysEnumShouldProvideManualInitTestEntry() throws NoSuchMethodException {
Method initMethod = SysEnumDataInitTests.class.getMethod("initDefaultEnums");
assertNotNull(initMethod);
}
}

View File

@@ -0,0 +1,62 @@
package com.bruce.common.enumconfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bruce.common.entity.SysEnum;
import com.bruce.common.enums.CommonStatusEnum;
import com.bruce.common.enums.EnableStatusEnum;
import com.bruce.common.service.ISysEnumService;
import com.bruce.rag.enums.RagIndexStatusEnum;
import com.bruce.rag.enums.RagParseStatusEnum;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
@EnabledIfSystemProperty(named = "runEnumInit", matches = "true")
class SysEnumDataInitTests {
@Autowired
private ISysEnumService sysEnumService;
@Test
public void initDefaultEnums() {
saveOrUpdate("common", "enable_status", EnableStatusEnum.DISABLED.getLabel(), EnableStatusEnum.DISABLED.getValue(), 0, "通用启用状态");
saveOrUpdate("common", "enable_status", EnableStatusEnum.ENABLED.getLabel(), EnableStatusEnum.ENABLED.getValue(), 1, "通用启用状态");
saveOrUpdate("common", "common_status", CommonStatusEnum.DISABLED.getLabel(), CommonStatusEnum.DISABLED.getValue(), 0, "通用状态");
saveOrUpdate("common", "common_status", CommonStatusEnum.ENABLED.getLabel(), CommonStatusEnum.ENABLED.getValue(), 1, "通用状态");
saveOrUpdate("common", "common_status", CommonStatusEnum.DRAFT.getLabel(), CommonStatusEnum.DRAFT.getValue(), 2, "通用状态");
saveOrUpdate("common", "common_status", CommonStatusEnum.PROCESSING.getLabel(), CommonStatusEnum.PROCESSING.getValue(), 3, "通用状态");
saveOrUpdate("common", "common_status", CommonStatusEnum.COMPLETED.getLabel(), CommonStatusEnum.COMPLETED.getValue(), 4, "通用状态");
saveOrUpdate("common", "common_status", CommonStatusEnum.FAILED.getLabel(), CommonStatusEnum.FAILED.getValue(), 5, "通用状态");
saveOrUpdate("rag", "parse_status", RagParseStatusEnum.UPLOADED.getLabel(), RagParseStatusEnum.UPLOADED.getValue(), 1, "RAG文档解析状态");
saveOrUpdate("rag", "parse_status", RagParseStatusEnum.PARSING.getLabel(), RagParseStatusEnum.PARSING.getValue(), 2, "RAG文档解析状态");
saveOrUpdate("rag", "parse_status", RagParseStatusEnum.PARSED.getLabel(), RagParseStatusEnum.PARSED.getValue(), 3, "RAG文档解析状态");
saveOrUpdate("rag", "parse_status", RagParseStatusEnum.FAILED.getLabel(), RagParseStatusEnum.FAILED.getValue(), 4, "RAG文档解析状态");
saveOrUpdate("rag", "index_status", RagIndexStatusEnum.PENDING.getLabel(), RagIndexStatusEnum.PENDING.getValue(), 1, "RAG文档索引状态");
saveOrUpdate("rag", "index_status", RagIndexStatusEnum.INDEXING.getLabel(), RagIndexStatusEnum.INDEXING.getValue(), 2, "RAG文档索引状态");
saveOrUpdate("rag", "index_status", RagIndexStatusEnum.INDEXED.getLabel(), RagIndexStatusEnum.INDEXED.getValue(), 3, "RAG文档索引状态");
saveOrUpdate("rag", "index_status", RagIndexStatusEnum.FAILED.getLabel(), RagIndexStatusEnum.FAILED.getValue(), 4, "RAG文档索引状态");
}
private void saveOrUpdate(String catalog, String type, String name, Integer value, Integer sort, String remark) {
SysEnum sysEnum = sysEnumService.getOne(new LambdaQueryWrapper<SysEnum>()
.eq(SysEnum::getCatalog, catalog)
.eq(SysEnum::getType, type)
.eq(SysEnum::getName, name));
if (sysEnum == null) {
sysEnum = new SysEnum();
}
sysEnum.setCatalog(catalog);
sysEnum.setType(type);
sysEnum.setName(name);
sysEnum.setValue(value);
sysEnum.setStrvalue(null);
sysEnum.setSort(sort);
sysEnum.setRemark(remark);
sysEnumService.saveOrUpdate(sysEnum);
}
}