From ba3fe6a2420bf796c8276236098edfb1c26dfcbd Mon Sep 17 00:00:00 2001 From: xuelijun <977662702@qq.com> Date: Mon, 28 Jul 2025 17:28:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=A7=E5=93=81=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tashow-framework/tashow-common/pom.xml | 19 + .../util/serializer/ImgJsonSerializer.java | 64 +++ tashow-framework/tashow-data-mybatis/pom.xml | 5 + .../src/main/resources/application-local.yaml | 4 +- tashow-module/pom.xml | 1 + .../codegen/java/controller/controller.vm | 253 ------------ .../codegen/java/controller/vo/listReqVO.vm | 51 --- .../codegen/java/controller/vo/pageReqVO.vm | 53 --- .../codegen/java/controller/vo/respVO.vm | 57 --- .../codegen/java/controller/vo/saveReqVO.vm | 72 ---- .../src/main/resources/codegen/java/dal/do.vm | 52 --- .../main/resources/codegen/java/dal/do_sub.vm | 49 --- .../main/resources/codegen/java/dal/mapper.vm | 82 ---- .../resources/codegen/java/dal/mapper.xml.vm | 12 - .../resources/codegen/java/dal/mapper_sub.vm | 57 --- .../resources/codegen/java/enums/errorcode.vm | 22 -- .../resources/codegen/java/service/service.vm | 147 ------- .../codegen/java/service/serviceImpl.vm | 351 ---------------- .../codegen/java/test/serviceTest.vm | 168 -------- .../src/main/resources/codegen/sql/h2.vm | 37 -- .../src/main/resources/codegen/sql/sql.vm | 28 -- .../main/resources/codegen/vue/api/api.js.vm | 141 ------- .../vue/views/components/form_sub_erp.vue.vm | 205 ---------- .../views/components/form_sub_inner.vue.vm | 2 - .../views/components/form_sub_normal.vue.vm | 347 ---------------- .../vue/views/components/list_sub_erp.vue.vm | 165 -------- .../views/components/list_sub_inner.vue.vm | 4 - .../resources/codegen/vue/views/form.vue.vm | 320 --------------- .../resources/codegen/vue/views/index.vue.vm | 340 ---------------- .../main/resources/codegen/vue3/api/api.ts.vm | 115 ------ .../vue3/views/components/form_sub_erp.vue.vm | 204 ---------- .../views/components/form_sub_inner.vue.vm | 2 - .../views/components/form_sub_normal.vue.vm | 360 ----------------- .../vue3/views/components/list_sub_erp.vue.vm | 184 --------- .../views/components/list_sub_inner.vue.vm | 4 - .../resources/codegen/vue3/views/form.vue.vm | 300 -------------- .../resources/codegen/vue3/views/index.vue.vm | 374 ------------------ .../resources/codegen/vue3_vben/api/api.ts.vm | 32 -- .../codegen/vue3_vben/views/data.ts.vm | 260 ------------ .../codegen/vue3_vben/views/form.vue.vm | 58 --- .../codegen/vue3_vben/views/index.vue.vm | 92 ----- .../controller/CategoryController.java | 54 +++ .../product/controller/ProdController.java | 77 ++++ .../tashow/cloud/product/domain/Category.java | 142 +++++++ .../com/tashow/cloud/product/domain/Prod.java | 200 ++++++++++ .../product/domain/ServerResponseEntity.java | 198 ++++++++++ .../com/tashow/cloud/product/dto/ProdDO.java | 143 +++++++ .../cloud/product/mapper/CategoryMapper.java | 46 +++ .../cloud/product/mapper/ProdMapper.java | 22 ++ .../product/service/CategoryService.java | 71 ++++ .../cloud/product/service/ProdService.java | 57 +++ .../service/impl/CategoryServiceImpl.java | 79 ++++ .../product/service/impl/ProdServiceImpl.java | 75 ++++ .../cloud/product/vo/prod/ProdPageReqVO.java | 108 +++++ .../cloud/product/vo/prod/ProdRespVO.java | 135 +++++++ .../cloud/product/vo/prod/ProdSaveReqVO.java | 99 +++++ .../src/main/resources/application-local.yaml | 16 + .../src/main/resources/application.yaml | 12 + .../mapper/product/CategoryMapper.xml | 35 ++ .../src/main/resources/application-local.yaml | 4 +- 60 files changed, 1662 insertions(+), 5004 deletions(-) create mode 100644 tashow-framework/tashow-common/src/main/java/com/tashow/cloud/common/util/serializer/ImgJsonSerializer.java delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/controller.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/listReqVO.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/pageReqVO.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/respVO.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/saveReqVO.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do_sub.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.xml.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper_sub.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/enums/errorcode.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/service.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/java/test/serviceTest.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/sql/h2.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/sql/sql.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/api/api.js.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_erp.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_inner.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_normal.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_erp.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_inner.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/form.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/index.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/api/api.ts.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_erp.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_inner.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_normal.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_erp.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/form.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/index.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/api/api.ts.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/data.ts.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/form.vue.vm delete mode 100644 tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/index.vue.vm create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/CategoryController.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/ProdController.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Category.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Prod.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/ServerResponseEntity.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/ProdDO.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/CategoryMapper.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/CategoryService.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/CategoryServiceImpl.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdPageReqVO.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdRespVO.java create mode 100644 tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdSaveReqVO.java create mode 100644 tashow-module/tashow-module-product/src/main/resources/application-local.yaml create mode 100644 tashow-module/tashow-module-product/src/main/resources/application.yaml create mode 100644 tashow-module/tashow-module-product/src/main/resources/mapper/product/CategoryMapper.xml diff --git a/tashow-framework/tashow-common/pom.xml b/tashow-framework/tashow-common/pom.xml index cf54682..4e246cb 100644 --- a/tashow-framework/tashow-common/pom.xml +++ b/tashow-framework/tashow-common/pom.xml @@ -108,6 +108,25 @@ jackson-datatype-jsr310 provided + + + + + org.apache.commons + commons-lang3 + + + org.slf4j diff --git a/tashow-framework/tashow-common/src/main/java/com/tashow/cloud/common/util/serializer/ImgJsonSerializer.java b/tashow-framework/tashow-common/src/main/java/com/tashow/cloud/common/util/serializer/ImgJsonSerializer.java new file mode 100644 index 0000000..9af3bca --- /dev/null +++ b/tashow-framework/tashow-common/src/main/java/com/tashow/cloud/common/util/serializer/ImgJsonSerializer.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.tashow.cloud.common.util.serializer; + +import cn.hutool.core.util.StrUtil; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author lanhai + */ +@Component +public class ImgJsonSerializer extends JsonSerializer { + + /* @Autowired + private Qiniu qiniu; + @Autowired + private ImgUploadUtil imgUploadUtil;*/ + + @Override + public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + /*if (StrUtil.isBlank(value)) { + gen.writeString(StrUtil.EMPTY); + return; + } + String[] imgs = value.split(StrUtil.COMMA); + StringBuilder sb = new StringBuilder(); + String resourceUrl = ""; + String rule="^((http[s]{0,1})://)"; + Pattern pattern= Pattern.compile(rule); + if (Objects.equals(imgUploadUtil.getUploadType(), 2)) { + resourceUrl = qiniu.getResourcesUrl(); + } else if (Objects.equals(imgUploadUtil.getUploadType(), 1)) { + resourceUrl = imgUploadUtil.getResourceUrl(); + } + for (String img : imgs) { + Matcher matcher = pattern.matcher(img); + //若图片以http或https开头,直接返回 + if (matcher.find()){ + sb.append(img).append(StrUtil.COMMA); + }else { + sb.append(resourceUrl).append(img).append(StrUtil.COMMA); + } + } + sb.deleteCharAt(sb.length()-1); + gen.writeString(sb.toString());*/ + } +} diff --git a/tashow-framework/tashow-data-mybatis/pom.xml b/tashow-framework/tashow-data-mybatis/pom.xml index cff3557..f45fe8a 100644 --- a/tashow-framework/tashow-data-mybatis/pom.xml +++ b/tashow-framework/tashow-data-mybatis/pom.xml @@ -37,6 +37,11 @@ ojdbc8 true + org.postgresql postgresql diff --git a/tashow-gateway/src/main/resources/application-local.yaml b/tashow-gateway/src/main/resources/application-local.yaml index afff069..93af80b 100644 --- a/tashow-gateway/src/main/resources/application-local.yaml +++ b/tashow-gateway/src/main/resources/application-local.yaml @@ -7,10 +7,10 @@ spring: username: nacos # Nacos 账号 password: nacos # Nacos 密码 discovery: # 【配置中心】配置项 - namespace: liwq # 命名空间。这里使用 dev 开发环境 + namespace: 76667956-2ac2-4e05-906b-4bca4ebcc5f0 # 命名空间。这里使用 dev 开发环境 group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP config: # 【注册中心】配置项 - namespace: liwq # 命名空间。这里使用 dev 开发环境 + namespace: 76667956-2ac2-4e05-906b-4bca4ebcc5f0 # 命名空间。这里使用 dev 开发环境 group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP # 日志文件配置 diff --git a/tashow-module/pom.xml b/tashow-module/pom.xml index 37c811b..ffdb6c5 100644 --- a/tashow-module/pom.xml +++ b/tashow-module/pom.xml @@ -14,6 +14,7 @@ tashow-module-system tashow-module-infra tashow-module-app + tashow-module-product diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/controller.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/controller.vm deleted file mode 100644 index e47b61e..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/controller.vm +++ /dev/null @@ -1,253 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}; - -import org.springframework.web.bind.annotation.*; -import ${jakartaPackage}.annotation.Resource; -import org.springframework.validation.annotation.Validated; -#if ($sceneEnum.scene == 1)import org.springframework.security.access.prepost.PreAuthorize;#end - -import ${jakartaPackage}.validation.constraints.*; -import ${jakartaPackage}.validation.*; -import ${jakartaPackage}.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import ${PageParamClassName}; -import ${PageResultClassName}; -import ${CommonResultClassName}; -import ${BeanUtils}; -import static ${CommonResultClassName}.success; - -import ${ExcelUtilsClassName}; - -import ${ApiAccessLogClassName}; -import static ${OperateTypeEnumClassName}.*; - -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end -import ${basePackage}.module.${table.moduleName}.service.${table.businessName}.${table.className}Service; - -/** - * ${sceneEnum.name} - ${table.classComment} - */ -@RestController -##二级的 businessName 暂时不算在 HTTP 路径上,可以根据需要写 -@RequestMapping("/${table.moduleName}/${simpleClassName_strikeCase}") -@Validated -public class ${sceneEnum.prefixClass}${table.className}Controller { - - @Resource - private ${table.className}Service ${classNameVar}Service; - - /** - * 创建${table.classComment} - */ - @PostMapping("/create") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") -#end - public CommonResult<${primaryColumn.javaType}> create${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO) { - return success(${classNameVar}Service.create${simpleClassName}(createReqVO)); - } - - /** - * 更新${table.classComment} - */ - @PutMapping("/update") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") -#end - public CommonResult update${simpleClassName}(@Valid @RequestBody ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO) { - ${classNameVar}Service.update${simpleClassName}(updateReqVO); - return success(true); - } - - /** - * 删除${table.classComment} - */ - @DeleteMapping("/delete") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") -#end - public CommonResult delete${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${classNameVar}Service.delete${simpleClassName}(id); - return success(true); - } - - /** - * 获得${table.classComment} - */ - @GetMapping("/get") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult<${sceneEnum.prefixClass}${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { - ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); - return success(BeanUtils.toBean(${classNameVar}, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } - -#if ( $table.templateType != 2 ) - - /** - * 获得${table.classComment}分页 - */ - @GetMapping("/page") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${simpleClassName}Page(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) { - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO); - return success(BeanUtils.toBean(pageResult, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } - -## 特殊:树表专属逻辑(树不需要分页接口) -#else - /** - * 获得${table.classComment}列表 - */ - @GetMapping("/list") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${simpleClassName}List(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO); - return success(BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } - -#end - /** - * 导出${table.classComment} Excel - */ - @GetMapping("/export-excel") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')") -#end - @ApiAccessLog(operateType = EXPORT) -#if ( $table.templateType != 2 ) - public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}Page(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${sceneEnum.prefixClass}${table.className}RespVO.class, - BeanUtils.toBean(list, ${sceneEnum.prefixClass}${table.className}RespVO.class)); - } -## 特殊:树表专属逻辑(树不需要分页接口) -#else - public void export${simpleClassName}Excel(@Valid ${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO, - HttpServletResponse response) throws IOException { - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(listReqVO); - // 导出 Excel - ExcelUtils.write(response, "${table.classComment}.xls", "数据", ${table.className}RespVO.class, - BeanUtils.toBean(list, ${table.className}RespVO.class)); - } -#end - -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) -#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) -#set ($subClassNameVar = $subClassNameVars.get($index)) - // ==================== 子表($subTable.classComment) ==================== - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - /** - * 获得${subTable.classComment}分页 - */ - @GetMapping("/${subSimpleClassName_strikeCase}/page") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${subSimpleClassName}Page(PageParam pageReqVO, - @RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return success(${classNameVar}Service.get${subSimpleClassName}Page(pageReqVO, ${subJoinColumn.javaField})); - } - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - /** - * 获得${subTable.classComment}列表 - */ - @GetMapping("/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult> get${subSimpleClassName}ListBy${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return success(${classNameVar}Service.get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField})); - } - - #else - /** - * 获得${subTable.classComment} - */ - @GetMapping("/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult<${subTable.className}DO> get${subSimpleClassName}By${SubJoinColumnName}(@RequestParam("${subJoinColumn.javaField}") ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return success(${classNameVar}Service.get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField})); - } - - #end -#end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - /** - * 创建${subTable.classComment} - */ - @PostMapping("/${subSimpleClassName_strikeCase}/create") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:create')") -#end - public CommonResult<${subPrimaryColumn.javaType}> create${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) { - return success(${classNameVar}Service.create${subSimpleClassName}(${subClassNameVar})); - } - - /** - * 更新${subTable.classComment} - */ - @PutMapping("/${subSimpleClassName_strikeCase}/update") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:update')") -#end - public CommonResult update${subSimpleClassName}(@Valid @RequestBody ${subTable.className}DO ${subClassNameVar}) { - ${classNameVar}Service.update${subSimpleClassName}(${subClassNameVar}); - return success(true); - } - - /** - * 删除${subTable.classComment} - */ - @DeleteMapping("/${subSimpleClassName_strikeCase}/delete") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:delete')") -#end - public CommonResult delete${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) { - ${classNameVar}Service.delete${subSimpleClassName}(id); - return success(true); - } - - /** - * 获得${subTable.classComment} - */ - @GetMapping("/${subSimpleClassName_strikeCase}/get") -#if ($sceneEnum.scene == 1) - @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") -#end - public CommonResult<${subTable.className}DO> get${subSimpleClassName}(@RequestParam("id") ${subPrimaryColumn.javaType} id) { - return success(${classNameVar}Service.get${subSimpleClassName}(id)); - } - -#end -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/listReqVO.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/listReqVO.vm deleted file mode 100644 index 4797c0b..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/listReqVO.vm +++ /dev/null @@ -1,51 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; - -import ${PageParamClassName}; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperation} && ${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -import org.springframework.format.annotation.DateTimeFormat; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) - /** - * ${prefixStr}${column.columnComment}"#if ("$!column.example" != " - */, example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -/** - * ${sceneEnum.name} - ${table.classComment}列表 Request VO - */ -@Data -public class ${sceneEnum.prefixClass}${table.className}ListReqVO { - -#foreach ($column in $columns) -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - /** - * ${column.columnComment}"#if ("$!column.example" != " - */, example = "${column.example}"#end) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private ${column.javaType}[] ${column.javaField}; -#else##情况二,非 Between 的时间 - #columnTpl('', '') -#end - -#end -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/pageReqVO.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/pageReqVO.vm deleted file mode 100644 index f7841c0..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/pageReqVO.vm +++ /dev/null @@ -1,53 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - -import lombok.*; -import java.util.*; - -import ${PageParamClassName}; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperationCondition} && ${column.javaType} == "LocalDateTime") -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; - -import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -#break -#end -#end -## 字段模板 -#macro(columnTpl $prefix $prefixStr) - /** - * ${prefixStr}${column.columnComment}"#if ("$!column.example" != " - */, example = "${column.example}"#end) - private ${column.javaType}#if ("$!prefix" != "") ${prefix}${JavaField}#else ${column.javaField}#end; -#end - -/** - * ${sceneEnum.name} - ${table.classComment}分页 Request VO - */ -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -public class ${sceneEnum.prefixClass}${table.className}PageReqVO extends PageParam { - -#foreach ($column in $columns) -#if (${column.listOperation})##查询操作 -#if (${column.listOperationCondition} == "BETWEEN")## 情况一,Between 的时候 - /** - * ${column.columnComment}"#if ("$!column.example" != " - */, example = "${column.example}"#end) - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - private ${column.javaType}[] ${column.javaField}; -#else##情况二,非 Between 的时间 - #columnTpl('', '') -#end - -#end -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/respVO.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/respVO.vm deleted file mode 100644 index e4fcf6f..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/respVO.vm +++ /dev/null @@ -1,57 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - - -import lombok.*; -import java.util.*; -## 处理 BigDecimal 字段的引入 -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if (${column.listOperationResult} && ${column.javaType} == "LocalDateTime") -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -#break -#end -#end -## 处理 Excel 导出 -import com.alibaba.excel.annotation.*; -#foreach ($column in $columns) -#if ("$!column.dictType" != "")## 有设置数据字典 -import ${DictFormatClassName}; -import ${DictConvertClassName}; -#break -#end -#end - -/** - * ${sceneEnum.name} - ${table.classComment} Response VO - */ -@Data -@ExcelIgnoreUnannotated -public class ${sceneEnum.prefixClass}${table.className}RespVO { - -## 逐个处理字段 -#foreach ($column in $columns) -#if (${column.listOperationResult}) -## 1. 处理 Swagger 注解 - /** - * ${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != " - */, example = "${column.example}"#end) -## 2. 处理 Excel 导出 -#if ("$!column.dictType" != "")##处理枚举值 - @ExcelProperty(value = "${column.columnComment}", converter = DictConvert.class) - @DictFormat("${column.dictType}") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 -#else - @ExcelProperty("${column.columnComment}") -#end -## 3. 处理字段定义 - private ${column.javaType} ${column.javaField}; - -#end -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/saveReqVO.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/saveReqVO.vm deleted file mode 100644 index ba32472..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/controller/vo/saveReqVO.vm +++ /dev/null @@ -1,72 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo; - - -import lombok.*; -import java.util.*; -import ${jakartaPackage}.validation.constraints.*; -## 处理 BigDecimal 字段的引入 -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#break -#end -#end -## 处理 LocalDateTime 字段的引入 -#foreach ($column in $columns) -#if ((${column.createOperation} || ${column.updateOperation}) && ${column.javaType} == "LocalDateTime") -import org.springframework.format.annotation.DateTimeFormat; -import java.time.LocalDateTime; -#break -#end -#end -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end - -/** - * ${sceneEnum.name} - ${table.classComment}新增/修改 Request VO - */ -@Data -public class ${sceneEnum.prefixClass}${table.className}SaveReqVO { - -## 逐个处理字段 -#foreach ($column in $columns) -#if (${column.createOperation} || ${column.updateOperation}) -## 1. 处理 Swagger 注解 - /** - * ${column.columnComment}"#if (!${column.nullable}), requiredMode = Schema.RequiredMode.REQUIRED#end#if ("$!column.example" != " - */, example = "${column.example}"#end) -## 2. 处理 Validator 参数校验 -#if (!${column.nullable} && !${column.primaryKey}) -#if (${column.javaType} == 'String') - @NotEmpty(message = "${column.columnComment}不能为空") -#else - @NotNull(message = "${column.columnComment}不能为空") -#end -#end -## 3. 处理字段定义 - private ${column.javaType} ${column.javaField}; - -#end -#end -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) - #if ( $subTable.subJoinMany) - /** - * ${subTable.classComment}列表 - */ - private List<${subTable.className}DO> ${subClassNameVars.get($index)}s; - - #else - /** - * ${subTable.classComment} - */ - private ${subTable.className}DO ${subClassNameVars.get($index)}; - - #end -#end -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do.vm deleted file mode 100644 index b019d6e..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do.vm +++ /dev/null @@ -1,52 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}; - -import lombok.*; -import java.util.*; -#foreach ($column in $columns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end -import com.baomidou.mybatisplus.annotation.*; -import ${BaseDOClassName}; - -/** - * ${table.classComment} DO - * - * @author ${table.author} - */ -@TableName("${table.tableName.toLowerCase()}") -@KeySequence("${table.tableName.toLowerCase()}_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ${table.className}DO extends BaseDO { - -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) - public static final Long ${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT = 0L; - -#end -#foreach ($column in $columns) -#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 - /** - * ${column.columnComment} - #if ("$!column.dictType" != "")##处理枚举值 - * - * 枚举 {@link TODO ${column.dictType} 对应的类} - #end - */ - #if (${column.primaryKey})##处理主键 - @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end - #end - private ${column.javaType} ${column.javaField}; -#end -#end - -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do_sub.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do_sub.vm deleted file mode 100644 index 16be55e..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/do_sub.vm +++ /dev/null @@ -1,49 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -package ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}; - -import lombok.*; -import java.util.*; -#foreach ($column in $subColumns) -#if (${column.javaType} == "BigDecimal") -import java.math.BigDecimal; -#end -#if (${column.javaType} == "LocalDateTime") -import java.time.LocalDateTime; -#end -#end -import com.baomidou.mybatisplus.annotation.*; -import ${BaseDOClassName}; - -/** - * ${subTable.classComment} DO - * - * @author ${subTable.author} - */ -@TableName("${subTable.tableName.toLowerCase()}") -@KeySequence("${subTable.tableName.toLowerCase()}_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 -@Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ${subTable.className}DO extends BaseDO { - -#foreach ($column in $subColumns) -#if (!${baseDOFields.contains(${column.javaField})})##排除 BaseDO 的字段 - /** - * ${column.columnComment} - #if ("$!column.dictType" != "")##处理枚举值 - * - * 枚举 {@link TODO ${column.dictType} 对应的类} - #end - */ - #if (${column.primaryKey})##处理主键 - @TableId#if (${column.javaType} == 'String')(type = IdType.INPUT)#end - #end - private ${column.javaType} ${column.javaField}; -#end -#end - -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.vm deleted file mode 100644 index b98b471..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.vm +++ /dev/null @@ -1,82 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}; - -import java.util.*; - -import ${PageResultClassName}; -import ${QueryWrapperClassName}; -import ${BaseMapperClassName}; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import org.apache.ibatis.annotations.Mapper; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; - -## 字段模板 -#macro(listCondition) -#foreach ($column in $columns) -#if (${column.listOperation}) -#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 -#if (${column.listOperationCondition} == "=")##情况一,= 的时候 - .eqIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 - .neIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">")##情况三,> 的时候 - .gtIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 - .geIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<")##情况五,< 的时候 - .ltIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "<=")##情况五,<= 的时候 - .leIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 - .likeIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 - .betweenIfPresent(${table.className}DO::get${JavaField}, reqVO.get${JavaField}()) -#end -#end -#end -#end -/** - * ${table.classComment} Mapper - * - * @author ${table.author} - */ -@Mapper -public interface ${table.className}Mapper extends BaseMapperX<${table.className}DO> { - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - default PageResult<${table.className}DO> selectPage(${sceneEnum.prefixClass}${table.className}PageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX<${table.className}DO>() - #listCondition() - .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 - - } -#else - default List<${table.className}DO> selectList(${sceneEnum.prefixClass}${table.className}ListReqVO reqVO) { - return selectList(new LambdaQueryWrapperX<${table.className}DO>() - #listCondition() - .orderByDesc(${table.className}DO::getId));## 大多数情况下,id 倒序 - - } -#end - -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - default ${table.className}DO selectBy${TreeParentJavaField}And${TreeNameJavaField}(Long ${treeParentColumn.javaField}, String ${treeNameColumn.javaField}) { - return selectOne(${table.className}DO::get${TreeParentJavaField}, ${treeParentColumn.javaField}, ${table.className}DO::get${TreeNameJavaField}, ${treeNameColumn.javaField}); - } - - default Long selectCountBy${TreeParentJavaField}(${treeParentColumn.javaType} ${treeParentColumn.javaField}) { - return selectCount(${table.className}DO::get${TreeParentJavaField}, ${treeParentColumn.javaField}); - } - -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.xml.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.xml.vm deleted file mode 100644 index 290378d..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper.xml.vm +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper_sub.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper_sub.vm deleted file mode 100644 index 6ccaea7..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/dal/mapper_sub.vm +++ /dev/null @@ -1,57 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subJoinColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -package ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName}; - -import java.util.*; - -import ${PageResultClassName}; -import ${PageParamClassName}; -import ${QueryWrapperClassName}; -import ${BaseMapperClassName}; -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -import org.apache.ibatis.annotations.Mapper; - -/** - * ${subTable.classComment} Mapper - * - * @author ${subTable.author} - */ -@Mapper -public interface ${subTable.className}Mapper extends BaseMapperX<${subTable.className}DO> { - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - default PageResult<${subTable.className}DO> selectPage(PageParam reqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectPage(reqVO, new LambdaQueryWrapperX<${subTable.className}DO>() - .eq(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}) - .orderByDesc(${subTable.className}DO::getId));## 大多数情况下,id 倒序 - - } -## 主表与子表是一对一时 - #if (!$subTable.subJoinMany) - default ${subTable.className}DO selectBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectOne(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - #end - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany) - default List<${subTable.className}DO> selectListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectList(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - - #else - default ${subTable.className}DO selectBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return selectOne(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - - #end - #end - default int deleteBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return delete(${subTable.className}DO::get${SubJoinColumnName}, ${subJoinColumn.javaField}); - } - -} diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/enums/errorcode.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/enums/errorcode.vm deleted file mode 100644 index b7e21e6..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/enums/errorcode.vm +++ /dev/null @@ -1,22 +0,0 @@ -// TODO 待办:请将下面的错误码复制到 yudao-module-${table.moduleName}-api 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!! -// ========== ${table.classComment} TODO 补充编号 ========== -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${table.classComment}不存在"); -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_EXITS_CHILDREN = new ErrorCode(TODO 补充编号, "存在存在子${table.classComment},无法删除"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_PARENT_NOT_EXITS = new ErrorCode(TODO 补充编号,"父级${table.classComment}不存在"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_PARENT_ERROR = new ErrorCode(TODO 补充编号, "不能设置自己为父${table.classComment}"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_${treeNameColumn_javaField_underlineCase.toUpperCase()}_DUPLICATE = new ErrorCode(TODO 补充编号, "已经存在该${treeNameColumn.columnComment}的${table.classComment}"); -ErrorCode ${simpleClassName_underlineCase.toUpperCase()}_PARENT_IS_CHILD = new ErrorCode(TODO 补充编号, "不能设置自己的子${table.className}为父${table.className}"); -#end -## 特殊:主子表专属逻辑 -#if ( $table.templateType == 11 )## 特殊:ERP 情况 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($simpleClassNameUnderlineCase = $simpleClassNameUnderlineCases.get($index)) -ErrorCode ${simpleClassNameUnderlineCase.toUpperCase()}_NOT_EXISTS = new ErrorCode(TODO 补充编号, "${subTable.classComment}不存在"); -#if ( !$subTable.subJoinMany ) -ErrorCode ${simpleClassNameUnderlineCase.toUpperCase()}_EXISTS = new ErrorCode(TODO 补充编号, "${subTable.classComment}已存在"); -#end -#end -#end \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/service.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/service.vm deleted file mode 100644 index c4ee4f0..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/service.vm +++ /dev/null @@ -1,147 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import java.util.*; -import ${jakartaPackage}.validation.*; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end -import ${PageResultClassName}; -import ${PageParamClassName}; - -/** - * ${table.classComment} Service 接口 - * - * @author ${table.author} - */ -public interface ${table.className}Service { - - /** - * 创建${table.classComment} - * - * @param createReqVO 创建信息 - * @return 编号 - */ - ${primaryColumn.javaType} create${simpleClassName}(@Valid ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO); - - /** - * 更新${table.classComment} - * - * @param updateReqVO 更新信息 - */ - void update${simpleClassName}(@Valid ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO); - - /** - * 删除${table.classComment} - * - * @param id 编号 - */ - void delete${simpleClassName}(${primaryColumn.javaType} id); - - /** - * 获得${table.classComment} - * - * @param id 编号 - * @return ${table.classComment} - */ - ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id); - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - /** - * 获得${table.classComment}分页 - * - * @param pageReqVO 分页查询 - * @return ${table.classComment}分页 - */ - PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO); -#else - /** - * 获得${table.classComment}列表 - * - * @param listReqVO 查询条件 - * @return ${table.classComment}列表 - */ - List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO); -#end - -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subClassNameVar = $subClassNameVars.get($index)) - // ==================== 子表($subTable.classComment) ==================== - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - /** - * 获得${subTable.classComment}分页 - * - * @param pageReqVO 分页查询 - * @param ${subJoinColumn.javaField} ${subJoinColumn.columnComment} - * @return ${subTable.classComment}分页 - */ - PageResult<${subTable.className}DO> get${subSimpleClassName}Page(PageParam pageReqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}); - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - /** - * 获得${subTable.classComment}列表 - * - * @param ${subJoinColumn.javaField} ${subJoinColumn.columnComment} - * @return ${subTable.classComment}列表 - */ - List<${subTable.className}DO> get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}); - - #else - /** - * 获得${subTable.classComment} - * - * @param ${subJoinColumn.javaField} ${subJoinColumn.columnComment} - * @return ${subTable.classComment} - */ - ${subTable.className}DO get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}); - - #end -#end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - /** - * 创建${subTable.classComment} - * - * @param ${subClassNameVar} 创建信息 - * @return 编号 - */ - ${subPrimaryColumn.javaType} create${subSimpleClassName}(@Valid ${subTable.className}DO ${subClassNameVar}); - - /** - * 更新${subTable.classComment} - * - * @param ${subClassNameVar} 更新信息 - */ - void update${subSimpleClassName}(@Valid ${subTable.className}DO ${subClassNameVar}); - - /** - * 删除${subTable.classComment} - * - * @param id 编号 - */ - void delete${subSimpleClassName}(${subPrimaryColumn.javaType} id); - - /** - * 获得${subTable.classComment} - * - * @param id 编号 - * @return ${subTable.classComment} - */ - ${subTable.className}DO get${subSimpleClassName}(${subPrimaryColumn.javaType} id); - -#end -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm deleted file mode 100644 index 80bc71b..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/service/serviceImpl.vm +++ /dev/null @@ -1,351 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import org.springframework.stereotype.Service; -import ${jakartaPackage}.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO; -#end -import ${PageResultClassName}; -import ${PageParamClassName}; -import ${BeanUtils}; - -import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -import ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName}.${subTable.className}Mapper; -#end - -import static ${ServiceExceptionUtilClassName}.exception; -import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; - -/** - * ${table.classComment} Service 实现类 - * - * @author ${table.author} - */ -@Service -@Validated -public class ${table.className}ServiceImpl implements ${table.className}Service { - - @Resource - private ${table.className}Mapper ${classNameVar}Mapper; -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) - @Resource - private ${subTable.className}Mapper ${subClassNameVars.get($index)}Mapper; -#end - - @Override -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) - @Transactional(rollbackFor = Exception.class) -#end - public ${primaryColumn.javaType} create${simpleClassName}(${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO) { -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - // 校验${treeParentColumn.columnComment}的有效性 - validateParent${simpleClassName}(null, createReqVO.get${TreeParentJavaField}()); - // 校验${treeNameColumn.columnComment}的唯一性 - validate${simpleClassName}${TreeNameJavaField}Unique(null, createReqVO.get${TreeParentJavaField}(), createReqVO.get${TreeNameJavaField}()); - -#end - // 插入 - ${table.className}DO ${classNameVar} = BeanUtils.toBean(createReqVO, ${table.className}DO.class); - ${classNameVar}Mapper.insert(${classNameVar}); -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) - - // 插入子表 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - #if ( $subTable.subJoinMany) - create${subSimpleClassName}List(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}s()); - #else - create${subSimpleClassName}(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}()); - #end -#end -#end - // 返回 - return ${classNameVar}.getId(); - } - - @Override -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11 ) - @Transactional(rollbackFor = Exception.class) -#end - public void update${simpleClassName}(${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO) { - // 校验存在 - validate${simpleClassName}Exists(updateReqVO.getId()); -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - // 校验${treeParentColumn.columnComment}的有效性 - validateParent${simpleClassName}(updateReqVO.getId(), updateReqVO.get${TreeParentJavaField}()); - // 校验${treeNameColumn.columnComment}的唯一性 - validate${simpleClassName}${TreeNameJavaField}Unique(updateReqVO.getId(), updateReqVO.get${TreeParentJavaField}(), updateReqVO.get${TreeNameJavaField}()); - -#end - // 更新 - ${table.className}DO updateObj = BeanUtils.toBean(updateReqVO, ${table.className}DO.class); - ${classNameVar}Mapper.updateById(updateObj); -## 特殊:主子表专属逻辑(非 ERP 模式) -#if ( $subTables && $subTables.size() > 0 && $table.templateType != 11) - - // 更新子表 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - #if ( $subTable.subJoinMany) - update${subSimpleClassName}List(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}s()); - #else - update${subSimpleClassName}(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}()); - #end -#end -#end - } - - @Override -## 特殊:主子表专属逻辑 -#if ( $subTables && $subTables.size() > 0) - @Transactional(rollbackFor = Exception.class) -#end - public void delete${simpleClassName}(${primaryColumn.javaType} id) { - // 校验存在 - validate${simpleClassName}Exists(id); -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($ParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 - // 校验是否有子${table.classComment} - if (${classNameVar}Mapper.selectCountBy${ParentJavaField}(id) > 0) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_EXITS_CHILDREN); - } -#end - // 删除 - ${classNameVar}Mapper.deleteById(id); -## 特殊:主子表专属逻辑 -#if ( $subTables && $subTables.size() > 0) - - // 删除子表 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - delete${subSimpleClassName}By${SubJoinColumnName}(id); -#end -#end - } - - private void validate${simpleClassName}Exists(${primaryColumn.javaType} id) { - if (${classNameVar}Mapper.selectById(id) == null) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - } - -## 特殊:树表专属逻辑 -#if ( $table.templateType == 2 ) -#set ($TreeParentJavaField = $treeParentColumn.javaField.substring(0,1).toUpperCase() + ${treeParentColumn.javaField.substring(1)})##首字母大写 -#set ($TreeNameJavaField = $treeNameColumn.javaField.substring(0,1).toUpperCase() + ${treeNameColumn.javaField.substring(1)})##首字母大写 - private void validateParent${simpleClassName}(Long id, Long ${treeParentColumn.javaField}) { - if (${treeParentColumn.javaField} == null || ${simpleClassName}DO.${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT.equals(${treeParentColumn.javaField})) { - return; - } - // 1. 不能设置自己为父${table.classComment} - if (Objects.equals(id, ${treeParentColumn.javaField})) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_PARENT_ERROR); - } - // 2. 父${table.classComment}不存在 - ${simpleClassName}DO parent${simpleClassName} = ${classNameVar}Mapper.selectById(${treeParentColumn.javaField}); - if (parent${simpleClassName} == null) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_PARENT_NOT_EXITS); - } - // 3. 递归校验父${table.classComment},如果父${table.classComment}是自己的子${table.classComment},则报错,避免形成环路 - if (id == null) { // id 为空,说明新增,不需要考虑环路 - return; - } - for (int i = 0; i < Short.MAX_VALUE; i++) { - // 3.1 校验环路 - ${treeParentColumn.javaField} = parent${simpleClassName}.get${TreeParentJavaField}(); - if (Objects.equals(id, ${treeParentColumn.javaField})) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_PARENT_IS_CHILD); - } - // 3.2 继续递归下一级父${table.classComment} - if (${treeParentColumn.javaField} == null || ${simpleClassName}DO.${treeParentColumn_javaField_underlineCase.toUpperCase()}_ROOT.equals(${treeParentColumn.javaField})) { - break; - } - parent${simpleClassName} = ${classNameVar}Mapper.selectById(${treeParentColumn.javaField}); - if (parent${simpleClassName} == null) { - break; - } - } - } - - private void validate${simpleClassName}${TreeNameJavaField}Unique(Long id, Long ${treeParentColumn.javaField}, String ${treeNameColumn.javaField}) { - ${simpleClassName}DO ${classNameVar} = ${classNameVar}Mapper.selectBy${TreeParentJavaField}And${TreeNameJavaField}(${treeParentColumn.javaField}, ${treeNameColumn.javaField}); - if (${classNameVar} == null) { - return; - } - // 如果 id 为空,说明不用比较是否为相同 id 的${table.classComment} - if (id == null) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_${treeNameColumn_javaField_underlineCase.toUpperCase()}_DUPLICATE); - } - if (!Objects.equals(${classNameVar}.getId(), id)) { - throw exception(${simpleClassName_underlineCase.toUpperCase()}_${treeNameColumn_javaField_underlineCase.toUpperCase()}_DUPLICATE); - } - } - -#end - @Override - public ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id) { - return ${classNameVar}Mapper.selectById(id); - } - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - @Override - public PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) { - return ${classNameVar}Mapper.selectPage(pageReqVO); - } -#else - @Override - public List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ListReqVO listReqVO) { - return ${classNameVar}Mapper.selectList(listReqVO); - } -#end - -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($simpleClassNameUnderlineCase = $simpleClassNameUnderlineCases.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subClassNameVar = $subClassNameVars.get($index)) - // ==================== 子表($subTable.classComment) ==================== - -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - @Override - public PageResult<${subTable.className}DO> get${subSimpleClassName}Page(PageParam pageReqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return ${subClassNameVars.get($index)}Mapper.selectPage(pageReqVO, ${subJoinColumn.javaField}); - } - -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - @Override - public List<${subTable.className}DO> get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return ${subClassNameVars.get($index)}Mapper.selectListBy${SubJoinColumnName}(${subJoinColumn.javaField}); - } - - #else - @Override - public ${subTable.className}DO get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) { - return ${subClassNameVars.get($index)}Mapper.selectBy${SubJoinColumnName}(${subJoinColumn.javaField}); - } - - #end -#end -## 情况一:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - @Override - public ${subPrimaryColumn.javaType} create${subSimpleClassName}(${subTable.className}DO ${subClassNameVar}) { -## 特殊:一对一时,需要保证只有一条,不能重复插入 -#if ( !$subTable.subJoinMany) - // 校验是否已经存在 - if (${subClassNameVars.get($index)}Mapper.selectBy${SubJoinColumnName}(${subClassNameVar}.get${SubJoinColumnName}()) != null) { - throw exception(${simpleClassNameUnderlineCase.toUpperCase()}_EXISTS); - } - // 插入 -#end - ${subClassNameVars.get($index)}Mapper.insert(${subClassNameVar}); - return ${subClassNameVar}.getId(); - } - - @Override - public void update${subSimpleClassName}(${subTable.className}DO ${subClassNameVar}) { - // 校验存在 - validate${subSimpleClassName}Exists(${subClassNameVar}.getId()); - // 更新 - ${subClassNameVar}.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - ${subClassNameVars.get($index)}Mapper.updateById(${subClassNameVar}); - } - - @Override - public void delete${subSimpleClassName}(${subPrimaryColumn.javaType} id) { - // 校验存在 - validate${subSimpleClassName}Exists(id); - // 删除 - ${subClassNameVars.get($index)}Mapper.deleteById(id); - } - - @Override - public ${subTable.className}DO get${subSimpleClassName}(${subPrimaryColumn.javaType} id) { - return ${subClassNameVars.get($index)}Mapper.selectById(id); - } - - private void validate${subSimpleClassName}Exists(${subPrimaryColumn.javaType} id) { - if (${subClassNameVar}Mapper.selectById(id) == null) { - throw exception(${simpleClassNameUnderlineCase.toUpperCase()}_NOT_EXISTS); - } - } - -## 情况二:非 MASTER_ERP 时,支持批量的新增、修改操作 -#else - #if ( $subTable.subJoinMany) - private void create${subSimpleClassName}List(${primaryColumn.javaType} ${subJoinColumn.javaField}, List<${subTable.className}DO> list) { - list.forEach(o -> o.set$SubJoinColumnName(${subJoinColumn.javaField})); - ${subClassNameVars.get($index)}Mapper.insertBatch(list); - } - - private void update${subSimpleClassName}List(${primaryColumn.javaType} ${subJoinColumn.javaField}, List<${subTable.className}DO> list) { - delete${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}); - list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 - create${subSimpleClassName}List(${subJoinColumn.javaField}, list); - } - - #else - private void create${subSimpleClassName}(${primaryColumn.javaType} ${subJoinColumn.javaField}, ${subTable.className}DO ${subClassNameVar}) { - if (${subClassNameVar} == null) { - return; - } - ${subClassNameVar}.set$SubJoinColumnName(${subJoinColumn.javaField}); - ${subClassNameVars.get($index)}Mapper.insert(${subClassNameVar}); - } - - private void update${subSimpleClassName}(${primaryColumn.javaType} ${subJoinColumn.javaField}, ${subTable.className}DO ${subClassNameVar}) { - if (${subClassNameVar} == null) { - return; - } - ${subClassNameVar}.set$SubJoinColumnName(${subJoinColumn.javaField}); - ${subClassNameVar}.setUpdater(null).setUpdateTime(null); // 解决更新情况下:updateTime 不更新 - ${subClassNameVars.get($index)}Mapper.insertOrUpdate(${subClassNameVar}); - } - - #end -#end - private void delete${subSimpleClassName}By${SubJoinColumnName}(${primaryColumn.javaType} ${subJoinColumn.javaField}) { - ${subClassNameVars.get($index)}Mapper.deleteBy${SubJoinColumnName}(${subJoinColumn.javaField}); - } - -#end -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/test/serviceTest.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/java/test/serviceTest.vm deleted file mode 100644 index bfd4600..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/java/test/serviceTest.vm +++ /dev/null @@ -1,168 +0,0 @@ -package ${basePackage}.module.${table.moduleName}.service.${table.businessName}; - -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.mock.mockito.MockBean; - -import ${jakartaPackage}.annotation.Resource; - -import ${baseFrameworkPackage}.test.core.ut.BaseDbUnitTest; - -import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*; -import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; -import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; -import ${PageResultClassName}; - -import ${jakartaPackage}.annotation.Resource; -import org.springframework.context.annotation.Import; -import java.util.*; -import java.time.LocalDateTime; - -import static cn.hutool.core.util.RandomUtil.*; -import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*; -import static ${baseFrameworkPackage}.test.core.util.AssertUtils.*; -import static ${baseFrameworkPackage}.test.core.util.RandomUtils.*; -import static ${LocalDateTimeUtilsClassName}.*; -import static ${ObjectUtilsClassName}.*; -import static ${DateUtilsClassName}.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; - -## 字段模板 -#macro(getPageCondition $VO) - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> { // 等会查询到 - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - o.set$JavaField(null); - #end - #end - }); - ${classNameVar}Mapper.insert(db${simpleClassName}); - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - // 测试 ${column.javaField} 不匹配 - ${classNameVar}Mapper.insert(cloneIgnoreId(db${simpleClassName}, o -> o.set$JavaField(null))); - #end - #end - // 准备参数 - ${sceneEnum.prefixClass}${table.className}${VO} reqVO = new ${sceneEnum.prefixClass}${table.className}${VO}(); - #foreach ($column in $columns) - #if (${column.listOperation}) - #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 - #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况 - reqVO.set${JavaField}(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); - #else - reqVO.set$JavaField(null); - #end - #end - #end -#end -/** - * {@link ${table.className}ServiceImpl} 的单元测试类 - * - * @author ${table.author} - */ -@Import(${table.className}ServiceImpl.class) -public class ${table.className}ServiceImplTest extends BaseDbUnitTest { - - @Resource - private ${table.className}ServiceImpl ${classNameVar}Service; - - @Resource - private ${table.className}Mapper ${classNameVar}Mapper; - - @Test - public void testCreate${simpleClassName}_success() { - // 准备参数 - ${sceneEnum.prefixClass}${table.className}SaveReqVO createReqVO = randomPojo(${sceneEnum.prefixClass}${table.className}SaveReqVO.class).setId(null); - - // 调用 - ${primaryColumn.javaType} ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(createReqVO); - // 断言 - assertNotNull(${classNameVar}Id); - // 校验记录的属性是否正确 - ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id); - assertPojoEquals(createReqVO, ${classNameVar}, "id"); - } - - @Test - public void testUpdate${simpleClassName}_success() { - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); - ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 - // 准备参数 - ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO = randomPojo(${sceneEnum.prefixClass}${table.className}SaveReqVO.class, o -> { - o.setId(db${simpleClassName}.getId()); // 设置更新的 ID - }); - - // 调用 - ${classNameVar}Service.update${simpleClassName}(updateReqVO); - // 校验是否更新正确 - ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(updateReqVO.getId()); // 获取最新的 - assertPojoEquals(updateReqVO, ${classNameVar}); - } - - @Test - public void testUpdate${simpleClassName}_notExists() { - // 准备参数 - ${sceneEnum.prefixClass}${table.className}SaveReqVO updateReqVO = randomPojo(${sceneEnum.prefixClass}${table.className}SaveReqVO.class); - - // 调用, 并断言异常 - assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(updateReqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - - @Test - public void testDelete${simpleClassName}_success() { - // mock 数据 - ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); - ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 - // 准备参数 - ${primaryColumn.javaType} id = db${simpleClassName}.getId(); - - // 调用 - ${classNameVar}Service.delete${simpleClassName}(id); - // 校验数据不存在了 - assertNull(${classNameVar}Mapper.selectById(id)); - } - - @Test - public void testDelete${simpleClassName}_notExists() { - // 准备参数 - ${primaryColumn.javaType} id = random${primaryColumn.javaType}Id(); - - // 调用, 并断言异常 - assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); - } - -## 特殊:树表专属逻辑(树不需要分页接口) -#if ( $table.templateType != 2 ) - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGet${simpleClassName}Page() { - #getPageCondition("PageReqVO") - - // 调用 - PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(reqVO); - // 断言 - assertEquals(1, pageResult.getTotal()); - assertEquals(1, pageResult.getList().size()); - assertPojoEquals(db${simpleClassName}, pageResult.getList().get(0)); - } -#else - @Test - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 - public void testGet${simpleClassName}List() { - #getPageCondition("ListReqVO") - - // 调用 - List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(reqVO); - // 断言 - assertEquals(1, list.size()); - assertPojoEquals(db${simpleClassName}, list.get(0)); - } -#end - -} \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/sql/h2.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/sql/h2.vm deleted file mode 100644 index a073fdb..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/sql/h2.vm +++ /dev/null @@ -1,37 +0,0 @@ --- 将该建表 SQL 语句,添加到 yudao-module-${table.moduleName}-biz 模块的 test/resources/sql/create_tables.sql 文件里 -CREATE TABLE IF NOT EXISTS "${table.tableName.toLowerCase()}" ( -#foreach ($column in $columns) -#if (${column.javaType} == 'Long') - #set ($dataType='bigint') -#elseif (${column.javaType} == 'Integer') - #set ($dataType='int') -#elseif (${column.javaType} == 'Boolean') - #set ($dataType='bit') -#elseif (${column.javaType} == 'Date') - #set ($dataType='datetime') -#else - #set ($dataType='varchar') -#end - #if (${column.primaryKey})##处理主键 - "${column.javaField}"#if (${column.javaType} == 'String') ${dataType} NOT NULL#else ${dataType} NOT NULL GENERATED BY DEFAULT AS IDENTITY#end, - #else - #if (${column.columnName} == 'create_time') - "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - #elseif (${column.columnName} == 'update_time') - "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - #elseif (${column.columnName} == 'creator' || ${column.columnName} == 'updater') - "${column.columnName}" ${dataType} DEFAULT '', - #elseif (${column.columnName} == 'deleted') - "deleted" bit NOT NULL DEFAULT FALSE, - #elseif (${column.columnName} == 'tenant_id') - "tenant_id" bigint NOT NULL DEFAULT 0, - #else - "${column.columnName.toLowerCase()}" ${dataType}#if (${column.nullable} == false) NOT NULL#end, - #end - #end -#end - PRIMARY KEY ("${primaryColumn.columnName.toLowerCase()}") -) COMMENT '${table.tableComment}'; - --- 将该删表 SQL 语句,添加到 yudao-module-${table.moduleName}-biz 模块的 test/resources/sql/clean.sql 文件里 -DELETE FROM "${table.tableName}"; \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/sql/sql.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/sql/sql.vm deleted file mode 100644 index 41b107d..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/sql/sql.vm +++ /dev/null @@ -1,28 +0,0 @@ --- 菜单 SQL -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status, component_name -) -VALUES ( - '${table.classComment}管理', '', 2, 0, ${table.parentMenuId}, - '${simpleClassName_strikeCase}', '', '${table.moduleName}/${table.businessName}/index', 0, '${table.className}' -); - --- 按钮父菜单ID --- 暂时只支持 MySQL。如果你是 Oracle、PostgreSQL、SQLServer 的话,需要手动修改 @parentId 的部分的代码 -SELECT @parentId := LAST_INSERT_ID(); - --- 按钮 SQL -#set ($functionNames = ['查询', '创建', '更新', '删除', '导出']) -#set ($functionOps = ['query', 'create', 'update', 'delete', 'export']) -#foreach ($functionName in $functionNames) -#set ($index = $foreach.count - 1) -INSERT INTO system_menu( - name, permission, type, sort, parent_id, - path, icon, component, status -) -VALUES ( - '${table.classComment}${functionName}', '${permissionPrefix}:${functionOps.get($index)}', 3, $foreach.count, @parentId, - '', '', '', 0 -); -#end \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/api/api.js.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/api/api.js.vm deleted file mode 100644 index 835c019..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/api/api.js.vm +++ /dev/null @@ -1,141 +0,0 @@ -import request from '@/utils/request' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// 创建${table.classComment} -export function create${simpleClassName}(data) { - return request({ - url: '${baseURL}/create', - method: 'post', - data: data - }) -} - -// 更新${table.classComment} -export function update${simpleClassName}(data) { - return request({ - url: '${baseURL}/update', - method: 'put', - data: data - }) -} - -// 删除${table.classComment} -export function delete${simpleClassName}(id) { - return request({ - url: '${baseURL}/delete?id=' + id, - method: 'delete' - }) -} - -// 获得${table.classComment} -export function get${simpleClassName}(id) { - return request({ - url: '${baseURL}/get?id=' + id, - method: 'get' - }) -} - -#if ( $table.templateType != 2 ) -// 获得${table.classComment}分页 -export function get${simpleClassName}Page(params) { - return request({ - url: '${baseURL}/page', - method: 'get', - params - }) -} -#else -// 获得${table.classComment}列表 -export function get${simpleClassName}List(params) { - return request({ - url: '${baseURL}/list', - method: 'get', - params - }) -} -#end -// 导出${table.classComment} Excel -export function export${simpleClassName}Excel(params) { - return request({ - url: '${baseURL}/export-excel', - method: 'get', - params, - responseType: 'blob' - }) -} -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) - #set ($index = $foreach.count - 1) - #set ($subSimpleClassName = $subSimpleClassNames.get($index)) - #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 - #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 - #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - #set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) - #set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) - #set ($subClassNameVar = $subClassNameVars.get($index)) - -// ==================== 子表($subTable.classComment) ==================== - ## 情况一:MASTER_ERP 时,需要分查询页子表 - #if ($table.templateType == 11) - // 获得${subTable.classComment}分页 - export function get${subSimpleClassName}Page(params) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/page', - method: 'get', - params - }) - } - ## 情况二:非 MASTER_ERP 时,需要列表查询子表 - #else - #if ($subTable.subJoinMany) - // 获得${subTable.classComment}列表 - export function get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaField}) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=' + ${subJoinColumn.javaField}, - method: 'get' - }) - } - #else - // 获得${subTable.classComment} - export function get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField}) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=' + ${subJoinColumn.javaField}, - method: 'get' - }) - } - #end - #end - ## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 - #if ($table.templateType == 11) - // 新增${subTable.classComment} - export function create${subSimpleClassName}(data) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/create', - method: 'post', - data - }) - } - // 修改${subTable.classComment} - export function update${subSimpleClassName}(data) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/update', - method: 'post', - data - }) - } - // 删除${subTable.classComment} - export function delete${subSimpleClassName}(id) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/delete?id=' + id, - method: 'delete' - }) - } - // 获得${subTable.classComment} - export function get${subSimpleClassName}(id) { - return request({ - url: '${baseURL}/${subSimpleClassName_strikeCase}/get?id=' + id, - method: 'get' - }) - } - #end -#end \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_erp.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_erp.vue.vm deleted file mode 100644 index 99aa91a..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_erp.vue.vm +++ /dev/null @@ -1,205 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 - - - diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_inner.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_inner.vue.vm deleted file mode 100644 index ca266be..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_inner.vue.vm +++ /dev/null @@ -1,2 +0,0 @@ -## 主表的 normal 和 inner 使用相同的 form 表单 -#parse("codegen/vue/views/components/form_sub_normal.vue.vm") \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_normal.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_normal.vue.vm deleted file mode 100644 index 48a404a..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/form_sub_normal.vue.vm +++ /dev/null @@ -1,347 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - - diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_erp.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_erp.vue.vm deleted file mode 100644 index 589736b..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_erp.vue.vm +++ /dev/null @@ -1,165 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - - diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_inner.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_inner.vue.vm deleted file mode 100644 index 90b8e41..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/components/list_sub_inner.vue.vm +++ /dev/null @@ -1,4 +0,0 @@ -## 子表的 erp 和 inner 使用相似的 list 列表,差异主要两点: -## 1)inner 使用 list 不分页,erp 使用 page 分页 -## 2)erp 支持单个子表的新增、修改、删除,inner 不支持 -#parse("codegen/vue/views/components/list_sub_erp.vue.vm") \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/form.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/form.vue.vm deleted file mode 100644 index 634d05d..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/form.vue.vm +++ /dev/null @@ -1,320 +0,0 @@ - - - diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/index.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/index.vue.vm deleted file mode 100644 index 9c1e124..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue/views/index.vue.vm +++ /dev/null @@ -1,340 +0,0 @@ - - - diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/api/api.ts.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/api/api.ts.vm deleted file mode 100644 index c3044fb..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/api/api.ts.vm +++ /dev/null @@ -1,115 +0,0 @@ -import request from '@/config/axios' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// ${table.classComment} VO -export interface ${simpleClassName}VO { -#foreach ($column in $columns) -#if ($column.createOperation || $column.updateOperation) -#if(${column.javaType.toLowerCase()} == "long" || ${column.javaType.toLowerCase()} == "integer" || ${column.javaType.toLowerCase()} == "short" || ${column.javaType.toLowerCase()} == "double" || ${column.javaType.toLowerCase()} == "bigdecimal") - ${column.javaField}: number // ${column.columnComment} -#elseif(${column.javaType.toLowerCase()} == "date" || ${column.javaType.toLowerCase()} == "localdate" || ${column.javaType.toLowerCase()} == "localdatetime") - ${column.javaField}: Date // ${column.columnComment} -#else - ${column.javaField}: ${column.javaType.toLowerCase()} // ${column.columnComment} -#end -#end -#end -} - -// ${table.classComment} API -export const ${simpleClassName}Api = { -#if ( $table.templateType != 2 ) - // 查询${table.classComment}分页 - get${simpleClassName}Page: async (params: any) => { - return await request.get({ url: `${baseURL}/page`, params }) - }, -#else - // 查询${table.classComment}列表 - get${simpleClassName}List: async (params) => { - return await request.get({ url: `${baseURL}/list`, params }) - }, -#end - - // 查询${table.classComment}详情 - get${simpleClassName}: async (id: number) => { - return await request.get({ url: `${baseURL}/get?id=` + id }) - }, - - // 新增${table.classComment} - create${simpleClassName}: async (data: ${simpleClassName}VO) => { - return await request.post({ url: `${baseURL}/create`, data }) - }, - - // 修改${table.classComment} - update${simpleClassName}: async (data: ${simpleClassName}VO) => { - return await request.put({ url: `${baseURL}/update`, data }) - }, - - // 删除${table.classComment} - delete${simpleClassName}: async (id: number) => { - return await request.delete({ url: `${baseURL}/delete?id=` + id }) - }, - - // 导出${table.classComment} Excel - export${simpleClassName}: async (params) => { - return await request.download({ url: `${baseURL}/export-excel`, params }) - }, -## 特殊:主子表专属逻辑 -#foreach ($subTable in $subTables) -#set ($index = $foreach.count - 1) -#set ($subSimpleClassName = $subSimpleClassNames.get($index)) -#set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段 -#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 -#set ($subSimpleClassName_strikeCase = $subSimpleClassName_strikeCases.get($index)) -#set ($subJoinColumn_strikeCase = $subJoinColumn_strikeCases.get($index)) -#set ($subClassNameVar = $subClassNameVars.get($index)) - -// ==================== 子表($subTable.classComment) ==================== -## 情况一:MASTER_ERP 时,需要分查询页子表 -#if ( $table.templateType == 11 ) - - // 获得${subTable.classComment}分页 - get${subSimpleClassName}Page: async (params) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/page`, params }) - }, -## 情况二:非 MASTER_ERP 时,需要列表查询子表 -#else - #if ( $subTable.subJoinMany ) - - // 获得${subTable.classComment}列表 - get${subSimpleClassName}ListBy${SubJoinColumnName}: async (${subJoinColumn.javaField}) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/list-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=` + ${subJoinColumn.javaField} }) - }, - #else - - // 获得${subTable.classComment} - get${subSimpleClassName}By${SubJoinColumnName}: async (${subJoinColumn.javaField}) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/get-by-${subJoinColumn_strikeCase}?${subJoinColumn.javaField}=` + ${subJoinColumn.javaField} }) - }, - #end -#end -## 特殊:MASTER_ERP 时,支持单个的新增、修改、删除操作 -#if ( $table.templateType == 11 ) - // 新增${subTable.classComment} - create${subSimpleClassName}: async (data) => { - return await request.post({ url: `${baseURL}/${subSimpleClassName_strikeCase}/create`, data }) - }, - - // 修改${subTable.classComment} - update${subSimpleClassName}: async (data) => { - return await request.put({ url: `${baseURL}/${subSimpleClassName_strikeCase}/update`, data }) - }, - - // 删除${subTable.classComment} - delete${subSimpleClassName}: async (id: number) => { - return await request.delete({ url: `${baseURL}/${subSimpleClassName_strikeCase}/delete?id=` + id }) - }, - - // 获得${subTable.classComment} - get${subSimpleClassName}: async (id: number) => { - return await request.get({ url: `${baseURL}/${subSimpleClassName_strikeCase}/get?id=` + id }) - }, -#end -#end -} diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_erp.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_erp.vue.vm deleted file mode 100644 index 81cd977..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_erp.vue.vm +++ /dev/null @@ -1,204 +0,0 @@ -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_inner.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_inner.vue.vm deleted file mode 100644 index d8542c3..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_inner.vue.vm +++ /dev/null @@ -1,2 +0,0 @@ -## 主表的 normal 和 inner 使用相同的 form 表单 -#parse("codegen/vue3/views/components/form_sub_normal.vue.vm") \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_normal.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_normal.vue.vm deleted file mode 100644 index 3fa1eff..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/form_sub_normal.vue.vm +++ /dev/null @@ -1,360 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_erp.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_erp.vue.vm deleted file mode 100644 index 3f0710e..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_erp.vue.vm +++ /dev/null @@ -1,184 +0,0 @@ -#set ($subTable = $subTables.get($subIndex))##当前表 -#set ($subColumns = $subColumnsList.get($subIndex))##当前字段数组 -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($subSimpleClassName = $subSimpleClassNames.get($subIndex)) -#set ($subJoinColumn = $subJoinColumns.get($subIndex))##当前 join 字段 -#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写 - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm deleted file mode 100644 index 3fe6488..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/components/list_sub_inner.vue.vm +++ /dev/null @@ -1,4 +0,0 @@ -## 子表的 erp 和 inner 使用相似的 list 列表,差异主要两点: -## 1)inner 使用 list 不分页,erp 使用 page 分页 -## 2)erp 支持单个子表的新增、修改、删除,inner 不支持 -#parse("codegen/vue3/views/components/list_sub_erp.vue.vm") \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/form.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/form.vue.vm deleted file mode 100644 index e37474b..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/form.vue.vm +++ /dev/null @@ -1,300 +0,0 @@ - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/index.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/index.vue.vm deleted file mode 100644 index 399b58e..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3/views/index.vue.vm +++ /dev/null @@ -1,374 +0,0 @@ - - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/api/api.ts.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/api/api.ts.vm deleted file mode 100644 index b7f2651..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/api/api.ts.vm +++ /dev/null @@ -1,32 +0,0 @@ -import { defHttp } from '@/utils/http/axios' -#set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") - -// 查询${table.classComment}列表 -export function get${simpleClassName}Page(params) { - return defHttp.get({ url: '${baseURL}/page', params }) -} - -// 查询${table.classComment}详情 -export function get${simpleClassName}(id: number) { - return defHttp.get({ url: `${baseURL}/get?id=${id}` }) -} - -// 新增${table.classComment} -export function create${simpleClassName}(data) { - return defHttp.post({ url: '${baseURL}/create', data }) -} - -// 修改${table.classComment} -export function update${simpleClassName}(data) { - return defHttp.put({ url: '${baseURL}/update', data }) -} - -// 删除${table.classComment} -export function delete${simpleClassName}(id: number) { - return defHttp.delete({ url: `${baseURL}/delete?id=${id}` }) -} - -// 导出${table.classComment} Excel -export function export${simpleClassName}(params) { - return defHttp.download({ url: '${baseURL}/export-excel', params }, '${table.classComment}.xls') -} diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/data.ts.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/data.ts.vm deleted file mode 100644 index 56f4e82..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/data.ts.vm +++ /dev/null @@ -1,260 +0,0 @@ -import type {BasicColumn, FormSchema} from '@/components/Table' -import {useRender} from '@/components/Table' -import {DICT_TYPE, getDictOptions} from '@/utils/dict' - -export const columns: BasicColumn[] = [ -#foreach($column in $columns) -#if ($column.listOperationResult) - #set ($dictType=$column.dictType) - #set ($javaField = $column.javaField) - #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment=$column.columnComment) -#if ($column.javaType == "LocalDateTime")## 时间类型 - { - title: '${comment}', - dataIndex: '${javaField}', - width: 180, - customRender: ({ text }) => { - return useRender.renderDate(text) - }, - }, -#elseif("" != $column.dictType)## 数据字典 - { - title: '${comment}', - dataIndex: '${javaField}', - width: 180, - customRender: ({ text }) => { - return useRender.renderDict(text, DICT_TYPE.$dictType.toUpperCase()) - }, - }, -#else - { - title: '${comment}', - dataIndex: '${javaField}', - width: 160, - }, -#end -#end -#end -] - -export const searchFormSchema: FormSchema[] = [ -#foreach($column in $columns) -#if ($column.listOperation) - #set ($dictType=$column.dictType) - #set ($javaType = $column.javaType) - #set ($javaField = $column.javaField) - #set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment=$column.columnComment) - #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") - #set ($dictMethod = "number") - #elseif ($javaType == "String") - #set ($dictMethod = "string") - #elseif ($javaType == "Boolean") - #set ($dictMethod = "boolean") - #end - { - label: '${comment}', - field: '${javaField}', - #if ($column.htmlType == "input") - component: 'Input', - #elseif ($column.htmlType == "select") - component: 'Select', - componentProps: { - #if ("" != $dictType)## 设置了 dictType 数据字典的情况 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else## 未设置 dictType 数据字典的情况 - options: [], - #end - }, - #elseif ($column.htmlType == "radio") - component: 'RadioButtonGroup', - componentProps: { - #if ("" != $dictType)## 设置了 dictType 数据字典的情况 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else## 未设置 dictType 数据字典的情况 - options: [], - #end - }, - #elseif($column.htmlType == "datetime") - component: 'RangePicker', - #end - colProps: { span: 8 }, - }, -#end -#end -] - -export const createFormSchema: FormSchema[] = [ - { - label: '编号', - field: 'id', - show: false, - component: 'Input', - }, -#foreach($column in $columns) -#if ($column.createOperation) - #set ($dictType = $column.dictType) - #set ($javaType = $column.javaType) - #set ($javaField = $column.javaField) - #set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) - #set ($comment = $column.columnComment) - #if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") - #set ($dictMethod = "number") - #elseif ($javaType == "String") - #set ($dictMethod = "string") - #elseif ($javaType == "Boolean") - #set ($dictMethod = "boolean") - #end -#if (!$column.primaryKey)## 忽略主键,不用在表单里 - { - label: '${comment}', - field: '${javaField}', - #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 - required: true, - #end - #if ($column.htmlType == "input") - component: 'Input', - #elseif($column.htmlType == "imageUpload")## 图片上传 - component: 'FileUpload', - componentProps: { - fileType: 'image', - maxCount: 1, - }, - #elseif($column.htmlType == "fileUpload")## 文件上传 - component: 'FileUpload', - componentProps: { - fileType: 'file', - maxCount: 1, - }, - #elseif($column.htmlType == "editor")## 文本编辑器 - component: 'Editor', - #elseif($column.htmlType == "select")## 下拉框 - component: 'Select', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "checkbox")## 多选框 - component: 'Checkbox', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "radio")## 单选框 - component: 'RadioButtonGroup', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "datetime")## 时间框 - component: 'DatePicker', - componentProps: { - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'x', - }, - #elseif($column.htmlType == "textarea")## 文本域 - component: 'InputTextArea', - #end - }, -#end -#end -#end -] - -export const updateFormSchema: FormSchema[] = [ - { - label: '编号', - field: 'id', - show: false, - component: 'Input', - }, -#foreach($column in $columns) -#if ($column.updateOperation) -#set ($dictType = $column.dictType) -#set ($javaType = $column.javaType) -#set ($javaField = $column.javaField) -#set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) -#set ($comment = $column.columnComment) -#if ($javaType == "Integer" || $javaType == "Long" || $javaType == "Byte" || $javaType == "Short") - #set ($dictMethod = "number") -#elseif ($javaType == "String") - #set ($dictMethod = "string") -#elseif ($javaType == "Boolean") - #set ($dictMethod = "boolean") -#end - #if (!$column.primaryKey)## 忽略主键,不用在表单里 - { - label: '${comment}', - field: '${javaField}', - #if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键 - required: true, - #end - #if ($column.htmlType == "input") - component: 'Input', - #elseif($column.htmlType == "imageUpload")## 图片上传 - component: 'FileUpload', - componentProps: { - fileType: 'image', - maxCount: 1, - }, - #elseif($column.htmlType == "fileUpload")## 文件上传 - component: 'FileUpload', - componentProps: { - fileType: 'file', - maxCount: 1, - }, - #elseif($column.htmlType == "editor")## 文本编辑器 - component: 'Editor', - #elseif($column.htmlType == "select")## 下拉框 - component: 'Select', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "checkbox")## 多选框 - component: 'Checkbox', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "radio")## 单选框 - component: 'RadioButtonGroup', - componentProps: { - #if ("" != $dictType)## 有数据字典 - options: getDictOptions(DICT_TYPE.$dictType.toUpperCase(), '$dictMethod'), - #else##没数据字典 - options:[], - #end - }, - #elseif($column.htmlType == "datetime")## 时间框 - component: 'DatePicker', - componentProps: { - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'x', - }, - #elseif($column.htmlType == "textarea")## 文本域 - component: 'InputTextArea', - #end - }, - #end -#end -#end -] \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/form.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/form.vue.vm deleted file mode 100644 index 1804365..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/form.vue.vm +++ /dev/null @@ -1,58 +0,0 @@ - - \ No newline at end of file diff --git a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/index.vue.vm b/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/index.vue.vm deleted file mode 100644 index 9e59b12..0000000 --- a/tashow-module/tashow-module-infra/src/main/resources/codegen/vue3_vben/views/index.vue.vm +++ /dev/null @@ -1,92 +0,0 @@ - - diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/CategoryController.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/CategoryController.java new file mode 100644 index 0000000..351c86d --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/CategoryController.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + *//* + + +package com.tashow.cloud.product.controller; + +import com.tashow.cloud.product.domain.Category; +import com.tashow.cloud.product.domain.ServerResponseEntity; +import com.tashow.cloud.product.service.CategoryService; +import jakarta.annotation.security.PermitAll; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +*/ +/** + * 分类接口 + * @author lanhai + *//* + +@RestController +@RequestMapping("/category") +public class CategoryController { + + @Autowired + private CategoryService categoryService; + + */ +/** + * 分类信息列表接口 + *//* + + @PermitAll + @GetMapping("/categoryInfo") + public ServerResponseEntity> categoryInfo() { + List categories = categoryService.tableCategory(1L); + return ServerResponseEntity.success(categories); + } + + + +} +*/ diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/ProdController.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/ProdController.java new file mode 100644 index 0000000..79aeea8 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/controller/ProdController.java @@ -0,0 +1,77 @@ +package com.tashow.cloud.product.controller; + +import com.tashow.cloud.product.dto.ProdDO; +import com.tashow.cloud.product.vo.prod.*; +import jakarta.annotation.security.PermitAll; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; +import com.tashow.cloud.common.pojo.PageParam; +import com.tashow.cloud.common.pojo.PageResult; +import com.tashow.cloud.common.pojo.CommonResult; +import com.tashow.cloud.common.util.object.BeanUtils; +import static com.tashow.cloud.common.pojo.CommonResult.success; +import com.tashow.cloud.web.apilog.core.annotation.ApiAccessLog; +import static com.tashow.cloud.web.apilog.core.enums.OperateTypeEnum.*; +import com.tashow.cloud.product.service.ProdService; + +@Tag(name = "管理后台 - 商品") +@RestController +@RequestMapping("/prod") +@Validated +public class ProdController { + + @Resource + private ProdService prodService; + + @PostMapping("/create") + @Operation(summary = "创建商品") + @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:create')") + public CommonResult createProd(@Valid @RequestBody ProdSaveReqVO createReqVO) { + return success(prodService.createProd(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新商品") + @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:update')") + public CommonResult updateProd(@Valid @RequestBody ProdSaveReqVO updateReqVO) { + prodService.updateProd(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除商品") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:delete')") + public CommonResult deleteProd(@RequestParam("id") Long id) { + prodService.deleteProd(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得商品") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:query')") + public CommonResult getProd(@RequestParam("id") Long id) { + ProdDO prod = prodService.getProd(id); + return success(BeanUtils.toBean(prod, ProdRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得商品分页") + @PreAuthorize("@ss.hasPermission('tashow-module-product:prod:query')") + @PermitAll + public CommonResult> getProdPage(@Valid ProdPageReqVO pageReqVO) { + PageResult pageResult = prodService.getProdPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProdRespVO.class)); + } +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Category.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Category.java new file mode 100644 index 0000000..3ccde10 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Category.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + *//* + + +package com.tashow.cloud.product.domain; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +*/ +/** + * @author lanhai + *//* + +@Data +@TableName("tz_category") +public class Category implements Serializable { + + */ +/** + * 类目ID + *//* + + private Long categoryId; + + */ +/** + * 店铺ID + *//* + + private Long shopId; + + */ +/** + * 父节点 + *//* + + private Long parentId; + + */ +/** + * 产品类目名称 + *//* + + private String categoryName; + + */ +/** + * 类目图标 + *//* + + private String icon; + + */ +/** + * 类目的显示图片 + *//* + + private String pic; + + */ +/** + * 类目描述 + *//* + + private String describe; + + */ +/** + * 标签 + *//* + + private String tag; + + */ +/** + * 排序 + *//* + + private Integer seq; + + */ +/** + * 默认是1,表示正常状态,0为下线状态 + *//* + + private Integer status; + + */ +/** + * 创建时间 + *//* + + private Date createTime; + + */ +/** + * 创建时间 + *//* + + private String creator; + + */ +/** + * 分类层级 + *//* + + private Integer grade; + + */ +/** + * 更新时间 + *//* + + private Date updateTime; + + */ +/** + * 修改人 + *//* + + private String updater; + + private static final long serialVersionUID = 1L; + + +} +*/ diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Prod.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Prod.java new file mode 100644 index 0000000..4938e2b --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/Prod.java @@ -0,0 +1,200 @@ +package com.tashow.cloud.product.domain; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +/** + * 商品对象 prod + * + * @author ruoyi + * @date 2025-07-25 + */ + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class Prod extends BaseEntity { +private static final long serialVersionUID=1L; + + + /** + * 产品ID + */ + @ApiModelProperty(value = "产品ID", position = 0) + private Long prodId; + + + /** + * 商品名称 + */ + @ApiModelProperty(value = "商品名称", position = 1) + private String prodName; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "商品简称", position = 2) + private String abbreviation; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "seo标题", position = 3) + private String seoName; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "seo搜索", position = 4) + private String seoSearch; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "关键词", position = 5) + private String keyword; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "店铺id", position = 6) + private Long shopId; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "简要描述,卖点等", position = 7) + private String brief; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "品牌", position = 8) + private String brand; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "详细描述", position = 9) + private String content; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "商品编号", position = 10) + private String prodNumber; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "商品主图", position = 11) + private String pic; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "商品轮播图片,以,分割", position = 12) + private String imgs; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "默认是1,表示正常状态, -1表示删除, 0下架", position = 13) + private Long status; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "商品分类", position = 14) + private Long categoryId; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "销量", position = 15) + private Long soldNum; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "分享图", position = 16) + private String shareImage; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "分享话术", position = 17) + private String shareContent; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否开启区域0关1开", position = 18) + private Integer regionSwitch; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否特殊时段0关1开", position = 19) + private Integer additionalSwitch; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否特殊日期(节假日周末什么的)0关1开", position = 20) + private Integer additionalFeeSwitch; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否紧急响应服务0关1开", position = 21) + private Integer emergencySwitch; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否预约0关1开", position = 22) + private Integer reservationSwitch; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否接单上线0关1开", position = 23) + private Integer orderLimitSwitch; + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "是否开启体重配置0关1开", position = 24) + private Integer weightSwitch; + + + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "版本 乐观锁", position = 29) + private Long version; + + /** + * 展示的权重 + */ + @ApiModelProperty(value = "展示的权重", position = 30) + private Long top; + +} diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/ServerResponseEntity.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/ServerResponseEntity.java new file mode 100644 index 0000000..0646c3f --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/domain/ServerResponseEntity.java @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + */ + +package com.tashow.cloud.product.domain; + +import lombok.extern.slf4j.Slf4j; + +import java.io.Serializable; +import java.util.Objects; + +/** + * @author lanhai + */ +@Slf4j +public class ServerResponseEntity implements Serializable { + + /** + * 状态码 + */ + private String code; + + /** + * 信息 + */ + private String msg; + + /** + * 数据 + */ + private T data; + + /** + * 版本 + */ + private String version; + + /** + * 时间 + */ + private Long timestamp; + + private String sign; + + public String getSign() { + return sign; + } + + public void setSign(String sign) { + this.sign = sign; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public T getData() { + return data; + } + + public ServerResponseEntity setData(T data) { + this.data = data; + return this; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public Long getTimestamp() { + return timestamp; + } + + public void setTimestamp(Long timestamp) { + this.timestamp = timestamp; + } + + public boolean isSuccess() { + return Objects.equals(ResponseEnum.OK.value(), this.code); + } + public boolean isFail() { + return !Objects.equals(ResponseEnum.OK.value(), this.code); + } + + public ServerResponseEntity() { + // 版本号 + this.version = "mall4j.v230424"; + } + + public static ServerResponseEntity success(T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setData(data); + serverResponseEntity.setCode(ResponseEnum.OK.value()); + return serverResponseEntity; + } + + public static ServerResponseEntity success() { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setCode(ResponseEnum.OK.value()); + serverResponseEntity.setMsg(ResponseEnum.OK.getMsg()); + return serverResponseEntity; + } + + public static ServerResponseEntity success(Integer code, T data) { + return success(String.valueOf(code), data); + } + + public static ServerResponseEntity success(String code, T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setCode(code); + serverResponseEntity.setData(data); + return serverResponseEntity; + } + + /** + * 前端显示失败消息 + * @param msg 失败消息 + * @return + */ + public static ServerResponseEntity showFailMsg(String msg) { + log.error(msg); + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(msg); + serverResponseEntity.setCode(ResponseEnum.SHOW_FAIL.value()); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(ResponseEnum responseEnum) { + log.error(responseEnum.toString()); + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(responseEnum.getMsg()); + serverResponseEntity.setCode(responseEnum.value()); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(ResponseEnum responseEnum, T data) { + log.error(responseEnum.toString()); + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(responseEnum.getMsg()); + serverResponseEntity.setCode(responseEnum.value()); + serverResponseEntity.setData(data); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(String code, String msg, T data) { + log.error(msg); + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setMsg(msg); + serverResponseEntity.setCode(code); + serverResponseEntity.setData(data); + return serverResponseEntity; + } + + public static ServerResponseEntity fail(String code, String msg) { + return fail(code, msg, null); + } + + public static ServerResponseEntity fail(Integer code, T data) { + ServerResponseEntity serverResponseEntity = new ServerResponseEntity<>(); + serverResponseEntity.setCode(String.valueOf(code)); + serverResponseEntity.setData(data); + return serverResponseEntity; + } + + @Override + public String toString() { + return "ServerResponseEntity{" + + "code='" + code + '\'' + + ", msg='" + msg + '\'' + + ", data=" + data + + ", version='" + version + '\'' + + ", timestamp=" + timestamp + + ", sign='" + sign + '\'' + + '}'; + } +} diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/ProdDO.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/ProdDO.java new file mode 100644 index 0000000..fe9a9e4 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/dto/ProdDO.java @@ -0,0 +1,143 @@ +package com.tashow.cloud.product.dto; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.tashow.cloud.mybatis.mybatis.core.dataobject.BaseDO; + +/** + * 商品 DO + * + * @author 芋道源码 + */ +@TableName("tz_prod") +@KeySequence("tz_prod_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProdDO extends BaseDO { + + /** + * 产品ID + */ + @TableId + private Long prodId; + /** + * 商品名称 + */ + private String prodName; + /** + * 商品简称 + */ + private String abbreviation; + /** + * seo标题 + */ + private String seoName; + /** + * seo搜索 + */ + private String seoSearch; + /** + * 关键词 + */ + private String keyword; + /** + * 店铺id + */ + private Long shopId; + /** + * 简要描述,卖点等 + */ + private String brief; + /** + * 品牌 + */ + private String brand; + /** + * 详细描述 + */ + private String content; + /** + * 商品编号 + */ + private String prodNumber; + /** + * 商品主图 + */ + private String pic; + /** + * 商品轮播图片,以,分割 + */ + private String imgs; + /** + * 默认是1,表示正常状态, -1表示删除, 0下架 + */ + private Integer status; + /** + * 商品分类 + */ + private Long categoryId; + /** + * 销量 + */ + private Integer soldNum; + /** + * 分享图 + */ + private String shareImage; + /** + * 分享话术 + */ + private String shareContent; + /** + * 是否开启区域0关1开 + */ + private Boolean regionSwitch; + /** + * 是否特殊时段0关1开 + */ + private Boolean additionalSwitch; + /** + * 是否特殊日期(节假日周末什么的)0关1开 + */ + private Boolean additionalFeeSwitch; + /** + * 是否紧急响应服务0关1开 + */ + private Boolean emergencySwitch; + /** + * 是否预约0关1开 + */ + private Boolean reservationSwitch; + /** + * 是否接单上线0关1开 + */ + private Boolean orderLimitSwitch; + /** + * 是否开启体重配置0关1开 + */ + private Boolean weightSwitch; + /** + * 创建人 + */ + private String createBy; + /** + * 修改人 + */ + private String updateBy; + /** + * 版本 乐观锁 + */ + private Integer version; + /** + * 展示的权重 + */ + private Integer top; + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/CategoryMapper.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/CategoryMapper.java new file mode 100644 index 0000000..81239f8 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/CategoryMapper.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + *//* + + +package com.tashow.cloud.product.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.tashow.cloud.product.domain.Category; + +import java.util.List; + +*/ +/** + * @author lanhai + *//* + +public interface CategoryMapper extends BaseMapper { + + */ +/** + * 根据父级id获取分类列表 + * + * @param parentId + * @return + *//* + + List listByParentId(Long parentId); + + + */ +/** + * 根据店铺id获取分类列表 + * + * @param shopId + * @return + *//* + + List tableCategory(Long shopId); +}*/ diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java new file mode 100644 index 0000000..ce403c8 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/mapper/ProdMapper.java @@ -0,0 +1,22 @@ +package com.tashow.cloud.product.mapper; + +import java.util.*; + +import com.tashow.cloud.common.pojo.PageResult; +import com.tashow.cloud.mybatis.mybatis.core.query.LambdaQueryWrapperX; +import com.tashow.cloud.mybatis.mybatis.core.mapper.BaseMapperX; +import com.tashow.cloud.product.dto.ProdDO; +import com.tashow.cloud.product.vo.prod.ProdPageReqVO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 商品 Mapper + * + * @author 芋道源码 + */ +@Mapper +public interface ProdMapper extends BaseMapperX { + +// PageResult getProdPage1(ProdPageReqVO reqVO); + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/CategoryService.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/CategoryService.java new file mode 100644 index 0000000..9d72680 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/CategoryService.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + *//* + + +package com.tashow.cloud.product.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.tashow.cloud.product.domain.Category; + +import java.util.List; + +*/ +/** + * @author lanhai + * 商品分类 + *//* + +public interface CategoryService extends IService { + + */ +/** + * 根据parentId获取分类 + * @param parentId 0 一级分类 + * @return + *//* + + List listByParentId(Long parentId); + + + */ +/** + * 获取用于页面表单展现的category列表,根据seq排序 + * @param shopId 店铺id + * @return + *//* + + List tableCategory(Long shopId); + + */ +/** + * 保存分类、品牌、参数 + * @param category + *//* + + void saveCategory(Category category); + + */ +/** + * 修改分类、品牌、参数 + * @param category + *//* + + void updateCategory(Category category); + + */ +/** + * 删除分类、品牌、参数 以及分类对应的图片 + * @param categoryId 分类id + *//* + + void deleteCategory(Long categoryId); + +} +*/ diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java new file mode 100644 index 0000000..7550b55 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/ProdService.java @@ -0,0 +1,57 @@ +package com.tashow.cloud.product.service; + +import java.util.*; + +import com.tashow.cloud.product.dto.ProdDO; +import com.tashow.cloud.product.vo.prod.ProdPageReqVO; +import com.tashow.cloud.product.vo.prod.ProdSaveReqVO; +import jakarta.validation.*; +import com.tashow.cloud.common.pojo.PageResult; +import com.tashow.cloud.common.pojo.PageParam; + +/** + * 商品 Service 接口 + * + * @author 芋道源码 + */ +public interface ProdService { + + /** + * 创建商品 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProd(@Valid ProdSaveReqVO createReqVO); + + /** + * 更新商品 + * + * @param updateReqVO 更新信息 + */ + void updateProd(@Valid ProdSaveReqVO updateReqVO); + + /** + * 删除商品 + * + * @param id 编号 + */ + void deleteProd(Long id); + + /** + * 获得商品 + * + * @param id 编号 + * @return 商品 + */ + ProdDO getProd(Long id); + + /** + * 获得商品分页 + * + * @param pageReqVO 分页查询 + * @return 商品分页 + */ + PageResult getProdPage(ProdPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/CategoryServiceImpl.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..0ac5676 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/CategoryServiceImpl.java @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2018-2999 广州市蓝海创新科技有限公司 All rights reserved. + * + * https://www.mall4j.com/ + * + * 未经允许,不可做商业用途! + * + * 版权所有,侵权必究! + *//* + + +package com.tashow.cloud.product.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; +import com.tashow.cloud.product.domain.Category; +import com.tashow.cloud.product.mapper.CategoryMapper; +import com.tashow.cloud.product.service.CategoryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +*/ +/** + * @author lanhai + *//* + +@Service +public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + + @Autowired + private CategoryMapper categoryMapper; + + @Override + public List listByParentId(Long parentId) { + return categoryMapper.listByParentId(parentId); + } + + @Override + public List tableCategory(Long shopId) { + return categoryMapper.tableCategory(shopId); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveCategory(Category category) { + category.setCreateTime(new Date()); + // 保存分类信息 + categoryMapper.insert(category); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateCategory(Category category) { + Category dbCategory = categoryMapper.selectById(category.getCategoryId()); + category.setUpdateTime(new Date()); + // 保存分类信息 + categoryMapper.updateById(category); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteCategory(Long categoryId) { + Category category = categoryMapper.selectById(categoryId); + categoryMapper.deleteById(categoryId); + } + + + +} +*/ diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java new file mode 100644 index 0000000..c2eb3ee --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/service/impl/ProdServiceImpl.java @@ -0,0 +1,75 @@ +package com.tashow.cloud.product.service.impl; + +import com.tashow.cloud.product.dto.ProdDO; +import com.tashow.cloud.product.mapper.ProdMapper; +import com.tashow.cloud.product.service.ProdService; +import com.tashow.cloud.product.vo.prod.ProdPageReqVO; +import com.tashow.cloud.product.vo.prod.ProdSaveReqVO; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.tashow.cloud.common.pojo.PageResult; +import com.tashow.cloud.common.pojo.PageParam; +import com.tashow.cloud.common.util.object.BeanUtils; + + +import static com.tashow.cloud.common.exception.util.ServiceExceptionUtil.exception; + +/** + * 商品 Service 实现类 + * + * @author 芋道源码 + */ +@Service +@Validated +public class ProdServiceImpl implements ProdService { + + @Resource + private ProdMapper prodMapper; + + @Override + public Long createProd(ProdSaveReqVO createReqVO) { + // 插入 + ProdDO prod = BeanUtils.toBean(createReqVO, ProdDO.class); + prodMapper.insert(prod); + // 返回 + return prod.getProdId(); + } + + @Override + public void updateProd(ProdSaveReqVO updateReqVO) { + // 校验存在 + validateProdExists(updateReqVO.getProdId()); + // 更新 + ProdDO updateObj = BeanUtils.toBean(updateReqVO, ProdDO.class); + prodMapper.updateById(updateObj); + } + + @Override + public void deleteProd(Long id) { + // 校验存在 + validateProdExists(id); + // 删除 + prodMapper.deleteById(id); + } + + private void validateProdExists(Long id) { + if (prodMapper.selectById(id) == null) { + //throw exception(100, "商品不存在"); + } + } + + @Override + public ProdDO getProd(Long id) { + return prodMapper.selectById(id); + } + + @Override + public PageResult getProdPage(ProdPageReqVO pageReqVO) { + return null;// prodMapper.getProdPage1(pageReqVO); + } + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdPageReqVO.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdPageReqVO.java new file mode 100644 index 0000000..3613231 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdPageReqVO.java @@ -0,0 +1,108 @@ +package com.tashow.cloud.product.vo.prod; + +import com.tashow.cloud.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.tashow.cloud.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 商品分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ProdPageReqVO extends PageParam { + + @Schema(description = "商品名称", example = "赵六") + private String prodName; + + @Schema(description = "商品简称") + private String abbreviation; + + @Schema(description = "seo标题", example = "李四") + private String seoName; + + @Schema(description = "seo搜索") + private String seoSearch; + + @Schema(description = "关键词") + private String keyword; + + @Schema(description = "店铺id", example = "10843") + private Long shopId; + + @Schema(description = "简要描述,卖点等") + private String brief; + + @Schema(description = "品牌") + private String brand; + + @Schema(description = "详细描述") + private String content; + + @Schema(description = "商品编号") + private String prodNumber; + + @Schema(description = "商品主图") + private String pic; + + @Schema(description = "商品轮播图片,以,分割") + private String imgs; + + @Schema(description = "默认是1,表示正常状态, -1表示删除, 0下架", example = "2") + private Integer status; + + @Schema(description = "商品分类", example = "14895") + private Long categoryId; + + @Schema(description = "销量") + private Integer soldNum; + + @Schema(description = "分享图") + private String shareImage; + + @Schema(description = "分享话术") + private String shareContent; + + @Schema(description = "是否开启区域0关1开") + private Boolean regionSwitch; + + @Schema(description = "是否特殊时段0关1开") + private Boolean additionalSwitch; + + @Schema(description = "是否特殊日期(节假日周末什么的)0关1开") + private Boolean additionalFeeSwitch; + + @Schema(description = "是否紧急响应服务0关1开") + private Boolean emergencySwitch; + + @Schema(description = "是否预约0关1开") + private Boolean reservationSwitch; + + @Schema(description = "是否接单上线0关1开") + private Boolean orderLimitSwitch; + + @Schema(description = "是否开启体重配置0关1开") + private Boolean weightSwitch; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "创建人") + private String createBy; + + @Schema(description = "修改人") + private String updateBy; + + @Schema(description = "版本 乐观锁") + private Integer version; + + @Schema(description = "展示的权重") + private Integer top; + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdRespVO.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdRespVO.java new file mode 100644 index 0000000..50af918 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdRespVO.java @@ -0,0 +1,135 @@ +package com.tashow.cloud.product.vo.prod; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 商品 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProdRespVO { + + @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943") + @ExcelProperty("产品ID") + private Long prodId; + + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("商品名称") + private String prodName; + + @Schema(description = "商品简称") + @ExcelProperty("商品简称") + private String abbreviation; + + @Schema(description = "seo标题", example = "李四") + @ExcelProperty("seo标题") + private String seoName; + + @Schema(description = "seo搜索") + @ExcelProperty("seo搜索") + private String seoSearch; + + @Schema(description = "关键词") + @ExcelProperty("关键词") + private String keyword; + + @Schema(description = "店铺id", example = "10843") + @ExcelProperty("店铺id") + private Long shopId; + + @Schema(description = "简要描述,卖点等") + @ExcelProperty("简要描述,卖点等") + private String brief; + + @Schema(description = "品牌") + @ExcelProperty("品牌") + private String brand; + + @Schema(description = "详细描述") + @ExcelProperty("详细描述") + private String content; + + @Schema(description = "商品编号") + @ExcelProperty("商品编号") + private String prodNumber; + + @Schema(description = "商品主图") + @ExcelProperty("商品主图") + private String pic; + + @Schema(description = "商品轮播图片,以,分割") + @ExcelProperty("商品轮播图片,以,分割") + private String imgs; + + @Schema(description = "默认是1,表示正常状态, -1表示删除, 0下架", example = "2") + @ExcelProperty("默认是1,表示正常状态, -1表示删除, 0下架") + private Integer status; + + @Schema(description = "商品分类", example = "14895") + @ExcelProperty("商品分类") + private Long categoryId; + + @Schema(description = "销量") + @ExcelProperty("销量") + private Integer soldNum; + + @Schema(description = "分享图") + @ExcelProperty("分享图") + private String shareImage; + + @Schema(description = "分享话术") + @ExcelProperty("分享话术") + private String shareContent; + + @Schema(description = "是否开启区域0关1开") + @ExcelProperty("是否开启区域0关1开") + private Boolean regionSwitch; + + @Schema(description = "是否特殊时段0关1开") + @ExcelProperty("是否特殊时段0关1开") + private Boolean additionalSwitch; + + @Schema(description = "是否特殊日期(节假日周末什么的)0关1开") + @ExcelProperty("是否特殊日期(节假日周末什么的)0关1开") + private Boolean additionalFeeSwitch; + + @Schema(description = "是否紧急响应服务0关1开") + @ExcelProperty("是否紧急响应服务0关1开") + private Boolean emergencySwitch; + + @Schema(description = "是否预约0关1开") + @ExcelProperty("是否预约0关1开") + private Boolean reservationSwitch; + + @Schema(description = "是否接单上线0关1开") + @ExcelProperty("是否接单上线0关1开") + private Boolean orderLimitSwitch; + + @Schema(description = "是否开启体重配置0关1开") + @ExcelProperty("是否开启体重配置0关1开") + private Boolean weightSwitch; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "创建人") + @ExcelProperty("创建人") + private String createBy; + + @Schema(description = "修改人") + @ExcelProperty("修改人") + private String updateBy; + + @Schema(description = "版本 乐观锁") + @ExcelProperty("版本 乐观锁") + private Integer version; + + @Schema(description = "展示的权重") + @ExcelProperty("展示的权重") + private Integer top; + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdSaveReqVO.java b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdSaveReqVO.java new file mode 100644 index 0000000..945173a --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/java/com/tashow/cloud/product/vo/prod/ProdSaveReqVO.java @@ -0,0 +1,99 @@ +package com.tashow.cloud.product.vo.prod; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "管理后台 - 商品新增/修改 Request VO") +@Data +public class ProdSaveReqVO { + + @Schema(description = "产品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "6943") + private Long prodId; + + @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "商品名称不能为空") + private String prodName; + + @Schema(description = "商品简称") + private String abbreviation; + + @Schema(description = "seo标题", example = "李四") + private String seoName; + + @Schema(description = "seo搜索") + private String seoSearch; + + @Schema(description = "关键词") + private String keyword; + + @Schema(description = "店铺id", example = "10843") + private Long shopId; + + @Schema(description = "简要描述,卖点等") + private String brief; + + @Schema(description = "品牌") + private String brand; + + @Schema(description = "详细描述") + private String content; + + @Schema(description = "商品编号") + private String prodNumber; + + @Schema(description = "商品主图") + private String pic; + + @Schema(description = "商品轮播图片,以,分割") + private String imgs; + + @Schema(description = "默认是1,表示正常状态, -1表示删除, 0下架", example = "2") + private Integer status; + + @Schema(description = "商品分类", example = "14895") + private Long categoryId; + + @Schema(description = "销量") + private Integer soldNum; + + @Schema(description = "分享图") + private String shareImage; + + @Schema(description = "分享话术") + private String shareContent; + + @Schema(description = "是否开启区域0关1开") + private Boolean regionSwitch; + + @Schema(description = "是否特殊时段0关1开") + private Boolean additionalSwitch; + + @Schema(description = "是否特殊日期(节假日周末什么的)0关1开") + private Boolean additionalFeeSwitch; + + @Schema(description = "是否紧急响应服务0关1开") + private Boolean emergencySwitch; + + @Schema(description = "是否预约0关1开") + private Boolean reservationSwitch; + + @Schema(description = "是否接单上线0关1开") + private Boolean orderLimitSwitch; + + @Schema(description = "是否开启体重配置0关1开") + private Boolean weightSwitch; + + @Schema(description = "创建人") + private String createBy; + + @Schema(description = "修改人") + private String updateBy; + + @Schema(description = "版本 乐观锁") + private Integer version; + + @Schema(description = "展示的权重") + private Integer top; + +} \ No newline at end of file diff --git a/tashow-module/tashow-module-product/src/main/resources/application-local.yaml b/tashow-module/tashow-module-product/src/main/resources/application-local.yaml new file mode 100644 index 0000000..c2316fd --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/resources/application-local.yaml @@ -0,0 +1,16 @@ +--- #################### 注册中心 + 配置中心相关配置 #################### + +spring: + cloud: + nacos: + server-addr: 43.139.42.137:8848 # Nacos 服务器地址 + username: nacos # Nacos 账号 + password: nacos # Nacos 密码 + discovery: # 【配置中心】配置项 + namespace: 76667956-2ac2-4e05-906b-4bca4ebcc5f0 # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP + metadata: + version: 1.0.0 # 服务实例的版本号,可用于灰度发布 + config: # 【注册中心】配置项 + namespace: 76667956-2ac2-4e05-906b-4bca4ebcc5f0 # 命名空间。这里使用 dev 开发环境 + group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP diff --git a/tashow-module/tashow-module-product/src/main/resources/application.yaml b/tashow-module/tashow-module-product/src/main/resources/application.yaml new file mode 100644 index 0000000..1d33782 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/resources/application.yaml @@ -0,0 +1,12 @@ +server: + port: 48083 +spring: + application: + name: product-server + profiles: + active: local + config: + import: + - optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置 + - optional:nacos:application.yaml # 加载【Nacos】的配置 + - optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置 diff --git a/tashow-module/tashow-module-product/src/main/resources/mapper/product/CategoryMapper.xml b/tashow-module/tashow-module-product/src/main/resources/mapper/product/CategoryMapper.xml new file mode 100644 index 0000000..c1a9fc1 --- /dev/null +++ b/tashow-module/tashow-module-product/src/main/resources/mapper/product/CategoryMapper.xml @@ -0,0 +1,35 @@ + diff --git a/tashow-module/tashow-module-system/src/main/resources/application-local.yaml b/tashow-module/tashow-module-system/src/main/resources/application-local.yaml index 03bada2..08f0e60 100644 --- a/tashow-module/tashow-module-system/src/main/resources/application-local.yaml +++ b/tashow-module/tashow-module-system/src/main/resources/application-local.yaml @@ -5,11 +5,11 @@ spring: username: nacos # Nacos 账号 password: nacos # Nacos 密码 discovery: # 【配置中心】配置项 - namespace: dev # 命名空间。这里使用 dev 开发环境 + namespace: 76667956-2ac2-4e05-906b-4bca4ebcc5f0 # 命名空间。这里使用 dev 开发环境 group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP metadata: version: 1.0.0 # 服务实例的版本号,可用于灰度发布 config: # 【注册中心】配置项 - namespace: dev # 命名空间。这里使用 dev 开发环境 + namespace: 76667956-2ac2-4e05-906b-4bca4ebcc5f0 # 命名空间。这里使用 dev 开发环境 group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP