feat: 完善sys_enum枚举管理与初始化能力
This commit is contained in:
@@ -4,9 +4,13 @@ import com.bruce.common.entity.SysEnum;
|
||||
import com.bruce.common.service.ISysEnumService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
@@ -33,4 +37,16 @@ public class SysEnumController {
|
||||
public List<SysEnum> queryByCatalogAndType(@RequestParam String catalog, @RequestParam String type) {
|
||||
return sysEnumService.listByCatalogAndType(catalog, type);
|
||||
}
|
||||
|
||||
@Operation(summary = "新增或修改系统枚举")
|
||||
@PostMapping
|
||||
public boolean saveOrUpdate(@RequestBody SysEnum sysEnum) {
|
||||
return sysEnumService.saveOrUpdate(sysEnum);
|
||||
}
|
||||
|
||||
@Operation(summary = "删除系统枚举")
|
||||
@DeleteMapping("/{id}")
|
||||
public boolean deleteById(@PathVariable Long id) {
|
||||
return sysEnumService.removeById(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("sys_setting")
|
||||
@TableName("sys_enum")
|
||||
@Schema(description = "系统枚举配置")
|
||||
public class SysEnum extends BaseEntity {
|
||||
|
||||
|
||||
20
src/main/java/com/bruce/common/enums/CommonStatusEnum.java
Normal file
20
src/main/java/com/bruce/common/enums/CommonStatusEnum.java
Normal file
@@ -0,0 +1,20 @@
|
||||
package com.bruce.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum CommonStatusEnum {
|
||||
|
||||
DISABLED(0, "禁用"),
|
||||
ENABLED(1, "启用"),
|
||||
DRAFT(2, "草稿"),
|
||||
PROCESSING(3, "处理中"),
|
||||
COMPLETED(4, "已完成"),
|
||||
FAILED(5, "失败");
|
||||
|
||||
private final Integer value;
|
||||
|
||||
private final String label;
|
||||
}
|
||||
16
src/main/java/com/bruce/common/enums/EnableStatusEnum.java
Normal file
16
src/main/java/com/bruce/common/enums/EnableStatusEnum.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.bruce.common.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum EnableStatusEnum {
|
||||
|
||||
DISABLED(0, "禁用"),
|
||||
ENABLED(1, "启用");
|
||||
|
||||
private final Integer value;
|
||||
|
||||
private final String label;
|
||||
}
|
||||
18
src/main/java/com/bruce/rag/enums/RagIndexStatusEnum.java
Normal file
18
src/main/java/com/bruce/rag/enums/RagIndexStatusEnum.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.bruce.rag.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RagIndexStatusEnum {
|
||||
|
||||
PENDING(1, "待索引"),
|
||||
INDEXING(2, "索引中"),
|
||||
INDEXED(3, "已索引"),
|
||||
FAILED(4, "索引失败");
|
||||
|
||||
private final Integer value;
|
||||
|
||||
private final String label;
|
||||
}
|
||||
18
src/main/java/com/bruce/rag/enums/RagParseStatusEnum.java
Normal file
18
src/main/java/com/bruce/rag/enums/RagParseStatusEnum.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.bruce.rag.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum RagParseStatusEnum {
|
||||
|
||||
UPLOADED(1, "已上传"),
|
||||
PARSING(2, "解析中"),
|
||||
PARSED(3, "已解析"),
|
||||
FAILED(4, "解析失败");
|
||||
|
||||
private final Integer value;
|
||||
|
||||
private final String label;
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user