Commit 352a67c5300dc08f6469839723e3bca52aec8091
1 parent
b0c25ea9
多模块重构 11:修改代码生成器的实现
Showing
45 changed files
with
739 additions
and
288 deletions
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/TestDemoController.http deleted
| 1 | -### 请求 /tool/test-demo/get 接口 => 成功 | ||
| 2 | -GET {{baseUrl}}/tool/test-demo/get?id=1 | ||
| 3 | -Authorization: Bearer {{token}} | ||
| 4 | -tenant-id: {{adminTenentId}} | ||
| 5 | - | ||
| 6 | -### 请求 /tool/test-demo/list 接口 => 成功 | ||
| 7 | -GET {{baseUrl}}/tool/test-demo/list?ids=1 | ||
| 8 | -Authorization: Bearer {{token}} | ||
| 9 | -tenant-id: {{adminTenentId}} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/package-info.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.admin.test; |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoBaseVO.java
| 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; |
| 2 | 2 | ||
| 3 | -import io.swagger.annotations.ApiModelProperty; | ||
| 4 | -import lombok.Data; | ||
| 5 | - | ||
| 6 | -import javax.validation.constraints.NotNull; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | * 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 | 9 | * 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 |
| @@ -12,23 +12,23 @@ import javax.validation.constraints.NotNull; | @@ -12,23 +12,23 @@ import javax.validation.constraints.NotNull; | ||
| 12 | @Data | 12 | @Data |
| 13 | public class TestDemoBaseVO { | 13 | public class TestDemoBaseVO { |
| 14 | 14 | ||
| 15 | - @ApiModelProperty(value = "名字", required = true, example = "芋道") | 15 | + @ApiModelProperty(value = "名字", required = true) |
| 16 | @NotNull(message = "名字不能为空") | 16 | @NotNull(message = "名字不能为空") |
| 17 | private String name; | 17 | private String name; |
| 18 | 18 | ||
| 19 | - @ApiModelProperty(value = "状态", required = true, example = "1") | 19 | + @ApiModelProperty(value = "状态", required = true) |
| 20 | @NotNull(message = "状态不能为空") | 20 | @NotNull(message = "状态不能为空") |
| 21 | private Integer status; | 21 | private Integer status; |
| 22 | 22 | ||
| 23 | - @ApiModelProperty(value = "类型", required = true, example = "2") | 23 | + @ApiModelProperty(value = "类型", required = true) |
| 24 | @NotNull(message = "类型不能为空") | 24 | @NotNull(message = "类型不能为空") |
| 25 | private Integer type; | 25 | private Integer type; |
| 26 | 26 | ||
| 27 | - @ApiModelProperty(value = "分类", required = true, example = "3") | 27 | + @ApiModelProperty(value = "分类", required = true) |
| 28 | @NotNull(message = "分类不能为空") | 28 | @NotNull(message = "分类不能为空") |
| 29 | private Integer category; | 29 | private Integer category; |
| 30 | 30 | ||
| 31 | - @ApiModelProperty(value = "备注", example = "我是备注") | 31 | + @ApiModelProperty(value = "备注") |
| 32 | private String remark; | 32 | private String remark; |
| 33 | 33 | ||
| 34 | } | 34 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoCreateReqVO.java
| 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; |
| 2 | 2 | ||
| 3 | -import io.swagger.annotations.ApiModel; | ||
| 4 | -import lombok.Data; | ||
| 5 | -import lombok.EqualsAndHashCode; | ||
| 6 | -import lombok.ToString; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | 7 | ||
| 8 | @ApiModel("管理后台 - 字典类型创建 Request VO") | 8 | @ApiModel("管理后台 - 字典类型创建 Request VO") |
| 9 | @Data | 9 | @Data |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoExportReqVO.java
| 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; |
| 2 | 2 | ||
| 3 | -import io.swagger.annotations.ApiModel; | ||
| 4 | -import io.swagger.annotations.ApiModelProperty; | ||
| 5 | -import lombok.Data; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 6 | import org.springframework.format.annotation.DateTimeFormat; | 7 | import org.springframework.format.annotation.DateTimeFormat; |
| 7 | 8 | ||
| 8 | -import java.util.Date; | ||
| 9 | - | ||
| 10 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | 9 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 11 | 10 | ||
| 12 | @ApiModel(value = "管理后台 - 字典类型 Excel 导出 Request VO", description = "参数和 TestDemoPageReqVO 是一致的") | 11 | @ApiModel(value = "管理后台 - 字典类型 Excel 导出 Request VO", description = "参数和 TestDemoPageReqVO 是一致的") |
| 13 | @Data | 12 | @Data |
| 14 | public class TestDemoExportReqVO { | 13 | public class TestDemoExportReqVO { |
| 15 | 14 | ||
| 16 | - @ApiModelProperty(value = "名字", example = "芋道") | 15 | + @ApiModelProperty(value = "名字") |
| 17 | private String name; | 16 | private String name; |
| 18 | 17 | ||
| 19 | - @ApiModelProperty(value = "状态", example = "1") | 18 | + @ApiModelProperty(value = "状态") |
| 20 | private Integer status; | 19 | private Integer status; |
| 21 | 20 | ||
| 22 | - @ApiModelProperty(value = "类型", example = "2") | 21 | + @ApiModelProperty(value = "类型") |
| 23 | private Integer type; | 22 | private Integer type; |
| 24 | 23 | ||
| 25 | - @ApiModelProperty(value = "分类", example = "3") | 24 | + @ApiModelProperty(value = "分类") |
| 26 | private Integer category; | 25 | private Integer category; |
| 27 | 26 | ||
| 28 | - @ApiModelProperty(value = "备注", example = "我是备注") | 27 | + @ApiModelProperty(value = "备注") |
| 29 | private String remark; | 28 | private String remark; |
| 30 | 29 | ||
| 31 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoPageReqVO.java
| 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; |
| 2 | 2 | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 6 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | -import io.swagger.annotations.ApiModel; | ||
| 5 | -import io.swagger.annotations.ApiModelProperty; | ||
| 6 | -import lombok.Data; | ||
| 7 | -import lombok.EqualsAndHashCode; | ||
| 8 | -import lombok.ToString; | ||
| 9 | import org.springframework.format.annotation.DateTimeFormat; | 7 | import org.springframework.format.annotation.DateTimeFormat; |
| 10 | 8 | ||
| 11 | -import java.util.Date; | ||
| 12 | - | ||
| 13 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | 9 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 14 | 10 | ||
| 15 | @ApiModel("管理后台 - 字典类型分页 Request VO") | 11 | @ApiModel("管理后台 - 字典类型分页 Request VO") |
| @@ -18,19 +14,19 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | @@ -18,19 +14,19 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||
| 18 | @ToString(callSuper = true) | 14 | @ToString(callSuper = true) |
| 19 | public class TestDemoPageReqVO extends PageParam { | 15 | public class TestDemoPageReqVO extends PageParam { |
| 20 | 16 | ||
| 21 | - @ApiModelProperty(value = "名字", example = "芋道") | 17 | + @ApiModelProperty(value = "名字") |
| 22 | private String name; | 18 | private String name; |
| 23 | 19 | ||
| 24 | - @ApiModelProperty(value = "状态", example = "1") | 20 | + @ApiModelProperty(value = "状态") |
| 25 | private Integer status; | 21 | private Integer status; |
| 26 | 22 | ||
| 27 | - @ApiModelProperty(value = "类型", example = "2") | 23 | + @ApiModelProperty(value = "类型") |
| 28 | private Integer type; | 24 | private Integer type; |
| 29 | 25 | ||
| 30 | - @ApiModelProperty(value = "分类", example = "3") | 26 | + @ApiModelProperty(value = "分类") |
| 31 | private Integer category; | 27 | private Integer category; |
| 32 | 28 | ||
| 33 | - @ApiModelProperty(value = "备注", example = "我是备注") | 29 | + @ApiModelProperty(value = "备注") |
| 34 | private String remark; | 30 | private String remark; |
| 35 | 31 | ||
| 36 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 32 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoRespVO.java
| 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; |
| 2 | 2 | ||
| 3 | -import io.swagger.annotations.ApiModel; | ||
| 4 | -import io.swagger.annotations.ApiModelProperty; | ||
| 5 | -import lombok.Data; | ||
| 6 | -import lombok.EqualsAndHashCode; | ||
| 7 | -import lombok.ToString; | ||
| 8 | - | ||
| 9 | -import java.util.Date; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 10 | 6 | ||
| 11 | @ApiModel("管理后台 - 字典类型 Response VO") | 7 | @ApiModel("管理后台 - 字典类型 Response VO") |
| 12 | @Data | 8 | @Data |
| @@ -14,7 +10,7 @@ import java.util.Date; | @@ -14,7 +10,7 @@ import java.util.Date; | ||
| 14 | @ToString(callSuper = true) | 10 | @ToString(callSuper = true) |
| 15 | public class TestDemoRespVO extends TestDemoBaseVO { | 11 | public class TestDemoRespVO extends TestDemoBaseVO { |
| 16 | 12 | ||
| 17 | - @ApiModelProperty(value = "编号", required = true, example = "1") | 13 | + @ApiModelProperty(value = "编号", required = true) |
| 18 | private Long id; | 14 | private Long id; |
| 19 | 15 | ||
| 20 | @ApiModelProperty(value = "创建时间", required = true) | 16 | @ApiModelProperty(value = "创建时间", required = true) |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoUpdateReqVO.java
| 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | package cn.iocoder.yudao.module.tool.controller.admin.test.vo; |
| 2 | 2 | ||
| 3 | -import io.swagger.annotations.ApiModel; | ||
| 4 | -import io.swagger.annotations.ApiModelProperty; | ||
| 5 | -import lombok.Data; | ||
| 6 | -import lombok.EqualsAndHashCode; | ||
| 7 | -import lombok.ToString; | ||
| 8 | - | ||
| 9 | -import javax.validation.constraints.NotNull; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 10 | 7 | ||
| 11 | @ApiModel("管理后台 - 字典类型更新 Request VO") | 8 | @ApiModel("管理后台 - 字典类型更新 Request VO") |
| 12 | @Data | 9 | @Data |
| @@ -14,7 +11,7 @@ import javax.validation.constraints.NotNull; | @@ -14,7 +11,7 @@ import javax.validation.constraints.NotNull; | ||
| 14 | @ToString(callSuper = true) | 11 | @ToString(callSuper = true) |
| 15 | public class TestDemoUpdateReqVO extends TestDemoBaseVO { | 12 | public class TestDemoUpdateReqVO extends TestDemoBaseVO { |
| 16 | 13 | ||
| 17 | - @ApiModelProperty(value = "编号", required = true, example = "1") | 14 | + @ApiModelProperty(value = "编号", required = true) |
| 18 | @NotNull(message = "编号不能为空") | 15 | @NotNull(message = "编号不能为空") |
| 19 | private Long id; | 16 | private Long id; |
| 20 | 17 |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/TestDemoController.java renamed to yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/AppTestDemoController.java
| 1 | -package cn.iocoder.yudao.module.tool.controller.admin.test; | 1 | +package cn.iocoder.yudao.module.tool.controller.app.test; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 4 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 6 | -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 7 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.*; | ||
| 8 | -import cn.iocoder.yudao.module.tool.convert.test.TestDemoConvert; | ||
| 9 | -import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | ||
| 10 | -import cn.iocoder.yudao.module.tool.service.test.TestDemoService; | ||
| 11 | -import io.swagger.annotations.Api; | ||
| 12 | -import io.swagger.annotations.ApiImplicitParam; | ||
| 13 | -import io.swagger.annotations.ApiOperation; | ||
| 14 | import org.springframework.security.access.prepost.PreAuthorize; | 3 | import org.springframework.security.access.prepost.PreAuthorize; |
| 15 | -import org.springframework.validation.annotation.Validated; | ||
| 16 | import org.springframework.web.bind.annotation.*; | 4 | import org.springframework.web.bind.annotation.*; |
| 17 | - | ||
| 18 | import javax.annotation.Resource; | 5 | import javax.annotation.Resource; |
| 19 | -import javax.servlet.http.HttpServletResponse; | ||
| 20 | -import javax.validation.Valid; | 6 | +import org.springframework.validation.annotation.Validated; |
| 7 | + | ||
| 8 | +import io.swagger.annotations.*; | ||
| 9 | + | ||
| 10 | +import javax.validation.constraints.*; | ||
| 11 | +import javax.validation.*; | ||
| 12 | +import javax.servlet.http.*; | ||
| 13 | +import java.util.*; | ||
| 21 | import java.io.IOException; | 14 | import java.io.IOException; |
| 22 | -import java.util.Collection; | ||
| 23 | -import java.util.List; | ||
| 24 | 15 | ||
| 16 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 17 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 25 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 18 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 26 | -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||
| 27 | 19 | ||
| 28 | -@Api(tags = "管理后台 - 测试示例") | 20 | +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 21 | + | ||
| 22 | +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 23 | +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; | ||
| 24 | + | ||
| 25 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.*; | ||
| 26 | +import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | ||
| 27 | +import cn.iocoder.yudao.module.tool.convert.test.TestDemoConvert; | ||
| 28 | +import cn.iocoder.yudao.module.tool.service.test.TestDemoService; | ||
| 29 | + | ||
| 30 | +@Api(tags = "用户 APP - 字典类型") | ||
| 29 | @RestController | 31 | @RestController |
| 30 | @RequestMapping("/tool/test-demo") | 32 | @RequestMapping("/tool/test-demo") |
| 31 | @Validated | 33 | @Validated |
| 32 | -public class TestDemoController { | 34 | +public class AppTestDemoController { |
| 33 | 35 | ||
| 34 | @Resource | 36 | @Resource |
| 35 | private TestDemoService testDemoService; | 37 | private TestDemoService testDemoService; |
| 36 | 38 | ||
| 37 | @PostMapping("/create") | 39 | @PostMapping("/create") |
| 38 | - @ApiOperation("创建测试示例") | ||
| 39 | - @PreAuthorize("@ss.hasPermission('tool:test-demo:create')") | ||
| 40 | - public CommonResult<Long> createTestDemo(@Valid @RequestBody TestDemoCreateReqVO createReqVO) { | 40 | + @ApiOperation("创建字典类型") |
| 41 | + public CommonResult<Long> createTestDemo(@Valid @RequestBody AppTestDemoCreateReqVO createReqVO) { | ||
| 41 | return success(testDemoService.createTestDemo(createReqVO)); | 42 | return success(testDemoService.createTestDemo(createReqVO)); |
| 42 | } | 43 | } |
| 43 | 44 | ||
| 44 | @PutMapping("/update") | 45 | @PutMapping("/update") |
| 45 | - @ApiOperation("更新测试示例") | ||
| 46 | - @PreAuthorize("@ss.hasPermission('tool:test-demo:update')") | ||
| 47 | - public CommonResult<Boolean> updateTestDemo(@Valid @RequestBody TestDemoUpdateReqVO updateReqVO) { | 46 | + @ApiOperation("更新字典类型") |
| 47 | + public CommonResult<Boolean> updateTestDemo(@Valid @RequestBody AppTestDemoUpdateReqVO updateReqVO) { | ||
| 48 | testDemoService.updateTestDemo(updateReqVO); | 48 | testDemoService.updateTestDemo(updateReqVO); |
| 49 | return success(true); | 49 | return success(true); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | @DeleteMapping("/delete") | 52 | @DeleteMapping("/delete") |
| 53 | - @ApiOperation("删除测试示例") | 53 | + @ApiOperation("删除字典类型") |
| 54 | @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) | 54 | @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) |
| 55 | - @PreAuthorize("@ss.hasPermission('tool:test-demo:delete')") | ||
| 56 | public CommonResult<Boolean> deleteTestDemo(@RequestParam("id") Long id) { | 55 | public CommonResult<Boolean> deleteTestDemo(@RequestParam("id") Long id) { |
| 57 | testDemoService.deleteTestDemo(id); | 56 | testDemoService.deleteTestDemo(id); |
| 58 | return success(true); | 57 | return success(true); |
| 59 | } | 58 | } |
| 60 | 59 | ||
| 61 | @GetMapping("/get") | 60 | @GetMapping("/get") |
| 62 | - @ApiOperation("获得测试示例") | ||
| 63 | - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) | 61 | + @ApiOperation("获得字典类型") |
| 62 | + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) | ||
| 64 | @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") | 63 | @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") |
| 65 | -// @Lock4j // 分布式锁 | ||
| 66 | - public CommonResult<TestDemoRespVO> getTestDemo(@RequestParam("id") Long id) { | 64 | + public CommonResult<AppTestDemoRespVO> getTestDemo(@RequestParam("id") Long id) { |
| 67 | TestDemoDO testDemo = testDemoService.getTestDemo(id); | 65 | TestDemoDO testDemo = testDemoService.getTestDemo(id); |
| 68 | return success(TestDemoConvert.INSTANCE.convert(testDemo)); | 66 | return success(TestDemoConvert.INSTANCE.convert(testDemo)); |
| 69 | } | 67 | } |
| 70 | 68 | ||
| 71 | @GetMapping("/list") | 69 | @GetMapping("/list") |
| 72 | - @ApiOperation("获得测试示例列表") | ||
| 73 | - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, dataTypeClass = List.class) | ||
| 74 | - @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") | ||
| 75 | -// @RateLimiter(name = "backendA") | ||
| 76 | - public CommonResult<List<TestDemoRespVO>> getTestDemoList(@RequestParam("ids") Collection<Long> ids) { | 70 | + @ApiOperation("获得字典类型列表") |
| 71 | + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) | ||
| 72 | + public CommonResult<List<AppTestDemoRespVO>> getTestDemoList(@RequestParam("ids") Collection<Long> ids) { | ||
| 77 | List<TestDemoDO> list = testDemoService.getTestDemoList(ids); | 73 | List<TestDemoDO> list = testDemoService.getTestDemoList(ids); |
| 78 | return success(TestDemoConvert.INSTANCE.convertList(list)); | 74 | return success(TestDemoConvert.INSTANCE.convertList(list)); |
| 79 | } | 75 | } |
| 80 | 76 | ||
| 81 | @GetMapping("/page") | 77 | @GetMapping("/page") |
| 82 | - @ApiOperation("获得测试示例分页") | ||
| 83 | - @PreAuthorize("@ss.hasPermission('tool:test-demo:query')") | ||
| 84 | - public CommonResult<PageResult<TestDemoRespVO>> getTestDemoPage(@Valid TestDemoPageReqVO pageVO) { | 78 | + @ApiOperation("获得字典类型分页") |
| 79 | + public CommonResult<PageResult<AppTestDemoRespVO>> getTestDemoPage(@Valid AppTestDemoPageReqVO pageVO) { | ||
| 85 | PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(pageVO); | 80 | PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(pageVO); |
| 86 | return success(TestDemoConvert.INSTANCE.convertPage(pageResult)); | 81 | return success(TestDemoConvert.INSTANCE.convertPage(pageResult)); |
| 87 | } | 82 | } |
| 88 | 83 | ||
| 89 | @GetMapping("/export-excel") | 84 | @GetMapping("/export-excel") |
| 90 | - @ApiOperation("导出测试示例 Excel") | ||
| 91 | - @PreAuthorize("@ss.hasPermission('tool:test-demo:export')") | 85 | + @ApiOperation("导出字典类型 Excel") |
| 92 | @OperateLog(type = EXPORT) | 86 | @OperateLog(type = EXPORT) |
| 93 | - public void exportTestDemoExcel(@Valid TestDemoExportReqVO exportReqVO, | 87 | + public void exportTestDemoExcel(@Valid AppTestDemoExportReqVO exportReqVO, |
| 94 | HttpServletResponse response) throws IOException { | 88 | HttpServletResponse response) throws IOException { |
| 95 | List<TestDemoDO> list = testDemoService.getTestDemoList(exportReqVO); | 89 | List<TestDemoDO> list = testDemoService.getTestDemoList(exportReqVO); |
| 96 | // 导出 Excel | 90 | // 导出 Excel |
| 97 | - List<TestDemoExcelVO> datas = TestDemoConvert.INSTANCE.convertList02(list); | ||
| 98 | - ExcelUtils.write(response, "测试示例.xls", "数据", TestDemoExcelVO.class, datas); | 91 | + List<AppTestDemoExcelVO> datas = TestDemoConvert.INSTANCE.convertList02(list); |
| 92 | + ExcelUtils.write(response, "字典类型.xls", "数据", AppTestDemoExcelVO.class, datas); | ||
| 99 | } | 93 | } |
| 100 | 94 | ||
| 101 | } | 95 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | +* 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 | ||
| 10 | +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | ||
| 11 | +*/ | ||
| 12 | +@Data | ||
| 13 | +public class AppTestDemoBaseVO { | ||
| 14 | + | ||
| 15 | + @ApiModelProperty(value = "名字", required = true) | ||
| 16 | + @NotNull(message = "名字不能为空") | ||
| 17 | + private String name; | ||
| 18 | + | ||
| 19 | + @ApiModelProperty(value = "状态", required = true) | ||
| 20 | + @NotNull(message = "状态不能为空") | ||
| 21 | + private Integer status; | ||
| 22 | + | ||
| 23 | + @ApiModelProperty(value = "类型", required = true) | ||
| 24 | + @NotNull(message = "类型不能为空") | ||
| 25 | + private Integer type; | ||
| 26 | + | ||
| 27 | + @ApiModelProperty(value = "分类", required = true) | ||
| 28 | + @NotNull(message = "分类不能为空") | ||
| 29 | + private Integer category; | ||
| 30 | + | ||
| 31 | + @ApiModelProperty(value = "备注") | ||
| 32 | + private String remark; | ||
| 33 | + | ||
| 34 | +} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoCreateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | + | ||
| 8 | +@ApiModel("用户 APP - 字典类型创建 Request VO") | ||
| 9 | +@Data | ||
| 10 | +@EqualsAndHashCode(callSuper = true) | ||
| 11 | +@ToString(callSuper = true) | ||
| 12 | +public class AppTestDemoCreateReqVO extends AppTestDemoBaseVO { | ||
| 13 | + | ||
| 14 | +} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoExcelVO.java renamed to yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoExcelVO.java
| 1 | -package cn.iocoder.yudao.module.tool.controller.admin.test.vo; | 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | ||
| 4 | -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | ||
| 5 | -import com.alibaba.excel.annotation.ExcelProperty; | ||
| 6 | -import lombok.Data; | 3 | +import lombok.*; |
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 7 | 6 | ||
| 8 | -import java.util.Date; | 7 | +import com.alibaba.excel.annotation.ExcelProperty; |
| 9 | 8 | ||
| 10 | /** | 9 | /** |
| 11 | - * 测试示例 Excel VO | 10 | + * 字典类型 Excel VO |
| 12 | * | 11 | * |
| 13 | - * @author 芋艿 | 12 | + * @author 芋道源码 |
| 14 | */ | 13 | */ |
| 15 | @Data | 14 | @Data |
| 16 | -public class TestDemoExcelVO { | 15 | +public class AppTestDemoExcelVO { |
| 17 | 16 | ||
| 18 | @ExcelProperty("编号") | 17 | @ExcelProperty("编号") |
| 19 | private Long id; | 18 | private Long id; |
| @@ -21,16 +20,13 @@ public class TestDemoExcelVO { | @@ -21,16 +20,13 @@ public class TestDemoExcelVO { | ||
| 21 | @ExcelProperty("名字") | 20 | @ExcelProperty("名字") |
| 22 | private String name; | 21 | private String name; |
| 23 | 22 | ||
| 24 | - @ExcelProperty(value = "状态", converter = DictConvert.class) | ||
| 25 | - @DictFormat("") | 23 | + @ExcelProperty("状态") |
| 26 | private Integer status; | 24 | private Integer status; |
| 27 | 25 | ||
| 28 | - @ExcelProperty(value = "类型", converter = DictConvert.class) | ||
| 29 | - @DictFormat("sys_common_status") | 26 | + @ExcelProperty("类型") |
| 30 | private Integer type; | 27 | private Integer type; |
| 31 | 28 | ||
| 32 | - @ExcelProperty(value = "分类", converter = DictConvert.class) | ||
| 33 | - @DictFormat("inf_redis_timeout_type") | 29 | + @ExcelProperty("分类") |
| 34 | private Integer category; | 30 | private Integer category; |
| 35 | 31 | ||
| 36 | @ExcelProperty("备注") | 32 | @ExcelProperty("备注") |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoExportReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 7 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 8 | + | ||
| 9 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 10 | + | ||
| 11 | +@ApiModel(value = "用户 APP - 字典类型 Excel 导出 Request VO", description = "参数和 TestDemoPageReqVO 是一致的") | ||
| 12 | +@Data | ||
| 13 | +public class AppTestDemoExportReqVO { | ||
| 14 | + | ||
| 15 | + @ApiModelProperty(value = "名字") | ||
| 16 | + private String name; | ||
| 17 | + | ||
| 18 | + @ApiModelProperty(value = "状态") | ||
| 19 | + private Integer status; | ||
| 20 | + | ||
| 21 | + @ApiModelProperty(value = "类型") | ||
| 22 | + private Integer type; | ||
| 23 | + | ||
| 24 | + @ApiModelProperty(value = "分类") | ||
| 25 | + private Integer category; | ||
| 26 | + | ||
| 27 | + @ApiModelProperty(value = "备注") | ||
| 28 | + private String remark; | ||
| 29 | + | ||
| 30 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 31 | + @ApiModelProperty(value = "开始创建时间") | ||
| 32 | + private Date beginCreateTime; | ||
| 33 | + | ||
| 34 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 35 | + @ApiModelProperty(value = "结束创建时间") | ||
| 36 | + private Date endCreateTime; | ||
| 37 | + | ||
| 38 | +} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoPageReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import cn.iocoder.yudao.framework.common.pojo.PageParam; | ||
| 7 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 8 | + | ||
| 9 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 10 | + | ||
| 11 | +@ApiModel("用户 APP - 字典类型分页 Request VO") | ||
| 12 | +@Data | ||
| 13 | +@EqualsAndHashCode(callSuper = true) | ||
| 14 | +@ToString(callSuper = true) | ||
| 15 | +public class AppTestDemoPageReqVO extends PageParam { | ||
| 16 | + | ||
| 17 | + @ApiModelProperty(value = "名字") | ||
| 18 | + private String name; | ||
| 19 | + | ||
| 20 | + @ApiModelProperty(value = "状态") | ||
| 21 | + private Integer status; | ||
| 22 | + | ||
| 23 | + @ApiModelProperty(value = "类型") | ||
| 24 | + private Integer type; | ||
| 25 | + | ||
| 26 | + @ApiModelProperty(value = "分类") | ||
| 27 | + private Integer category; | ||
| 28 | + | ||
| 29 | + @ApiModelProperty(value = "备注") | ||
| 30 | + private String remark; | ||
| 31 | + | ||
| 32 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 33 | + @ApiModelProperty(value = "开始创建时间") | ||
| 34 | + private Date beginCreateTime; | ||
| 35 | + | ||
| 36 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 37 | + @ApiModelProperty(value = "结束创建时间") | ||
| 38 | + private Date endCreateTime; | ||
| 39 | + | ||
| 40 | +} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoRespVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | + | ||
| 7 | +@ApiModel("用户 APP - 字典类型 Response VO") | ||
| 8 | +@Data | ||
| 9 | +@EqualsAndHashCode(callSuper = true) | ||
| 10 | +@ToString(callSuper = true) | ||
| 11 | +public class AppTestDemoRespVO extends AppTestDemoBaseVO { | ||
| 12 | + | ||
| 13 | + @ApiModelProperty(value = "编号", required = true) | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + @ApiModelProperty(value = "创建时间", required = true) | ||
| 17 | + private Date createTime; | ||
| 18 | + | ||
| 19 | +} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/test/vo/AppTestDemoUpdateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.controller.app.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | +import javax.validation.constraints.*; | ||
| 7 | + | ||
| 8 | +@ApiModel("用户 APP - 字典类型更新 Request VO") | ||
| 9 | +@Data | ||
| 10 | +@EqualsAndHashCode(callSuper = true) | ||
| 11 | +@ToString(callSuper = true) | ||
| 12 | +public class AppTestDemoUpdateReqVO extends AppTestDemoBaseVO { | ||
| 13 | + | ||
| 14 | + @ApiModelProperty(value = "编号", required = true) | ||
| 15 | + @NotNull(message = "编号不能为空") | ||
| 16 | + private Long id; | ||
| 17 | + | ||
| 18 | +} |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/convert/test/TestDemoConvert.java
| @@ -4,29 +4,31 @@ import java.util.*; | @@ -4,29 +4,31 @@ import java.util.*; | ||
| 4 | 4 | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | ||
| 7 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoCreateReqVO; | ||
| 8 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExcelVO; | ||
| 9 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoRespVO; | ||
| 10 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoUpdateReqVO; | ||
| 11 | import org.mapstruct.Mapper; | 7 | import org.mapstruct.Mapper; |
| 12 | import org.mapstruct.factory.Mappers; | 8 | import org.mapstruct.factory.Mappers; |
| 9 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.*; | ||
| 13 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | 10 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; |
| 14 | 11 | ||
| 12 | +/** | ||
| 13 | + * 字典类型 Convert | ||
| 14 | + * | ||
| 15 | + * @author 芋道源码 | ||
| 16 | + */ | ||
| 15 | @Mapper | 17 | @Mapper |
| 16 | public interface TestDemoConvert { | 18 | public interface TestDemoConvert { |
| 17 | 19 | ||
| 18 | TestDemoConvert INSTANCE = Mappers.getMapper(TestDemoConvert.class); | 20 | TestDemoConvert INSTANCE = Mappers.getMapper(TestDemoConvert.class); |
| 19 | 21 | ||
| 20 | - TestDemoDO convert(TestDemoCreateReqVO bean); | 22 | + TestDemoDO convert(AppTestDemoCreateReqVO bean); |
| 21 | 23 | ||
| 22 | - TestDemoDO convert(TestDemoUpdateReqVO bean); | 24 | + TestDemoDO convert(AppTestDemoUpdateReqVO bean); |
| 23 | 25 | ||
| 24 | - TestDemoRespVO convert(TestDemoDO bean); | 26 | + AppTestDemoRespVO convert(TestDemoDO bean); |
| 25 | 27 | ||
| 26 | - List<TestDemoRespVO> convertList(List<TestDemoDO> list); | 28 | + List<AppTestDemoRespVO> convertList(List<TestDemoDO> list); |
| 27 | 29 | ||
| 28 | - PageResult<TestDemoRespVO> convertPage(PageResult<TestDemoDO> page); | 30 | + PageResult<AppTestDemoRespVO> convertPage(PageResult<TestDemoDO> page); |
| 29 | 31 | ||
| 30 | - List<TestDemoExcelVO> convertList02(List<TestDemoDO> list); | 32 | + List<AppTestDemoExcelVO> convertList02(List<TestDemoDO> list); |
| 31 | 33 | ||
| 32 | } | 34 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/test/TestDemoDO.java
| 1 | package cn.iocoder.yudao.module.tool.dal.dataobject.test; | 1 | package cn.iocoder.yudao.module.tool.dal.dataobject.test; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | +import java.util.*; | ||
| 4 | import com.baomidou.mybatisplus.annotation.*; | 5 | import com.baomidou.mybatisplus.annotation.*; |
| 5 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 6 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 6 | 7 | ||
| 7 | /** | 8 | /** |
| 8 | - * 测试示例 DO | 9 | + * 字典类型 DO |
| 9 | * | 10 | * |
| 10 | - * @author 芋艿 | 11 | + * @author 芋道源码 |
| 11 | */ | 12 | */ |
| 12 | @TableName("tool_test_demo") | 13 | @TableName("tool_test_demo") |
| 13 | @Data | 14 | @Data |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/test/TestDemoMapper.java
| @@ -3,36 +3,64 @@ package cn.iocoder.yudao.module.tool.dal.mysql.test; | @@ -3,36 +3,64 @@ package cn.iocoder.yudao.module.tool.dal.mysql.test; | ||
| 3 | import java.util.*; | 3 | import java.util.*; |
| 4 | 4 | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | -import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX; | 6 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 7 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 8 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExportReqVO; | ||
| 9 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoPageReqVO; | 8 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.AppTestDemoExportReqVO; |
| 9 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.AppTestDemoPageReqVO; | ||
| 10 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | 10 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; |
| 11 | import org.apache.ibatis.annotations.Mapper; | 11 | import org.apache.ibatis.annotations.Mapper; |
| 12 | +import cn.iocoder.yudao.module.tool.controller.admin.test.vo.*; | ||
| 12 | 13 | ||
| 14 | +/** | ||
| 15 | + * 字典类型 Mapper | ||
| 16 | + * | ||
| 17 | + * @author 芋道源码 | ||
| 18 | + */ | ||
| 13 | @Mapper | 19 | @Mapper |
| 14 | public interface TestDemoMapper extends BaseMapperX<TestDemoDO> { | 20 | public interface TestDemoMapper extends BaseMapperX<TestDemoDO> { |
| 15 | 21 | ||
| 16 | default PageResult<TestDemoDO> selectPage(TestDemoPageReqVO reqVO) { | 22 | default PageResult<TestDemoDO> selectPage(TestDemoPageReqVO reqVO) { |
| 17 | - return selectPage(reqVO, new QueryWrapperX<TestDemoDO>() | ||
| 18 | - .likeIfPresent("name", reqVO.getName()) | ||
| 19 | - .eqIfPresent("status", reqVO.getStatus()) | ||
| 20 | - .eqIfPresent("type", reqVO.getType()) | ||
| 21 | - .eqIfPresent("category", reqVO.getCategory()) | ||
| 22 | - .eqIfPresent("remark", reqVO.getRemark()) | ||
| 23 | - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 24 | - .orderByDesc("id")); | 23 | + return selectPage(reqVO, new LambdaQueryWrapperX<TestDemoDO>() |
| 24 | + .likeIfPresent(TestDemoDO::getName, reqVO.getName()) | ||
| 25 | + .eqIfPresent(TestDemoDO::getStatus, reqVO.getStatus()) | ||
| 26 | + .eqIfPresent(TestDemoDO::getType, reqVO.getType()) | ||
| 27 | + .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) | ||
| 28 | + .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) | ||
| 29 | + .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 30 | + .orderByDesc(TestDemoDO::getId)); | ||
| 25 | } | 31 | } |
| 26 | 32 | ||
| 27 | default List<TestDemoDO> selectList(TestDemoExportReqVO reqVO) { | 33 | default List<TestDemoDO> selectList(TestDemoExportReqVO reqVO) { |
| 28 | - return selectList(new QueryWrapperX<TestDemoDO>() | ||
| 29 | - .likeIfPresent("name", reqVO.getName()) | ||
| 30 | - .eqIfPresent("status", reqVO.getStatus()) | ||
| 31 | - .eqIfPresent("type", reqVO.getType()) | ||
| 32 | - .eqIfPresent("category", reqVO.getCategory()) | ||
| 33 | - .eqIfPresent("remark", reqVO.getRemark()) | ||
| 34 | - .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 35 | - .orderByDesc("id")); | 34 | + return selectList(new LambdaQueryWrapperX<TestDemoDO>() |
| 35 | + .likeIfPresent(TestDemoDO::getName, reqVO.getName()) | ||
| 36 | + .eqIfPresent(TestDemoDO::getStatus, reqVO.getStatus()) | ||
| 37 | + .eqIfPresent(TestDemoDO::getType, reqVO.getType()) | ||
| 38 | + .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) | ||
| 39 | + .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) | ||
| 40 | + .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 41 | + .orderByDesc(TestDemoDO::getId)); | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + default PageResult<TestDemoDO> selectPage(AppTestDemoPageReqVO reqVO) { | ||
| 45 | + return selectPage(reqVO, new LambdaQueryWrapperX<TestDemoDO>() | ||
| 46 | + .likeIfPresent(TestDemoDO::getName, reqVO.getName()) | ||
| 47 | + .eqIfPresent(TestDemoDO::getStatus, reqVO.getStatus()) | ||
| 48 | + .eqIfPresent(TestDemoDO::getType, reqVO.getType()) | ||
| 49 | + .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) | ||
| 50 | + .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) | ||
| 51 | + .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 52 | + .orderByDesc(TestDemoDO::getId)); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + default List<TestDemoDO> selectList(AppTestDemoExportReqVO reqVO) { | ||
| 56 | + return selectList(new LambdaQueryWrapperX<TestDemoDO>() | ||
| 57 | + .likeIfPresent(TestDemoDO::getName, reqVO.getName()) | ||
| 58 | + .eqIfPresent(TestDemoDO::getStatus, reqVO.getStatus()) | ||
| 59 | + .eqIfPresent(TestDemoDO::getType, reqVO.getType()) | ||
| 60 | + .eqIfPresent(TestDemoDO::getCategory, reqVO.getCategory()) | ||
| 61 | + .eqIfPresent(TestDemoDO::getRemark, reqVO.getRemark()) | ||
| 62 | + .betweenIfPresent(TestDemoDO::getCreateTime, reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 63 | + .orderByDesc(TestDemoDO::getId)); | ||
| 36 | } | 64 | } |
| 37 | 65 | ||
| 38 | } | 66 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenSceneEnum.java
| 1 | package cn.iocoder.yudao.module.tool.enums.codegen; | 1 | package cn.iocoder.yudao.module.tool.enums.codegen; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ArrayUtil; | ||
| 3 | import lombok.AllArgsConstructor; | 4 | import lombok.AllArgsConstructor; |
| 4 | import lombok.Getter; | 5 | import lombok.Getter; |
| 5 | 6 | ||
| 7 | +import static cn.hutool.core.util.ArrayUtil.*; | ||
| 8 | + | ||
| 6 | /** | 9 | /** |
| 7 | * 代码生成的场景枚举 | 10 | * 代码生成的场景枚举 |
| 8 | * | 11 | * |
| @@ -12,8 +15,8 @@ import lombok.Getter; | @@ -12,8 +15,8 @@ import lombok.Getter; | ||
| 12 | @Getter | 15 | @Getter |
| 13 | public enum CodegenSceneEnum { | 16 | public enum CodegenSceneEnum { |
| 14 | 17 | ||
| 15 | - ADMIN(1, "管理后台", "admin"), | ||
| 16 | - APP(2, "用户 APP", "app"); | 18 | + ADMIN(1, "管理后台", "admin", ""), |
| 19 | + APP(2, "用户 APP", "app", "App"); | ||
| 17 | 20 | ||
| 18 | /** | 21 | /** |
| 19 | * 场景 | 22 | * 场景 |
| @@ -27,5 +30,13 @@ public enum CodegenSceneEnum { | @@ -27,5 +30,13 @@ public enum CodegenSceneEnum { | ||
| 27 | * 基础包名 | 30 | * 基础包名 |
| 28 | */ | 31 | */ |
| 29 | private final String basePackage; | 32 | private final String basePackage; |
| 33 | + /** | ||
| 34 | + * Controller 和 VO 类的前缀 | ||
| 35 | + */ | ||
| 36 | + private final String prefixClass; | ||
| 37 | + | ||
| 38 | + public static CodegenSceneEnum valueOf(Integer scene) { | ||
| 39 | + return firstMatch(sceneEnum -> sceneEnum.getScene().equals(scene), values()); | ||
| 40 | + } | ||
| 30 | 41 | ||
| 31 | } | 42 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenEngine.java
| @@ -9,6 +9,8 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | @@ -9,6 +9,8 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; | ||
| 9 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 9 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 10 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 10 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 13 | +import cn.iocoder.yudao.module.tool.enums.codegen.CodegenSceneEnum; | ||
| 12 | import cn.iocoder.yudao.module.tool.framework.codegen.config.CodegenProperties; | 14 | import cn.iocoder.yudao.module.tool.framework.codegen.config.CodegenProperties; |
| 13 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 15 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; |
| 14 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 16 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| @@ -54,22 +56,14 @@ public class CodegenEngine { | @@ -54,22 +56,14 @@ public class CodegenEngine { | ||
| 54 | */ | 56 | */ |
| 55 | private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序 | 57 | private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序 |
| 56 | // Java module-impl Main | 58 | // Java module-impl Main |
| 57 | - .put(javaTemplatePath("controller/vo/baseVO"), | ||
| 58 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}BaseVO")) | ||
| 59 | - .put(javaTemplatePath("controller/vo/createReqVO"), | ||
| 60 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}CreateReqVO")) | ||
| 61 | - .put(javaTemplatePath("controller/vo/pageReqVO"), | ||
| 62 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}PageReqVO")) | ||
| 63 | - .put(javaTemplatePath("controller/vo/respVO"), | ||
| 64 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}RespVO")) | ||
| 65 | - .put(javaTemplatePath("controller/vo/updateReqVO"), | ||
| 66 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}UpdateReqVO")) | ||
| 67 | - .put(javaTemplatePath("controller/vo/exportReqVO"), | ||
| 68 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}ExportReqVO")) | ||
| 69 | - .put(javaTemplatePath("controller/vo/excelVO"), | ||
| 70 | - javaModuleImplMainFilePath("controller/${table.businessName}/vo/${table.className}ExcelVO")) | ||
| 71 | - .put(javaTemplatePath("controller/controller"), | ||
| 72 | - javaModuleImplMainFilePath("controller/${table.businessName}/${table.className}Controller")) | 59 | + .put(javaTemplatePath("controller/vo/baseVO"), javaModuleImplVOFilePath("BaseVO")) |
| 60 | + .put(javaTemplatePath("controller/vo/createReqVO"), javaModuleImplVOFilePath("CreateReqVO")) | ||
| 61 | + .put(javaTemplatePath("controller/vo/pageReqVO"), javaModuleImplVOFilePath("PageReqVO")) | ||
| 62 | + .put(javaTemplatePath("controller/vo/respVO"), javaModuleImplVOFilePath("RespVO")) | ||
| 63 | + .put(javaTemplatePath("controller/vo/updateReqVO"), javaModuleImplVOFilePath("UpdateReqVO")) | ||
| 64 | + .put(javaTemplatePath("controller/vo/exportReqVO"), javaModuleImplVOFilePath("ExportReqVO")) | ||
| 65 | + .put(javaTemplatePath("controller/vo/excelVO"), javaModuleImplVOFilePath("ExcelVO")) | ||
| 66 | + .put(javaTemplatePath("controller/controller"), javaModuleImplControllerFilePath()) | ||
| 73 | .put(javaTemplatePath("convert/convert"), | 67 | .put(javaTemplatePath("convert/convert"), |
| 74 | javaModuleImplMainFilePath("convert/${table.businessName}/${table.className}Convert")) | 68 | javaModuleImplMainFilePath("convert/${table.businessName}/${table.className}Convert")) |
| 75 | .put(javaTemplatePath("dal/do"), | 69 | .put(javaTemplatePath("dal/do"), |
| @@ -84,8 +78,7 @@ public class CodegenEngine { | @@ -84,8 +78,7 @@ public class CodegenEngine { | ||
| 84 | .put(javaTemplatePath("test/serviceTest"), | 78 | .put(javaTemplatePath("test/serviceTest"), |
| 85 | javaModuleImplTestFilePath("service/${table.businessName}/${table.className}ServiceTest")) | 79 | javaModuleImplTestFilePath("service/${table.businessName}/${table.className}ServiceTest")) |
| 86 | // Java module-api Main | 80 | // Java module-api Main |
| 87 | - .put(javaTemplatePath("enums/errorcode"), | ||
| 88 | - javaModuleApiMainFilePath("enums/ErrorCodeConstants")) | 81 | + .put(javaTemplatePath("enums/errorcode"), javaModuleApiMainFilePath("enums/ErrorCodeConstants")) |
| 89 | // Vue | 82 | // Vue |
| 90 | .put(vueTemplatePath("views/index.vue"), | 83 | .put(vueTemplatePath("views/index.vue"), |
| 91 | vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) | 84 | vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) |
| @@ -96,9 +89,6 @@ public class CodegenEngine { | @@ -96,9 +89,6 @@ public class CodegenEngine { | ||
| 96 | .build(); | 89 | .build(); |
| 97 | 90 | ||
| 98 | @Resource | 91 | @Resource |
| 99 | - private CodegenBuilder codegenBuilder; | ||
| 100 | - | ||
| 101 | - @Resource | ||
| 102 | private CodegenProperties codegenProperties; | 92 | private CodegenProperties codegenProperties; |
| 103 | 93 | ||
| 104 | /** | 94 | /** |
| @@ -121,8 +111,7 @@ public class CodegenEngine { | @@ -121,8 +111,7 @@ public class CodegenEngine { | ||
| 121 | private void initGlobalBindingMap() { | 111 | private void initGlobalBindingMap() { |
| 122 | // 全局配置 | 112 | // 全局配置 |
| 123 | globalBindingMap.put("basePackage", codegenProperties.getBasePackage()); | 113 | globalBindingMap.put("basePackage", codegenProperties.getBasePackage()); |
| 124 | - globalBindingMap.put("baseFrameworkPackage", StrUtil.subBefore(codegenProperties.getBasePackage(), | ||
| 125 | - '.', true) + '.' + "framework"); // 用于后续获取测试类的 package 地址 | 114 | + globalBindingMap.put("baseFrameworkPackage", codegenProperties.getBasePackage() + '.' + "framework"); // 用于后续获取测试类的 package 地址 |
| 126 | // 全局 Java Bean | 115 | // 全局 Java Bean |
| 127 | globalBindingMap.put("CommonResultClassName", CommonResult.class.getName()); | 116 | globalBindingMap.put("CommonResultClassName", CommonResult.class.getName()); |
| 128 | globalBindingMap.put("PageResultClassName", PageResult.class.getName()); | 117 | globalBindingMap.put("PageResultClassName", PageResult.class.getName()); |
| @@ -132,7 +121,7 @@ public class CodegenEngine { | @@ -132,7 +121,7 @@ public class CodegenEngine { | ||
| 132 | // DO 类,独有字段 | 121 | // DO 类,独有字段 |
| 133 | globalBindingMap.put("baseDOFields", CodegenBuilder.BASE_DO_FIELDS); | 122 | globalBindingMap.put("baseDOFields", CodegenBuilder.BASE_DO_FIELDS); |
| 134 | globalBindingMap.put("BaseDOClassName", BaseDO.class.getName()); | 123 | globalBindingMap.put("BaseDOClassName", BaseDO.class.getName()); |
| 135 | - globalBindingMap.put("QueryWrapperClassName", QueryWrapperX.class.getName()); | 124 | + globalBindingMap.put("QueryWrapperClassName", LambdaQueryWrapperX.class.getName()); |
| 136 | globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); | 125 | globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); |
| 137 | // Util 工具类 | 126 | // Util 工具类 |
| 138 | globalBindingMap.put("ServiceExceptionUtilClassName", ServiceExceptionUtil.class.getName()); | 127 | globalBindingMap.put("ServiceExceptionUtilClassName", ServiceExceptionUtil.class.getName()); |
| @@ -150,13 +139,15 @@ public class CodegenEngine { | @@ -150,13 +139,15 @@ public class CodegenEngine { | ||
| 150 | bindingMap.put("table", table); | 139 | bindingMap.put("table", table); |
| 151 | bindingMap.put("columns", columns); | 140 | bindingMap.put("columns", columns); |
| 152 | bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, CodegenColumnDO::getPrimaryKey)); // 主键字段 | 141 | bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, CodegenColumnDO::getPrimaryKey)); // 主键字段 |
| 142 | + bindingMap.put("sceneEnum", CodegenSceneEnum.valueOf(table.getScene())); | ||
| 153 | // className 相关 | 143 | // className 相关 |
| 154 | - // 去掉指定前缀 将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 | 144 | + // 去掉指定前缀,将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 |
| 155 | String simpleClassName = removePrefix(table.getClassName(), upperFirst(table.getModuleName())); | 145 | String simpleClassName = removePrefix(table.getClassName(), upperFirst(table.getModuleName())); |
| 156 | bindingMap.put("simpleClassName", simpleClassName); | 146 | bindingMap.put("simpleClassName", simpleClassName); |
| 157 | bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type | 147 | bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type |
| 158 | bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 | 148 | bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 |
| 159 | - String simpleClassNameStrikeCase = toSymbolCase(simpleClassName, '-'); // 将 DictType 转换成 dict-type | 149 | + // 将 DictType 转换成 dict-type |
| 150 | + String simpleClassNameStrikeCase = toSymbolCase(simpleClassName, '-'); | ||
| 160 | bindingMap.put("simpleClassName_strikeCase", simpleClassNameStrikeCase); | 151 | bindingMap.put("simpleClassName_strikeCase", simpleClassNameStrikeCase); |
| 161 | // permission 前缀 | 152 | // permission 前缀 |
| 162 | bindingMap.put("permissionPrefix", table.getModuleName() + ":" + simpleClassNameStrikeCase); | 153 | bindingMap.put("permissionPrefix", table.getModuleName() + ":" + simpleClassNameStrikeCase); |
| @@ -176,7 +167,10 @@ public class CodegenEngine { | @@ -176,7 +167,10 @@ public class CodegenEngine { | ||
| 176 | getStr(bindingMap, "basePackage").replaceAll("\\.", "/")); | 167 | getStr(bindingMap, "basePackage").replaceAll("\\.", "/")); |
| 177 | filePath = StrUtil.replace(filePath, "${classNameVar}", | 168 | filePath = StrUtil.replace(filePath, "${classNameVar}", |
| 178 | getStr(bindingMap, "classNameVar")); | 169 | getStr(bindingMap, "classNameVar")); |
| 179 | - | 170 | + // sceneEnum 包含的字段 |
| 171 | + CodegenSceneEnum sceneEnum = (CodegenSceneEnum) bindingMap.get("sceneEnum"); | ||
| 172 | + filePath = StrUtil.replace(filePath, "${sceneEnum.prefixClass}", sceneEnum.getPrefixClass()); | ||
| 173 | + filePath = StrUtil.replace(filePath, "${sceneEnum.basePackage}", sceneEnum.getBasePackage()); | ||
| 180 | // table 包含的字段 | 174 | // table 包含的字段 |
| 181 | CodegenTableDO table = (CodegenTableDO) bindingMap.get("table"); | 175 | CodegenTableDO table = (CodegenTableDO) bindingMap.get("table"); |
| 182 | filePath = StrUtil.replace(filePath, "${table.moduleName}", table.getModuleName()); | 176 | filePath = StrUtil.replace(filePath, "${table.moduleName}", table.getModuleName()); |
| @@ -189,13 +183,22 @@ public class CodegenEngine { | @@ -189,13 +183,22 @@ public class CodegenEngine { | ||
| 189 | return "codegen/java/" + path + ".vm"; | 183 | return "codegen/java/" + path + ".vm"; |
| 190 | } | 184 | } |
| 191 | 185 | ||
| 186 | + private static String javaModuleImplVOFilePath(String path) { | ||
| 187 | + return javaModuleFilePath("controller/${sceneEnum.basePackage}/${table.businessName}/" + | ||
| 188 | + "vo/${sceneEnum.prefixClass}${table.className}" + path, "impl", "main"); | ||
| 189 | + } | ||
| 190 | + | ||
| 191 | + private static String javaModuleImplControllerFilePath() { | ||
| 192 | + return javaModuleFilePath("controller/${sceneEnum.basePackage}/${table.businessName}/" + | ||
| 193 | + "${sceneEnum.prefixClass}${table.className}Controller", "impl", "main"); | ||
| 194 | + } | ||
| 195 | + | ||
| 192 | private static String javaModuleImplMainFilePath(String path) { | 196 | private static String javaModuleImplMainFilePath(String path) { |
| 193 | return javaModuleFilePath(path, "impl", "main"); | 197 | return javaModuleFilePath(path, "impl", "main"); |
| 194 | } | 198 | } |
| 195 | 199 | ||
| 196 | private static String javaModuleApiMainFilePath(String path) { | 200 | private static String javaModuleApiMainFilePath(String path) { |
| 197 | return javaModuleFilePath(path, "api", "main"); | 201 | return javaModuleFilePath(path, "api", "main"); |
| 198 | - | ||
| 199 | } | 202 | } |
| 200 | 203 | ||
| 201 | private static String javaModuleImplTestFilePath(String path) { | 204 | private static String javaModuleImplTestFilePath(String path) { |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/test/TestDemoService.java
| @@ -2,18 +2,14 @@ package cn.iocoder.yudao.module.tool.service.test; | @@ -2,18 +2,14 @@ package cn.iocoder.yudao.module.tool.service.test; | ||
| 2 | 2 | ||
| 3 | import java.util.*; | 3 | import java.util.*; |
| 4 | import javax.validation.*; | 4 | import javax.validation.*; |
| 5 | - | ||
| 6 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoCreateReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExportReqVO; | ||
| 8 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoPageReqVO; | ||
| 9 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoUpdateReqVO; | 5 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.*; |
| 10 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | 6 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; |
| 11 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 12 | 8 | ||
| 13 | /** | 9 | /** |
| 14 | - * 测试示例 Service 接口 | 10 | + * 字典类型 Service 接口 |
| 15 | * | 11 | * |
| 16 | - * @author 芋艿 | 12 | + * @author 芋道源码 |
| 17 | */ | 13 | */ |
| 18 | public interface TestDemoService { | 14 | public interface TestDemoService { |
| 19 | 15 | ||
| @@ -23,14 +19,14 @@ public interface TestDemoService { | @@ -23,14 +19,14 @@ public interface TestDemoService { | ||
| 23 | * @param createReqVO 创建信息 | 19 | * @param createReqVO 创建信息 |
| 24 | * @return 编号 | 20 | * @return 编号 |
| 25 | */ | 21 | */ |
| 26 | - Long createTestDemo(@Valid TestDemoCreateReqVO createReqVO); | 22 | + Long createTestDemo(@Valid AppTestDemoCreateReqVO createReqVO); |
| 27 | 23 | ||
| 28 | /** | 24 | /** |
| 29 | * 更新字典类型 | 25 | * 更新字典类型 |
| 30 | * | 26 | * |
| 31 | * @param updateReqVO 更新信息 | 27 | * @param updateReqVO 更新信息 |
| 32 | */ | 28 | */ |
| 33 | - void updateTestDemo(@Valid TestDemoUpdateReqVO updateReqVO); | 29 | + void updateTestDemo(@Valid AppTestDemoUpdateReqVO updateReqVO); |
| 34 | 30 | ||
| 35 | /** | 31 | /** |
| 36 | * 删除字典类型 | 32 | * 删除字典类型 |
| @@ -61,7 +57,7 @@ public interface TestDemoService { | @@ -61,7 +57,7 @@ public interface TestDemoService { | ||
| 61 | * @param pageReqVO 分页查询 | 57 | * @param pageReqVO 分页查询 |
| 62 | * @return 字典类型分页 | 58 | * @return 字典类型分页 |
| 63 | */ | 59 | */ |
| 64 | - PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO); | 60 | + PageResult<TestDemoDO> getTestDemoPage(AppTestDemoPageReqVO pageReqVO); |
| 65 | 61 | ||
| 66 | /** | 62 | /** |
| 67 | * 获得字典类型列表, 用于 Excel 导出 | 63 | * 获得字典类型列表, 用于 Excel 导出 |
| @@ -69,6 +65,6 @@ public interface TestDemoService { | @@ -69,6 +65,6 @@ public interface TestDemoService { | ||
| 69 | * @param exportReqVO 查询条件 | 65 | * @param exportReqVO 查询条件 |
| 70 | * @return 字典类型列表 | 66 | * @return 字典类型列表 |
| 71 | */ | 67 | */ |
| 72 | - List<TestDemoDO> getTestDemoList(TestDemoExportReqVO exportReqVO); | 68 | + List<TestDemoDO> getTestDemoList(AppTestDemoExportReqVO exportReqVO); |
| 73 | 69 | ||
| 74 | } | 70 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/test/TestDemoServiceImpl.java
| 1 | package cn.iocoder.yudao.module.tool.service.test; | 1 | package cn.iocoder.yudao.module.tool.service.test; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoCreateReqVO; | ||
| 4 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExportReqVO; | ||
| 5 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoPageReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoUpdateReqVO; | ||
| 7 | import org.springframework.stereotype.Service; | 3 | import org.springframework.stereotype.Service; |
| 8 | import javax.annotation.Resource; | 4 | import javax.annotation.Resource; |
| 9 | import org.springframework.validation.annotation.Validated; | 5 | import org.springframework.validation.annotation.Validated; |
| 10 | 6 | ||
| 11 | import java.util.*; | 7 | import java.util.*; |
| 12 | - | 8 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.*; |
| 13 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | 9 | import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; |
| 14 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 10 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 15 | 11 | ||
| @@ -20,9 +16,9 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | @@ -20,9 +16,9 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | ||
| 20 | import static cn.iocoder.yudao.module.tool.enums.ErrorCodeConstants.*; | 16 | import static cn.iocoder.yudao.module.tool.enums.ErrorCodeConstants.*; |
| 21 | 17 | ||
| 22 | /** | 18 | /** |
| 23 | - * 测试示例 Service 实现类 | 19 | + * 字典类型 Service 实现类 |
| 24 | * | 20 | * |
| 25 | - * @author 芋艿 | 21 | + * @author 芋道源码 |
| 26 | */ | 22 | */ |
| 27 | @Service | 23 | @Service |
| 28 | @Validated | 24 | @Validated |
| @@ -32,7 +28,7 @@ public class TestDemoServiceImpl implements TestDemoService { | @@ -32,7 +28,7 @@ public class TestDemoServiceImpl implements TestDemoService { | ||
| 32 | private TestDemoMapper testDemoMapper; | 28 | private TestDemoMapper testDemoMapper; |
| 33 | 29 | ||
| 34 | @Override | 30 | @Override |
| 35 | - public Long createTestDemo(TestDemoCreateReqVO createReqVO) { | 31 | + public Long createTestDemo(AppTestDemoCreateReqVO createReqVO) { |
| 36 | // 插入 | 32 | // 插入 |
| 37 | TestDemoDO testDemo = TestDemoConvert.INSTANCE.convert(createReqVO); | 33 | TestDemoDO testDemo = TestDemoConvert.INSTANCE.convert(createReqVO); |
| 38 | testDemoMapper.insert(testDemo); | 34 | testDemoMapper.insert(testDemo); |
| @@ -41,7 +37,7 @@ public class TestDemoServiceImpl implements TestDemoService { | @@ -41,7 +37,7 @@ public class TestDemoServiceImpl implements TestDemoService { | ||
| 41 | } | 37 | } |
| 42 | 38 | ||
| 43 | @Override | 39 | @Override |
| 44 | - public void updateTestDemo(TestDemoUpdateReqVO updateReqVO) { | 40 | + public void updateTestDemo(AppTestDemoUpdateReqVO updateReqVO) { |
| 45 | // 校验存在 | 41 | // 校验存在 |
| 46 | this.validateTestDemoExists(updateReqVO.getId()); | 42 | this.validateTestDemoExists(updateReqVO.getId()); |
| 47 | // 更新 | 43 | // 更新 |
| @@ -74,12 +70,12 @@ public class TestDemoServiceImpl implements TestDemoService { | @@ -74,12 +70,12 @@ public class TestDemoServiceImpl implements TestDemoService { | ||
| 74 | } | 70 | } |
| 75 | 71 | ||
| 76 | @Override | 72 | @Override |
| 77 | - public PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO) { | 73 | + public PageResult<TestDemoDO> getTestDemoPage(AppTestDemoPageReqVO pageReqVO) { |
| 78 | return testDemoMapper.selectPage(pageReqVO); | 74 | return testDemoMapper.selectPage(pageReqVO); |
| 79 | } | 75 | } |
| 80 | 76 | ||
| 81 | @Override | 77 | @Override |
| 82 | - public List<TestDemoDO> getTestDemoList(TestDemoExportReqVO exportReqVO) { | 78 | + public List<TestDemoDO> getTestDemoList(AppTestDemoExportReqVO exportReqVO) { |
| 83 | return testDemoMapper.selectList(exportReqVO); | 79 | return testDemoMapper.selectList(exportReqVO); |
| 84 | } | 80 | } |
| 85 | 81 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/controller.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}; |
| 2 | 2 | ||
| 3 | import org.springframework.web.bind.annotation.*; | 3 | import org.springframework.web.bind.annotation.*; |
| 4 | import javax.annotation.Resource; | 4 | import javax.annotation.Resource; |
| 5 | import org.springframework.validation.annotation.Validated; | 5 | import org.springframework.validation.annotation.Validated; |
| 6 | -import org.springframework.security.access.prepost.PreAuthorize; | 6 | +#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end |
| 7 | 7 | ||
| 8 | import io.swagger.annotations.*; | 8 | import io.swagger.annotations.*; |
| 9 | 9 | ||
| @@ -22,32 +22,32 @@ import ${ExcelUtilsClassName}; | @@ -22,32 +22,32 @@ import ${ExcelUtilsClassName}; | ||
| 22 | import ${OperateLogClassName}; | 22 | import ${OperateLogClassName}; |
| 23 | import static ${OperateTypeEnumClassName}.*; | 23 | import static ${OperateTypeEnumClassName}.*; |
| 24 | 24 | ||
| 25 | -import ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo.*; | 25 | +import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; |
| 26 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | 26 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; |
| 27 | import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; | 27 | import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; |
| 28 | import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; | 28 | import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; |
| 29 | 29 | ||
| 30 | -@Api(tags = "${table.classComment}") | 30 | +@Api(tags = "${sceneEnum.name} - ${table.classComment}") |
| 31 | @RestController | 31 | @RestController |
| 32 | ##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 | 32 | ##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 |
| 33 | @RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") | 33 | @RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") |
| 34 | @Validated | 34 | @Validated |
| 35 | -public class ${table.className}Controller { | 35 | +public class ${sceneEnum.prefixClass}${table.className}Controller { |
| 36 | 36 | ||
| 37 | @Resource | 37 | @Resource |
| 38 | private ${table.className}Service ${classNameVar}Service; | 38 | private ${table.className}Service ${classNameVar}Service; |
| 39 | 39 | ||
| 40 | @PostMapping("/create") | 40 | @PostMapping("/create") |
| 41 | @ApiOperation("创建${table.classComment}") | 41 | @ApiOperation("创建${table.classComment}") |
| 42 | - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") | ||
| 43 | - public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${table.className}CreateReqVO createReqVO) { | 42 | +#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')")#end |
| 43 | + public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}CreateReqVO createReqVO) { | ||
| 44 | return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); | 44 | return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | @PutMapping("/update") | 47 | @PutMapping("/update") |
| 48 | @ApiOperation("更新${table.classComment}") | 48 | @ApiOperation("更新${table.classComment}") |
| 49 | - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") | ||
| 50 | - public CommonResult<Boolean> update${simpleClassName}(@Valid @RequestBody ${table.className}UpdateReqVO updateReqVO) { | 49 | +#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')")#end |
| 50 | + public CommonResult<Boolean> update${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}UpdateReqVO updateReqVO) { | ||
| 51 | ${classNameVar}Service.update${simpleClassName}(updateReqVO); | 51 | ${classNameVar}Service.update${simpleClassName}(updateReqVO); |
| 52 | return success(true); | 52 | return success(true); |
| 53 | } | 53 | } |
| @@ -55,7 +55,7 @@ public class ${table.className}Controller { | @@ -55,7 +55,7 @@ public class ${table.className}Controller { | ||
| 55 | @DeleteMapping("/delete") | 55 | @DeleteMapping("/delete") |
| 56 | @ApiOperation("删除${table.classComment}") | 56 | @ApiOperation("删除${table.classComment}") |
| 57 | @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = ${primaryColumn.javaType}.class) | 57 | @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = ${primaryColumn.javaType}.class) |
| 58 | - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") | 58 | +#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')")#end |
| 59 | public CommonResult<Boolean> delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { | 59 | public CommonResult<Boolean> delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { |
| 60 | ${classNameVar}Service.delete${simpleClassName}(id); | 60 | ${classNameVar}Service.delete${simpleClassName}(id); |
| 61 | return success(true); | 61 | return success(true); |
| @@ -65,7 +65,7 @@ public class ${table.className}Controller { | @@ -65,7 +65,7 @@ public class ${table.className}Controller { | ||
| 65 | @ApiOperation("获得${table.classComment}") | 65 | @ApiOperation("获得${table.classComment}") |
| 66 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = ${primaryColumn.javaType}.class) | 66 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = ${primaryColumn.javaType}.class) |
| 67 | @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") | 67 | @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") |
| 68 | - public CommonResult<${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { | 68 | + public CommonResult<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { |
| 69 | ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); | 69 | ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); |
| 70 | return success(${table.className}Convert.INSTANCE.convert(${classNameVar})); | 70 | return success(${table.className}Convert.INSTANCE.convert(${classNameVar})); |
| 71 | } | 71 | } |
| @@ -73,30 +73,30 @@ public class ${table.className}Controller { | @@ -73,30 +73,30 @@ public class ${table.className}Controller { | ||
| 73 | @GetMapping("/list") | 73 | @GetMapping("/list") |
| 74 | @ApiOperation("获得${table.classComment}列表") | 74 | @ApiOperation("获得${table.classComment}列表") |
| 75 | @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) | 75 | @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) |
| 76 | - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") | ||
| 77 | - public CommonResult<List<${table.className}RespVO>> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) { | 76 | +#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")#end |
| 77 | + public CommonResult<List<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) { | ||
| 78 | List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids); | 78 | List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids); |
| 79 | return success(${table.className}Convert.INSTANCE.convertList(list)); | 79 | return success(${table.className}Convert.INSTANCE.convertList(list)); |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | @GetMapping("/page") | 82 | @GetMapping("/page") |
| 83 | @ApiOperation("获得${table.classComment}分页") | 83 | @ApiOperation("获得${table.classComment}分页") |
| 84 | - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") | ||
| 85 | - public CommonResult<PageResult<${table.className}RespVO>> get${simpleClassName}Page(@Valid ${table.className}PageReqVO pageVO) { | 84 | +#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")#end |
| 85 | + public CommonResult<PageResult<${sceneEnum.prefixClass}${table.className}RespVO>> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageVO) { | ||
| 86 | PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageVO); | 86 | PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageVO); |
| 87 | return success(${table.className}Convert.INSTANCE.convertPage(pageResult)); | 87 | return success(${table.className}Convert.INSTANCE.convertPage(pageResult)); |
| 88 | } | 88 | } |
| 89 | 89 | ||
| 90 | @GetMapping("/export-excel") | 90 | @GetMapping("/export-excel") |
| 91 | @ApiOperation("导出${table.classComment} Excel") | 91 | @ApiOperation("导出${table.classComment} Excel") |
| 92 | - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')") | 92 | +#if ($sceneEnum.scene == 1) @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")#end |
| 93 | @OperateLog(type = EXPORT) | 93 | @OperateLog(type = EXPORT) |
| 94 | - public void export${simpleClassName}Excel(@Valid ${table.className}ExportReqVO exportReqVO, | 94 | + public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO, |
| 95 | HttpServletResponse response) throws IOException { | 95 | HttpServletResponse response) throws IOException { |
| 96 | List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(exportReqVO); | 96 | List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(exportReqVO); |
| 97 | // 导出 Excel | 97 | // 导出 Excel |
| 98 | - List<${table.className}ExcelVO> datas = ${table.className}Convert.INSTANCE.convertList02(list); | ||
| 99 | - ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}ExcelVO.class, datas); | 98 | + List<${sceneEnum.prefixClass}${table.className}ExcelVO> datas = ${table.className}Convert.INSTANCE.convertList02(list); |
| 99 | + ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}ExcelVO.class, datas); | ||
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | } | 102 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/baseVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| @@ -20,7 +20,7 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -20,7 +20,7 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 20 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | 20 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 |
| 21 | */ | 21 | */ |
| 22 | @Data | 22 | @Data |
| 23 | -public class ${table.className}BaseVO { | 23 | +public class ${sceneEnum.prefixClass}${table.className}BaseVO { |
| 24 | 24 | ||
| 25 | #foreach ($column in $columns) | 25 | #foreach ($column in $columns) |
| 26 | #if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 | 26 | #if (${column.createOperation} && ${column.updateOperation} && ${column.listOperationResult})##通用操作 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/createReqVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| @@ -15,11 +15,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -15,11 +15,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 15 | #end | 15 | #end |
| 16 | #end | 16 | #end |
| 17 | 17 | ||
| 18 | -@ApiModel("${table.classComment}创建 Request VO") | 18 | +@ApiModel("${sceneEnum.name} - ${table.classComment}创建 Request VO") |
| 19 | @Data | 19 | @Data |
| 20 | @EqualsAndHashCode(callSuper = true) | 20 | @EqualsAndHashCode(callSuper = true) |
| 21 | @ToString(callSuper = true) | 21 | @ToString(callSuper = true) |
| 22 | -public class ${table.className}CreateReqVO extends ${table.className}BaseVO { | 22 | +public class ${sceneEnum.prefixClass}${table.className}CreateReqVO extends ${sceneEnum.prefixClass}${table.className}BaseVO { |
| 23 | 23 | ||
| 24 | #foreach ($column in $columns) | 24 | #foreach ($column in $columns) |
| 25 | #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 | 25 | #if (${column.createOperation} && (!${column.updateOperation} || !${column.listOperationResult}))##不是通用字段 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/excelVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| @@ -20,7 +20,7 @@ import ${DictConvertClassName}; | @@ -20,7 +20,7 @@ import ${DictConvertClassName}; | ||
| 20 | * @author ${table.author} | 20 | * @author ${table.author} |
| 21 | */ | 21 | */ |
| 22 | @Data | 22 | @Data |
| 23 | -public class ${table.className}ExcelVO { | 23 | +public class ${sceneEnum.prefixClass}${table.className}ExcelVO { |
| 24 | 24 | ||
| 25 | #foreach ($column in $columns) | 25 | #foreach ($column in $columns) |
| 26 | #if (${column.listOperationResult})##返回字段 | 26 | #if (${column.listOperationResult})##返回字段 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/exportReqVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| @@ -22,9 +22,9 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -22,9 +22,9 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 22 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; | 22 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; |
| 23 | #end | 23 | #end |
| 24 | 24 | ||
| 25 | -@ApiModel(value = "${table.classComment} Excel 导出 Request VO", description = "参数和 ${table.className}PageReqVO 是一致的") | 25 | +@ApiModel(value = "${sceneEnum.name} - ${table.classComment} Excel 导出 Request VO", description = "参数和 ${table.className}PageReqVO 是一致的") |
| 26 | @Data | 26 | @Data |
| 27 | -public class ${table.className}ExportReqVO { | 27 | +public class ${sceneEnum.prefixClass}${table.className}ExportReqVO { |
| 28 | 28 | ||
| 29 | #foreach ($column in $columns) | 29 | #foreach ($column in $columns) |
| 30 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | 30 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/pageReqVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| @@ -22,11 +22,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -22,11 +22,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 22 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; | 22 | private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; |
| 23 | #end | 23 | #end |
| 24 | 24 | ||
| 25 | -@ApiModel("${table.classComment}分页 Request VO") | 25 | +@ApiModel("${sceneEnum.name} - ${table.classComment}分页 Request VO") |
| 26 | @Data | 26 | @Data |
| 27 | @EqualsAndHashCode(callSuper = true) | 27 | @EqualsAndHashCode(callSuper = true) |
| 28 | @ToString(callSuper = true) | 28 | @ToString(callSuper = true) |
| 29 | -public class ${table.className}PageReqVO extends PageParam { | 29 | +public class ${sceneEnum.prefixClass}${table.className}PageReqVO extends PageParam { |
| 30 | 30 | ||
| 31 | #foreach ($column in $columns) | 31 | #foreach ($column in $columns) |
| 32 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | 32 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/respVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| 5 | import io.swagger.annotations.*; | 5 | import io.swagger.annotations.*; |
| 6 | 6 | ||
| 7 | -@ApiModel("${table.classComment} Response VO") | 7 | +@ApiModel("${sceneEnum.name} - ${table.classComment} Response VO") |
| 8 | @Data | 8 | @Data |
| 9 | @EqualsAndHashCode(callSuper = true) | 9 | @EqualsAndHashCode(callSuper = true) |
| 10 | @ToString(callSuper = true) | 10 | @ToString(callSuper = true) |
| 11 | -public class ${table.className}RespVO extends ${table.className}BaseVO { | 11 | +public class ${sceneEnum.prefixClass}${table.className}RespVO extends ${sceneEnum.prefixClass}${table.className}BaseVO { |
| 12 | 12 | ||
| 13 | #foreach ($column in $columns) | 13 | #foreach ($column in $columns) |
| 14 | #if (${column.listOperationResult} && (!${column.createOperation} || !${column.updateOperation}))##不是通用字段 | 14 | #if (${column.listOperationResult} && (!${column.createOperation} || !${column.updateOperation}))##不是通用字段 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/controller/vo/updateReqVO.vm
| 1 | -package ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo; | 1 | +package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| @@ -15,11 +15,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | @@ -15,11 +15,11 @@ import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 15 | #end | 15 | #end |
| 16 | #end | 16 | #end |
| 17 | 17 | ||
| 18 | -@ApiModel("${table.classComment}更新 Request VO") | 18 | +@ApiModel("${sceneEnum.name} - ${table.classComment}更新 Request VO") |
| 19 | @Data | 19 | @Data |
| 20 | @EqualsAndHashCode(callSuper = true) | 20 | @EqualsAndHashCode(callSuper = true) |
| 21 | @ToString(callSuper = true) | 21 | @ToString(callSuper = true) |
| 22 | -public class ${table.className}UpdateReqVO extends ${table.className}BaseVO { | 22 | +public class ${sceneEnum.prefixClass}${table.className}UpdateReqVO extends ${sceneEnum.prefixClass}${table.className}BaseVO { |
| 23 | 23 | ||
| 24 | #foreach ($column in $columns) | 24 | #foreach ($column in $columns) |
| 25 | #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 | 25 | #if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}))##不是通用字段 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/convert/convert.vm
| @@ -6,7 +6,7 @@ import ${PageResultClassName}; | @@ -6,7 +6,7 @@ import ${PageResultClassName}; | ||
| 6 | 6 | ||
| 7 | import org.mapstruct.Mapper; | 7 | import org.mapstruct.Mapper; |
| 8 | import org.mapstruct.factory.Mappers; | 8 | import org.mapstruct.factory.Mappers; |
| 9 | -import ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo.*; | 9 | +import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; |
| 10 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | 10 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; |
| 11 | 11 | ||
| 12 | /** | 12 | /** |
| @@ -19,16 +19,16 @@ public interface ${table.className}Convert { | @@ -19,16 +19,16 @@ public interface ${table.className}Convert { | ||
| 19 | 19 | ||
| 20 | ${table.className}Convert INSTANCE = Mappers.getMapper(${table.className}Convert.class); | 20 | ${table.className}Convert INSTANCE = Mappers.getMapper(${table.className}Convert.class); |
| 21 | 21 | ||
| 22 | - ${table.className}DO convert(${table.className}CreateReqVO bean); | 22 | + ${table.className}DO convert(${sceneEnum.prefixClass}${table.className}CreateReqVO bean); |
| 23 | 23 | ||
| 24 | - ${table.className}DO convert(${table.className}UpdateReqVO bean); | 24 | + ${table.className}DO convert(${sceneEnum.prefixClass}${table.className}UpdateReqVO bean); |
| 25 | 25 | ||
| 26 | - ${table.className}RespVO convert(${table.className}DO bean); | 26 | + ${sceneEnum.prefixClass}${table.className}RespVO convert(${table.className}DO bean); |
| 27 | 27 | ||
| 28 | - List<${table.className}RespVO> convertList(List<${table.className}DO> list); | 28 | + List<${sceneEnum.prefixClass}${table.className}RespVO> convertList(List<${table.className}DO> list); |
| 29 | 29 | ||
| 30 | - PageResult<${table.className}RespVO> convertPage(PageResult<${table.className}DO> page); | 30 | + PageResult<${sceneEnum.prefixClass}${table.className}RespVO> convertPage(PageResult<${table.className}DO> page); |
| 31 | 31 | ||
| 32 | - List<${table.className}ExcelVO> convertList02(List<${table.className}DO> list); | 32 | + List<${sceneEnum.prefixClass}${table.className}ExcelVO> convertList02(List<${table.className}DO> list); |
| 33 | 33 | ||
| 34 | } | 34 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/dal/mapper.vm
| @@ -7,7 +7,7 @@ import ${QueryWrapperClassName}; | @@ -7,7 +7,7 @@ import ${QueryWrapperClassName}; | ||
| 7 | import ${BaseMapperClassName}; | 7 | import ${BaseMapperClassName}; |
| 8 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | 8 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; |
| 9 | import org.apache.ibatis.annotations.Mapper; | 9 | import org.apache.ibatis.annotations.Mapper; |
| 10 | -import ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo.*; | 10 | +import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; |
| 11 | 11 | ||
| 12 | ## 字段模板 | 12 | ## 字段模板 |
| 13 | #macro(listCondition) | 13 | #macro(listCondition) |
| @@ -15,28 +15,28 @@ import ${basePackage}.module.${table.moduleName}.controller.${table.businessName | @@ -15,28 +15,28 @@ import ${basePackage}.module.${table.moduleName}.controller.${table.businessName | ||
| 15 | #if (${column.listOperation}) | 15 | #if (${column.listOperation}) |
| 16 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | 16 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
| 17 | #if (${column.listOperationCondition} == "=")##情况一,= 的时候 | 17 | #if (${column.listOperationCondition} == "=")##情况一,= 的时候 |
| 18 | - .eqIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 18 | + .eqIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 19 | #end | 19 | #end |
| 20 | #if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 | 20 | #if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 |
| 21 | - .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 21 | + .neIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 22 | #end | 22 | #end |
| 23 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 | 23 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 |
| 24 | - .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 24 | + .gtIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 25 | #end | 25 | #end |
| 26 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 | 26 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 |
| 27 | - .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 27 | + .geIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 28 | #end | 28 | #end |
| 29 | #if (${column.listOperationCondition} == "<")##情况五,< 的时候 | 29 | #if (${column.listOperationCondition} == "<")##情况五,< 的时候 |
| 30 | - .ltIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 30 | + .ltIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 31 | #end | 31 | #end |
| 32 | #if (${column.listOperationCondition} == "<=")##情况五,<= 的时候 | 32 | #if (${column.listOperationCondition} == "<=")##情况五,<= 的时候 |
| 33 | - .leIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 33 | + .leIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 34 | #end | 34 | #end |
| 35 | #if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 | 35 | #if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 |
| 36 | - .likeIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 36 | + .likeIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) |
| 37 | #end | 37 | #end |
| 38 | #if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 | 38 | #if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 |
| 39 | - .betweenIfPresent("${column.columnName}", reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) | 39 | + .betweenIfPresent(${table.className}DO::get${JavaField}, reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) |
| 40 | #end | 40 | #end |
| 41 | #end | 41 | #end |
| 42 | #end | 42 | #end |
| @@ -49,18 +49,18 @@ import ${basePackage}.module.${table.moduleName}.controller.${table.businessName | @@ -49,18 +49,18 @@ import ${basePackage}.module.${table.moduleName}.controller.${table.businessName | ||
| 49 | @Mapper | 49 | @Mapper |
| 50 | public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { | 50 | public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { |
| 51 | 51 | ||
| 52 | - default PageResult<${table.className}DO> selectPage(${table.className}PageReqVO reqVO) { | ||
| 53 | - return selectPage(reqVO, new QueryWrapperX<${table.className}DO>() | 52 | + default PageResult<${table.className}DO> selectPage(${sceneEnum.prefixClass}${table.className}PageReqVO reqVO) { |
| 53 | + return selectPage(reqVO, new LambdaQueryWrapperX<${table.className}DO>() | ||
| 54 | #listCondition() | 54 | #listCondition() |
| 55 | - .orderByDesc("id")## 大多数情况下,id 倒序 | ||
| 56 | - ); | 55 | + .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 |
| 56 | + | ||
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | - default List<${table.className}DO> selectList(${table.className}ExportReqVO reqVO) { | ||
| 60 | - return selectList(new QueryWrapperX<${table.className}DO>() | 59 | + default List<${table.className}DO> selectList(${sceneEnum.prefixClass}${table.className}ExportReqVO reqVO) { |
| 60 | + return selectList(new LambdaQueryWrapperX<${table.className}DO>() | ||
| 61 | #listCondition() | 61 | #listCondition() |
| 62 | - .orderByDesc("id")## 大多数情况下,id 倒序 | ||
| 63 | - ); | 62 | + .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 |
| 63 | + | ||
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | } | 66 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/enums/errorcode.vm
| 1 | +// TODO 待办:请将下面的错误码复制到 yudao-module-${table.moduleName}-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! | ||
| 1 | // ========== ${table.classComment} TODO 补充编号 ========== | 2 | // ========== ${table.classComment} TODO 补充编号 ========== |
| 2 | ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); | 3 | ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/service/service.vm
| @@ -2,7 +2,7 @@ package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; | @@ -2,7 +2,7 @@ package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; | ||
| 2 | 2 | ||
| 3 | import java.util.*; | 3 | import java.util.*; |
| 4 | import javax.validation.*; | 4 | import javax.validation.*; |
| 5 | -import ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo.*; | 5 | +import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; |
| 6 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | 6 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; |
| 7 | import ${PageResultClassName}; | 7 | import ${PageResultClassName}; |
| 8 | 8 | ||
| @@ -19,14 +19,14 @@ public interface ${table.className}Service { | @@ -19,14 +19,14 @@ public interface ${table.className}Service { | ||
| 19 | * @param createReqVO 创建信息 | 19 | * @param createReqVO 创建信息 |
| 20 | * @return 编号 | 20 | * @return 编号 |
| 21 | */ | 21 | */ |
| 22 | - ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO); | 22 | + ${primaryColumn.javaType} create${simpleClassName}(@Valid ${sceneEnum.prefixClass}${table.className}CreateReqVO createReqVO); |
| 23 | 23 | ||
| 24 | /** | 24 | /** |
| 25 | * 更新${table.classComment} | 25 | * 更新${table.classComment} |
| 26 | * | 26 | * |
| 27 | * @param updateReqVO 更新信息 | 27 | * @param updateReqVO 更新信息 |
| 28 | */ | 28 | */ |
| 29 | - void update${simpleClassName}(@Valid ${table.className}UpdateReqVO updateReqVO); | 29 | + void update${simpleClassName}(@Valid ${sceneEnum.prefixClass}${table.className}UpdateReqVO updateReqVO); |
| 30 | 30 | ||
| 31 | /** | 31 | /** |
| 32 | * 删除${table.classComment} | 32 | * 删除${table.classComment} |
| @@ -57,7 +57,7 @@ public interface ${table.className}Service { | @@ -57,7 +57,7 @@ public interface ${table.className}Service { | ||
| 57 | * @param pageReqVO 分页查询 | 57 | * @param pageReqVO 分页查询 |
| 58 | * @return ${table.classComment}分页 | 58 | * @return ${table.classComment}分页 |
| 59 | */ | 59 | */ |
| 60 | - PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO); | 60 | + PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO); |
| 61 | 61 | ||
| 62 | /** | 62 | /** |
| 63 | * 获得${table.classComment}列表, 用于 Excel 导出 | 63 | * 获得${table.classComment}列表, 用于 Excel 导出 |
| @@ -65,6 +65,6 @@ public interface ${table.className}Service { | @@ -65,6 +65,6 @@ public interface ${table.className}Service { | ||
| 65 | * @param exportReqVO 查询条件 | 65 | * @param exportReqVO 查询条件 |
| 66 | * @return ${table.classComment}列表 | 66 | * @return ${table.classComment}列表 |
| 67 | */ | 67 | */ |
| 68 | - List<${table.className}DO> get${simpleClassName}List(${table.className}ExportReqVO exportReqVO); | 68 | + List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO); |
| 69 | 69 | ||
| 70 | } | 70 | } |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/service/serviceImpl.vm
| @@ -5,13 +5,12 @@ import javax.annotation.Resource; | @@ -5,13 +5,12 @@ import javax.annotation.Resource; | ||
| 5 | import org.springframework.validation.annotation.Validated; | 5 | import org.springframework.validation.annotation.Validated; |
| 6 | 6 | ||
| 7 | import java.util.*; | 7 | import java.util.*; |
| 8 | -import ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo.*; | 8 | +import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; |
| 9 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | 9 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; |
| 10 | import ${PageResultClassName}; | 10 | import ${PageResultClassName}; |
| 11 | 11 | ||
| 12 | import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; | 12 | import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; |
| 13 | import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; | 13 | import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; |
| 14 | -import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; | ||
| 15 | 14 | ||
| 16 | import static ${ServiceExceptionUtilClassName}.exception; | 15 | import static ${ServiceExceptionUtilClassName}.exception; |
| 17 | import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; | 16 | import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; |
| @@ -29,7 +28,7 @@ public class ${table.className}ServiceImpl implements ${table.className}Service | @@ -29,7 +28,7 @@ public class ${table.className}ServiceImpl implements ${table.className}Service | ||
| 29 | private ${table.className}Mapper ${classNameVar}Mapper; | 28 | private ${table.className}Mapper ${classNameVar}Mapper; |
| 30 | 29 | ||
| 31 | @Override | 30 | @Override |
| 32 | - public ${primaryColumn.javaType} create${simpleClassName}(${table.className}CreateReqVO createReqVO) { | 31 | + public ${primaryColumn.javaType} create${simpleClassName}(${sceneEnum.prefixClass}${table.className}CreateReqVO createReqVO) { |
| 33 | // 插入 | 32 | // 插入 |
| 34 | ${table.className}DO ${classNameVar} = ${table.className}Convert.INSTANCE.convert(createReqVO); | 33 | ${table.className}DO ${classNameVar} = ${table.className}Convert.INSTANCE.convert(createReqVO); |
| 35 | ${classNameVar}Mapper.insert(${classNameVar}); | 34 | ${classNameVar}Mapper.insert(${classNameVar}); |
| @@ -38,7 +37,7 @@ public class ${table.className}ServiceImpl implements ${table.className}Service | @@ -38,7 +37,7 @@ public class ${table.className}ServiceImpl implements ${table.className}Service | ||
| 38 | } | 37 | } |
| 39 | 38 | ||
| 40 | @Override | 39 | @Override |
| 41 | - public void update${simpleClassName}(${table.className}UpdateReqVO updateReqVO) { | 40 | + public void update${simpleClassName}(${sceneEnum.prefixClass}${table.className}UpdateReqVO updateReqVO) { |
| 42 | // 校验存在 | 41 | // 校验存在 |
| 43 | this.validate${simpleClassName}Exists(updateReqVO.getId()); | 42 | this.validate${simpleClassName}Exists(updateReqVO.getId()); |
| 44 | // 更新 | 43 | // 更新 |
| @@ -71,12 +70,12 @@ public class ${table.className}ServiceImpl implements ${table.className}Service | @@ -71,12 +70,12 @@ public class ${table.className}ServiceImpl implements ${table.className}Service | ||
| 71 | } | 70 | } |
| 72 | 71 | ||
| 73 | @Override | 72 | @Override |
| 74 | - public PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO) { | 73 | + public PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) { |
| 75 | return ${classNameVar}Mapper.selectPage(pageReqVO); | 74 | return ${classNameVar}Mapper.selectPage(pageReqVO); |
| 76 | } | 75 | } |
| 77 | 76 | ||
| 78 | @Override | 77 | @Override |
| 79 | - public List<${table.className}DO> get${simpleClassName}List(${table.className}ExportReqVO exportReqVO) { | 78 | + public List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO) { |
| 80 | return ${classNameVar}Mapper.selectList(exportReqVO); | 79 | return ${classNameVar}Mapper.selectList(exportReqVO); |
| 81 | } | 80 | } |
| 82 | 81 |
yudao-module-tool/yudao-module-tool-impl/src/main/resources/codegen/java/test/serviceTest.vm
| @@ -5,9 +5,9 @@ import org.springframework.boot.test.mock.mockito.MockBean; | @@ -5,9 +5,9 @@ import org.springframework.boot.test.mock.mockito.MockBean; | ||
| 5 | 5 | ||
| 6 | import javax.annotation.Resource; | 6 | import javax.annotation.Resource; |
| 7 | 7 | ||
| 8 | -import ${basePackage}.BaseDbUnitTest; | ||
| 9 | -import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.impl.${table.className}ServiceImpl; | ||
| 10 | -import ${basePackage}.module.${table.moduleName}.controller.${table.businessName}.vo.*; | 8 | +import ${basePackage}.module.${table.moduleName}.test.BaseDbUnitTest;## 每个项目,默认有一个基础 DB Test 基类 |
| 9 | + | ||
| 10 | +import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; | ||
| 11 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | 11 | import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; |
| 12 | import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; | 12 | import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; |
| 13 | import ${PageResultClassName}; | 13 | import ${PageResultClassName}; |
| @@ -45,7 +45,7 @@ import static org.mockito.Mockito.*; | @@ -45,7 +45,7 @@ import static org.mockito.Mockito.*; | ||
| 45 | #end | 45 | #end |
| 46 | #end | 46 | #end |
| 47 | // 准备参数 | 47 | // 准备参数 |
| 48 | - ${table.className}${VO} reqVO = new ${table.className}${VO}(); | 48 | + ${sceneEnum.prefixClass}${table.className}${VO} reqVO = new ${sceneEnum.prefixClass}${table.className}${VO}(); |
| 49 | #foreach ($column in $columns) | 49 | #foreach ($column in $columns) |
| 50 | #if (${column.listOperation}) | 50 | #if (${column.listOperation}) |
| 51 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | 51 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
| @@ -64,7 +64,7 @@ import static org.mockito.Mockito.*; | @@ -64,7 +64,7 @@ import static org.mockito.Mockito.*; | ||
| 64 | * @author ${table.author} | 64 | * @author ${table.author} |
| 65 | */ | 65 | */ |
| 66 | @Import(${table.className}ServiceImpl.class) | 66 | @Import(${table.className}ServiceImpl.class) |
| 67 | -public class ${table.className}ServiceTest extends BaseDbUnitTest { | 67 | +public class ${table.className}ServiceImplTest extends BaseDbUnitTest { |
| 68 | 68 | ||
| 69 | @Resource | 69 | @Resource |
| 70 | private ${table.className}ServiceImpl ${classNameVar}Service; | 70 | private ${table.className}ServiceImpl ${classNameVar}Service; |
| @@ -75,7 +75,7 @@ public class ${table.className}ServiceTest extends BaseDbUnitTest { | @@ -75,7 +75,7 @@ public class ${table.className}ServiceTest extends BaseDbUnitTest { | ||
| 75 | @Test | 75 | @Test |
| 76 | public void testCreate${simpleClassName}_success() { | 76 | public void testCreate${simpleClassName}_success() { |
| 77 | // 准备参数 | 77 | // 准备参数 |
| 78 | - ${table.className}CreateReqVO reqVO = randomPojo(${table.className}CreateReqVO.class); | 78 | + ${sceneEnum.prefixClass}${table.className}CreateReqVO reqVO = randomPojo(${sceneEnum.prefixClass}${table.className}CreateReqVO.class); |
| 79 | 79 | ||
| 80 | // 调用 | 80 | // 调用 |
| 81 | ${primaryColumn.javaType} ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO); | 81 | ${primaryColumn.javaType} ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO); |
| @@ -92,7 +92,7 @@ public class ${table.className}ServiceTest extends BaseDbUnitTest { | @@ -92,7 +92,7 @@ public class ${table.className}ServiceTest extends BaseDbUnitTest { | ||
| 92 | ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); | 92 | ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); |
| 93 | ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 | 93 | ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 |
| 94 | // 准备参数 | 94 | // 准备参数 |
| 95 | - ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class, o -> { | 95 | + ${sceneEnum.prefixClass}${table.className}UpdateReqVO reqVO = randomPojo(${sceneEnum.prefixClass}${table.className}UpdateReqVO.class, o -> { |
| 96 | o.setId(db${simpleClassName}.getId()); // 设置更新的 ID | 96 | o.setId(db${simpleClassName}.getId()); // 设置更新的 ID |
| 97 | }); | 97 | }); |
| 98 | 98 | ||
| @@ -106,7 +106,7 @@ public class ${table.className}ServiceTest extends BaseDbUnitTest { | @@ -106,7 +106,7 @@ public class ${table.className}ServiceTest extends BaseDbUnitTest { | ||
| 106 | @Test | 106 | @Test |
| 107 | public void testUpdate${simpleClassName}_notExists() { | 107 | public void testUpdate${simpleClassName}_notExists() { |
| 108 | // 准备参数 | 108 | // 准备参数 |
| 109 | - ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class); | 109 | + ${sceneEnum.prefixClass}${table.className}UpdateReqVO reqVO = randomPojo(${sceneEnum.prefixClass}${table.className}UpdateReqVO.class); |
| 110 | 110 | ||
| 111 | // 调用, 并断言异常 | 111 | // 调用, 并断言异常 |
| 112 | assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); | 112 | assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); |
yudao-module-tool/yudao-module-tool-impl/src/test/java/cn/iocoder/yudao/module/tool/service/package-info.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.service; |
yudao-module-tool/yudao-module-tool-impl/src/test/java/cn/iocoder/yudao/module/tool/service/test/TestDemoServiceImplTest.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.service.test; | ||
| 2 | + | ||
| 3 | +import org.junit.jupiter.api.Test; | ||
| 4 | +import org.springframework.boot.test.mock.mockito.MockBean; | ||
| 5 | + | ||
| 6 | +import javax.annotation.Resource; | ||
| 7 | + | ||
| 8 | +import cn.iocoder.yudao.module.tool.test.BaseDbUnitTest; | ||
| 9 | +import cn.iocoder.yudao.module.tool.controller.app.test.vo.*; | ||
| 10 | +import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO; | ||
| 11 | +import cn.iocoder.yudao.module.tool.dal.mysql.test.TestDemoMapper; | ||
| 12 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 13 | + | ||
| 14 | +import javax.annotation.Resource; | ||
| 15 | +import org.springframework.context.annotation.Import; | ||
| 16 | +import java.util.*; | ||
| 17 | + | ||
| 18 | +import static cn.hutool.core.util.RandomUtil.*; | ||
| 19 | +import static cn.iocoder.yudao.module.tool.enums.ErrorCodeConstants.*; | ||
| 20 | +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; | ||
| 21 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | ||
| 22 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; | ||
| 23 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; | ||
| 24 | +import static org.junit.jupiter.api.Assertions.*; | ||
| 25 | +import static org.mockito.Mockito.*; | ||
| 26 | + | ||
| 27 | +/** | ||
| 28 | +* {@link TestDemoServiceImpl} 的单元测试类 | ||
| 29 | +* | ||
| 30 | +* @author 芋道源码 | ||
| 31 | +*/ | ||
| 32 | +@Import(TestDemoServiceImpl.class) | ||
| 33 | +public class TestDemoServiceImplTest extends BaseDbUnitTest { | ||
| 34 | + | ||
| 35 | + @Resource | ||
| 36 | + private TestDemoServiceImpl testDemoService; | ||
| 37 | + | ||
| 38 | + @Resource | ||
| 39 | + private TestDemoMapper testDemoMapper; | ||
| 40 | + | ||
| 41 | + @Test | ||
| 42 | + public void testCreateTestDemo_success() { | ||
| 43 | + // 准备参数 | ||
| 44 | + AppTestDemoCreateReqVO reqVO = randomPojo(AppTestDemoCreateReqVO.class); | ||
| 45 | + | ||
| 46 | + // 调用 | ||
| 47 | + Long testDemoId = testDemoService.createTestDemo(reqVO); | ||
| 48 | + // 断言 | ||
| 49 | + assertNotNull(testDemoId); | ||
| 50 | + // 校验记录的属性是否正确 | ||
| 51 | + TestDemoDO testDemo = testDemoMapper.selectById(testDemoId); | ||
| 52 | + assertPojoEquals(reqVO, testDemo); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + @Test | ||
| 56 | + public void testUpdateTestDemo_success() { | ||
| 57 | + // mock 数据 | ||
| 58 | + TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class); | ||
| 59 | + testDemoMapper.insert(dbTestDemo);// @Sql: 先插入出一条存在的数据 | ||
| 60 | + // 准备参数 | ||
| 61 | + AppTestDemoUpdateReqVO reqVO = randomPojo(AppTestDemoUpdateReqVO.class, o -> { | ||
| 62 | + o.setId(dbTestDemo.getId()); // 设置更新的 ID | ||
| 63 | + }); | ||
| 64 | + | ||
| 65 | + // 调用 | ||
| 66 | + testDemoService.updateTestDemo(reqVO); | ||
| 67 | + // 校验是否更新正确 | ||
| 68 | + TestDemoDO testDemo = testDemoMapper.selectById(reqVO.getId()); // 获取最新的 | ||
| 69 | + assertPojoEquals(reqVO, testDemo); | ||
| 70 | + } | ||
| 71 | + | ||
| 72 | + @Test | ||
| 73 | + public void testUpdateTestDemo_notExists() { | ||
| 74 | + // 准备参数 | ||
| 75 | + AppTestDemoUpdateReqVO reqVO = randomPojo(AppTestDemoUpdateReqVO.class); | ||
| 76 | + | ||
| 77 | + // 调用, 并断言异常 | ||
| 78 | + assertServiceException(() -> testDemoService.updateTestDemo(reqVO), TEST_DEMO_NOT_EXISTS); | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + @Test | ||
| 82 | + public void testDeleteTestDemo_success() { | ||
| 83 | + // mock 数据 | ||
| 84 | + TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class); | ||
| 85 | + testDemoMapper.insert(dbTestDemo);// @Sql: 先插入出一条存在的数据 | ||
| 86 | + // 准备参数 | ||
| 87 | + Long id = dbTestDemo.getId(); | ||
| 88 | + | ||
| 89 | + // 调用 | ||
| 90 | + testDemoService.deleteTestDemo(id); | ||
| 91 | + // 校验数据不存在了 | ||
| 92 | + assertNull(testDemoMapper.selectById(id)); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + @Test | ||
| 96 | + public void testDeleteTestDemo_notExists() { | ||
| 97 | + // 准备参数 | ||
| 98 | + Long id = randomLongId(); | ||
| 99 | + | ||
| 100 | + // 调用, 并断言异常 | ||
| 101 | + assertServiceException(() -> testDemoService.deleteTestDemo(id), TEST_DEMO_NOT_EXISTS); | ||
| 102 | + } | ||
| 103 | + | ||
| 104 | + @Test // TODO 请修改 null 为需要的值 | ||
| 105 | + public void testGetTestDemoPage() { | ||
| 106 | + // mock 数据 | ||
| 107 | + TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class, o -> { // 等会查询到 | ||
| 108 | + o.setName(null); | ||
| 109 | + o.setStatus(null); | ||
| 110 | + o.setType(null); | ||
| 111 | + o.setCategory(null); | ||
| 112 | + o.setRemark(null); | ||
| 113 | + o.setCreateTime(null); | ||
| 114 | + }); | ||
| 115 | + testDemoMapper.insert(dbTestDemo); | ||
| 116 | + // 测试 name 不匹配 | ||
| 117 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setName(null))); | ||
| 118 | + // 测试 status 不匹配 | ||
| 119 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setStatus(null))); | ||
| 120 | + // 测试 type 不匹配 | ||
| 121 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setType(null))); | ||
| 122 | + // 测试 category 不匹配 | ||
| 123 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCategory(null))); | ||
| 124 | + // 测试 remark 不匹配 | ||
| 125 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark(null))); | ||
| 126 | + // 测试 createTime 不匹配 | ||
| 127 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(null))); | ||
| 128 | + // 准备参数 | ||
| 129 | + AppTestDemoPageReqVO reqVO = new AppTestDemoPageReqVO(); | ||
| 130 | + reqVO.setName(null); | ||
| 131 | + reqVO.setStatus(null); | ||
| 132 | + reqVO.setType(null); | ||
| 133 | + reqVO.setCategory(null); | ||
| 134 | + reqVO.setRemark(null); | ||
| 135 | + reqVO.setBeginCreateTime(null); | ||
| 136 | + reqVO.setEndCreateTime(null); | ||
| 137 | + | ||
| 138 | + // 调用 | ||
| 139 | + PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(reqVO); | ||
| 140 | + // 断言 | ||
| 141 | + assertEquals(1, pageResult.getTotal()); | ||
| 142 | + assertEquals(1, pageResult.getList().size()); | ||
| 143 | + assertPojoEquals(dbTestDemo, pageResult.getList().get(0)); | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + @Test // TODO 请修改 null 为需要的值 | ||
| 147 | + public void testGetTestDemoList() { | ||
| 148 | + // mock 数据 | ||
| 149 | + TestDemoDO dbTestDemo = randomPojo(TestDemoDO.class, o -> { // 等会查询到 | ||
| 150 | + o.setName(null); | ||
| 151 | + o.setStatus(null); | ||
| 152 | + o.setType(null); | ||
| 153 | + o.setCategory(null); | ||
| 154 | + o.setRemark(null); | ||
| 155 | + o.setCreateTime(null); | ||
| 156 | + }); | ||
| 157 | + testDemoMapper.insert(dbTestDemo); | ||
| 158 | + // 测试 name 不匹配 | ||
| 159 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setName(null))); | ||
| 160 | + // 测试 status 不匹配 | ||
| 161 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setStatus(null))); | ||
| 162 | + // 测试 type 不匹配 | ||
| 163 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setType(null))); | ||
| 164 | + // 测试 category 不匹配 | ||
| 165 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCategory(null))); | ||
| 166 | + // 测试 remark 不匹配 | ||
| 167 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setRemark(null))); | ||
| 168 | + // 测试 createTime 不匹配 | ||
| 169 | + testDemoMapper.insert(cloneIgnoreId(dbTestDemo, o -> o.setCreateTime(null))); | ||
| 170 | + // 准备参数 | ||
| 171 | + AppTestDemoExportReqVO reqVO = new AppTestDemoExportReqVO(); | ||
| 172 | + reqVO.setName(null); | ||
| 173 | + reqVO.setStatus(null); | ||
| 174 | + reqVO.setType(null); | ||
| 175 | + reqVO.setCategory(null); | ||
| 176 | + reqVO.setRemark(null); | ||
| 177 | + reqVO.setBeginCreateTime(null); | ||
| 178 | + reqVO.setEndCreateTime(null); | ||
| 179 | + | ||
| 180 | + // 调用 | ||
| 181 | + List<TestDemoDO> list = testDemoService.getTestDemoList(reqVO); | ||
| 182 | + // 断言 | ||
| 183 | + assertEquals(1, list.size()); | ||
| 184 | + assertPojoEquals(dbTestDemo, list.get(0)); | ||
| 185 | + } | ||
| 186 | + | ||
| 187 | +} |
yudao-module-tool/yudao-module-tool-impl/src/test/java/cn/iocoder/yudao/module/tool/test/BaseDbUnitTest.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.tool.test; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; | ||
| 4 | +import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; | ||
| 5 | +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; | ||
| 6 | +import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; | ||
| 7 | +import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; | ||
| 8 | +import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; | ||
| 9 | +import org.springframework.boot.test.context.SpringBootTest; | ||
| 10 | +import org.springframework.context.annotation.Import; | ||
| 11 | +import org.springframework.test.context.ActiveProfiles; | ||
| 12 | +import org.springframework.test.context.jdbc.Sql; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 依赖内存 DB 的单元测试 | ||
| 16 | + * | ||
| 17 | + * 注意,Service 层同样适用。对于 Service 层的单元测试,我们针对自己模块的 Mapper 走的是 H2 内存数据库,针对别的模块的 Service 走的是 Mock 方法 | ||
| 18 | + * | ||
| 19 | + * @author 芋道源码 | ||
| 20 | + */ | ||
| 21 | +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE, classes = BaseDbUnitTest.Application.class) | ||
| 22 | +@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件 | ||
| 23 | +@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB | ||
| 24 | +public class BaseDbUnitTest { | ||
| 25 | + | ||
| 26 | + @Import({ | ||
| 27 | + // DB 配置类 | ||
| 28 | + YudaoDataSourceAutoConfiguration.class, // 自己的 DB 配置类 | ||
| 29 | + DataSourceAutoConfiguration.class, // Spring DB 自动配置类 | ||
| 30 | + DataSourceTransactionManagerAutoConfiguration.class, // Spring 事务自动配置类 | ||
| 31 | + DruidDataSourceAutoConfigure.class, // Druid 自动配置类 | ||
| 32 | + // MyBatis 配置类 | ||
| 33 | + YudaoMybatisAutoConfiguration.class, // 自己的 MyBatis 配置类 | ||
| 34 | + MybatisPlusAutoConfiguration.class, // MyBatis 的自动配置类 | ||
| 35 | + }) | ||
| 36 | + public static class Application { | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | +} |
yudao-module-tool/yudao-module-tool-impl/src/test/resources/application-unit-test.yaml
0 → 100644
| 1 | +spring: | ||
| 2 | + main: | ||
| 3 | + lazy-initialization: true # 开启懒加载,加快速度 | ||
| 4 | + banner-mode: off # 单元测试,禁用 Banner | ||
| 5 | + | ||
| 6 | +--- #################### 数据库相关配置 #################### | ||
| 7 | + | ||
| 8 | +spring: | ||
| 9 | + # 数据源配置项 | ||
| 10 | + datasource: | ||
| 11 | + name: ruoyi-vue-pro | ||
| 12 | + url: jdbc:h2:mem:testdb;MODE=MYSQL;DATABASE_TO_UPPER=false; # MODE 使用 MySQL 模式;DATABASE_TO_UPPER 配置表和字段使用小写 | ||
| 13 | + driver-class-name: org.h2.Driver | ||
| 14 | + username: sa | ||
| 15 | + password: | ||
| 16 | + schema: classpath:sql/create_tables.sql # MySQL 转 H2 的语句,使用 https://www.jooq.org/translate/ 工具 | ||
| 17 | + druid: | ||
| 18 | + async-init: true # 单元测试,异步初始化 Druid 连接池,提升启动速度 | ||
| 19 | + initial-size: 1 # 单元测试,配置为 1,提升启动速度 | ||
| 20 | + | ||
| 21 | + # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 | ||
| 22 | + redis: | ||
| 23 | + host: 127.0.0.1 # 地址 | ||
| 24 | + port: 16379 # 端口(单元测试,使用 16379 端口) | ||
| 25 | + database: 0 # 数据库索引 | ||
| 26 | + | ||
| 27 | +mybatis: | ||
| 28 | + lazy-initialization: true # 单元测试,设置 MyBatis Mapper 延迟加载,加速每个单元测试 | ||
| 29 | + | ||
| 30 | +--- #################### 定时任务相关配置 #################### | ||
| 31 | + | ||
| 32 | +--- #################### 配置中心相关配置 #################### | ||
| 33 | + | ||
| 34 | +--- #################### 服务保障相关配置 #################### | ||
| 35 | + | ||
| 36 | +# Lock4j 配置项(单元测试,禁用 Lock4j) | ||
| 37 | + | ||
| 38 | +# Resilience4j 配置项 | ||
| 39 | + | ||
| 40 | +--- #################### 监控相关配置 #################### | ||
| 41 | + | ||
| 42 | +--- #################### 芋道相关配置 #################### | ||
| 43 | + | ||
| 44 | +# 芋道配置项,设置当前项目所有自定义的配置 | ||
| 45 | +yudao: | ||
| 46 | + info: | ||
| 47 | + base-package: cn.iocoder.yudao.module |
yudao-module-tool/yudao-module-tool-impl/src/test/resources/logback.xml
0 → 100644
yudao-module-tool/yudao-module-tool-impl/src/test/resources/sql/clean.sql
0 → 100644
yudao-module-tool/yudao-module-tool-impl/src/test/resources/sql/create_tables.sql
0 → 100644
更新日志.md
| @@ -10,6 +10,10 @@ | @@ -10,6 +10,10 @@ | ||
| 10 | * 用户前台的社交登陆 | 10 | * 用户前台的社交登陆 |
| 11 | * 用户前台的修改手机、修改密码、忘记密码 | 11 | * 用户前台的修改手机、修改密码、忘记密码 |
| 12 | 12 | ||
| 13 | +*【优化】操作日志新增用户类型,实现 APP 端的 API 的操作日志的记录 | ||
| 14 | +*【修复】管理后台 UI 超时登录后,返回登陆界面时,由于未登陆加载不到字典数据,导致报错的问题 | ||
| 15 | + | ||
| 16 | + | ||
| 13 | ## [v1.4.0] 计划,预计 2022.02.28 发布 | 17 | ## [v1.4.0] 计划,预计 2022.02.28 发布 |
| 14 | 18 | ||
| 15 | ### ⚠️ Warning | 19 | ### ⚠️ Warning |
| @@ -18,9 +22,9 @@ | @@ -18,9 +22,9 @@ | ||
| 18 | 22 | ||
| 19 | ### ⭐ New Features | 23 | ### ⭐ New Features |
| 20 | 24 | ||
| 21 | -*【优化】操作日志新增用户类型,实现 APP 端的 API 的操作日志的记录 | ||
| 22 | *【重构】大模块按照多 Maven Module 的方式拆分,提升可维护性,为后续重构 onemall 提供基础 | 25 | *【重构】大模块按照多 Maven Module 的方式拆分,提升可维护性,为后续重构 onemall 提供基础 |
| 23 | -*【重构】Spring Security 支持读取多种用户类型,从不同的数据库表,从而实现单项目提供管理后台、用户 APP 的不同 RESTful API 接口 | 26 | +*【新增】Spring Security 支持读取多种用户类型,从不同的数据库表,从而实现单项目提供管理后台、用户 APP 的不同 RESTful API 接口 |
| 27 | +*【新增】代码生成器支持多 Maven Module 的方式生成代码,支持管理后台、用户 APP 两种场景的 RESTful API 的生成 | ||
| 24 | *【重构】将数据库文档调整到 tool 模块,更加明确 | 28 | *【重构】将数据库文档调整到 tool 模块,更加明确 |
| 25 | 29 | ||
| 26 | ### 🐞 Bug Fixes | 30 | ### 🐞 Bug Fixes |
| @@ -28,7 +32,6 @@ | @@ -28,7 +32,6 @@ | ||
| 28 | *【修复】用户无权限访问 指定 API 时,未返回 FORBIDDEN 结果码 | 32 | *【修复】用户无权限访问 指定 API 时,未返回 FORBIDDEN 结果码 |
| 29 | *【修复】定时任务刷新本地缓存时,无租户上线文,导致查询报错 | 33 | *【修复】定时任务刷新本地缓存时,无租户上线文,导致查询报错 |
| 30 | *【修复】配置中心只加载了删除的配置 | 34 | *【修复】配置中心只加载了删除的配置 |
| 31 | -*【修复】管理后台 UI 超时登录后,返回登陆界面时,由于未登陆加载不到字典数据,导致报错的问题 | ||
| 32 | 35 | ||
| 33 | ### 🔨 Dependency Upgrades | 36 | ### 🔨 Dependency Upgrades |
| 34 | 37 |