From efd49421298619d5828de9d29350f6015827c09c Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 30 Jul 2022 21:24:05 +0800 Subject: [PATCH] mall:完善商品分类的 APP 后端接口 --- yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java | 6 +++--- yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/AppCategoryController.java | 8 ++++---- yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryListRespVO.java | 29 ----------------------------- yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryRespVO.java | 29 +++++++++++++++++++++++++++++ yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/CategoryConvert.java | 32 -------------------------------- yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/ProductCategoryConvert.java | 32 ++++++++++++++++++++++++++++++++ yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java | 6 +++--- yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java | 6 +++--- yudao-ui-admin/src/views/mall/product/category/index.vue | 26 +++++++++++++++++++++----- yudao-ui-app/pages/category/category.vue | 6 +++--- 10 files changed, 98 insertions(+), 82 deletions(-) delete mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryListRespVO.java create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryRespVO.java delete mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/CategoryConvert.java create mode 100644 yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/ProductCategoryConvert.java diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java index 1f519e4..4467d39 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/category/ProductCategoryController.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCateg import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryListReqVO; import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; -import cn.iocoder.yudao.module.product.convert.category.CategoryConvert; +import cn.iocoder.yudao.module.product.convert.category.ProductCategoryConvert; import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; import cn.iocoder.yudao.module.product.service.category.ProductCategoryService; import io.swagger.annotations.Api; @@ -61,7 +61,7 @@ public class ProductCategoryController { @PreAuthorize("@ss.hasPermission('product:category:query')") public CommonResult getProductCategory(@RequestParam("id") Long id) { ProductCategoryDO category = categoryService.getProductCategory(id); - return success(CategoryConvert.INSTANCE.convert(category)); + return success(ProductCategoryConvert.INSTANCE.convert(category)); } @GetMapping("/list") @@ -70,7 +70,7 @@ public class ProductCategoryController { public CommonResult> getProductCategoryList(@Valid ProductCategoryListReqVO treeListReqVO) { List list = categoryService.getEnableProductCategoryList(treeListReqVO); list.sort(Comparator.comparing(ProductCategoryDO::getSort)); - return success(CategoryConvert.INSTANCE.convertList(list)); + return success(ProductCategoryConvert.INSTANCE.convertList(list)); } } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/AppCategoryController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/AppCategoryController.java index 5300c9c..1b5664b 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/AppCategoryController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/AppCategoryController.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.module.product.controller.app.category; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.module.product.controller.app.category.vo.AppCategoryListRespVO; -import cn.iocoder.yudao.module.product.convert.category.CategoryConvert; +import cn.iocoder.yudao.module.product.controller.app.category.vo.AppCategoryRespVO; +import cn.iocoder.yudao.module.product.convert.category.ProductCategoryConvert; import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; import cn.iocoder.yudao.module.product.service.category.ProductCategoryService; import io.swagger.annotations.Api; @@ -29,10 +29,10 @@ public class AppCategoryController { @GetMapping("/list") @ApiOperation("获得商品分类列表") - public CommonResult> listByQuery() { + public CommonResult> getProductCategoryList() { List list = categoryService.getEnableProductCategoryList(); list.sort(Comparator.comparing(ProductCategoryDO::getSort)); - return success(CategoryConvert.INSTANCE.convertList03(list)); + return success(ProductCategoryConvert.INSTANCE.convertList03(list)); } } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryListRespVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryListRespVO.java deleted file mode 100644 index 9ed47f9..0000000 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryListRespVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.iocoder.yudao.module.product.controller.app.category.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -@Data -@ApiModel(value = "App - 商品分类 Response VO") -public class AppCategoryListRespVO { - - @ApiModelProperty(value = "分类编号", required = true, example = "2") - private Long id; - - @ApiModelProperty(value = "父分类编号", required = true, example = "1") - @NotNull(message = "父分类编号不能为空") - private Long parentId; - - @ApiModelProperty(value = "分类名称", required = true, example = "办公文具") - @NotBlank(message = "分类名称不能为空") - private String name; - - @ApiModelProperty(value = "分类图片", required = true) - @NotBlank(message = "分类图片不能为空") - private String picUrl; - -} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryRespVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryRespVO.java new file mode 100644 index 0000000..e46a50c --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/category/vo/AppCategoryRespVO.java @@ -0,0 +1,29 @@ +package cn.iocoder.yudao.module.product.controller.app.category.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "用户 APP - 商品分类 Response VO") +public class AppCategoryRespVO { + + @ApiModelProperty(value = "分类编号", required = true, example = "2") + private Long id; + + @ApiModelProperty(value = "父分类编号", required = true, example = "1") + @NotNull(message = "父分类编号不能为空") + private Long parentId; + + @ApiModelProperty(value = "分类名称", required = true, example = "办公文具") + @NotBlank(message = "分类名称不能为空") + private String name; + + @ApiModelProperty(value = "分类图片", required = true) + @NotBlank(message = "分类图片不能为空") + private String picUrl; + +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/CategoryConvert.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/CategoryConvert.java deleted file mode 100644 index 637c529..0000000 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/CategoryConvert.java +++ /dev/null @@ -1,32 +0,0 @@ -package cn.iocoder.yudao.module.product.convert.category; - -import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; -import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryRespVO; -import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; -import cn.iocoder.yudao.module.product.controller.app.category.vo.AppCategoryListRespVO; -import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -import java.util.List; - -/** - * 商品分类 Convert - * - * @author 芋道源码 - */ -@Mapper -public interface CategoryConvert { - - CategoryConvert INSTANCE = Mappers.getMapper(CategoryConvert.class); - - ProductCategoryDO convert(ProductCategoryCreateReqVO bean); - - ProductCategoryDO convert(ProductCategoryUpdateReqVO bean); - - ProductCategoryRespVO convert(ProductCategoryDO bean); - - List convertList(List list); - - List convertList03(List list); -} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/ProductCategoryConvert.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/ProductCategoryConvert.java new file mode 100644 index 0000000..ae01ca9 --- /dev/null +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/category/ProductCategoryConvert.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.product.convert.category; + +import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; +import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryRespVO; +import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; +import cn.iocoder.yudao.module.product.controller.app.category.vo.AppCategoryRespVO; +import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 商品分类 Convert + * + * @author 芋道源码 + */ +@Mapper +public interface ProductCategoryConvert { + + ProductCategoryConvert INSTANCE = Mappers.getMapper(ProductCategoryConvert.class); + + ProductCategoryDO convert(ProductCategoryCreateReqVO bean); + + ProductCategoryDO convert(ProductCategoryUpdateReqVO bean); + + ProductCategoryRespVO convert(ProductCategoryDO bean); + + List convertList(List list); + + List convertList03(List list); +} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java index cb63f75..93ec925 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java @@ -9,9 +9,9 @@ import lombok.*; /** * 商品分类 DO * - * 商品分类一共两级: + * 商品分类一共两类: * 1)一级分类:{@link #parentId} 等于 0 - * 2)二级分类:{@link #parentId} 等于父分类 + * 2)二级 + 三级分类:{@link #parentId} 不等于 0 * * @author 芋道源码 */ @@ -46,7 +46,7 @@ public class ProductCategoryDO extends BaseDO { * 分类图片 * * 一级分类:推荐 200 x 100 分辨率 - * 二级分类:推荐 100 x 100 分辨率 + * 二级 + 三级分类:推荐 100 x 100 分辨率 */ private String picUrl; /** diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java index 65f61b3..95364f7 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryCreateReqVO; import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryListReqVO; import cn.iocoder.yudao.module.product.controller.admin.category.vo.ProductCategoryUpdateReqVO; -import cn.iocoder.yudao.module.product.convert.category.CategoryConvert; +import cn.iocoder.yudao.module.product.convert.category.ProductCategoryConvert; import cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO; import cn.iocoder.yudao.module.product.dal.mysql.category.ProductCategoryMapper; import org.springframework.stereotype.Service; @@ -37,7 +37,7 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { validateParentProductCategory(createReqVO.getParentId()); // 插入 - ProductCategoryDO category = CategoryConvert.INSTANCE.convert(createReqVO); + ProductCategoryDO category = ProductCategoryConvert.INSTANCE.convert(createReqVO); productCategoryMapper.insert(category); // 返回 return category.getId(); @@ -51,7 +51,7 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { validateParentProductCategory(updateReqVO.getParentId()); // 更新 - ProductCategoryDO updateObj = CategoryConvert.INSTANCE.convert(updateReqVO); + ProductCategoryDO updateObj = ProductCategoryConvert.INSTANCE.convert(updateReqVO); productCategoryMapper.updateById(updateObj); } diff --git a/yudao-ui-admin/src/views/mall/product/category/index.vue b/yudao-ui-admin/src/views/mall/product/category/index.vue index 615c443..da600c5 100644 --- a/yudao-ui-admin/src/views/mall/product/category/index.vue +++ b/yudao-ui-admin/src/views/mall/product/category/index.vue @@ -61,15 +61,15 @@ - - - - + - +
推荐 200x100 图片分辨率
推荐 100x100 图片分辨率
@@ -164,6 +164,11 @@ export default { getProductCategoryList(params).then(response => { this.list = this.handleTree(response.data, "id", "parentId"); this.loading = false; + // 属性下拉框 + this.parentCategoryOptions = []; + const menu = {id: 0, name: '顶级分类', children: []}; + menu.children = this.handleTree(response.data, "id", "parentId"); + this.parentCategoryOptions.push(menu); }); }, /** 取消按钮 */ @@ -202,6 +207,17 @@ export default { this.refreshTable = true; }); }, + /** 转换菜单数据结构 */ + normalizer(node) { + if (node.children && !node.children.length) { + delete node.children; + } + return { + id: node.id, + label: node.name, + children: node.children + }; + }, /** 新增按钮操作 */ handleAdd() { this.reset(); diff --git a/yudao-ui-app/pages/category/category.vue b/yudao-ui-app/pages/category/category.vue index 70b9932..79092e9 100644 --- a/yudao-ui-app/pages/category/category.vue +++ b/yudao-ui-app/pages/category/category.vue @@ -20,7 +20,7 @@ - + @@ -33,8 +33,8 @@ - - + + {{ subItem.name }} -- libgit2 0.21.4