Commit d2e965fb02049add426fed1f326f3df6fc212f53
1 parent
1a93e3a1
【CRM:优化产品以及产品分类】
Showing
30 changed files
with
442 additions
and
319 deletions
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/ErrorCodeConstants.java
| @@ -50,11 +50,18 @@ public interface ErrorCodeConstants { | @@ -50,11 +50,18 @@ public interface ErrorCodeConstants { | ||
| 50 | ErrorCode CRM_PERMISSION_DELETE_SELF_PERMISSION_FAIL_EXIST_OWNER = new ErrorCode(1_020_007_007, "删除数据权限失败,原因:不能删除负责人"); | 50 | ErrorCode CRM_PERMISSION_DELETE_SELF_PERMISSION_FAIL_EXIST_OWNER = new ErrorCode(1_020_007_007, "删除数据权限失败,原因:不能删除负责人"); |
| 51 | 51 | ||
| 52 | // ========== 产品 1_020_008_000 ========== | 52 | // ========== 产品 1_020_008_000 ========== |
| 53 | - ErrorCode PRODUCT_NOT_EXISTS = new ErrorCode(1_020_008_000, "产品不存在"); | ||
| 54 | - ErrorCode PRODUCT_NO_EXISTS = new ErrorCode(1_020_008_001, "产品编号已存在"); | 53 | + ErrorCode CRM_PRODUCT_NOT_EXISTS = new ErrorCode(1_020_008_000, "产品不存在"); |
| 54 | + ErrorCode CRM_PRODUCT_NO_EXISTS = new ErrorCode(1_020_008_001, "产品编号已存在"); | ||
| 55 | 55 | ||
| 56 | // ========== 产品分类 1_020_009_000 ========== | 56 | // ========== 产品分类 1_020_009_000 ========== |
| 57 | - ErrorCode PRODUCT_CATEGORY_NOT_EXISTS = new ErrorCode(1_020_009_000, "产品分类不存在"); | 57 | + ErrorCode CRM_PRODUCT_CATEGORY_NOT_EXISTS = new ErrorCode(1_020_009_000, "产品分类不存在"); |
| 58 | + ErrorCode CRM_PRODUCT_CATEGORY_EXISTS = new ErrorCode(1_020_009_001, "产品分类已存在"); | ||
| 59 | + | ||
| 60 | + ErrorCode CRM_PRODUCT_CATEGORY_USED = new ErrorCode(1_020_009_002, "产品分类已关联产品"); | ||
| 61 | + | ||
| 62 | + ErrorCode CRM_CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1_020_009_003, "父分类不存在"); | ||
| 63 | + ErrorCode CRM_CATEGORY_PARENT_NOT_FIRST_LEVEL = new ErrorCode(1_020_009_004, "父分类不能是二级分类"); | ||
| 64 | + ErrorCode CRM_CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_020_009_005, "存在子分类,无法删除"); | ||
| 58 | 65 | ||
| 59 | // ========== 商机状态类型 1_020_010_000 ========== | 66 | // ========== 商机状态类型 1_020_010_000 ========== |
| 60 | ErrorCode BUSINESS_STATUS_TYPE_NOT_EXISTS = new ErrorCode(1_020_010_000, "商机状态类型不存在"); | 67 | ErrorCode BUSINESS_STATUS_TYPE_NOT_EXISTS = new ErrorCode(1_020_010_000, "商机状态类型不存在"); |
yudao-module-crm/yudao-module-crm-api/src/main/java/cn/iocoder/yudao/module/crm/enums/product/CrmProductStatusEnum.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.enums.product; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.core.IntArrayValuable; | ||
| 4 | +import lombok.AllArgsConstructor; | ||
| 5 | +import lombok.Getter; | ||
| 6 | + | ||
| 7 | +import java.util.Arrays; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * @author ZanGe丶 | ||
| 11 | + * @create 2023-11-30 21:53 | ||
| 12 | + */ | ||
| 13 | +@Getter | ||
| 14 | +@AllArgsConstructor | ||
| 15 | +public enum CrmProductStatusEnum implements IntArrayValuable { | ||
| 16 | + DISABLE(0, "下架"), | ||
| 17 | + ENABLE(1, "上架"); | ||
| 18 | + | ||
| 19 | + public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(CrmProductStatusEnum::getStatus).toArray(); | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 状态 | ||
| 23 | + */ | ||
| 24 | + private final Integer status; | ||
| 25 | + /** | ||
| 26 | + * 状态名 | ||
| 27 | + */ | ||
| 28 | + private final String name; | ||
| 29 | + | ||
| 30 | + @Override | ||
| 31 | + public int[] array() { | ||
| 32 | + return ARRAYS; | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + /** | ||
| 36 | + * 判断是否处于【上架】状态 | ||
| 37 | + * | ||
| 38 | + * @param status 状态 | ||
| 39 | + * @return 是否处于【上架】状态 | ||
| 40 | + */ | ||
| 41 | + public static boolean isEnable(Integer status) { | ||
| 42 | + return ENABLE.getStatus().equals(status); | ||
| 43 | + } | ||
| 44 | +} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/productcategory/ProductCategoryController.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductCategoryController.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.productcategory; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product; |
| 2 | 2 | ||
| 3 | -import org.springframework.web.bind.annotation.*; | ||
| 4 | -import javax.annotation.Resource; | ||
| 5 | -import org.springframework.validation.annotation.Validated; | ||
| 6 | -import org.springframework.security.access.prepost.PreAuthorize; | ||
| 7 | -import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 8 | -import io.swagger.v3.oas.annotations.Parameter; | 3 | +import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryListReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryRespVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryUpdateReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.convert.product.CrmProductCategoryConvert; | ||
| 9 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||
| 10 | +import cn.iocoder.yudao.module.crm.service.product.CrmProductCategoryService; | ||
| 9 | import io.swagger.v3.oas.annotations.Operation; | 11 | import io.swagger.v3.oas.annotations.Operation; |
| 12 | +import io.swagger.v3.oas.annotations.Parameter; | ||
| 13 | +import io.swagger.v3.oas.annotations.tags.Tag; | ||
| 14 | +import org.springframework.security.access.prepost.PreAuthorize; | ||
| 15 | +import org.springframework.validation.annotation.Validated; | ||
| 16 | +import org.springframework.web.bind.annotation.*; | ||
| 10 | 17 | ||
| 11 | -import javax.validation.constraints.*; | ||
| 12 | -import javax.validation.*; | ||
| 13 | -import javax.servlet.http.*; | ||
| 14 | -import java.util.*; | ||
| 15 | -import java.io.IOException; | 18 | +import javax.annotation.Resource; |
| 19 | +import javax.validation.Valid; | ||
| 20 | +import java.util.List; | ||
| 16 | 21 | ||
| 17 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 18 | -import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 19 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 22 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 20 | 23 | ||
| 21 | -import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | ||
| 22 | - | ||
| 23 | -import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | ||
| 24 | -import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.*; | ||
| 25 | - | ||
| 26 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.*; | ||
| 27 | -import cn.iocoder.yudao.module.crm.dal.dataobject.productcategory.ProductCategoryDO; | ||
| 28 | -import cn.iocoder.yudao.module.crm.convert.productcategory.ProductCategoryConvert; | ||
| 29 | -import cn.iocoder.yudao.module.crm.service.productcategory.ProductCategoryService; | ||
| 30 | - | ||
| 31 | @Tag(name = "管理后台 - 产品分类") | 24 | @Tag(name = "管理后台 - 产品分类") |
| 32 | @RestController | 25 | @RestController |
| 33 | @RequestMapping("/crm/product-category") | 26 | @RequestMapping("/crm/product-category") |
| 34 | @Validated | 27 | @Validated |
| 35 | -public class ProductCategoryController { | 28 | +public class CrmProductCategoryController { |
| 36 | 29 | ||
| 37 | @Resource | 30 | @Resource |
| 38 | - private ProductCategoryService productCategoryService; | 31 | + private CrmProductCategoryService productCategoryService; |
| 39 | 32 | ||
| 40 | @PostMapping("/create") | 33 | @PostMapping("/create") |
| 41 | @Operation(summary = "创建产品分类") | 34 | @Operation(summary = "创建产品分类") |
| 42 | @PreAuthorize("@ss.hasPermission('crm:product-category:create')") | 35 | @PreAuthorize("@ss.hasPermission('crm:product-category:create')") |
| 43 | - public CommonResult<Long> createProductCategory(@Valid @RequestBody ProductCategoryCreateReqVO createReqVO) { | 36 | + public CommonResult<Long> createProductCategory(@Valid @RequestBody CrmProductCategoryCreateReqVO createReqVO) { |
| 44 | return success(productCategoryService.createProductCategory(createReqVO)); | 37 | return success(productCategoryService.createProductCategory(createReqVO)); |
| 45 | } | 38 | } |
| 46 | 39 | ||
| 47 | @PutMapping("/update") | 40 | @PutMapping("/update") |
| 48 | @Operation(summary = "更新产品分类") | 41 | @Operation(summary = "更新产品分类") |
| 49 | @PreAuthorize("@ss.hasPermission('crm:product-category:update')") | 42 | @PreAuthorize("@ss.hasPermission('crm:product-category:update')") |
| 50 | - public CommonResult<Boolean> updateProductCategory(@Valid @RequestBody ProductCategoryUpdateReqVO updateReqVO) { | 43 | + public CommonResult<Boolean> updateProductCategory(@Valid @RequestBody CrmProductCategoryUpdateReqVO updateReqVO) { |
| 51 | productCategoryService.updateProductCategory(updateReqVO); | 44 | productCategoryService.updateProductCategory(updateReqVO); |
| 52 | return success(true); | 45 | return success(true); |
| 53 | } | 46 | } |
| @@ -65,17 +58,17 @@ public class ProductCategoryController { | @@ -65,17 +58,17 @@ public class ProductCategoryController { | ||
| 65 | @Operation(summary = "获得产品分类") | 58 | @Operation(summary = "获得产品分类") |
| 66 | @Parameter(name = "id", description = "编号", required = true, example = "1024") | 59 | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| 67 | @PreAuthorize("@ss.hasPermission('crm:product-category:query')") | 60 | @PreAuthorize("@ss.hasPermission('crm:product-category:query')") |
| 68 | - public CommonResult<ProductCategoryRespVO> getProductCategory(@RequestParam("id") Long id) { | ||
| 69 | - ProductCategoryDO productCategory = productCategoryService.getProductCategory(id); | ||
| 70 | - return success(ProductCategoryConvert.INSTANCE.convert(productCategory)); | 61 | + public CommonResult<CrmProductCategoryRespVO> getProductCategory(@RequestParam("id") Long id) { |
| 62 | + CrmProductCategoryDO productCategory = productCategoryService.getProductCategory(id); | ||
| 63 | + return success(CrmProductCategoryConvert.INSTANCE.convert(productCategory)); | ||
| 71 | } | 64 | } |
| 72 | 65 | ||
| 73 | @GetMapping("/list") | 66 | @GetMapping("/list") |
| 74 | @Operation(summary = "获得产品分类列表") | 67 | @Operation(summary = "获得产品分类列表") |
| 75 | @PreAuthorize("@ss.hasPermission('crm:product-category:query')") | 68 | @PreAuthorize("@ss.hasPermission('crm:product-category:query')") |
| 76 | - public CommonResult<List<ProductCategoryRespVO>> getProductCategoryList(@Valid ProductCategoryListReqVO treeListReqVO) { | ||
| 77 | - List<ProductCategoryDO> list = productCategoryService.getProductCategoryList(treeListReqVO); | ||
| 78 | - return success(ProductCategoryConvert.INSTANCE.convertList(list)); | 69 | + public CommonResult<List<CrmProductCategoryRespVO>> getProductCategoryList(@Valid CrmProductCategoryListReqVO treeListReqVO) { |
| 70 | + List<CrmProductCategoryDO> list = productCategoryService.getProductCategoryList(treeListReqVO); | ||
| 71 | + return success(CrmProductCategoryConvert.INSTANCE.convertList(list)); | ||
| 79 | } | 72 | } |
| 80 | 73 | ||
| 81 | } | 74 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/ProductController.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/CrmProductController.java
| @@ -4,10 +4,10 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; | @@ -4,10 +4,10 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; | 5 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 6 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 6 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 7 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.*; | ||
| 8 | -import cn.iocoder.yudao.module.crm.convert.product.ProductConvert; | ||
| 9 | -import cn.iocoder.yudao.module.crm.dal.dataobject.product.ProductDO; | ||
| 10 | -import cn.iocoder.yudao.module.crm.service.product.ProductService; | 7 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.*; |
| 8 | +import cn.iocoder.yudao.module.crm.convert.product.CrmProductConvert; | ||
| 9 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; | ||
| 10 | +import cn.iocoder.yudao.module.crm.service.product.CrmProductService; | ||
| 11 | import io.swagger.v3.oas.annotations.Operation; | 11 | import io.swagger.v3.oas.annotations.Operation; |
| 12 | import io.swagger.v3.oas.annotations.Parameter; | 12 | import io.swagger.v3.oas.annotations.Parameter; |
| 13 | import io.swagger.v3.oas.annotations.tags.Tag; | 13 | import io.swagger.v3.oas.annotations.tags.Tag; |
| @@ -28,22 +28,22 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E | @@ -28,22 +28,22 @@ import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.E | ||
| 28 | @RestController | 28 | @RestController |
| 29 | @RequestMapping("/crm/product") | 29 | @RequestMapping("/crm/product") |
| 30 | @Validated | 30 | @Validated |
| 31 | -public class ProductController { | 31 | +public class CrmProductController { |
| 32 | 32 | ||
| 33 | @Resource | 33 | @Resource |
| 34 | - private ProductService productService; | 34 | + private CrmProductService productService; |
| 35 | 35 | ||
| 36 | @PostMapping("/create") | 36 | @PostMapping("/create") |
| 37 | @Operation(summary = "创建产品") | 37 | @Operation(summary = "创建产品") |
| 38 | @PreAuthorize("@ss.hasPermission('crm:product:create')") | 38 | @PreAuthorize("@ss.hasPermission('crm:product:create')") |
| 39 | - public CommonResult<Long> createProduct(@Valid @RequestBody ProductCreateReqVO createReqVO) { | 39 | + public CommonResult<Long> createProduct(@Valid @RequestBody CrmProductCreateReqVO createReqVO) { |
| 40 | return success(productService.createProduct(createReqVO)); | 40 | return success(productService.createProduct(createReqVO)); |
| 41 | } | 41 | } |
| 42 | 42 | ||
| 43 | @PutMapping("/update") | 43 | @PutMapping("/update") |
| 44 | @Operation(summary = "更新产品") | 44 | @Operation(summary = "更新产品") |
| 45 | @PreAuthorize("@ss.hasPermission('crm:product:update')") | 45 | @PreAuthorize("@ss.hasPermission('crm:product:update')") |
| 46 | - public CommonResult<Boolean> updateProduct(@Valid @RequestBody ProductUpdateReqVO updateReqVO) { | 46 | + public CommonResult<Boolean> updateProduct(@Valid @RequestBody CrmProductUpdateReqVO updateReqVO) { |
| 47 | productService.updateProduct(updateReqVO); | 47 | productService.updateProduct(updateReqVO); |
| 48 | return success(true); | 48 | return success(true); |
| 49 | } | 49 | } |
| @@ -61,29 +61,29 @@ public class ProductController { | @@ -61,29 +61,29 @@ public class ProductController { | ||
| 61 | @Operation(summary = "获得产品") | 61 | @Operation(summary = "获得产品") |
| 62 | @Parameter(name = "id", description = "编号", required = true, example = "1024") | 62 | @Parameter(name = "id", description = "编号", required = true, example = "1024") |
| 63 | @PreAuthorize("@ss.hasPermission('crm:product:query')") | 63 | @PreAuthorize("@ss.hasPermission('crm:product:query')") |
| 64 | - public CommonResult<ProductRespVO> getProduct(@RequestParam("id") Long id) { | ||
| 65 | - ProductDO product = productService.getProduct(id); | ||
| 66 | - return success(ProductConvert.INSTANCE.convert(product)); | 64 | + public CommonResult<CrmProductRespVO> getProduct(@RequestParam("id") Long id) { |
| 65 | + CrmProductDO product = productService.getProduct(id); | ||
| 66 | + return success(CrmProductConvert.INSTANCE.convert(product)); | ||
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | @GetMapping("/page") | 69 | @GetMapping("/page") |
| 70 | @Operation(summary = "获得产品分页") | 70 | @Operation(summary = "获得产品分页") |
| 71 | @PreAuthorize("@ss.hasPermission('crm:product:query')") | 71 | @PreAuthorize("@ss.hasPermission('crm:product:query')") |
| 72 | - public CommonResult<PageResult<ProductRespVO>> getProductPage(@Valid ProductPageReqVO pageVO) { | ||
| 73 | - PageResult<ProductDO> pageResult = productService.getProductPage(pageVO); | ||
| 74 | - return success(ProductConvert.INSTANCE.convertPage(pageResult)); | 72 | + public CommonResult<PageResult<CrmProductRespVO>> getProductPage(@Valid CrmProductPageReqVO pageVO) { |
| 73 | + PageResult<CrmProductDO> pageResult = productService.getProductPage(pageVO); | ||
| 74 | + return success(CrmProductConvert.INSTANCE.convertPage(pageResult)); | ||
| 75 | } | 75 | } |
| 76 | 76 | ||
| 77 | @GetMapping("/export-excel") | 77 | @GetMapping("/export-excel") |
| 78 | @Operation(summary = "导出产品 Excel") | 78 | @Operation(summary = "导出产品 Excel") |
| 79 | @PreAuthorize("@ss.hasPermission('crm:product:export')") | 79 | @PreAuthorize("@ss.hasPermission('crm:product:export')") |
| 80 | @OperateLog(type = EXPORT) | 80 | @OperateLog(type = EXPORT) |
| 81 | - public void exportProductExcel(@Valid ProductExportReqVO exportReqVO, | 81 | + public void exportProductExcel(@Valid CrmProductExportReqVO exportReqVO, |
| 82 | HttpServletResponse response) throws IOException { | 82 | HttpServletResponse response) throws IOException { |
| 83 | - List<ProductDO> list = productService.getProductList(exportReqVO); | 83 | + List<CrmProductDO> list = productService.getProductList(exportReqVO); |
| 84 | // 导出 Excel | 84 | // 导出 Excel |
| 85 | - List<ProductExcelVO> datas = ProductConvert.INSTANCE.convertList02(list); | ||
| 86 | - ExcelUtils.write(response, "产品.xls", "数据", ProductExcelVO.class, datas); | 85 | + List<CrmProductExcelVO> datas = CrmProductConvert.INSTANCE.convertList02(list); |
| 86 | + ExcelUtils.write(response, "产品.xls", "数据", CrmProductExcelVO.class, datas); | ||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | } | 89 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductBaseVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductBaseVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| 5 | 5 | ||
| 6 | import javax.validation.constraints.NotNull; | 6 | import javax.validation.constraints.NotNull; |
| 7 | 7 | ||
| 8 | -// TODO @zange:需要加 CRM 前置噢 | 8 | +// TODO @zange-ok:需要加 CRM 前置噢 |
| 9 | /** | 9 | /** |
| 10 | * 产品 Base VO,提供给添加、修改、详细的子 VO 使用 | 10 | * 产品 Base VO,提供给添加、修改、详细的子 VO 使用 |
| 11 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | 11 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 |
| 12 | */ | 12 | */ |
| 13 | @Data | 13 | @Data |
| 14 | -public class ProductBaseVO { | 14 | +public class CrmProductBaseVO { |
| 15 | 15 | ||
| 16 | // TODO @zange:example 要写哈;主要是接口文档,可以基于 example 可以生产请求参数 | 16 | // TODO @zange:example 要写哈;主要是接口文档,可以基于 example 可以生产请求参数 |
| 17 | 17 | ||
| 18 | - @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") | 18 | + @Schema(description = "产品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "好产品") |
| 19 | @NotNull(message = "产品名称不能为空") | 19 | @NotNull(message = "产品名称不能为空") |
| 20 | private String name; | 20 | private String name; |
| 21 | 21 | ||
| 22 | - @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED) | 22 | + @Schema(description = "产品编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "12306") |
| 23 | @NotNull(message = "产品编码不能为空") | 23 | @NotNull(message = "产品编码不能为空") |
| 24 | private String no; | 24 | private String no; |
| 25 | 25 | ||
| 26 | - @Schema(description = "单位") | 26 | + @Schema(description = "单位", example = "2") |
| 27 | private String unit; | 27 | private String unit; |
| 28 | 28 | ||
| 29 | @Schema(description = "价格", example = "8911") | 29 | @Schema(description = "价格", example = "8911") |
| 30 | private Long price; | 30 | private Long price; |
| 31 | 31 | ||
| 32 | - @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") | 32 | + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "上架") |
| 33 | @NotNull(message = "状态不能为空") | 33 | @NotNull(message = "状态不能为空") |
| 34 | private Integer status; | 34 | private Integer status; |
| 35 | 35 | ||
| 36 | - @Schema(description = "产品分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1738") | 36 | + @Schema(description = "产品分类ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") |
| 37 | @NotNull(message = "产品分类ID不能为空") | 37 | @NotNull(message = "产品分类ID不能为空") |
| 38 | private Long categoryId; | 38 | private Long categoryId; |
| 39 | 39 | ||
| 40 | @Schema(description = "产品描述", example = "你说的对") | 40 | @Schema(description = "产品描述", example = "你说的对") |
| 41 | private String description; | 41 | private String description; |
| 42 | 42 | ||
| 43 | - // TODO @zange:这个字段只有 create 可以传递,update 不传递;所以放到 create 和 resp 里; | ||
| 44 | - | ||
| 45 | - @Schema(description = "负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31926") | ||
| 46 | - @NotNull(message = "负责人的用户编号不能为空") | ||
| 47 | - private Long ownerUserId; | 43 | + // TODO @zange-ok:这个字段只有 create 可以传递,update 不传递;所以放到 create 和 resp 里; |
| 48 | 44 | ||
| 49 | } | 45 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductCreateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductCreateReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | -import java.util.*; | ||
| 5 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | -import javax.validation.constraints.*; | 5 | + |
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | 7 | ||
| 8 | @Schema(description = "管理后台 - 产品创建 Request VO") | 8 | @Schema(description = "管理后台 - 产品创建 Request VO") |
| 9 | @Data | 9 | @Data |
| 10 | @EqualsAndHashCode(callSuper = true) | 10 | @EqualsAndHashCode(callSuper = true) |
| 11 | @ToString(callSuper = true) | 11 | @ToString(callSuper = true) |
| 12 | -public class ProductCreateReqVO extends ProductBaseVO { | ||
| 13 | - | 12 | +public class CrmProductCreateReqVO extends CrmProductBaseVO { |
| 13 | + @Schema(description = "负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31926") | ||
| 14 | + @NotNull(message = "负责人的用户编号不能为空") | ||
| 15 | + private Long ownerUserId; | ||
| 14 | } | 16 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductExcelVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductExcelVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | 3 | import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; |
| 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | 4 | import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; |
| @@ -7,14 +7,14 @@ import lombok.Data; | @@ -7,14 +7,14 @@ import lombok.Data; | ||
| 7 | 7 | ||
| 8 | import java.time.LocalDateTime; | 8 | import java.time.LocalDateTime; |
| 9 | 9 | ||
| 10 | -// TODO 芋艿:这个导出最后搞 | 10 | +// TODO 芋艿:这个导出最后搞 那暂时就放着不动了哈 |
| 11 | /** | 11 | /** |
| 12 | * 产品 Excel VO | 12 | * 产品 Excel VO |
| 13 | * | 13 | * |
| 14 | * @author ZanGe丶 | 14 | * @author ZanGe丶 |
| 15 | */ | 15 | */ |
| 16 | @Data | 16 | @Data |
| 17 | -public class ProductExcelVO { | 17 | +public class CrmProductExcelVO { |
| 18 | 18 | ||
| 19 | @ExcelProperty("主键id") | 19 | @ExcelProperty("主键id") |
| 20 | private Long id; | 20 | private Long id; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductExportReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductExportReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| @@ -11,7 +11,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | @@ -11,7 +11,7 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ | ||
| 11 | // TODO 芋艿:这个导出最后搞 | 11 | // TODO 芋艿:这个导出最后搞 |
| 12 | @Schema(description = "管理后台 - 产品 Excel 导出 Request VO,参数和 ProductPageReqVO 是一致的") | 12 | @Schema(description = "管理后台 - 产品 Excel 导出 Request VO,参数和 ProductPageReqVO 是一致的") |
| 13 | @Data | 13 | @Data |
| 14 | -public class ProductExportReqVO { | 14 | +public class CrmProductExportReqVO { |
| 15 | 15 | ||
| 16 | @Schema(description = "产品名称", example = "李四") | 16 | @Schema(description = "产品名称", example = "李四") |
| 17 | private String name; | 17 | private String name; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductPageReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductPageReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| @@ -11,12 +11,12 @@ import java.time.LocalDateTime; | @@ -11,12 +11,12 @@ import java.time.LocalDateTime; | ||
| 11 | 11 | ||
| 12 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | 12 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 13 | 13 | ||
| 14 | -// TODO @zange:按照需求,裁剪下筛选的字段,目前应该只要 name 和 status | 14 | +// TODO @zange-ok:按照需求,裁剪下筛选的字段,目前应该只要 name 和 status |
| 15 | @Schema(description = "管理后台 - 产品分页 Request VO") | 15 | @Schema(description = "管理后台 - 产品分页 Request VO") |
| 16 | @Data | 16 | @Data |
| 17 | @EqualsAndHashCode(callSuper = true) | 17 | @EqualsAndHashCode(callSuper = true) |
| 18 | @ToString(callSuper = true) | 18 | @ToString(callSuper = true) |
| 19 | -public class ProductPageReqVO extends PageParam { | 19 | +public class CrmProductPageReqVO extends PageParam { |
| 20 | 20 | ||
| 21 | @Schema(description = "产品名称", example = "李四") | 21 | @Schema(description = "产品名称", example = "李四") |
| 22 | private String name; | 22 | private String name; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductRespVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductRespVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 5 | import java.time.LocalDateTime; | 7 | import java.time.LocalDateTime; |
| 6 | 8 | ||
| 7 | @Schema(description = "管理后台 - 产品 Response VO") | 9 | @Schema(description = "管理后台 - 产品 Response VO") |
| 8 | @Data | 10 | @Data |
| 9 | @EqualsAndHashCode(callSuper = true) | 11 | @EqualsAndHashCode(callSuper = true) |
| 10 | @ToString(callSuper = true) | 12 | @ToString(callSuper = true) |
| 11 | -public class ProductRespVO extends ProductBaseVO { | 13 | +public class CrmProductRespVO extends CrmProductBaseVO { |
| 12 | 14 | ||
| 13 | @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529") | 15 | @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529") |
| 14 | private Long id; | 16 | private Long id; |
| @@ -16,4 +18,7 @@ public class ProductRespVO extends ProductBaseVO { | @@ -16,4 +18,7 @@ public class ProductRespVO extends ProductBaseVO { | ||
| 16 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 18 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 17 | private LocalDateTime createTime; | 19 | private LocalDateTime createTime; |
| 18 | 20 | ||
| 21 | + @Schema(description = "负责人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "31926") | ||
| 22 | + @NotNull(message = "负责人的用户编号不能为空") | ||
| 23 | + private Long ownerUserId; | ||
| 19 | } | 24 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/ProductUpdateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/product/CrmProductUpdateReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.product.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.product; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| 5 | -import java.util.*; | 5 | + |
| 6 | import javax.validation.constraints.*; | 6 | import javax.validation.constraints.*; |
| 7 | 7 | ||
| 8 | @Schema(description = "管理后台 - 产品更新 Request VO") | 8 | @Schema(description = "管理后台 - 产品更新 Request VO") |
| 9 | @Data | 9 | @Data |
| 10 | @EqualsAndHashCode(callSuper = true) | 10 | @EqualsAndHashCode(callSuper = true) |
| 11 | @ToString(callSuper = true) | 11 | @ToString(callSuper = true) |
| 12 | -public class ProductUpdateReqVO extends ProductBaseVO { | 12 | +public class CrmProductUpdateReqVO extends CrmProductBaseVO { |
| 13 | 13 | ||
| 14 | @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529") | 14 | @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "20529") |
| 15 | @NotNull(message = "主键id不能为空") | 15 | @NotNull(message = "主键id不能为空") |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/productcategory/vo/ProductCategoryBaseVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/productcategory/CrmProductCategoryBaseVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; | @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; | ||
| 10 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | 10 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 |
| 11 | */ | 11 | */ |
| 12 | @Data | 12 | @Data |
| 13 | -public class ProductCategoryBaseVO { | 13 | +public class CrmProductCategoryBaseVO { |
| 14 | 14 | ||
| 15 | @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") | 15 | @Schema(description = "名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") |
| 16 | @NotNull(message = "名称不能为空") | 16 | @NotNull(message = "名称不能为空") |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/productcategory/vo/ProductCategoryCreateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/productcategory/CrmProductCategoryCreateReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory; |
| 2 | 2 | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | -import java.util.*; | ||
| 5 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | -import javax.validation.constraints.*; | ||
| 7 | 5 | ||
| 8 | @Schema(description = "管理后台 - 产品分类创建 Request VO") | 6 | @Schema(description = "管理后台 - 产品分类创建 Request VO") |
| 9 | @Data | 7 | @Data |
| 10 | @EqualsAndHashCode(callSuper = true) | 8 | @EqualsAndHashCode(callSuper = true) |
| 11 | @ToString(callSuper = true) | 9 | @ToString(callSuper = true) |
| 12 | -public class ProductCategoryCreateReqVO extends ProductCategoryBaseVO { | 10 | +public class CrmProductCategoryCreateReqVO extends CrmProductCategoryBaseVO { |
| 13 | 11 | ||
| 14 | } | 12 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/productcategory/vo/ProductCategoryListReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/productcategory/CrmProductCategoryListReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory; |
| 2 | 2 | ||
| 3 | import com.alibaba.excel.annotation.ExcelProperty; | 3 | import com.alibaba.excel.annotation.ExcelProperty; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| @@ -9,7 +9,7 @@ import java.time.LocalDateTime; | @@ -9,7 +9,7 @@ import java.time.LocalDateTime; | ||
| 9 | // TODO 芋艿:这个导出最后搞;命名应该是按照 ProductExportReqVO 风格 | 9 | // TODO 芋艿:这个导出最后搞;命名应该是按照 ProductExportReqVO 风格 |
| 10 | @Schema(description = "管理后台 - 产品分类列表 Request VO") | 10 | @Schema(description = "管理后台 - 产品分类列表 Request VO") |
| 11 | @Data | 11 | @Data |
| 12 | -public class ProductCategoryListReqVO { | 12 | +public class CrmProductCategoryListReqVO { |
| 13 | 13 | ||
| 14 | @ExcelProperty("名称") | 14 | @ExcelProperty("名称") |
| 15 | private String name; | 15 | private String name; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/productcategory/vo/ProductCategoryRespVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/productcategory/CrmProductCategoryRespVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.*; | 4 | import lombok.*; |
| @@ -8,7 +8,7 @@ import java.time.LocalDateTime; | @@ -8,7 +8,7 @@ import java.time.LocalDateTime; | ||
| 8 | @Data | 8 | @Data |
| 9 | @EqualsAndHashCode(callSuper = true) | 9 | @EqualsAndHashCode(callSuper = true) |
| 10 | @ToString(callSuper = true) | 10 | @ToString(callSuper = true) |
| 11 | -public class ProductCategoryRespVO extends ProductCategoryBaseVO { | 11 | +public class CrmProductCategoryRespVO extends CrmProductCategoryBaseVO { |
| 12 | 12 | ||
| 13 | @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23902") | 13 | @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23902") |
| 14 | private Long id; | 14 | private Long id; |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/productcategory/vo/ProductCategoryUpdateReqVO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/controller/admin/product/vo/productcategory/CrmProductCategoryUpdateReqVO.java
| 1 | -package cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo; | 1 | +package cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory; |
| 2 | 2 | ||
| 3 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | import lombok.Data; | 4 | import lombok.Data; |
| @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; | @@ -11,7 +11,7 @@ import javax.validation.constraints.NotNull; | ||
| 11 | @Data | 11 | @Data |
| 12 | @EqualsAndHashCode(callSuper = true) | 12 | @EqualsAndHashCode(callSuper = true) |
| 13 | @ToString(callSuper = true) | 13 | @ToString(callSuper = true) |
| 14 | -public class ProductCategoryUpdateReqVO extends ProductCategoryBaseVO { | 14 | +public class CrmProductCategoryUpdateReqVO extends CrmProductCategoryBaseVO { |
| 15 | 15 | ||
| 16 | @Schema(description = "主键 id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23902") | 16 | @Schema(description = "主键 id", requiredMode = Schema.RequiredMode.REQUIRED, example = "23902") |
| 17 | @NotNull(message = "主键 id 不能为空") | 17 | @NotNull(message = "主键 id 不能为空") |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/product/CrmProductCategoryConvert.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.convert.product; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryCreateReqVO; | ||
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryRespVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryUpdateReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||
| 7 | +import org.mapstruct.Mapper; | ||
| 8 | +import org.mapstruct.factory.Mappers; | ||
| 9 | + | ||
| 10 | +import java.util.List; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * 产品分类 Convert | ||
| 14 | + * | ||
| 15 | + * @author ZanGe丶 | ||
| 16 | + */ | ||
| 17 | +@Mapper | ||
| 18 | +public interface CrmProductCategoryConvert { | ||
| 19 | + | ||
| 20 | + CrmProductCategoryConvert INSTANCE = Mappers.getMapper(CrmProductCategoryConvert.class); | ||
| 21 | + | ||
| 22 | + CrmProductCategoryDO convert(CrmProductCategoryCreateReqVO bean); | ||
| 23 | + | ||
| 24 | + CrmProductCategoryDO convert(CrmProductCategoryUpdateReqVO bean); | ||
| 25 | + | ||
| 26 | + CrmProductCategoryRespVO convert(CrmProductCategoryDO bean); | ||
| 27 | + | ||
| 28 | + List<CrmProductCategoryRespVO> convertList(List<CrmProductCategoryDO> list); | ||
| 29 | + | ||
| 30 | +} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/product/CrmProductConvert.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.convert.product; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductExcelVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductRespVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductUpdateReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; | ||
| 9 | +import org.mapstruct.Mapper; | ||
| 10 | +import org.mapstruct.factory.Mappers; | ||
| 11 | + | ||
| 12 | +import java.util.List; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * 产品 Convert | ||
| 16 | + * | ||
| 17 | + * @author ZanGe丶 | ||
| 18 | + */ | ||
| 19 | +@Mapper | ||
| 20 | +public interface CrmProductConvert { | ||
| 21 | + | ||
| 22 | + CrmProductConvert INSTANCE = Mappers.getMapper(CrmProductConvert.class); | ||
| 23 | + | ||
| 24 | + CrmProductDO convert(CrmProductCreateReqVO bean); | ||
| 25 | + | ||
| 26 | + CrmProductDO convert(CrmProductUpdateReqVO bean); | ||
| 27 | + | ||
| 28 | + CrmProductRespVO convert(CrmProductDO bean); | ||
| 29 | + | ||
| 30 | + List<CrmProductRespVO> convertList(List<CrmProductDO> list); | ||
| 31 | + | ||
| 32 | + PageResult<CrmProductRespVO> convertPage(PageResult<CrmProductDO> page); | ||
| 33 | + | ||
| 34 | + List<CrmProductExcelVO> convertList02(List<CrmProductDO> list); | ||
| 35 | + | ||
| 36 | +} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/product/ProductConvert.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.convert.product; | ||
| 2 | - | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 6 | - | ||
| 7 | -import org.mapstruct.Mapper; | ||
| 8 | -import org.mapstruct.factory.Mappers; | ||
| 9 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.*; | ||
| 10 | -import cn.iocoder.yudao.module.crm.dal.dataobject.product.ProductDO; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * 产品 Convert | ||
| 14 | - * | ||
| 15 | - * @author ZanGe丶 | ||
| 16 | - */ | ||
| 17 | -@Mapper | ||
| 18 | -public interface ProductConvert { | ||
| 19 | - | ||
| 20 | - ProductConvert INSTANCE = Mappers.getMapper(ProductConvert.class); | ||
| 21 | - | ||
| 22 | - ProductDO convert(ProductCreateReqVO bean); | ||
| 23 | - | ||
| 24 | - ProductDO convert(ProductUpdateReqVO bean); | ||
| 25 | - | ||
| 26 | - ProductRespVO convert(ProductDO bean); | ||
| 27 | - | ||
| 28 | - List<ProductRespVO> convertList(List<ProductDO> list); | ||
| 29 | - | ||
| 30 | - PageResult<ProductRespVO> convertPage(PageResult<ProductDO> page); | ||
| 31 | - | ||
| 32 | - List<ProductExcelVO> convertList02(List<ProductDO> list); | ||
| 33 | - | ||
| 34 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/convert/productcategory/ProductCategoryConvert.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.convert.productcategory; | ||
| 2 | - | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 6 | - | ||
| 7 | -import org.mapstruct.Mapper; | ||
| 8 | -import org.mapstruct.factory.Mappers; | ||
| 9 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.*; | ||
| 10 | -import cn.iocoder.yudao.module.crm.dal.dataobject.productcategory.ProductCategoryDO; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * 产品分类 Convert | ||
| 14 | - * | ||
| 15 | - * @author ZanGe丶 | ||
| 16 | - */ | ||
| 17 | -@Mapper | ||
| 18 | -public interface ProductCategoryConvert { | ||
| 19 | - | ||
| 20 | - ProductCategoryConvert INSTANCE = Mappers.getMapper(ProductCategoryConvert.class); | ||
| 21 | - | ||
| 22 | - ProductCategoryDO convert(ProductCategoryCreateReqVO bean); | ||
| 23 | - | ||
| 24 | - ProductCategoryDO convert(ProductCategoryUpdateReqVO bean); | ||
| 25 | - | ||
| 26 | - ProductCategoryRespVO convert(ProductCategoryDO bean); | ||
| 27 | - | ||
| 28 | - List<ProductCategoryRespVO> convertList(List<ProductCategoryDO> list); | ||
| 29 | - | ||
| 30 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/productcategory/ProductCategoryDO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductCategoryDO.java
| 1 | -package cn.iocoder.yudao.module.crm.dal.dataobject.productcategory; | 1 | +package cn.iocoder.yudao.module.crm.dal.dataobject.product; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import com.baomidou.mybatisplus.annotation.KeySequence; | 4 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| @@ -19,7 +19,16 @@ import lombok.*; | @@ -19,7 +19,16 @@ import lombok.*; | ||
| 19 | @Builder | 19 | @Builder |
| 20 | @NoArgsConstructor | 20 | @NoArgsConstructor |
| 21 | @AllArgsConstructor | 21 | @AllArgsConstructor |
| 22 | -public class ProductCategoryDO extends BaseDO { | 22 | +public class CrmProductCategoryDO extends BaseDO { |
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * 父分类编号 - 根分类 | ||
| 26 | + */ | ||
| 27 | + public static final Long PARENT_ID_NULL = 0L; | ||
| 28 | + /** | ||
| 29 | + * 限定分类层级 | ||
| 30 | + */ | ||
| 31 | + public static final int CATEGORY_LEVEL = 2; | ||
| 23 | 32 | ||
| 24 | /** | 33 | /** |
| 25 | * 主键id | 34 | * 主键id |
| @@ -32,7 +41,7 @@ public class ProductCategoryDO extends BaseDO { | @@ -32,7 +41,7 @@ public class ProductCategoryDO extends BaseDO { | ||
| 32 | private String name; | 41 | private String name; |
| 33 | /** | 42 | /** |
| 34 | * 父级 id | 43 | * 父级 id |
| 35 | - * // TODO @zange:这个要写下关联 CategoryDO 的 id 字段;参考下别的模块哈 | 44 | + * // TODO @zange-ok:这个要写下关联 CategoryDO 的 id 字段;参考下别的模块哈 |
| 36 | */ | 45 | */ |
| 37 | private Long parentId; | 46 | private Long parentId; |
| 38 | 47 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/ProductDO.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/dataobject/product/CrmProductDO.java
| 1 | package cn.iocoder.yudao.module.crm.dal.dataobject.product; | 1 | package cn.iocoder.yudao.module.crm.dal.dataobject.product; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | +import cn.iocoder.yudao.module.crm.enums.product.CrmProductStatusEnum; | ||
| 4 | import com.baomidou.mybatisplus.annotation.KeySequence; | 5 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 5 | import com.baomidou.mybatisplus.annotation.TableId; | 6 | import com.baomidou.mybatisplus.annotation.TableId; |
| 6 | import com.baomidou.mybatisplus.annotation.TableName; | 7 | import com.baomidou.mybatisplus.annotation.TableName; |
| @@ -19,7 +20,7 @@ import lombok.*; | @@ -19,7 +20,7 @@ import lombok.*; | ||
| 19 | @Builder | 20 | @Builder |
| 20 | @NoArgsConstructor | 21 | @NoArgsConstructor |
| 21 | @AllArgsConstructor | 22 | @AllArgsConstructor |
| 22 | -public class ProductDO extends BaseDO { | 23 | +public class CrmProductDO extends BaseDO { |
| 23 | 24 | ||
| 24 | /** | 25 | /** |
| 25 | * 主键 id | 26 | * 主键 id |
| @@ -44,14 +45,12 @@ public class ProductDO extends BaseDO { | @@ -44,14 +45,12 @@ public class ProductDO extends BaseDO { | ||
| 44 | private Long price; | 45 | private Long price; |
| 45 | /** | 46 | /** |
| 46 | * 状态 | 47 | * 状态 |
| 47 | - * | ||
| 48 | - * 枚举 {@link TODO crm_product_status 对应的类} | ||
| 49 | - * // TODO @zange:这个写个枚举类,然后 {@link关联下 | 48 | + * 关联 {@link CrmProductStatusEnum} |
| 50 | */ | 49 | */ |
| 51 | private Integer status; | 50 | private Integer status; |
| 52 | /** | 51 | /** |
| 53 | * 产品分类 ID | 52 | * 产品分类 ID |
| 54 | - * // TODO @zange:这个要写下关联 CategoryDO 的 id 字段;参考下别的模块哈 | 53 | + * 关联 {@link CrmProductCategoryDO#id} |
| 55 | */ | 54 | */ |
| 56 | private Long categoryId; | 55 | private Long categoryId; |
| 57 | /** | 56 | /** |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductCategoryMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.dal.mysql.product; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryListReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||
| 7 | +import org.apache.ibatis.annotations.Mapper; | ||
| 8 | + | ||
| 9 | +import java.util.List; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 产品分类 Mapper | ||
| 13 | + * | ||
| 14 | + * @author ZanGe丶 | ||
| 15 | + */ | ||
| 16 | +@Mapper | ||
| 17 | +public interface CrmProductCategoryMapper extends BaseMapperX<CrmProductCategoryDO> { | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + default List<CrmProductCategoryDO> selectList(CrmProductCategoryListReqVO reqVO) { | ||
| 21 | + return selectList(new LambdaQueryWrapperX<CrmProductCategoryDO>() | ||
| 22 | + .likeIfPresent(CrmProductCategoryDO::getName, reqVO.getName()) | ||
| 23 | + .eqIfPresent(CrmProductCategoryDO::getParentId, reqVO.getParentId()) | ||
| 24 | + .orderByDesc(CrmProductCategoryDO::getId)); | ||
| 25 | + } | ||
| 26 | + default CrmProductCategoryDO selectByName(String name) { | ||
| 27 | + return selectOne(CrmProductCategoryDO::getName, name); | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | + default Long selectCountByParentId(Long parentId) { | ||
| 31 | + return selectCount(CrmProductCategoryDO::getParentId, parentId); | ||
| 32 | + } | ||
| 33 | +} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/CrmProductMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.crm.dal.mysql.product; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 5 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductExportReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; | ||
| 9 | +import org.apache.ibatis.annotations.Mapper; | ||
| 10 | + | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * 产品 Mapper | ||
| 15 | + * | ||
| 16 | + * @author ZanGe丶 | ||
| 17 | + */ | ||
| 18 | +@Mapper | ||
| 19 | +public interface CrmProductMapper extends BaseMapperX<CrmProductDO> { | ||
| 20 | + | ||
| 21 | + default PageResult<CrmProductDO> selectPage(CrmProductPageReqVO reqVO) { | ||
| 22 | + return selectPage(reqVO, new LambdaQueryWrapperX<CrmProductDO>() | ||
| 23 | + .likeIfPresent(CrmProductDO::getName, reqVO.getName()) | ||
| 24 | + .eqIfPresent(CrmProductDO::getStatus, reqVO.getStatus()) | ||
| 25 | + .orderByDesc(CrmProductDO::getId)); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + default List<CrmProductDO> selectList(CrmProductExportReqVO reqVO) { | ||
| 29 | + return selectList(new LambdaQueryWrapperX<CrmProductDO>() | ||
| 30 | + .likeIfPresent(CrmProductDO::getName, reqVO.getName()) | ||
| 31 | + .eqIfPresent(CrmProductDO::getStatus, reqVO.getStatus()) | ||
| 32 | + .orderByDesc(CrmProductDO::getId)); | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + default CrmProductDO selectByNo(String no) { | ||
| 36 | + return selectOne(CrmProductDO::getNo, no); | ||
| 37 | + } | ||
| 38 | +} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/product/ProductMapper.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.dal.mysql.product; | ||
| 2 | - | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 6 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 7 | -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 8 | -import cn.iocoder.yudao.module.crm.dal.dataobject.product.ProductDO; | ||
| 9 | -import org.apache.ibatis.annotations.Mapper; | ||
| 10 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.*; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * 产品 Mapper | ||
| 14 | - * | ||
| 15 | - * @author ZanGe丶 | ||
| 16 | - */ | ||
| 17 | -@Mapper | ||
| 18 | -public interface ProductMapper extends BaseMapperX<ProductDO> { | ||
| 19 | - | ||
| 20 | - default PageResult<ProductDO> selectPage(ProductPageReqVO reqVO) { | ||
| 21 | - return selectPage(reqVO, new LambdaQueryWrapperX<ProductDO>() | ||
| 22 | - .likeIfPresent(ProductDO::getName, reqVO.getName()) | ||
| 23 | - .likeIfPresent(ProductDO::getNo, reqVO.getNo()) | ||
| 24 | - .eqIfPresent(ProductDO::getUnit, reqVO.getUnit()) | ||
| 25 | - .eqIfPresent(ProductDO::getPrice, reqVO.getPrice()) | ||
| 26 | - .eqIfPresent(ProductDO::getStatus, reqVO.getStatus()) | ||
| 27 | - .eqIfPresent(ProductDO::getCategoryId, reqVO.getCategoryId()) | ||
| 28 | - .eqIfPresent(ProductDO::getDescription, reqVO.getDescription()) | ||
| 29 | - .eqIfPresent(ProductDO::getOwnerUserId, reqVO.getOwnerUserId()) | ||
| 30 | - .betweenIfPresent(ProductDO::getCreateTime, reqVO.getCreateTime()) | ||
| 31 | - .orderByDesc(ProductDO::getId)); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - default List<ProductDO> selectList(ProductExportReqVO reqVO) { | ||
| 35 | - return selectList(new LambdaQueryWrapperX<ProductDO>() | ||
| 36 | - .likeIfPresent(ProductDO::getName, reqVO.getName()) | ||
| 37 | - .likeIfPresent(ProductDO::getNo, reqVO.getNo()) | ||
| 38 | - .eqIfPresent(ProductDO::getUnit, reqVO.getUnit()) | ||
| 39 | - .eqIfPresent(ProductDO::getPrice, reqVO.getPrice()) | ||
| 40 | - .eqIfPresent(ProductDO::getStatus, reqVO.getStatus()) | ||
| 41 | - .eqIfPresent(ProductDO::getCategoryId, reqVO.getCategoryId()) | ||
| 42 | - .eqIfPresent(ProductDO::getDescription, reqVO.getDescription()) | ||
| 43 | - .eqIfPresent(ProductDO::getOwnerUserId, reqVO.getOwnerUserId()) | ||
| 44 | - .betweenIfPresent(ProductDO::getCreateTime, reqVO.getCreateTime()) | ||
| 45 | - .orderByDesc(ProductDO::getId)); | ||
| 46 | - } | ||
| 47 | - | ||
| 48 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/dal/mysql/productcategory/ProductCategoryMapper.java deleted
| 1 | -package cn.iocoder.yudao.module.crm.dal.mysql.productcategory; | ||
| 2 | - | ||
| 3 | -import java.util.*; | ||
| 4 | - | ||
| 5 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 6 | -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||
| 7 | -import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||
| 8 | -import cn.iocoder.yudao.module.crm.dal.dataobject.productcategory.ProductCategoryDO; | ||
| 9 | -import org.apache.ibatis.annotations.Mapper; | ||
| 10 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.*; | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * 产品分类 Mapper | ||
| 14 | - * | ||
| 15 | - * @author ZanGe丶 | ||
| 16 | - */ | ||
| 17 | -@Mapper | ||
| 18 | -public interface ProductCategoryMapper extends BaseMapperX<ProductCategoryDO> { | ||
| 19 | - | ||
| 20 | - | ||
| 21 | - default List<ProductCategoryDO> selectList(ProductCategoryListReqVO reqVO) { | ||
| 22 | - return selectList(new LambdaQueryWrapperX<ProductCategoryDO>() | ||
| 23 | - .likeIfPresent(ProductCategoryDO::getName, reqVO.getName()) | ||
| 24 | - .eqIfPresent(ProductCategoryDO::getParentId, reqVO.getParentId()) | ||
| 25 | - .orderByDesc(ProductCategoryDO::getId)); | ||
| 26 | - } | ||
| 27 | - | ||
| 28 | -} |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/productcategory/ProductCategoryService.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryService.java
| 1 | -package cn.iocoder.yudao.module.crm.service.productcategory; | 1 | +package cn.iocoder.yudao.module.crm.service.product; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | -import javax.validation.*; | ||
| 5 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.*; | ||
| 6 | -import cn.iocoder.yudao.module.crm.dal.dataobject.productcategory.ProductCategoryDO; | ||
| 7 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryCreateReqVO; |
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryListReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryUpdateReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||
| 7 | + | ||
| 8 | +import javax.validation.Valid; | ||
| 9 | +import java.util.List; | ||
| 8 | 10 | ||
| 9 | /** | 11 | /** |
| 10 | * 产品分类 Service 接口 | 12 | * 产品分类 Service 接口 |
| 11 | * | 13 | * |
| 12 | * @author ZanGe丶 | 14 | * @author ZanGe丶 |
| 13 | */ | 15 | */ |
| 14 | -public interface ProductCategoryService { | 16 | +public interface CrmProductCategoryService { |
| 15 | 17 | ||
| 16 | /** | 18 | /** |
| 17 | * 创建产品分类 | 19 | * 创建产品分类 |
| @@ -19,14 +21,14 @@ public interface ProductCategoryService { | @@ -19,14 +21,14 @@ public interface ProductCategoryService { | ||
| 19 | * @param createReqVO 创建信息 | 21 | * @param createReqVO 创建信息 |
| 20 | * @return 编号 | 22 | * @return 编号 |
| 21 | */ | 23 | */ |
| 22 | - Long createProductCategory(@Valid ProductCategoryCreateReqVO createReqVO); | 24 | + Long createProductCategory(@Valid CrmProductCategoryCreateReqVO createReqVO); |
| 23 | 25 | ||
| 24 | /** | 26 | /** |
| 25 | * 更新产品分类 | 27 | * 更新产品分类 |
| 26 | * | 28 | * |
| 27 | * @param updateReqVO 更新信息 | 29 | * @param updateReqVO 更新信息 |
| 28 | */ | 30 | */ |
| 29 | - void updateProductCategory(@Valid ProductCategoryUpdateReqVO updateReqVO); | 31 | + void updateProductCategory(@Valid CrmProductCategoryUpdateReqVO updateReqVO); |
| 30 | 32 | ||
| 31 | /** | 33 | /** |
| 32 | * 删除产品分类 | 34 | * 删除产品分类 |
| @@ -41,7 +43,7 @@ public interface ProductCategoryService { | @@ -41,7 +43,7 @@ public interface ProductCategoryService { | ||
| 41 | * @param id 编号 | 43 | * @param id 编号 |
| 42 | * @return 产品分类 | 44 | * @return 产品分类 |
| 43 | */ | 45 | */ |
| 44 | - ProductCategoryDO getProductCategory(Long id); | 46 | + CrmProductCategoryDO getProductCategory(Long id); |
| 45 | 47 | ||
| 46 | /** | 48 | /** |
| 47 | * 获得产品分类列表 | 49 | * 获得产品分类列表 |
| @@ -49,6 +51,6 @@ public interface ProductCategoryService { | @@ -49,6 +51,6 @@ public interface ProductCategoryService { | ||
| 49 | * @param ids 编号 | 51 | * @param ids 编号 |
| 50 | * @return 产品分类列表 | 52 | * @return 产品分类列表 |
| 51 | */ | 53 | */ |
| 52 | - List<ProductCategoryDO> getProductCategoryList(ProductCategoryListReqVO treeListReqVO); | 54 | + List<CrmProductCategoryDO> getProductCategoryList(CrmProductCategoryListReqVO treeListReqVO); |
| 53 | 55 | ||
| 54 | } | 56 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/productcategory/ProductCategoryServiceImpl.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductCategoryServiceImpl.java
| 1 | -package cn.iocoder.yudao.module.crm.service.productcategory; | 1 | +package cn.iocoder.yudao.module.crm.service.product; |
| 2 | 2 | ||
| 3 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.ProductCategoryCreateReqVO; | ||
| 4 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.ProductCategoryListReqVO; | ||
| 5 | -import cn.iocoder.yudao.module.crm.controller.admin.productcategory.vo.ProductCategoryUpdateReqVO; | ||
| 6 | -import cn.iocoder.yudao.module.crm.convert.productcategory.ProductCategoryConvert; | ||
| 7 | -import cn.iocoder.yudao.module.crm.dal.dataobject.productcategory.ProductCategoryDO; | ||
| 8 | -import cn.iocoder.yudao.module.crm.dal.mysql.productcategory.ProductCategoryMapper; | 3 | +import cn.hutool.core.util.ObjUtil; |
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryListReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.productcategory.CrmProductCategoryUpdateReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.convert.product.CrmProductCategoryConvert; | ||
| 8 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||
| 9 | +import cn.iocoder.yudao.module.crm.dal.mysql.product.CrmProductCategoryMapper; | ||
| 10 | +import org.springframework.context.annotation.Lazy; | ||
| 9 | import org.springframework.stereotype.Service; | 11 | import org.springframework.stereotype.Service; |
| 10 | import org.springframework.validation.annotation.Validated; | 12 | import org.springframework.validation.annotation.Validated; |
| 11 | 13 | ||
| 12 | import javax.annotation.Resource; | 14 | import javax.annotation.Resource; |
| 13 | import java.util.List; | 15 | import java.util.List; |
| 16 | +import java.util.Objects; | ||
| 14 | 17 | ||
| 15 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 16 | -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_CATEGORY_NOT_EXISTS; | 19 | +import static cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO.PARENT_ID_NULL; |
| 20 | +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; | ||
| 17 | 21 | ||
| 18 | -// TODO @zange:这个类所在的包,放到 product 下; | 22 | +// TODO @zange-ok:这个类所在的包,放到 product 下; |
| 19 | /** | 23 | /** |
| 20 | * 产品分类 Service 实现类 | 24 | * 产品分类 Service 实现类 |
| 21 | * | 25 | * |
| @@ -23,28 +27,46 @@ import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_CATEG | @@ -23,28 +27,46 @@ import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_CATEG | ||
| 23 | */ | 27 | */ |
| 24 | @Service | 28 | @Service |
| 25 | @Validated | 29 | @Validated |
| 26 | -public class ProductCategoryServiceImpl implements ProductCategoryService { | 30 | +public class CrmProductCategoryServiceImpl implements CrmProductCategoryService { |
| 27 | 31 | ||
| 28 | @Resource | 32 | @Resource |
| 29 | - private ProductCategoryMapper productCategoryMapper; | 33 | + private CrmProductCategoryMapper productCategoryMapper; |
| 34 | + @Resource | ||
| 35 | + @Lazy | ||
| 36 | + private CrmProductService crmProductService; | ||
| 30 | 37 | ||
| 31 | @Override | 38 | @Override |
| 32 | - public Long createProductCategory(ProductCategoryCreateReqVO createReqVO) { | 39 | + public Long createProductCategory(CrmProductCategoryCreateReqVO createReqVO) { |
| 33 | // TODO zange:参考 mall: ProductCategoryServiceImpl 补充下必要的参数校验; | 40 | // TODO zange:参考 mall: ProductCategoryServiceImpl 补充下必要的参数校验; |
| 41 | + // 校验父分类存在 | ||
| 42 | + validateParentProductCategory(createReqVO.getParentId()); | ||
| 43 | + // 分类名称是否存在 | ||
| 44 | + CrmProductCategoryDO dbProductCategory = productCategoryMapper.selectByName(createReqVO.getName()); | ||
| 45 | + if (dbProductCategory != null) { | ||
| 46 | + return dbProductCategory.getId(); | ||
| 47 | + } | ||
| 34 | // 插入 | 48 | // 插入 |
| 35 | - ProductCategoryDO productCategory = ProductCategoryConvert.INSTANCE.convert(createReqVO); | 49 | + CrmProductCategoryDO productCategory = CrmProductCategoryConvert.INSTANCE.convert(createReqVO); |
| 36 | productCategoryMapper.insert(productCategory); | 50 | productCategoryMapper.insert(productCategory); |
| 37 | // 返回 | 51 | // 返回 |
| 38 | return productCategory.getId(); | 52 | return productCategory.getId(); |
| 39 | } | 53 | } |
| 40 | 54 | ||
| 41 | @Override | 55 | @Override |
| 42 | - public void updateProductCategory(ProductCategoryUpdateReqVO updateReqVO) { | 56 | + public void updateProductCategory(CrmProductCategoryUpdateReqVO updateReqVO) { |
| 43 | // TODO zange:参考 mall: ProductCategoryServiceImpl 补充下必要的参数校验; | 57 | // TODO zange:参考 mall: ProductCategoryServiceImpl 补充下必要的参数校验; |
| 44 | // 校验存在 | 58 | // 校验存在 |
| 45 | validateProductCategoryExists(updateReqVO.getId()); | 59 | validateProductCategoryExists(updateReqVO.getId()); |
| 60 | + // 校验父分类存在 | ||
| 61 | + validateParentProductCategory(updateReqVO.getParentId()); | ||
| 62 | + // 校验名字重复 | ||
| 63 | + CrmProductCategoryDO productCategoryDO = productCategoryMapper.selectByName(updateReqVO.getName()); | ||
| 64 | + if (productCategoryDO != null && | ||
| 65 | + ObjUtil.notEqual(productCategoryDO.getId(), updateReqVO.getId())) { | ||
| 66 | + throw exception(CRM_PRODUCT_CATEGORY_EXISTS); | ||
| 67 | + } | ||
| 46 | // 更新 | 68 | // 更新 |
| 47 | - ProductCategoryDO updateObj = ProductCategoryConvert.INSTANCE.convert(updateReqVO); | 69 | + CrmProductCategoryDO updateObj = CrmProductCategoryConvert.INSTANCE.convert(updateReqVO); |
| 48 | productCategoryMapper.updateById(updateObj); | 70 | productCategoryMapper.updateById(updateObj); |
| 49 | } | 71 | } |
| 50 | 72 | ||
| @@ -53,23 +75,47 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { | @@ -53,23 +75,47 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { | ||
| 53 | // TODO zange:参考 mall: ProductCategoryServiceImpl 补充下必要的参数校验; | 75 | // TODO zange:参考 mall: ProductCategoryServiceImpl 补充下必要的参数校验; |
| 54 | // 校验存在 | 76 | // 校验存在 |
| 55 | validateProductCategoryExists(id); | 77 | validateProductCategoryExists(id); |
| 78 | + // 校验是否还有子分类 | ||
| 79 | + if (productCategoryMapper.selectCountByParentId(id) > 0) { | ||
| 80 | + throw exception(CRM_CATEGORY_EXISTS_CHILDREN); | ||
| 81 | + } | ||
| 82 | + // 校验是否被产品使用 | ||
| 83 | + if (crmProductService.getProductByCategoryId(id) !=null) { | ||
| 84 | + throw exception(CRM_PRODUCT_CATEGORY_USED); | ||
| 85 | + } | ||
| 56 | // 删除 | 86 | // 删除 |
| 57 | productCategoryMapper.deleteById(id); | 87 | productCategoryMapper.deleteById(id); |
| 58 | } | 88 | } |
| 59 | 89 | ||
| 60 | private void validateProductCategoryExists(Long id) { | 90 | private void validateProductCategoryExists(Long id) { |
| 61 | if (productCategoryMapper.selectById(id) == null) { | 91 | if (productCategoryMapper.selectById(id) == null) { |
| 62 | - throw exception(PRODUCT_CATEGORY_NOT_EXISTS); | 92 | + throw exception(CRM_PRODUCT_CATEGORY_NOT_EXISTS); |
| 93 | + } | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + private void validateParentProductCategory(Long id) { | ||
| 97 | + // 如果是根分类,无需验证 | ||
| 98 | + if (Objects.equals(id, PARENT_ID_NULL)) { | ||
| 99 | + return; | ||
| 100 | + } | ||
| 101 | + // 父分类不存在 | ||
| 102 | + CrmProductCategoryDO category = productCategoryMapper.selectById(id); | ||
| 103 | + if (category == null) { | ||
| 104 | + throw exception(CRM_CATEGORY_PARENT_NOT_EXISTS); | ||
| 105 | + } | ||
| 106 | + // 父分类不能是二级分类 | ||
| 107 | + if (!Objects.equals(category.getParentId(), PARENT_ID_NULL)) { | ||
| 108 | + throw exception(CRM_CATEGORY_PARENT_NOT_FIRST_LEVEL); | ||
| 63 | } | 109 | } |
| 64 | } | 110 | } |
| 65 | 111 | ||
| 66 | @Override | 112 | @Override |
| 67 | - public ProductCategoryDO getProductCategory(Long id) { | 113 | + public CrmProductCategoryDO getProductCategory(Long id) { |
| 68 | return productCategoryMapper.selectById(id); | 114 | return productCategoryMapper.selectById(id); |
| 69 | } | 115 | } |
| 70 | 116 | ||
| 71 | @Override | 117 | @Override |
| 72 | - public List<ProductCategoryDO> getProductCategoryList(ProductCategoryListReqVO treeListReqVO) { | 118 | + public List<CrmProductCategoryDO> getProductCategoryList(CrmProductCategoryListReqVO treeListReqVO) { |
| 73 | return productCategoryMapper.selectList(treeListReqVO); | 119 | return productCategoryMapper.selectList(treeListReqVO); |
| 74 | } | 120 | } |
| 75 | 121 |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/ProductService.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductService.java
| 1 | package cn.iocoder.yudao.module.crm.service.product; | 1 | package cn.iocoder.yudao.module.crm.service.product; |
| 2 | 2 | ||
| 3 | -import java.util.*; | ||
| 4 | -import javax.validation.*; | ||
| 5 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.*; | ||
| 6 | -import cn.iocoder.yudao.module.crm.dal.dataobject.product.ProductDO; | ||
| 7 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductExportReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO; | ||
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductUpdateReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; | ||
| 9 | + | ||
| 10 | +import javax.validation.Valid; | ||
| 11 | +import java.util.Collection; | ||
| 12 | +import java.util.List; | ||
| 8 | 13 | ||
| 9 | /** | 14 | /** |
| 10 | * 产品 Service 接口 | 15 | * 产品 Service 接口 |
| 11 | * | 16 | * |
| 12 | * @author ZanGe丶 | 17 | * @author ZanGe丶 |
| 13 | */ | 18 | */ |
| 14 | -public interface ProductService { | 19 | +public interface CrmProductService { |
| 15 | 20 | ||
| 16 | /** | 21 | /** |
| 17 | * 创建产品 | 22 | * 创建产品 |
| @@ -19,14 +24,14 @@ public interface ProductService { | @@ -19,14 +24,14 @@ public interface ProductService { | ||
| 19 | * @param createReqVO 创建信息 | 24 | * @param createReqVO 创建信息 |
| 20 | * @return 编号 | 25 | * @return 编号 |
| 21 | */ | 26 | */ |
| 22 | - Long createProduct(@Valid ProductCreateReqVO createReqVO); | 27 | + Long createProduct(@Valid CrmProductCreateReqVO createReqVO); |
| 23 | 28 | ||
| 24 | /** | 29 | /** |
| 25 | * 更新产品 | 30 | * 更新产品 |
| 26 | * | 31 | * |
| 27 | * @param updateReqVO 更新信息 | 32 | * @param updateReqVO 更新信息 |
| 28 | */ | 33 | */ |
| 29 | - void updateProduct(@Valid ProductUpdateReqVO updateReqVO); | 34 | + void updateProduct(@Valid CrmProductUpdateReqVO updateReqVO); |
| 30 | 35 | ||
| 31 | /** | 36 | /** |
| 32 | * 删除产品 | 37 | * 删除产品 |
| @@ -41,7 +46,7 @@ public interface ProductService { | @@ -41,7 +46,7 @@ public interface ProductService { | ||
| 41 | * @param id 编号 | 46 | * @param id 编号 |
| 42 | * @return 产品 | 47 | * @return 产品 |
| 43 | */ | 48 | */ |
| 44 | - ProductDO getProduct(Long id); | 49 | + CrmProductDO getProduct(Long id); |
| 45 | 50 | ||
| 46 | /** | 51 | /** |
| 47 | * 获得产品列表 | 52 | * 获得产品列表 |
| @@ -49,7 +54,7 @@ public interface ProductService { | @@ -49,7 +54,7 @@ public interface ProductService { | ||
| 49 | * @param ids 编号 | 54 | * @param ids 编号 |
| 50 | * @return 产品列表 | 55 | * @return 产品列表 |
| 51 | */ | 56 | */ |
| 52 | - List<ProductDO> getProductList(Collection<Long> ids); | 57 | + List<CrmProductDO> getProductList(Collection<Long> ids); |
| 53 | 58 | ||
| 54 | /** | 59 | /** |
| 55 | * 获得产品分页 | 60 | * 获得产品分页 |
| @@ -57,7 +62,7 @@ public interface ProductService { | @@ -57,7 +62,7 @@ public interface ProductService { | ||
| 57 | * @param pageReqVO 分页查询 | 62 | * @param pageReqVO 分页查询 |
| 58 | * @return 产品分页 | 63 | * @return 产品分页 |
| 59 | */ | 64 | */ |
| 60 | - PageResult<ProductDO> getProductPage(ProductPageReqVO pageReqVO); | 65 | + PageResult<CrmProductDO> getProductPage(CrmProductPageReqVO pageReqVO); |
| 61 | 66 | ||
| 62 | /** | 67 | /** |
| 63 | * 获得产品列表, 用于 Excel 导出 | 68 | * 获得产品列表, 用于 Excel 导出 |
| @@ -65,6 +70,13 @@ public interface ProductService { | @@ -65,6 +70,13 @@ public interface ProductService { | ||
| 65 | * @param exportReqVO 查询条件 | 70 | * @param exportReqVO 查询条件 |
| 66 | * @return 产品列表 | 71 | * @return 产品列表 |
| 67 | */ | 72 | */ |
| 68 | - List<ProductDO> getProductList(ProductExportReqVO exportReqVO); | 73 | + List<CrmProductDO> getProductList(CrmProductExportReqVO exportReqVO); |
| 69 | 74 | ||
| 75 | + /** | ||
| 76 | + * 获得产品 | ||
| 77 | + * | ||
| 78 | + * @param categoryId 分类编号 | ||
| 79 | + * @return 产品 | ||
| 80 | + */ | ||
| 81 | + CrmProductDO getProductByCategoryId(Long categoryId); | ||
| 70 | } | 82 | } |
yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/ProductServiceImpl.java renamed to yudao-module-crm/yudao-module-crm-biz/src/main/java/cn/iocoder/yudao/module/crm/service/product/CrmProductServiceImpl.java
| @@ -3,13 +3,14 @@ package cn.iocoder.yudao.module.crm.service.product; | @@ -3,13 +3,14 @@ package cn.iocoder.yudao.module.crm.service.product; | ||
| 3 | import cn.hutool.core.collection.CollUtil; | 3 | import cn.hutool.core.collection.CollUtil; |
| 4 | import cn.hutool.core.collection.ListUtil; | 4 | import cn.hutool.core.collection.ListUtil; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.ProductCreateReqVO; | ||
| 7 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.ProductExportReqVO; | ||
| 8 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.ProductPageReqVO; | ||
| 9 | -import cn.iocoder.yudao.module.crm.controller.admin.product.vo.ProductUpdateReqVO; | ||
| 10 | -import cn.iocoder.yudao.module.crm.convert.product.ProductConvert; | ||
| 11 | -import cn.iocoder.yudao.module.crm.dal.dataobject.product.ProductDO; | ||
| 12 | -import cn.iocoder.yudao.module.crm.dal.mysql.product.ProductMapper; | 6 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductCreateReqVO; |
| 7 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductExportReqVO; | ||
| 8 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductPageReqVO; | ||
| 9 | +import cn.iocoder.yudao.module.crm.controller.admin.product.vo.product.CrmProductUpdateReqVO; | ||
| 10 | +import cn.iocoder.yudao.module.crm.convert.product.CrmProductConvert; | ||
| 11 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductCategoryDO; | ||
| 12 | +import cn.iocoder.yudao.module.crm.dal.dataobject.product.CrmProductDO; | ||
| 13 | +import cn.iocoder.yudao.module.crm.dal.mysql.product.CrmProductMapper; | ||
| 13 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 14 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| 14 | import org.springframework.stereotype.Service; | 15 | import org.springframework.stereotype.Service; |
| 15 | import org.springframework.validation.annotation.Validated; | 16 | import org.springframework.validation.annotation.Validated; |
| @@ -19,8 +20,7 @@ import java.util.Collection; | @@ -19,8 +20,7 @@ import java.util.Collection; | ||
| 19 | import java.util.List; | 20 | import java.util.List; |
| 20 | 21 | ||
| 21 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 22 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 22 | -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_NOT_EXISTS; | ||
| 23 | -import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_NO_EXISTS; | 23 | +import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.*; |
| 24 | 24 | ||
| 25 | /** | 25 | /** |
| 26 | * 产品 Service 实现类 | 26 | * 产品 Service 实现类 |
| @@ -29,59 +29,67 @@ import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_NO_EX | @@ -29,59 +29,67 @@ import static cn.iocoder.yudao.module.crm.enums.ErrorCodeConstants.PRODUCT_NO_EX | ||
| 29 | */ | 29 | */ |
| 30 | @Service | 30 | @Service |
| 31 | @Validated | 31 | @Validated |
| 32 | -public class ProductServiceImpl implements ProductService { | 32 | +public class CrmProductServiceImpl implements CrmProductService { |
| 33 | 33 | ||
| 34 | @Resource | 34 | @Resource |
| 35 | - private ProductMapper productMapper; | 35 | + private CrmProductMapper productMapper; |
| 36 | + @Resource | ||
| 37 | + private CrmProductCategoryService productCategoryService; | ||
| 36 | 38 | ||
| 37 | @Override | 39 | @Override |
| 38 | - public Long createProduct(ProductCreateReqVO createReqVO) { | 40 | + public Long createProduct(CrmProductCreateReqVO createReqVO) { |
| 39 | // 校验产品编号是否存在 | 41 | // 校验产品编号是否存在 |
| 40 | - validateProductNo(createReqVO.getNo()); | ||
| 41 | - // TODO @zange:需要校验 categoryId 是否存在; | 42 | + validateProductNoDuplicate(createReqVO.getNo()); |
| 43 | + // TODO @zange-ok:需要校验 categoryId 是否存在; | ||
| 44 | + validateProductCategoryExists(createReqVO.getCategoryId()); | ||
| 42 | // 插入 | 45 | // 插入 |
| 43 | - ProductDO product = ProductConvert.INSTANCE.convert(createReqVO); | 46 | + CrmProductDO product = CrmProductConvert.INSTANCE.convert(createReqVO); |
| 44 | productMapper.insert(product); | 47 | productMapper.insert(product); |
| 45 | // 返回 | 48 | // 返回 |
| 46 | return product.getId(); | 49 | return product.getId(); |
| 47 | } | 50 | } |
| 48 | 51 | ||
| 49 | @Override | 52 | @Override |
| 50 | - public void updateProduct(ProductUpdateReqVO updateReqVO) { | 53 | + public void updateProduct(CrmProductUpdateReqVO updateReqVO) { |
| 51 | // 校验存在 | 54 | // 校验存在 |
| 52 | - validateProductExists(updateReqVO.getId(), updateReqVO.getNo()); | ||
| 53 | - // TODO @zange:需要校验 categoryId 是否存在; | 55 | + validateProductExists(updateReqVO.getId()); |
| 56 | + // TODO @zange-ok:需要校验 categoryId 是否存在; | ||
| 57 | + validateProductCategoryExists(updateReqVO.getCategoryId()); | ||
| 54 | // 更新 | 58 | // 更新 |
| 55 | - ProductDO updateObj = ProductConvert.INSTANCE.convert(updateReqVO); | 59 | + CrmProductDO updateObj = CrmProductConvert.INSTANCE.convert(updateReqVO); |
| 56 | productMapper.updateById(updateObj); | 60 | productMapper.updateById(updateObj); |
| 57 | } | 61 | } |
| 58 | 62 | ||
| 59 | @Override | 63 | @Override |
| 60 | public void deleteProduct(Long id) { | 64 | public void deleteProduct(Long id) { |
| 61 | // 校验存在 | 65 | // 校验存在 |
| 62 | - validateProductExists(id, null); | 66 | + validateProductExists(id); |
| 63 | // 删除 | 67 | // 删除 |
| 64 | productMapper.deleteById(id); | 68 | productMapper.deleteById(id); |
| 65 | } | 69 | } |
| 66 | 70 | ||
| 67 | - // TODO @zange:validateProductExists 要不只校验是否存在;然后是否 no 重复,交给 validateProductNo,名字改成 validateProductNoDuplicate,和别的模块保持一致哈; | ||
| 68 | - private void validateProductExists(Long id, String no) { | ||
| 69 | - ProductDO product = productMapper.selectById(id); | 71 | + // TODO @zange-ok:validateProductExists 要不只校验是否存在;然后是否 no 重复,交给 validateProductNo,名字改成 validateProductNoDuplicate,和别的模块保持一致哈; |
| 72 | + private void validateProductExists(Long id) { | ||
| 73 | + CrmProductDO product = productMapper.selectById(id); | ||
| 70 | if (product == null) { | 74 | if (product == null) { |
| 71 | - throw exception(PRODUCT_NOT_EXISTS); | 75 | + throw exception(CRM_PRODUCT_NOT_EXISTS); |
| 72 | } | 76 | } |
| 73 | - if (no != null && no.equals(product.getNo())) { | ||
| 74 | - throw exception(PRODUCT_NO_EXISTS); | 77 | + } |
| 78 | + | ||
| 79 | + private void validateProductCategoryExists(Long categoryId) { | ||
| 80 | + CrmProductCategoryDO productCategory = productCategoryService.getProductCategory(categoryId); | ||
| 81 | + if (productCategory == null) { | ||
| 82 | + throw exception(CRM_PRODUCT_CATEGORY_NOT_EXISTS); | ||
| 75 | } | 83 | } |
| 76 | } | 84 | } |
| 77 | 85 | ||
| 78 | @Override | 86 | @Override |
| 79 | - public ProductDO getProduct(Long id) { | 87 | + public CrmProductDO getProduct(Long id) { |
| 80 | return productMapper.selectById(id); | 88 | return productMapper.selectById(id); |
| 81 | } | 89 | } |
| 82 | 90 | ||
| 83 | @Override | 91 | @Override |
| 84 | - public List<ProductDO> getProductList(Collection<Long> ids) { | 92 | + public List<CrmProductDO> getProductList(Collection<Long> ids) { |
| 85 | if (CollUtil.isEmpty(ids)) { | 93 | if (CollUtil.isEmpty(ids)) { |
| 86 | return ListUtil.empty(); | 94 | return ListUtil.empty(); |
| 87 | } | 95 | } |
| @@ -89,19 +97,24 @@ public class ProductServiceImpl implements ProductService { | @@ -89,19 +97,24 @@ public class ProductServiceImpl implements ProductService { | ||
| 89 | } | 97 | } |
| 90 | 98 | ||
| 91 | @Override | 99 | @Override |
| 92 | - public PageResult<ProductDO> getProductPage(ProductPageReqVO pageReqVO) { | 100 | + public PageResult<CrmProductDO> getProductPage(CrmProductPageReqVO pageReqVO) { |
| 93 | return productMapper.selectPage(pageReqVO); | 101 | return productMapper.selectPage(pageReqVO); |
| 94 | } | 102 | } |
| 95 | 103 | ||
| 96 | @Override | 104 | @Override |
| 97 | - public List<ProductDO> getProductList(ProductExportReqVO exportReqVO) { | 105 | + public List<CrmProductDO> getProductList(CrmProductExportReqVO exportReqVO) { |
| 98 | return productMapper.selectList(exportReqVO); | 106 | return productMapper.selectList(exportReqVO); |
| 99 | } | 107 | } |
| 100 | 108 | ||
| 101 | - private void validateProductNo(String no) { | ||
| 102 | - ProductDO product = productMapper.selectOne(new LambdaQueryWrapper<ProductDO>().eq(ProductDO::getNo, no)); | 109 | + @Override |
| 110 | + public CrmProductDO getProductByCategoryId(Long categoryId) { | ||
| 111 | + return productMapper.selectOne(new LambdaQueryWrapper<CrmProductDO>().eq(CrmProductDO::getCategoryId, categoryId)); | ||
| 112 | + } | ||
| 113 | + | ||
| 114 | + private void validateProductNoDuplicate(String no) { | ||
| 115 | + CrmProductDO product = productMapper.selectOne(new LambdaQueryWrapper<CrmProductDO>().eq(CrmProductDO::getNo, no)); | ||
| 103 | if (product != null) { | 116 | if (product != null) { |
| 104 | - throw exception(PRODUCT_NO_EXISTS); | 117 | + throw exception(CRM_PRODUCT_NO_EXISTS); |
| 105 | } | 118 | } |
| 106 | } | 119 | } |
| 107 | 120 |