refactor: 统一系统枚举接口入参与返回体

This commit is contained in:
zhiye.sun
2026-05-19 16:21:30 +08:00
committed by bruce
parent 603c006c49
commit fc97c3998d
6 changed files with 114 additions and 21 deletions

View File

@@ -1,6 +1,9 @@
package com.bruce.common.controller;
import com.bruce.common.entity.SysEnum;
import com.bruce.common.domain.entity.SysEnum;
import com.bruce.common.domain.model.RequestResult;
import com.bruce.common.dto.request.SysEnumQueryRequest;
import com.bruce.common.dto.request.SysEnumSaveRequest;
import com.bruce.common.service.ISysEnumService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -11,7 +14,6 @@ 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;
@@ -26,25 +28,25 @@ public class SysEnumController {
@Operation(summary = "查询全部系统枚举")
@GetMapping
public List<SysEnum> list() {
return sysEnumService.list();
public RequestResult<List<SysEnum>> list() {
return RequestResult.success(sysEnumService.list());
}
@Operation(summary = "根据模块和类型查询系统枚举")
@GetMapping("/query")
public List<SysEnum> queryByCatalogAndType(@RequestParam String catalog, @RequestParam String type) {
return sysEnumService.listByCatalogAndType(catalog, type);
@PostMapping("/query")
public RequestResult<List<SysEnum>> queryByCatalogAndType(@RequestBody SysEnumQueryRequest request) {
return RequestResult.success(sysEnumService.listByCatalogAndType(request));
}
@Operation(summary = "新增或修改系统枚举")
@PostMapping
public boolean saveOrUpdate(@RequestBody SysEnum sysEnum) {
return sysEnumService.saveOrUpdate(sysEnum);
public RequestResult<Boolean> saveOrUpdate(@RequestBody SysEnumSaveRequest request) {
return RequestResult.success(sysEnumService.saveOrUpdate(request));
}
@Operation(summary = "删除系统枚举")
@DeleteMapping("/{id}")
public boolean deleteById(@PathVariable Long id) {
return sysEnumService.removeById(id);
public RequestResult<Boolean> deleteById(@PathVariable Long id) {
return RequestResult.success(sysEnumService.removeById(id));
}
}

View File

@@ -0,0 +1,15 @@
package com.bruce.common.dto.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "系统枚举查询请求")
public class SysEnumQueryRequest {
@Schema(description = "模块目录")
private String catalog;
@Schema(description = "枚举类型")
private String type;
}

View File

@@ -0,0 +1,33 @@
package com.bruce.common.dto.request;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "系统枚举保存请求")
public class SysEnumSaveRequest {
@Schema(description = "主键ID")
private Long id;
@Schema(description = "模块目录")
private String catalog;
@Schema(description = "枚举类型")
private String type;
@Schema(description = "枚举名称")
private String name;
@Schema(description = "整型值")
private Integer value;
@Schema(description = "字符串值")
private String strvalue;
@Schema(description = "排序")
private Integer sort;
@Schema(description = "备注")
private String remark;
}

View File

@@ -1,11 +1,15 @@
package com.bruce.common.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bruce.common.entity.SysEnum;
import com.bruce.common.domain.entity.SysEnum;
import com.bruce.common.dto.request.SysEnumQueryRequest;
import com.bruce.common.dto.request.SysEnumSaveRequest;
import java.util.List;
public interface ISysEnumService extends IService<SysEnum> {
List<SysEnum> listByCatalogAndType(String catalog, String type);
List<SysEnum> listByCatalogAndType(SysEnumQueryRequest request);
boolean saveOrUpdate(SysEnumSaveRequest request);
}

View File

@@ -1,10 +1,13 @@
package com.bruce.common.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bruce.common.entity.SysEnum;
import com.bruce.common.domain.entity.SysEnum;
import com.bruce.common.dto.request.SysEnumQueryRequest;
import com.bruce.common.dto.request.SysEnumSaveRequest;
import com.bruce.common.mapper.SysEnumMapper;
import com.bruce.common.service.ISysEnumService;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
@@ -12,11 +15,32 @@ import java.util.List;
public class SysEnumServiceImpl extends ServiceImpl<SysEnumMapper, SysEnum> implements ISysEnumService {
@Override
public List<SysEnum> listByCatalogAndType(String catalog, String type) {
public List<SysEnum> listByCatalogAndType(SysEnumQueryRequest request) {
if (request == null) {
throw new IllegalArgumentException("查询请求不能为空");
}
return lambdaQuery()
.eq(SysEnum::getCatalog, catalog)
.eq(SysEnum::getType, type)
.eq(StringUtils.hasText(request.getCatalog()), SysEnum::getCatalog, request.getCatalog())
.eq(StringUtils.hasText(request.getType()), SysEnum::getType, request.getType())
.orderByAsc(SysEnum::getSort)
.list();
}
@Override
public boolean saveOrUpdate(SysEnumSaveRequest request) {
if (request == null) {
throw new IllegalArgumentException("保存请求不能为空");
}
SysEnum sysEnum = new SysEnum();
sysEnum.setId(request.getId());
sysEnum.setCatalog(request.getCatalog());
sysEnum.setType(request.getType());
sysEnum.setName(request.getName());
sysEnum.setValue(request.getValue());
sysEnum.setStrvalue(request.getStrvalue());
sysEnum.setSort(request.getSort());
sysEnum.setRemark(request.getRemark());
return super.saveOrUpdate(sysEnum);
}
}

View File

@@ -4,14 +4,19 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bruce.common.controller.SysEnumController;
import com.bruce.common.entity.SysEnum;
import com.bruce.common.domain.entity.SysEnum;
import com.bruce.common.domain.model.RequestResult;
import com.bruce.common.dto.request.SysEnumQueryRequest;
import com.bruce.common.dto.request.SysEnumSaveRequest;
import com.bruce.common.mapper.SysEnumMapper;
import com.bruce.common.service.ISysEnumService;
import com.bruce.common.service.impl.SysEnumServiceImpl;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Method;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -28,20 +33,30 @@ class SysEnumComponentStructureTests {
@Test
void sysEnumShouldExposeQueryMethodForCatalogAndType() throws NoSuchMethodException {
Method serviceMethod = ISysEnumService.class.getMethod("listByCatalogAndType", String.class, String.class);
Method controllerMethod = SysEnumController.class.getMethod("queryByCatalogAndType", String.class, String.class);
Method serviceMethod = ISysEnumService.class.getMethod("listByCatalogAndType", SysEnumQueryRequest.class);
Method controllerMethod = SysEnumController.class.getMethod("queryByCatalogAndType", SysEnumQueryRequest.class);
assertNotNull(serviceMethod);
assertNotNull(controllerMethod);
assertEquals(List.class, serviceMethod.getReturnType());
assertEquals(RequestResult.class, controllerMethod.getReturnType());
}
@Test
void sysEnumShouldExposeSaveOrUpdateAndDeleteInterfaces() throws NoSuchMethodException {
Method saveOrUpdateMethod = SysEnumController.class.getMethod("saveOrUpdate", SysEnum.class);
Method saveOrUpdateMethod = ISysEnumService.class.getMethod("saveOrUpdate", SysEnumSaveRequest.class);
Method controllerSaveOrUpdateMethod = SysEnumController.class.getMethod("saveOrUpdate", SysEnumSaveRequest.class);
Method deleteMethod = SysEnumController.class.getMethod("deleteById", Long.class);
Method listMethod = SysEnumController.class.getMethod("list");
assertNotNull(saveOrUpdateMethod);
assertNotNull(controllerSaveOrUpdateMethod);
assertNotNull(deleteMethod);
assertNotNull(listMethod);
assertEquals(boolean.class, saveOrUpdateMethod.getReturnType());
assertEquals(RequestResult.class, controllerSaveOrUpdateMethod.getReturnType());
assertEquals(RequestResult.class, deleteMethod.getReturnType());
assertEquals(RequestResult.class, listMethod.getReturnType());
}
@Test