重构:初步封装后端 CRUD 公共组件(BaseController、BaseService、BaseServiceImpl)

This commit is contained in:
2023-01-29 23:40:29 +08:00
parent dab3e597c2
commit d7851bc811
24 changed files with 686 additions and 101 deletions

View File

@@ -35,7 +35,7 @@ import org.springframework.web.bind.annotation.RestController;
import cn.dev33.satoken.annotation.SaIgnore;
import top.charles7c.cnadmin.common.config.properties.ContinewAdminProperties;
import top.charles7c.cnadmin.common.config.properties.ContiNewAdminProperties;
/**
* 启动程序
@@ -51,7 +51,7 @@ import top.charles7c.cnadmin.common.config.properties.ContinewAdminProperties;
@ComponentScan(basePackages = {"top.charles7c.cnadmin", "cn.hutool.extra.spring"})
public class ContinewAdminApplication implements ApplicationRunner {
private final ContinewAdminProperties properties;
private final ContiNewAdminProperties properties;
private final ServerProperties serverProperties;
public static void main(String[] args) {

View File

@@ -42,7 +42,7 @@ import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import top.charles7c.cnadmin.common.config.properties.CaptchaProperties;
import top.charles7c.cnadmin.common.config.properties.ContinewAdminProperties;
import top.charles7c.cnadmin.common.config.properties.ContiNewAdminProperties;
import top.charles7c.cnadmin.common.consts.CacheConstants;
import top.charles7c.cnadmin.common.model.vo.CaptchaVO;
import top.charles7c.cnadmin.common.model.vo.R;
@@ -64,7 +64,7 @@ import top.charles7c.cnadmin.common.util.validate.CheckUtils;
public class CaptchaController {
private final CaptchaProperties captchaProperties;
private final ContinewAdminProperties properties;
private final ContiNewAdminProperties properties;
@Operation(summary = "获取图片验证码", description = "获取图片验证码Base64编码带图片格式data:image/gif;base64")
@GetMapping("/img")

View File

@@ -16,19 +16,20 @@
package top.charles7c.cnadmin.webapi.controller.system;
import java.util.List;
import static top.charles7c.cnadmin.common.annotation.CrudRequestMapping.Api;
import lombok.RequiredArgsConstructor;
import java.util.List;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import top.charles7c.cnadmin.common.annotation.CrudRequestMapping;
import top.charles7c.cnadmin.common.base.BaseController;
import top.charles7c.cnadmin.common.model.request.UpdateStatusRequest;
import top.charles7c.cnadmin.common.model.vo.R;
import top.charles7c.cnadmin.system.model.query.DeptQuery;
@@ -44,39 +45,22 @@ import top.charles7c.cnadmin.system.service.DeptService;
*/
@Tag(name = "部门管理 API")
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/system/dept", produces = MediaType.APPLICATION_JSON_VALUE)
public class DeptController {
@CrudRequestMapping(value = "/system/dept", api = {Api.ALL})
public class DeptController
extends BaseController<DeptService, DeptVO, DeptVO, DeptQuery, CreateDeptRequest, CreateDeptRequest> {
private final DeptService deptService;
@Operation(summary = "查询部门列表")
@GetMapping
@Override
@Operation(summary = "查询部门列表树")
public R<List<DeptVO>> list(@Validated DeptQuery query) {
List<DeptVO> list = deptService.list(query);
return R.ok(deptService.buildListTree(list));
}
@Operation(summary = "新增部门")
@PostMapping
public R<Long> create(@Validated @RequestBody CreateDeptRequest request) {
Long id = deptService.create(request);
return R.ok("新增成功", id);
List<DeptVO> list = baseService.list(query);
return R.ok(baseService.buildListTree(list));
}
@Operation(summary = "修改部门状态")
@Parameter(name = "ids", description = "ID 列表", in = ParameterIn.PATH)
@PatchMapping("/{ids}")
public R updateStatus(@PathVariable List<Long> ids, @Validated @RequestBody UpdateStatusRequest request) {
deptService.updateStatus(ids, request.getStatus());
baseService.updateStatus(ids, request.getStatus());
return R.ok(String.format("%s成功", request.getStatus().getDescription()));
}
@Operation(summary = "删除部门")
@Parameter(name = "ids", description = "ID 列表", in = ParameterIn.PATH)
@DeleteMapping("/{ids}")
public R delete(@PathVariable List<Long> ids) {
deptService.delete(ids);
return R.ok("删除成功");
}
}

View File

@@ -160,6 +160,8 @@ spring:
# 启用的环境
# 配合 Maven Profile 选择不同配置文件进行启动,在 IntelliJ IDEA 右侧 Maven 工具窗口可以快速切换环境
active: @profiles.active@
main:
allow-bean-definition-overriding: true
## JSON 配置
jackson:
# 时区配置