Commit fa9823161e785c38bcf7d4edc910921d41a21699
1 parent
efd49421
mall:完善商品品牌的前后端实现
Showing
22 changed files
with
287 additions
and
566 deletions
sql/optional/mall/mall.sql
| ... | ... | @@ -24,64 +24,6 @@ SET NAMES utf8mb4; |
| 24 | 24 | -- ---------------------------- |
| 25 | 25 | -- Table structure for product_brand |
| 26 | 26 | -- ---------------------------- |
| 27 | -DROP TABLE IF EXISTS `product_brand`; | |
| 28 | -CREATE TABLE `product_brand` | |
| 29 | -( | |
| 30 | - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '品牌编号', | |
| 31 | - `category_id` bigint NOT NULL COMMENT '分类编号', | |
| 32 | - `name` varchar(255) NOT NULL COMMENT '品牌名称', | |
| 33 | - `banner_url` varchar(255) NOT NULL COMMENT '品牌图片', | |
| 34 | - `sort` int DEFAULT '0' COMMENT '品牌排序', | |
| 35 | - `description` varchar(1024) DEFAULT NULL COMMENT '品牌描述', | |
| 36 | - `status` tinyint NOT NULL COMMENT '状态', | |
| 37 | - `creator` varchar(64) DEFAULT '' COMMENT '创建者', | |
| 38 | - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | |
| 39 | - `updater` varchar(64) DEFAULT '' COMMENT '更新者', | |
| 40 | - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | |
| 41 | - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', | |
| 42 | - `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', | |
| 43 | - PRIMARY KEY (`id`) USING BTREE | |
| 44 | -) ENGINE=InnoDB COMMENT='品牌'; | |
| 45 | - | |
| 46 | --- TODO 父级菜单的 id 处理: 2000 、 2001 | |
| 47 | -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 48 | -VALUES (2000, '商城', '', 1, 1, 0, '/mall', 'merchant', NULL, 0); | |
| 49 | -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 50 | -VALUES (2001, '商品', '', 1, 1, 2000, 'product', 'dict', NULL, 0); | |
| 51 | --- 商品分类 菜单 SQL | |
| 52 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 53 | -VALUES ('分类管理', '', 2, 0, 2001, 'category', '', 'mall/product/category/index', 0); | |
| 54 | --- 按钮父菜单ID | |
| 55 | -SELECT @parentId := LAST_INSERT_ID(); | |
| 56 | --- 按钮 SQL | |
| 57 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 58 | -VALUES ('分类查询', 'product:category:query', 3, 1, @parentId, '', '', '', 0); | |
| 59 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 60 | -VALUES ('分类创建', 'product:category:create', 3, 2, @parentId, '', '', '', 0); | |
| 61 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 62 | -VALUES ('分类更新', 'product:category:update', 3, 3, @parentId, '', '', '', 0); | |
| 63 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 64 | -VALUES ('分类删除', 'product:category:delete', 3, 4, @parentId, '', '', '', 0); | |
| 65 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 66 | -VALUES ('分类导出', 'product:category:export', 3, 5, @parentId, '', '', '', 0); | |
| 67 | - | |
| 68 | --- 品牌管理 菜单 SQL | |
| 69 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 70 | -VALUES ('品牌管理', '', 2, 1, 2001, 'brand', '', 'mall/product/brand/index', 0); | |
| 71 | --- 按钮父菜单ID | |
| 72 | -SELECT @parentId := LAST_INSERT_ID(); | |
| 73 | --- 按钮 SQL | |
| 74 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 75 | -VALUES ('品牌查询', 'product:brand:query', 3, 1, @parentId, '', '', '', 0); | |
| 76 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 77 | -VALUES ('品牌创建', 'product:brand:create', 3, 2, @parentId, '', '', '', 0); | |
| 78 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 79 | -VALUES ('品牌更新', 'product:brand:update', 3, 3, @parentId, '', '', '', 0); | |
| 80 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 81 | -VALUES ('品牌删除', 'product:brand:delete', 3, 4, @parentId, '', '', '', 0); | |
| 82 | -INSERT INTO `system_menu`(`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) | |
| 83 | -VALUES ('品牌导出', 'product:brand:export', 3, 5, @parentId, '', '', '', 0); | |
| 84 | - | |
| 85 | 27 | |
| 86 | 28 | -- ---------------------------- |
| 87 | 29 | -- Table structure for market_activity | ... | ... |
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ErrorCodeConstants.java
| ... | ... | @@ -17,7 +17,7 @@ public interface ErrorCodeConstants { |
| 17 | 17 | ErrorCode PRODUCT_CATEGORY_DISABLED = new ErrorCode(1008001004, "商品分类({})已禁用,无法使用"); |
| 18 | 18 | |
| 19 | 19 | // ========== 品牌相关编号 1008002000 ========== |
| 20 | - ErrorCode BRAND_NOT_EXISTS = new ErrorCode(1008002000, "品牌不存在"); | |
| 20 | + ErrorCode PRODUCT_BRAND_NOT_EXISTS = new ErrorCode(1008002000, "品牌不存在"); | |
| 21 | 21 | |
| 22 | 22 | // ========== 规格名称 1008003000 ========== |
| 23 | 23 | ErrorCode PROPERTY_NOT_EXISTS = new ErrorCode(1008003000, "规格名称不存在"); | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/BrandController.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/ProductBrandController.java
| ... | ... | @@ -5,9 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 5 | import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; |
| 6 | 6 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 7 | 7 | import cn.iocoder.yudao.module.product.controller.admin.brand.vo.*; |
| 8 | -import cn.iocoder.yudao.module.product.convert.brand.BrandConvert; | |
| 9 | -import cn.iocoder.yudao.module.product.dal.dataobject.brand.BrandDO; | |
| 10 | -import cn.iocoder.yudao.module.product.service.brand.BrandService; | |
| 8 | +import cn.iocoder.yudao.module.product.convert.brand.ProductBrandConvert; | |
| 9 | +import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO; | |
| 10 | +import cn.iocoder.yudao.module.product.service.brand.ProductBrandService; | |
| 11 | 11 | import io.swagger.annotations.Api; |
| 12 | 12 | import io.swagger.annotations.ApiImplicitParam; |
| 13 | 13 | import io.swagger.annotations.ApiOperation; |
| ... | ... | @@ -24,26 +24,26 @@ import java.util.List; |
| 24 | 24 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 25 | 25 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; |
| 26 | 26 | |
| 27 | -@Api(tags = "管理后台 - 品牌") | |
| 27 | +@Api(tags = "管理后台 - 商品品牌") | |
| 28 | 28 | @RestController |
| 29 | 29 | @RequestMapping("/product/brand") |
| 30 | 30 | @Validated |
| 31 | -public class BrandController { | |
| 31 | +public class ProductBrandController { | |
| 32 | 32 | |
| 33 | 33 | @Resource |
| 34 | - private BrandService brandService; | |
| 34 | + private ProductBrandService brandService; | |
| 35 | 35 | |
| 36 | 36 | @PostMapping("/create") |
| 37 | 37 | @ApiOperation("创建品牌") |
| 38 | 38 | @PreAuthorize("@ss.hasPermission('product:brand:create')") |
| 39 | - public CommonResult<Long> createBrand(@Valid @RequestBody BrandCreateReqVO createReqVO) { | |
| 40 | - return success(brandService.createBrand(createReqVO)); | |
| 39 | + public CommonResult<Long> createBrand(@Valid @RequestBody ProductBrandCreateReqVO createReqVO) { | |
| 40 | + return success(brandService.createProductBrand(createReqVO)); | |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | 43 | @PutMapping("/update") |
| 44 | 44 | @ApiOperation("更新品牌") |
| 45 | 45 | @PreAuthorize("@ss.hasPermission('product:brand:update')") |
| 46 | - public CommonResult<Boolean> updateBrand(@Valid @RequestBody BrandUpdateReqVO updateReqVO) { | |
| 46 | + public CommonResult<Boolean> updateBrand(@Valid @RequestBody ProductBrandUpdateReqVO updateReqVO) { | |
| 47 | 47 | brandService.updateBrand(updateReqVO); |
| 48 | 48 | return success(true); |
| 49 | 49 | } |
| ... | ... | @@ -61,29 +61,17 @@ public class BrandController { |
| 61 | 61 | @ApiOperation("获得品牌") |
| 62 | 62 | @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class) |
| 63 | 63 | @PreAuthorize("@ss.hasPermission('product:brand:query')") |
| 64 | - public CommonResult<BrandRespVO> getBrand(@RequestParam("id") Long id) { | |
| 65 | - BrandDO brand = brandService.getBrand(id); | |
| 66 | - return success(BrandConvert.INSTANCE.convert(brand)); | |
| 64 | + public CommonResult<ProductBrandRespVO> getBrand(@RequestParam("id") Long id) { | |
| 65 | + ProductBrandDO brand = brandService.getBrand(id); | |
| 66 | + return success(ProductBrandConvert.INSTANCE.convert(brand)); | |
| 67 | 67 | } |
| 68 | 68 | |
| 69 | 69 | @GetMapping("/page") |
| 70 | 70 | @ApiOperation("获得品牌分页") |
| 71 | 71 | @PreAuthorize("@ss.hasPermission('product:brand:query')") |
| 72 | - public CommonResult<PageResult<BrandRespVO>> getBrandPage(@Valid BrandPageReqVO pageVO) { | |
| 73 | - PageResult<BrandDO> pageResult = brandService.getBrandPage(pageVO); | |
| 74 | - return success(BrandConvert.INSTANCE.convertPage(pageResult)); | |
| 75 | - } | |
| 76 | - | |
| 77 | - @GetMapping("/export-excel") | |
| 78 | - @ApiOperation("导出品牌 Excel") | |
| 79 | - @PreAuthorize("@ss.hasPermission('product:brand:export')") | |
| 80 | - @OperateLog(type = EXPORT) | |
| 81 | - public void exportBrandExcel(@Valid BrandExportReqVO exportReqVO, | |
| 82 | - HttpServletResponse response) throws IOException { | |
| 83 | - List<BrandDO> list = brandService.getBrandList(exportReqVO); | |
| 84 | - // 导出 Excel | |
| 85 | - List<BrandExcelVO> datas = BrandConvert.INSTANCE.convertList02(list); | |
| 86 | - ExcelUtils.write(response, "品牌.xls", "数据", BrandExcelVO.class, datas); | |
| 72 | + public CommonResult<PageResult<ProductBrandRespVO>> getBrandPage(@Valid ProductBrandPageReqVO pageVO) { | |
| 73 | + PageResult<ProductBrandDO> pageResult = brandService.getBrandPage(pageVO); | |
| 74 | + return success(ProductBrandConvert.INSTANCE.convertPage(pageResult)); | |
| 87 | 75 | } |
| 88 | 76 | |
| 89 | 77 | } | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandExcelVO.java deleted
| 1 | -package cn.iocoder.yudao.module.product.controller.admin.brand.vo; | |
| 2 | - | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 6 | - | |
| 7 | -import com.alibaba.excel.annotation.ExcelProperty; | |
| 8 | -import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; | |
| 9 | -import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; | |
| 10 | - | |
| 11 | - | |
| 12 | -/** | |
| 13 | - * 品牌 Excel VO | |
| 14 | - * | |
| 15 | - * @author 芋道源码 | |
| 16 | - */ | |
| 17 | -@Data | |
| 18 | -public class BrandExcelVO { | |
| 19 | - | |
| 20 | - @ExcelProperty("品牌编号") | |
| 21 | - private Long id; | |
| 22 | - | |
| 23 | - @ExcelProperty("分类编号") | |
| 24 | - private Long categoryId; | |
| 25 | - | |
| 26 | - @ExcelProperty("品牌名称") | |
| 27 | - private String name; | |
| 28 | - | |
| 29 | - @ExcelProperty("品牌图片") | |
| 30 | - private String bannerUrl; | |
| 31 | - | |
| 32 | - @ExcelProperty("品牌排序") | |
| 33 | - private Integer sort; | |
| 34 | - | |
| 35 | - @ExcelProperty("品牌描述") | |
| 36 | - private String description; | |
| 37 | - | |
| 38 | - @ExcelProperty(value = "状态", converter = DictConvert.class) | |
| 39 | - @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中 | |
| 40 | - private Integer status; | |
| 41 | - | |
| 42 | - @ExcelProperty("创建时间") | |
| 43 | - private Date createTime; | |
| 44 | - | |
| 45 | -} |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandExportReqVO.java deleted
| 1 | -package cn.iocoder.yudao.module.product.controller.admin.brand.vo; | |
| 2 | - | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 6 | -import cn.iocoder.yudao.framework.common.pojo.PageParam; | |
| 7 | -import org.springframework.format.annotation.DateTimeFormat; | |
| 8 | - | |
| 9 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | |
| 10 | - | |
| 11 | -@ApiModel(value = "管理后台 - 品牌 Excel 导出 Request VO", description = "参数和 BrandPageReqVO 是一致的") | |
| 12 | -@Data | |
| 13 | -public class BrandExportReqVO { | |
| 14 | - | |
| 15 | - @ApiModelProperty(value = "分类编号", example = "1") | |
| 16 | - private Long categoryId; | |
| 17 | - | |
| 18 | - @ApiModelProperty(value = "品牌名称", example = "芋道") | |
| 19 | - private String name; | |
| 20 | - | |
| 21 | - @ApiModelProperty(value = "状态", example = "0") | |
| 22 | - private Integer status; | |
| 23 | - | |
| 24 | - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 25 | - @ApiModelProperty(value = "创建时间") | |
| 26 | - private Date[] createTime; | |
| 27 | - | |
| 28 | -} |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandBaseVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandBaseVO.java
| 1 | 1 | package cn.iocoder.yudao.module.product.controller.admin.brand.vo; |
| 2 | 2 | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 6 | -import javax.validation.constraints.*; | |
| 3 | +import io.swagger.annotations.ApiModelProperty; | |
| 4 | +import lombok.Data; | |
| 5 | + | |
| 6 | +import javax.validation.constraints.NotNull; | |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | -* 品牌 Base VO,提供给添加、修改、详细的子 VO 使用 | |
| 9 | +* 商品品牌 Base VO,提供给添加、修改、详细的子 VO 使用 | |
| 10 | 10 | * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 |
| 11 | 11 | */ |
| 12 | 12 | @Data |
| 13 | -public class BrandBaseVO { | |
| 14 | - | |
| 15 | - @ApiModelProperty(value = "分类编号", required = true, example = "1") | |
| 16 | - @NotNull(message = "分类编号不能为空") | |
| 17 | - private Long categoryId; | |
| 13 | +public class ProductBrandBaseVO { | |
| 18 | 14 | |
| 19 | 15 | @ApiModelProperty(value = "品牌名称", required = true, example = "芋道") |
| 20 | 16 | @NotNull(message = "品牌名称不能为空") |
| ... | ... | @@ -22,7 +18,7 @@ public class BrandBaseVO { |
| 22 | 18 | |
| 23 | 19 | @ApiModelProperty(value = "品牌图片", required = true) |
| 24 | 20 | @NotNull(message = "品牌图片不能为空") |
| 25 | - private String bannerUrl; | |
| 21 | + private String picUrl; | |
| 26 | 22 | |
| 27 | 23 | @ApiModelProperty(value = "品牌排序", example = "1") |
| 28 | 24 | private Integer sort; | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandCreateReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandCreateReqVO.java
| 1 | 1 | package cn.iocoder.yudao.module.product.controller.admin.brand.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 5 | 4 | import io.swagger.annotations.*; |
| 6 | -import javax.validation.constraints.*; | |
| 7 | 5 | |
| 8 | -@ApiModel("管理后台 - 品牌创建 Request VO") | |
| 6 | +@ApiModel("管理后台 - 商品品牌创建 Request VO") | |
| 9 | 7 | @Data |
| 10 | 8 | @EqualsAndHashCode(callSuper = true) |
| 11 | 9 | @ToString(callSuper = true) |
| 12 | -public class BrandCreateReqVO extends BrandBaseVO { | |
| 10 | +public class ProductBrandCreateReqVO extends ProductBrandBaseVO { | |
| 13 | 11 | |
| 14 | 12 | } | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandPageReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandPageReqVO.java
| 1 | 1 | package cn.iocoder.yudao.module.product.controller.admin.brand.vo; |
| 2 | 2 | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 6 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | +import io.swagger.annotations.ApiModel; | |
| 5 | +import io.swagger.annotations.ApiModelProperty; | |
| 6 | +import lombok.Data; | |
| 7 | +import lombok.EqualsAndHashCode; | |
| 8 | +import lombok.ToString; | |
| 7 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 8 | 10 | |
| 11 | +import java.util.Date; | |
| 12 | + | |
| 9 | 13 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 10 | 14 | |
| 11 | -@ApiModel("管理后台 - 品牌分页 Request VO") | |
| 15 | +@ApiModel("管理后台 - 商品品牌分页 Request VO") | |
| 12 | 16 | @Data |
| 13 | 17 | @EqualsAndHashCode(callSuper = true) |
| 14 | 18 | @ToString(callSuper = true) |
| 15 | -public class BrandPageReqVO extends PageParam { | |
| 16 | - | |
| 17 | - @ApiModelProperty(value = "分类编号", example = "1") | |
| 18 | - private Long categoryId; | |
| 19 | +public class ProductBrandPageReqVO extends PageParam { | |
| 19 | 20 | |
| 20 | 21 | @ApiModelProperty(value = "品牌名称", example = "芋道") |
| 21 | 22 | private String name; | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandRespVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandRespVO.java
| 1 | 1 | package cn.iocoder.yudao.module.product.controller.admin.brand.vo; |
| 2 | 2 | |
| 3 | -import lombok.*; | |
| 4 | -import java.util.*; | |
| 5 | -import io.swagger.annotations.*; | |
| 3 | +import io.swagger.annotations.ApiModel; | |
| 4 | +import io.swagger.annotations.ApiModelProperty; | |
| 5 | +import lombok.Data; | |
| 6 | +import lombok.EqualsAndHashCode; | |
| 7 | +import lombok.ToString; | |
| 8 | + | |
| 9 | +import java.util.Date; | |
| 6 | 10 | |
| 7 | 11 | @ApiModel("管理后台 - 品牌 Response VO") |
| 8 | 12 | @Data |
| 9 | 13 | @EqualsAndHashCode(callSuper = true) |
| 10 | 14 | @ToString(callSuper = true) |
| 11 | -public class BrandRespVO extends BrandBaseVO { | |
| 15 | +public class ProductBrandRespVO extends ProductBrandBaseVO { | |
| 12 | 16 | |
| 13 | 17 | @ApiModelProperty(value = "品牌编号", required = true, example = "1") |
| 14 | 18 | private Long id; | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/BrandUpdateReqVO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/brand/vo/ProductBrandUpdateReqVO.java
| 1 | 1 | package cn.iocoder.yudao.module.product.controller.admin.brand.vo; |
| 2 | 2 | |
| 3 | 3 | import lombok.*; |
| 4 | -import java.util.*; | |
| 5 | 4 | import io.swagger.annotations.*; |
| 6 | 5 | import javax.validation.constraints.*; |
| 7 | 6 | |
| 8 | -@ApiModel("管理后台 - 品牌更新 Request VO") | |
| 7 | +@ApiModel("管理后台 - 商品品牌更新 Request VO") | |
| 9 | 8 | @Data |
| 10 | 9 | @EqualsAndHashCode(callSuper = true) |
| 11 | 10 | @ToString(callSuper = true) |
| 12 | -public class BrandUpdateReqVO extends BrandBaseVO { | |
| 11 | +public class ProductBrandUpdateReqVO extends ProductBrandBaseVO { | |
| 13 | 12 | |
| 14 | 13 | @ApiModelProperty(value = "品牌编号", required = true, example = "1") |
| 15 | 14 | @NotNull(message = "品牌编号不能为空") | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/brand/BrandConvert.java deleted
| 1 | -package cn.iocoder.yudao.module.product.convert.brand; | |
| 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.product.controller.admin.brand.vo.*; | |
| 10 | -import cn.iocoder.yudao.module.product.dal.dataobject.brand.BrandDO; | |
| 11 | - | |
| 12 | -/** | |
| 13 | - * 品牌 Convert | |
| 14 | - * | |
| 15 | - * @author 芋道源码 | |
| 16 | - */ | |
| 17 | -@Mapper | |
| 18 | -public interface BrandConvert { | |
| 19 | - | |
| 20 | - BrandConvert INSTANCE = Mappers.getMapper(BrandConvert.class); | |
| 21 | - | |
| 22 | - BrandDO convert(BrandCreateReqVO bean); | |
| 23 | - | |
| 24 | - BrandDO convert(BrandUpdateReqVO bean); | |
| 25 | - | |
| 26 | - BrandRespVO convert(BrandDO bean); | |
| 27 | - | |
| 28 | - List<BrandRespVO> convertList(List<BrandDO> list); | |
| 29 | - | |
| 30 | - PageResult<BrandRespVO> convertPage(PageResult<BrandDO> page); | |
| 31 | - | |
| 32 | - List<BrandExcelVO> convertList02(List<BrandDO> list); | |
| 33 | - | |
| 34 | -} |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/brand/ProductBrandConvert.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.product.convert.brand; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 4 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandCreateReqVO; | |
| 5 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandRespVO; | |
| 6 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandUpdateReqVO; | |
| 7 | +import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO; | |
| 8 | +import org.mapstruct.Mapper; | |
| 9 | +import org.mapstruct.factory.Mappers; | |
| 10 | + | |
| 11 | +import java.util.List; | |
| 12 | + | |
| 13 | +/** | |
| 14 | + * 品牌 Convert | |
| 15 | + * | |
| 16 | + * @author 芋道源码 | |
| 17 | + */ | |
| 18 | +@Mapper | |
| 19 | +public interface ProductBrandConvert { | |
| 20 | + | |
| 21 | + ProductBrandConvert INSTANCE = Mappers.getMapper(ProductBrandConvert.class); | |
| 22 | + | |
| 23 | + ProductBrandDO convert(ProductBrandCreateReqVO bean); | |
| 24 | + | |
| 25 | + ProductBrandDO convert(ProductBrandUpdateReqVO bean); | |
| 26 | + | |
| 27 | + ProductBrandRespVO convert(ProductBrandDO bean); | |
| 28 | + | |
| 29 | + List<ProductBrandRespVO> convertList(List<ProductBrandDO> list); | |
| 30 | + | |
| 31 | + PageResult<ProductBrandRespVO> convertPage(PageResult<ProductBrandDO> page); | |
| 32 | + | |
| 33 | +} | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/brand/BrandDO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/brand/ProductBrandDO.java
| ... | ... | @@ -6,9 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableId; |
| 6 | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 7 | 7 | import lombok.*; |
| 8 | 8 | |
| 9 | -// TODO @JeromeSoar:Product 前缀 | |
| 10 | 9 | /** |
| 11 | - * 品牌 DO | |
| 10 | + * 商品品牌 DO | |
| 12 | 11 | * |
| 13 | 12 | * @author 芋道源码 |
| 14 | 13 | */ |
| ... | ... | @@ -19,7 +18,7 @@ import lombok.*; |
| 19 | 18 | @Builder |
| 20 | 19 | @NoArgsConstructor |
| 21 | 20 | @AllArgsConstructor |
| 22 | -public class BrandDO extends BaseDO { | |
| 21 | +public class ProductBrandDO extends BaseDO { | |
| 23 | 22 | |
| 24 | 23 | /** |
| 25 | 24 | * 品牌编号 |
| ... | ... | @@ -27,17 +26,13 @@ public class BrandDO extends BaseDO { |
| 27 | 26 | @TableId |
| 28 | 27 | private Long id; |
| 29 | 28 | /** |
| 30 | - * 分类编号 | |
| 31 | - */ | |
| 32 | - private Long categoryId; | |
| 33 | - /** | |
| 34 | 29 | * 品牌名称 |
| 35 | 30 | */ |
| 36 | 31 | private String name; |
| 37 | 32 | /** |
| 38 | 33 | * 品牌图片 |
| 39 | 34 | */ |
| 40 | - private String bannerUrl; | |
| 35 | + private String picUrl; | |
| 41 | 36 | /** |
| 42 | 37 | * 品牌排序 |
| 43 | 38 | */ | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/brand/BrandMapper.java deleted
| 1 | -package cn.iocoder.yudao.module.product.dal.mysql.brand; | |
| 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.product.dal.dataobject.brand.BrandDO; | |
| 9 | -import org.apache.ibatis.annotations.Mapper; | |
| 10 | -import cn.iocoder.yudao.module.product.controller.admin.brand.vo.*; | |
| 11 | - | |
| 12 | -/** | |
| 13 | - * 品牌 Mapper | |
| 14 | - * | |
| 15 | - * @author 芋道源码 | |
| 16 | - */ | |
| 17 | -@Mapper | |
| 18 | -public interface BrandMapper extends BaseMapperX<BrandDO> { | |
| 19 | - | |
| 20 | - default PageResult<BrandDO> selectPage(BrandPageReqVO reqVO) { | |
| 21 | - return selectPage(reqVO, new LambdaQueryWrapperX<BrandDO>() | |
| 22 | - .eqIfPresent(BrandDO::getCategoryId, reqVO.getCategoryId()) | |
| 23 | - .likeIfPresent(BrandDO::getName, reqVO.getName()) | |
| 24 | - .eqIfPresent(BrandDO::getStatus, reqVO.getStatus()) | |
| 25 | - .betweenIfPresent(BrandDO::getCreateTime, reqVO.getCreateTime()) | |
| 26 | - .orderByDesc(BrandDO::getId)); | |
| 27 | - } | |
| 28 | - | |
| 29 | - default List<BrandDO> selectList(BrandExportReqVO reqVO) { | |
| 30 | - return selectList(new LambdaQueryWrapperX<BrandDO>() | |
| 31 | - .eqIfPresent(BrandDO::getCategoryId, reqVO.getCategoryId()) | |
| 32 | - .likeIfPresent(BrandDO::getName, reqVO.getName()) | |
| 33 | - .eqIfPresent(BrandDO::getStatus, reqVO.getStatus()) | |
| 34 | - .betweenIfPresent(BrandDO::getCreateTime, reqVO.getCreateTime()) | |
| 35 | - .orderByDesc(BrandDO::getId)); | |
| 36 | - } | |
| 37 | - | |
| 38 | -} |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/brand/ProductBrandMapper.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.product.dal.mysql.brand; | |
| 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.product.controller.admin.brand.vo.ProductBrandPageReqVO; | |
| 7 | +import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO; | |
| 8 | +import org.apache.ibatis.annotations.Mapper; | |
| 9 | + | |
| 10 | +@Mapper | |
| 11 | +public interface ProductBrandMapper extends BaseMapperX<ProductBrandDO> { | |
| 12 | + | |
| 13 | + default PageResult<ProductBrandDO> selectPage(ProductBrandPageReqVO reqVO) { | |
| 14 | + return selectPage(reqVO, new LambdaQueryWrapperX<ProductBrandDO>() | |
| 15 | + .likeIfPresent(ProductBrandDO::getName, reqVO.getName()) | |
| 16 | + .eqIfPresent(ProductBrandDO::getStatus, reqVO.getStatus()) | |
| 17 | + .betweenIfPresent(ProductBrandDO::getCreateTime, reqVO.getCreateTime()) | |
| 18 | + .orderByDesc(ProductBrandDO::getId)); | |
| 19 | + } | |
| 20 | + | |
| 21 | +} | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/brand/BrandService.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/brand/ProductBrandService.java
| 1 | 1 | package cn.iocoder.yudao.module.product.service.brand; |
| 2 | 2 | |
| 3 | -import java.util.*; | |
| 4 | -import javax.validation.*; | |
| 5 | -import cn.iocoder.yudao.module.product.controller.admin.brand.vo.*; | |
| 6 | -import cn.iocoder.yudao.module.product.dal.dataobject.brand.BrandDO; | |
| 7 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 4 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandCreateReqVO; | |
| 5 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandPageReqVO; | |
| 6 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandUpdateReqVO; | |
| 7 | +import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO; | |
| 8 | + | |
| 9 | +import javax.validation.Valid; | |
| 10 | +import java.util.Collection; | |
| 11 | +import java.util.List; | |
| 8 | 12 | |
| 9 | 13 | /** |
| 10 | - * 品牌 Service 接口 | |
| 14 | + * 商品品牌 Service 接口 | |
| 11 | 15 | * |
| 12 | 16 | * @author 芋道源码 |
| 13 | 17 | */ |
| 14 | -public interface BrandService { | |
| 18 | +public interface ProductBrandService { | |
| 15 | 19 | |
| 16 | 20 | /** |
| 17 | 21 | * 创建品牌 |
| ... | ... | @@ -19,14 +23,14 @@ public interface BrandService { |
| 19 | 23 | * @param createReqVO 创建信息 |
| 20 | 24 | * @return 编号 |
| 21 | 25 | */ |
| 22 | - Long createBrand(@Valid BrandCreateReqVO createReqVO); | |
| 26 | + Long createProductBrand(@Valid ProductBrandCreateReqVO createReqVO); | |
| 23 | 27 | |
| 24 | 28 | /** |
| 25 | 29 | * 更新品牌 |
| 26 | 30 | * |
| 27 | 31 | * @param updateReqVO 更新信息 |
| 28 | 32 | */ |
| 29 | - void updateBrand(@Valid BrandUpdateReqVO updateReqVO); | |
| 33 | + void updateBrand(@Valid ProductBrandUpdateReqVO updateReqVO); | |
| 30 | 34 | |
| 31 | 35 | /** |
| 32 | 36 | * 删除品牌 |
| ... | ... | @@ -41,7 +45,7 @@ public interface BrandService { |
| 41 | 45 | * @param id 编号 |
| 42 | 46 | * @return 品牌 |
| 43 | 47 | */ |
| 44 | - BrandDO getBrand(Long id); | |
| 48 | + ProductBrandDO getBrand(Long id); | |
| 45 | 49 | |
| 46 | 50 | /** |
| 47 | 51 | * 获得品牌列表 |
| ... | ... | @@ -49,7 +53,7 @@ public interface BrandService { |
| 49 | 53 | * @param ids 编号 |
| 50 | 54 | * @return 品牌列表 |
| 51 | 55 | */ |
| 52 | - List<BrandDO> getBrandList(Collection<Long> ids); | |
| 56 | + List<ProductBrandDO> getBrandList(Collection<Long> ids); | |
| 53 | 57 | |
| 54 | 58 | /** |
| 55 | 59 | * 获得品牌分页 |
| ... | ... | @@ -57,14 +61,6 @@ public interface BrandService { |
| 57 | 61 | * @param pageReqVO 分页查询 |
| 58 | 62 | * @return 品牌分页 |
| 59 | 63 | */ |
| 60 | - PageResult<BrandDO> getBrandPage(BrandPageReqVO pageReqVO); | |
| 61 | - | |
| 62 | - /** | |
| 63 | - * 获得品牌列表, 用于 Excel 导出 | |
| 64 | - * | |
| 65 | - * @param exportReqVO 查询条件 | |
| 66 | - * @return 品牌列表 | |
| 67 | - */ | |
| 68 | - List<BrandDO> getBrandList(BrandExportReqVO exportReqVO); | |
| 64 | + PageResult<ProductBrandDO> getBrandPage(ProductBrandPageReqVO pageReqVO); | |
| 69 | 65 | |
| 70 | 66 | } | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/brand/BrandServiceImpl.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/brand/ProductBrandServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.product.service.brand; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 4 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandCreateReqVO; | |
| 5 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandPageReqVO; | |
| 6 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandUpdateReqVO; | |
| 7 | +import cn.iocoder.yudao.module.product.convert.brand.ProductBrandConvert; | |
| 8 | +import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO; | |
| 9 | +import cn.iocoder.yudao.module.product.dal.mysql.brand.ProductBrandMapper; | |
| 3 | 10 | import org.springframework.stereotype.Service; |
| 4 | -import javax.annotation.Resource; | |
| 5 | 11 | import org.springframework.validation.annotation.Validated; |
| 6 | 12 | |
| 7 | -import java.util.*; | |
| 8 | -import cn.iocoder.yudao.module.product.controller.admin.brand.vo.*; | |
| 9 | -import cn.iocoder.yudao.module.product.dal.dataobject.brand.BrandDO; | |
| 10 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 11 | - | |
| 12 | -import cn.iocoder.yudao.module.product.convert.brand.BrandConvert; | |
| 13 | -import cn.iocoder.yudao.module.product.dal.mysql.brand.BrandMapper; | |
| 13 | +import javax.annotation.Resource; | |
| 14 | +import java.util.Collection; | |
| 15 | +import java.util.List; | |
| 14 | 16 | |
| 15 | 17 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 16 | -import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; | |
| 18 | +import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PRODUCT_BRAND_NOT_EXISTS; | |
| 17 | 19 | |
| 18 | 20 | /** |
| 19 | 21 | * 品牌 Service 实现类 |
| ... | ... | @@ -22,26 +24,26 @@ import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; |
| 22 | 24 | */ |
| 23 | 25 | @Service |
| 24 | 26 | @Validated |
| 25 | -public class BrandServiceImpl implements BrandService { | |
| 27 | +public class ProductBrandServiceImpl implements ProductBrandService { | |
| 26 | 28 | |
| 27 | 29 | @Resource |
| 28 | - private BrandMapper brandMapper; | |
| 30 | + private ProductBrandMapper brandMapper; | |
| 29 | 31 | |
| 30 | 32 | @Override |
| 31 | - public Long createBrand(BrandCreateReqVO createReqVO) { | |
| 33 | + public Long createProductBrand(ProductBrandCreateReqVO createReqVO) { | |
| 32 | 34 | // 插入 |
| 33 | - BrandDO brand = BrandConvert.INSTANCE.convert(createReqVO); | |
| 35 | + ProductBrandDO brand = ProductBrandConvert.INSTANCE.convert(createReqVO); | |
| 34 | 36 | brandMapper.insert(brand); |
| 35 | 37 | // 返回 |
| 36 | 38 | return brand.getId(); |
| 37 | 39 | } |
| 38 | 40 | |
| 39 | 41 | @Override |
| 40 | - public void updateBrand(BrandUpdateReqVO updateReqVO) { | |
| 42 | + public void updateBrand(ProductBrandUpdateReqVO updateReqVO) { | |
| 41 | 43 | // 校验存在 |
| 42 | - this.validateBrandExists(updateReqVO.getId()); | |
| 44 | + validateBrandExists(updateReqVO.getId()); | |
| 43 | 45 | // 更新 |
| 44 | - BrandDO updateObj = BrandConvert.INSTANCE.convert(updateReqVO); | |
| 46 | + ProductBrandDO updateObj = ProductBrandConvert.INSTANCE.convert(updateReqVO); | |
| 45 | 47 | brandMapper.updateById(updateObj); |
| 46 | 48 | } |
| 47 | 49 | |
| ... | ... | @@ -55,28 +57,23 @@ public class BrandServiceImpl implements BrandService { |
| 55 | 57 | |
| 56 | 58 | private void validateBrandExists(Long id) { |
| 57 | 59 | if (brandMapper.selectById(id) == null) { |
| 58 | - throw exception(BRAND_NOT_EXISTS); | |
| 60 | + throw exception(PRODUCT_BRAND_NOT_EXISTS); | |
| 59 | 61 | } |
| 60 | 62 | } |
| 61 | 63 | |
| 62 | 64 | @Override |
| 63 | - public BrandDO getBrand(Long id) { | |
| 65 | + public ProductBrandDO getBrand(Long id) { | |
| 64 | 66 | return brandMapper.selectById(id); |
| 65 | 67 | } |
| 66 | 68 | |
| 67 | 69 | @Override |
| 68 | - public List<BrandDO> getBrandList(Collection<Long> ids) { | |
| 70 | + public List<ProductBrandDO> getBrandList(Collection<Long> ids) { | |
| 69 | 71 | return brandMapper.selectBatchIds(ids); |
| 70 | 72 | } |
| 71 | 73 | |
| 72 | 74 | @Override |
| 73 | - public PageResult<BrandDO> getBrandPage(BrandPageReqVO pageReqVO) { | |
| 75 | + public PageResult<ProductBrandDO> getBrandPage(ProductBrandPageReqVO pageReqVO) { | |
| 74 | 76 | return brandMapper.selectPage(pageReqVO); |
| 75 | 77 | } |
| 76 | 78 | |
| 77 | - @Override | |
| 78 | - public List<BrandDO> getBrandList(BrandExportReqVO exportReqVO) { | |
| 79 | - return brandMapper.selectList(exportReqVO); | |
| 80 | - } | |
| 81 | - | |
| 82 | 79 | } | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/brand/BrandServiceImplTest.java deleted
| 1 | -package cn.iocoder.yudao.module.product.service.brand; | |
| 2 | - | |
| 3 | -import org.junit.jupiter.api.Disabled; | |
| 4 | -import org.junit.jupiter.api.Test; | |
| 5 | -import org.springframework.boot.test.mock.mockito.MockBean; | |
| 6 | - | |
| 7 | -import javax.annotation.Resource; | |
| 8 | - | |
| 9 | -import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | |
| 10 | - | |
| 11 | -import cn.iocoder.yudao.module.product.controller.admin.brand.vo.*; | |
| 12 | -import cn.iocoder.yudao.module.product.dal.dataobject.brand.BrandDO; | |
| 13 | -import cn.iocoder.yudao.module.product.dal.mysql.brand.BrandMapper; | |
| 14 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 15 | - | |
| 16 | -import javax.annotation.Resource; | |
| 17 | -import org.springframework.context.annotation.Import; | |
| 18 | -import java.util.*; | |
| 19 | - | |
| 20 | -import static cn.hutool.core.util.RandomUtil.*; | |
| 21 | -import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; | |
| 22 | -import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*; | |
| 23 | -import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*; | |
| 24 | -import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*; | |
| 25 | -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*; | |
| 26 | -import static org.junit.jupiter.api.Assertions.*; | |
| 27 | -import static org.mockito.Mockito.*; | |
| 28 | - | |
| 29 | -/** | |
| 30 | -* {@link BrandServiceImpl} 的单元测试类 | |
| 31 | -* | |
| 32 | -* @author 芋道源码 | |
| 33 | -*/ | |
| 34 | -@Import(BrandServiceImpl.class) | |
| 35 | -public class BrandServiceImplTest extends BaseDbUnitTest { | |
| 36 | - | |
| 37 | - @Resource | |
| 38 | - private BrandServiceImpl brandService; | |
| 39 | - | |
| 40 | - @Resource | |
| 41 | - private BrandMapper brandMapper; | |
| 42 | - | |
| 43 | - @Test | |
| 44 | - public void testCreateBrand_success() { | |
| 45 | - // 准备参数 | |
| 46 | - BrandCreateReqVO reqVO = randomPojo(BrandCreateReqVO.class); | |
| 47 | - | |
| 48 | - // 调用 | |
| 49 | - Long brandId = brandService.createBrand(reqVO); | |
| 50 | - // 断言 | |
| 51 | - assertNotNull(brandId); | |
| 52 | - // 校验记录的属性是否正确 | |
| 53 | - BrandDO brand = brandMapper.selectById(brandId); | |
| 54 | - assertPojoEquals(reqVO, brand); | |
| 55 | - } | |
| 56 | - | |
| 57 | - @Test | |
| 58 | - public void testUpdateBrand_success() { | |
| 59 | - // mock 数据 | |
| 60 | - BrandDO dbBrand = randomPojo(BrandDO.class); | |
| 61 | - brandMapper.insert(dbBrand);// @Sql: 先插入出一条存在的数据 | |
| 62 | - // 准备参数 | |
| 63 | - BrandUpdateReqVO reqVO = randomPojo(BrandUpdateReqVO.class, o -> { | |
| 64 | - o.setId(dbBrand.getId()); // 设置更新的 ID | |
| 65 | - }); | |
| 66 | - | |
| 67 | - // 调用 | |
| 68 | - brandService.updateBrand(reqVO); | |
| 69 | - // 校验是否更新正确 | |
| 70 | - BrandDO brand = brandMapper.selectById(reqVO.getId()); // 获取最新的 | |
| 71 | - assertPojoEquals(reqVO, brand); | |
| 72 | - } | |
| 73 | - | |
| 74 | - @Test | |
| 75 | - public void testUpdateBrand_notExists() { | |
| 76 | - // 准备参数 | |
| 77 | - BrandUpdateReqVO reqVO = randomPojo(BrandUpdateReqVO.class); | |
| 78 | - | |
| 79 | - // 调用, 并断言异常 | |
| 80 | - assertServiceException(() -> brandService.updateBrand(reqVO), BRAND_NOT_EXISTS); | |
| 81 | - } | |
| 82 | - | |
| 83 | - @Test | |
| 84 | - public void testDeleteBrand_success() { | |
| 85 | - // mock 数据 | |
| 86 | - BrandDO dbBrand = randomPojo(BrandDO.class); | |
| 87 | - brandMapper.insert(dbBrand);// @Sql: 先插入出一条存在的数据 | |
| 88 | - // 准备参数 | |
| 89 | - Long id = dbBrand.getId(); | |
| 90 | - | |
| 91 | - // 调用 | |
| 92 | - brandService.deleteBrand(id); | |
| 93 | - // 校验数据不存在了 | |
| 94 | - assertNull(brandMapper.selectById(id)); | |
| 95 | - } | |
| 96 | - | |
| 97 | - @Test | |
| 98 | - public void testDeleteBrand_notExists() { | |
| 99 | - // 准备参数 | |
| 100 | - Long id = randomLongId(); | |
| 101 | - | |
| 102 | - // 调用, 并断言异常 | |
| 103 | - assertServiceException(() -> brandService.deleteBrand(id), BRAND_NOT_EXISTS); | |
| 104 | - } | |
| 105 | - | |
| 106 | - @Test | |
| 107 | - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | |
| 108 | - public void testGetBrandPage() { | |
| 109 | - // mock 数据 | |
| 110 | - BrandDO dbBrand = randomPojo(BrandDO.class, o -> { // 等会查询到 | |
| 111 | - o.setCategoryId(null); | |
| 112 | - o.setName(null); | |
| 113 | - o.setStatus(null); | |
| 114 | - o.setCreateTime(null); | |
| 115 | - }); | |
| 116 | - brandMapper.insert(dbBrand); | |
| 117 | - // 测试 categoryId 不匹配 | |
| 118 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCategoryId(null))); | |
| 119 | - // 测试 name 不匹配 | |
| 120 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setName(null))); | |
| 121 | - // 测试 status 不匹配 | |
| 122 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setStatus(null))); | |
| 123 | - // 测试 createTime 不匹配 | |
| 124 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCreateTime(null))); | |
| 125 | - // 准备参数 | |
| 126 | - BrandPageReqVO reqVO = new BrandPageReqVO(); | |
| 127 | - reqVO.setCategoryId(null); | |
| 128 | - reqVO.setName(null); | |
| 129 | - reqVO.setStatus(null); | |
| 130 | - reqVO.setCreateTime((new Date[]{})); | |
| 131 | - | |
| 132 | - // 调用 | |
| 133 | - PageResult<BrandDO> pageResult = brandService.getBrandPage(reqVO); | |
| 134 | - // 断言 | |
| 135 | - assertEquals(1, pageResult.getTotal()); | |
| 136 | - assertEquals(1, pageResult.getList().size()); | |
| 137 | - assertPojoEquals(dbBrand, pageResult.getList().get(0)); | |
| 138 | - } | |
| 139 | - | |
| 140 | - @Test | |
| 141 | - @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 | |
| 142 | - public void testGetBrandList() { | |
| 143 | - // mock 数据 | |
| 144 | - BrandDO dbBrand = randomPojo(BrandDO.class, o -> { // 等会查询到 | |
| 145 | - o.setCategoryId(null); | |
| 146 | - o.setName(null); | |
| 147 | - o.setStatus(null); | |
| 148 | - o.setCreateTime(null); | |
| 149 | - }); | |
| 150 | - brandMapper.insert(dbBrand); | |
| 151 | - // 测试 categoryId 不匹配 | |
| 152 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCategoryId(null))); | |
| 153 | - // 测试 name 不匹配 | |
| 154 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setName(null))); | |
| 155 | - // 测试 status 不匹配 | |
| 156 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setStatus(null))); | |
| 157 | - // 测试 createTime 不匹配 | |
| 158 | - brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCreateTime(null))); | |
| 159 | - // 准备参数 | |
| 160 | - BrandExportReqVO reqVO = new BrandExportReqVO(); | |
| 161 | - reqVO.setCategoryId(null); | |
| 162 | - reqVO.setName(null); | |
| 163 | - reqVO.setStatus(null); | |
| 164 | - reqVO.setCreateTime((new Date[]{})); | |
| 165 | - | |
| 166 | - // 调用 | |
| 167 | - List<BrandDO> list = brandService.getBrandList(reqVO); | |
| 168 | - // 断言 | |
| 169 | - assertEquals(1, list.size()); | |
| 170 | - assertPojoEquals(dbBrand, list.get(0)); | |
| 171 | - } | |
| 172 | - | |
| 173 | -} |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/brand/ProductBrandServiceImplTest.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.product.service.brand; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 4 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | |
| 5 | +import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest; | |
| 6 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandCreateReqVO; | |
| 7 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandPageReqVO; | |
| 8 | +import cn.iocoder.yudao.module.product.controller.admin.brand.vo.ProductBrandUpdateReqVO; | |
| 9 | +import cn.iocoder.yudao.module.product.dal.dataobject.brand.ProductBrandDO; | |
| 10 | +import cn.iocoder.yudao.module.product.dal.mysql.brand.ProductBrandMapper; | |
| 11 | +import org.junit.jupiter.api.Test; | |
| 12 | +import org.springframework.context.annotation.Import; | |
| 13 | + | |
| 14 | +import javax.annotation.Resource; | |
| 15 | +import java.util.Date; | |
| 16 | + | |
| 17 | +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.buildTime; | |
| 18 | +import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.cloneIgnoreId; | |
| 19 | +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEquals; | |
| 20 | +import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; | |
| 21 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; | |
| 22 | +import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; | |
| 23 | +import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PRODUCT_BRAND_NOT_EXISTS; | |
| 24 | +import static org.junit.jupiter.api.Assertions.*; | |
| 25 | + | |
| 26 | +/** | |
| 27 | +* {@link ProductBrandServiceImpl} 的单元测试类 | |
| 28 | +* | |
| 29 | +* @author 芋道源码 | |
| 30 | +*/ | |
| 31 | +@Import(ProductBrandServiceImpl.class) | |
| 32 | +public class ProductBrandServiceImplTest extends BaseDbUnitTest { | |
| 33 | + | |
| 34 | + @Resource | |
| 35 | + private ProductBrandServiceImpl brandService; | |
| 36 | + | |
| 37 | + @Resource | |
| 38 | + private ProductBrandMapper brandMapper; | |
| 39 | + | |
| 40 | + @Test | |
| 41 | + public void testCreateBrand_success() { | |
| 42 | + // 准备参数 | |
| 43 | + ProductBrandCreateReqVO reqVO = randomPojo(ProductBrandCreateReqVO.class); | |
| 44 | + | |
| 45 | + // 调用 | |
| 46 | + Long brandId = brandService.createProductBrand(reqVO); | |
| 47 | + // 断言 | |
| 48 | + assertNotNull(brandId); | |
| 49 | + // 校验记录的属性是否正确 | |
| 50 | + ProductBrandDO brand = brandMapper.selectById(brandId); | |
| 51 | + assertPojoEquals(reqVO, brand); | |
| 52 | + } | |
| 53 | + | |
| 54 | + @Test | |
| 55 | + public void testUpdateBrand_success() { | |
| 56 | + // mock 数据 | |
| 57 | + ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class); | |
| 58 | + brandMapper.insert(dbBrand);// @Sql: 先插入出一条存在的数据 | |
| 59 | + // 准备参数 | |
| 60 | + ProductBrandUpdateReqVO reqVO = randomPojo(ProductBrandUpdateReqVO.class, o -> { | |
| 61 | + o.setId(dbBrand.getId()); // 设置更新的 ID | |
| 62 | + }); | |
| 63 | + | |
| 64 | + // 调用 | |
| 65 | + brandService.updateBrand(reqVO); | |
| 66 | + // 校验是否更新正确 | |
| 67 | + ProductBrandDO brand = brandMapper.selectById(reqVO.getId()); // 获取最新的 | |
| 68 | + assertPojoEquals(reqVO, brand); | |
| 69 | + } | |
| 70 | + | |
| 71 | + @Test | |
| 72 | + public void testUpdateBrand_notExists() { | |
| 73 | + // 准备参数 | |
| 74 | + ProductBrandUpdateReqVO reqVO = randomPojo(ProductBrandUpdateReqVO.class); | |
| 75 | + | |
| 76 | + // 调用, 并断言异常 | |
| 77 | + assertServiceException(() -> brandService.updateBrand(reqVO), PRODUCT_BRAND_NOT_EXISTS); | |
| 78 | + } | |
| 79 | + | |
| 80 | + @Test | |
| 81 | + public void testDeleteBrand_success() { | |
| 82 | + // mock 数据 | |
| 83 | + ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class); | |
| 84 | + brandMapper.insert(dbBrand);// @Sql: 先插入出一条存在的数据 | |
| 85 | + // 准备参数 | |
| 86 | + Long id = dbBrand.getId(); | |
| 87 | + | |
| 88 | + // 调用 | |
| 89 | + brandService.deleteBrand(id); | |
| 90 | + // 校验数据不存在了 | |
| 91 | + assertNull(brandMapper.selectById(id)); | |
| 92 | + } | |
| 93 | + | |
| 94 | + @Test | |
| 95 | + public void testDeleteBrand_notExists() { | |
| 96 | + // 准备参数 | |
| 97 | + Long id = randomLongId(); | |
| 98 | + | |
| 99 | + // 调用, 并断言异常 | |
| 100 | + assertServiceException(() -> brandService.deleteBrand(id), PRODUCT_BRAND_NOT_EXISTS); | |
| 101 | + } | |
| 102 | + | |
| 103 | + @Test | |
| 104 | + public void testGetBrandPage() { | |
| 105 | + // mock 数据 | |
| 106 | + ProductBrandDO dbBrand = randomPojo(ProductBrandDO.class, o -> { // 等会查询到 | |
| 107 | + o.setName("芋道源码"); | |
| 108 | + o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | |
| 109 | + o.setCreateTime(buildTime(2022, 2, 1)); | |
| 110 | + }); | |
| 111 | + brandMapper.insert(dbBrand); | |
| 112 | + // 测试 name 不匹配 | |
| 113 | + brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setName("源码"))); | |
| 114 | + // 测试 status 不匹配 | |
| 115 | + brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | |
| 116 | + // 测试 createTime 不匹配 | |
| 117 | + brandMapper.insert(cloneIgnoreId(dbBrand, o -> o.setCreateTime(buildTime(2022, 3, 1)))); | |
| 118 | + // 准备参数 | |
| 119 | + ProductBrandPageReqVO reqVO = new ProductBrandPageReqVO(); | |
| 120 | + reqVO.setName("芋道"); | |
| 121 | + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | |
| 122 | + reqVO.setCreateTime((new Date[]{buildTime(2022, 1, 1), buildTime(2022, 2, 25)})); | |
| 123 | + | |
| 124 | + // 调用 | |
| 125 | + PageResult<ProductBrandDO> pageResult = brandService.getBrandPage(reqVO); | |
| 126 | + // 断言 | |
| 127 | + assertEquals(1, pageResult.getTotal()); | |
| 128 | + assertEquals(1, pageResult.getList().size()); | |
| 129 | + assertPojoEquals(dbBrand, pageResult.getList().get(0)); | |
| 130 | + } | |
| 131 | + | |
| 132 | +} | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/test/resources/sql/create_tables.sql
| ... | ... | @@ -16,9 +16,8 @@ CREATE TABLE IF NOT EXISTS "product_category" ( |
| 16 | 16 | |
| 17 | 17 | CREATE TABLE IF NOT EXISTS "product_brand" ( |
| 18 | 18 | "id" bigint(20) NOT NULL GENERATED BY DEFAULT AS IDENTITY, |
| 19 | - "category_id" bigint(20) NOT NULL, | |
| 20 | 19 | "name" varchar(255) NOT NULL, |
| 21 | - "banner_url" varchar(255) NOT NULL, | |
| 20 | + "pic_url" varchar(255) NOT NULL, | |
| 22 | 21 | "sort" int(11), |
| 23 | 22 | "description" varchar(1024), |
| 24 | 23 | "status" tinyint(4) NOT NULL, |
| ... | ... | @@ -28,4 +27,4 @@ CREATE TABLE IF NOT EXISTS "product_brand" ( |
| 28 | 27 | "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| 29 | 28 | "deleted" bit NOT NULL DEFAULT FALSE, |
| 30 | 29 | PRIMARY KEY ("id") |
| 31 | -) COMMENT '品牌'; | |
| 30 | +) COMMENT '商品品牌'; | ... | ... |
yudao-ui-admin/src/views/mall/product/brand/index.vue
| ... | ... | @@ -26,25 +26,18 @@ |
| 26 | 26 | <el-row :gutter="10" class="mb8"> |
| 27 | 27 | <el-col :span="1.5"> |
| 28 | 28 | <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" |
| 29 | - v-hasPermi="['product:brand:create']">新增 | |
| 30 | - </el-button> | |
| 31 | - </el-col> | |
| 32 | - <el-col :span="1.5"> | |
| 33 | - <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" | |
| 34 | - :loading="exportLoading" | |
| 35 | - v-hasPermi="['product:brand:export']">导出 | |
| 36 | - </el-button> | |
| 29 | + v-hasPermi="['product:brand:create']">新增</el-button> | |
| 37 | 30 | </el-col> |
| 38 | 31 | <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> |
| 39 | 32 | </el-row> |
| 40 | 33 | |
| 41 | 34 | <!-- 列表 --> |
| 42 | 35 | <el-table v-loading="loading" :data="list"> |
| 43 | - <el-table-column label="商品分类" align="center" prop="categoryId"/> | |
| 36 | + <el-table-column label="品牌编号" align="center" prop="id"/> | |
| 44 | 37 | <el-table-column label="品牌名称" align="center" prop="name"/> |
| 45 | - <el-table-column label="品牌图片" align="center" prop="bannerUrl"> | |
| 38 | + <el-table-column label="品牌图片" align="center" prop="picUrl"> | |
| 46 | 39 | <template slot-scope="scope"> |
| 47 | - <img v-if="scope.row.bannerUrl" :src="scope.row.bannerUrl" alt="分类图片" class="img-height"/> | |
| 40 | + <img v-if="scope.row.picUrl" :src="scope.row.picUrl" alt="分类图片" style="height: 100px;" /> | |
| 48 | 41 | </template> |
| 49 | 42 | </el-table-column> |
| 50 | 43 | <el-table-column label="品牌排序" align="center" prop="sort"/> |
| ... | ... | @@ -77,15 +70,11 @@ |
| 77 | 70 | <!-- 对话框(添加 / 修改) --> |
| 78 | 71 | <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> |
| 79 | 72 | <el-form ref="form" :model="form" :rules="rules" label-width="80px"> |
| 80 | - <el-form-item label="商品分类" prop="categoryId"> | |
| 81 | - <Treeselect v-model="form.categoryId" :options="categoryOptions" :normalizer="normalizer" :show-count="true" | |
| 82 | - placeholder="请选择商品分类"/> | |
| 83 | - </el-form-item> | |
| 84 | 73 | <el-form-item label="品牌名称" prop="name"> |
| 85 | 74 | <el-input v-model="form.name" placeholder="请输入品牌名称"/> |
| 86 | 75 | </el-form-item> |
| 87 | - <el-form-item label="品牌图片" prop="bannerUrl"> | |
| 88 | - <imageUpload v-model="form.bannerUrl" :limit="1"/> | |
| 76 | + <el-form-item label="品牌图片" prop="picUrl"> | |
| 77 | + <imageUpload v-model="form.picUrl" :limit="1"/> | |
| 89 | 78 | </el-form-item> |
| 90 | 79 | <el-form-item label="品牌排序" prop="sort"> |
| 91 | 80 | <el-input v-model="form.sort" placeholder="请输入品牌排序"/> |
| ... | ... | @@ -113,20 +102,18 @@ |
| 113 | 102 | import { |
| 114 | 103 | createBrand, |
| 115 | 104 | deleteBrand, |
| 116 | - exportBrandExcel, | |
| 117 | 105 | getBrand, |
| 118 | 106 | getBrandPage, |
| 119 | 107 | updateBrand |
| 120 | 108 | } from "@/api/mall/product/brand"; |
| 121 | -import {getProductCategoryList} from "@/api/mall/product/category"; | |
| 122 | 109 | import ImageUpload from '@/components/ImageUpload'; |
| 123 | -import Treeselect from "@riophae/vue-treeselect"; | |
| 124 | 110 | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| 111 | +import {CommonStatusEnum} from "@/utils/constants"; | |
| 125 | 112 | |
| 126 | 113 | export default { |
| 127 | - name: "Brand", | |
| 114 | + name: "ProductBrand", | |
| 128 | 115 | components: { |
| 129 | - ImageUpload, Treeselect, | |
| 116 | + ImageUpload | |
| 130 | 117 | }, |
| 131 | 118 | data() { |
| 132 | 119 | return { |
| ... | ... | @@ -153,21 +140,18 @@ export default { |
| 153 | 140 | status: null, |
| 154 | 141 | createTime: [] |
| 155 | 142 | }, |
| 156 | - // 商品分类树选项 | |
| 157 | - categoryOptions: [], | |
| 158 | 143 | // 表单参数 |
| 159 | 144 | form: {}, |
| 160 | 145 | // 表单校验 |
| 161 | 146 | rules: { |
| 162 | - categoryId: [{required: true, message: "分类编号不能为空", trigger: "blur"}], | |
| 163 | 147 | name: [{required: true, message: "品牌名称不能为空", trigger: "blur"}], |
| 164 | - bannerUrl: [{required: true, message: "品牌图片不能为空", trigger: "blur"}], | |
| 148 | + picUrl: [{required: true, message: "品牌图片不能为空", trigger: "blur"}], | |
| 149 | + sort: [{required: true, message: "品牌排序不能为空", trigger: "blur"}], | |
| 165 | 150 | status: [{required: true, message: "状态不能为空", trigger: "change"}], |
| 166 | 151 | } |
| 167 | 152 | }; |
| 168 | 153 | }, |
| 169 | 154 | created() { |
| 170 | - this.getTreeselect(); | |
| 171 | 155 | this.getList(); |
| 172 | 156 | }, |
| 173 | 157 | methods: { |
| ... | ... | @@ -181,26 +165,6 @@ export default { |
| 181 | 165 | this.loading = false; |
| 182 | 166 | }); |
| 183 | 167 | }, |
| 184 | - /** 转换菜单数据结构 */ | |
| 185 | - normalizer(node) { | |
| 186 | - if (node.children && !node.children.length) { | |
| 187 | - delete node.children; | |
| 188 | - } | |
| 189 | - return { | |
| 190 | - id: node.id, | |
| 191 | - label: node.name, | |
| 192 | - children: node.children | |
| 193 | - }; | |
| 194 | - }, | |
| 195 | - /** 查询分类下拉树结构 */ | |
| 196 | - getTreeselect() { | |
| 197 | - getProductCategoryList().then(response => { | |
| 198 | - this.categoryOptions = []; | |
| 199 | - const menu = {id: 0, name: '商品分类', children: []}; | |
| 200 | - menu.children = this.handleTree(response.data, "id", "pid"); | |
| 201 | - this.categoryOptions.push(menu); | |
| 202 | - }); | |
| 203 | - }, | |
| 204 | 168 | /** 取消按钮 */ |
| 205 | 169 | cancel() { |
| 206 | 170 | this.open = false; |
| ... | ... | @@ -210,12 +174,11 @@ export default { |
| 210 | 174 | reset() { |
| 211 | 175 | this.form = { |
| 212 | 176 | id: undefined, |
| 213 | - categoryId: undefined, | |
| 214 | 177 | name: undefined, |
| 215 | - bannerUrl: undefined, | |
| 216 | - sort: undefined, | |
| 178 | + picUrl: undefined, | |
| 179 | + sort: 0, | |
| 217 | 180 | description: undefined, |
| 218 | - status: undefined, | |
| 181 | + status: CommonStatusEnum.ENABLE, | |
| 219 | 182 | }; |
| 220 | 183 | this.resetForm("form"); |
| 221 | 184 | }, |
| ... | ... | @@ -232,14 +195,12 @@ export default { |
| 232 | 195 | /** 新增按钮操作 */ |
| 233 | 196 | handleAdd() { |
| 234 | 197 | this.reset(); |
| 235 | - this.getTreeselect(); | |
| 236 | 198 | this.open = true; |
| 237 | 199 | this.title = "添加品牌"; |
| 238 | 200 | }, |
| 239 | 201 | /** 修改按钮操作 */ |
| 240 | 202 | handleUpdate(row) { |
| 241 | 203 | this.reset(); |
| 242 | - this.getTreeselect(); | |
| 243 | 204 | const id = row.id; |
| 244 | 205 | getBrand(id).then(response => { |
| 245 | 206 | this.form = response.data; |
| ... | ... | @@ -280,30 +241,7 @@ export default { |
| 280 | 241 | this.$modal.msgSuccess("删除成功"); |
| 281 | 242 | }).catch(() => { |
| 282 | 243 | }); |
| 283 | - }, | |
| 284 | - /** 导出按钮操作 */ | |
| 285 | - handleExport() { | |
| 286 | - // 处理查询参数 | |
| 287 | - let params = {...this.queryParams}; | |
| 288 | - params.pageNo = undefined; | |
| 289 | - params.pageSize = undefined; | |
| 290 | - // 执行导出 | |
| 291 | - this.$modal.confirm('是否确认导出所有品牌数据项?').then(() => { | |
| 292 | - this.exportLoading = true; | |
| 293 | - return exportBrandExcel(params); | |
| 294 | - }).then(response => { | |
| 295 | - this.$download.excel(response, "品牌.xls"); | |
| 296 | - this.exportLoading = false; | |
| 297 | - }).catch(() => { | |
| 298 | - }); | |
| 299 | 244 | } |
| 300 | 245 | } |
| 301 | 246 | }; |
| 302 | 247 | </script> |
| 303 | - | |
| 304 | -<style scoped lang="scss"> | |
| 305 | -// | |
| 306 | -.img-height { | |
| 307 | - height: 150px; | |
| 308 | -} | |
| 309 | -</style> | ... | ... |
yudao-ui-admin/src/views/mall/product/category/index.vue
| ... | ... | @@ -113,7 +113,7 @@ import ImageUpload from '@/components/ImageUpload'; |
| 113 | 113 | import {CommonStatusEnum} from "@/utils/constants"; |
| 114 | 114 | |
| 115 | 115 | export default { |
| 116 | - name: "Category", | |
| 116 | + name: "ProductCategory", | |
| 117 | 117 | components: { |
| 118 | 118 | Editor, Treeselect, ImageUpload |
| 119 | 119 | }, | ... | ... |