Commit e86214015d6bdfe199e0daecb3c74538713bfe8b
1 parent
35daee84
fix: 完善商品管理
Showing
15 changed files
with
96 additions
and
99 deletions
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/ProductConstants.java
| ... | ... | @@ -7,22 +7,6 @@ package cn.iocoder.yudao.module.product.enums; |
| 7 | 7 | */ |
| 8 | 8 | public interface ProductConstants { |
| 9 | 9 | |
| 10 | - // TODO @puhui999:这个变量,可以放到 CategoryDO 的实体里 | |
| 11 | - /** | |
| 12 | - * 父分类编号 - 根分类 | |
| 13 | - */ | |
| 14 | - Long PARENT_ID_NULL = 0L; | |
| 15 | - /** | |
| 16 | - * 限定分类层级 | |
| 17 | - */ | |
| 18 | - int CATEGORY_LEVEL = 2; | |
| 19 | - | |
| 20 | - // TODO @puhui999:这个变量,必要项不大哈 | |
| 21 | - /** | |
| 22 | - * SPU 分页 tab 个数 | |
| 23 | - */ | |
| 24 | - int SPU_TAB_COUNTS = 5; | |
| 25 | - | |
| 26 | 10 | /** |
| 27 | 11 | * 警戒库存 TODO 警戒库存暂时为 10,后期需要使用常量或者数据库配置替换 |
| 28 | 12 | */ | ... | ... |
yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/enums/spu/ProductSpuPageTabEnum.java deleted
| 1 | -package cn.iocoder.yudao.module.product.enums.spu; | |
| 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 | -// TODO @puhui999:这种非关键的枚举,要不直接写在 ProductSpuPageReqVO 里。类似 public static final Integer TAB_TYPE_FOR_SALE = 0; // 出售中商品 | |
| 10 | -/** | |
| 11 | - * 商品 spu Tabs 标签枚举类型 | |
| 12 | - * | |
| 13 | - * @author HUIHUI | |
| 14 | - */ | |
| 15 | -@Getter | |
| 16 | -@AllArgsConstructor | |
| 17 | -public enum ProductSpuPageTabEnum implements IntArrayValuable { | |
| 18 | - | |
| 19 | - FOR_SALE(0,"出售中商品"), | |
| 20 | - IN_WAREHOUSE(1,"仓库中商品"), | |
| 21 | - SOLD_OUT(2,"已售空商品"), | |
| 22 | - ALERT_STOCK(3,"警戒库存"), | |
| 23 | - RECYCLE_BIN(4,"商品回收站"); | |
| 24 | - | |
| 25 | - public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ProductSpuPageTabEnum::getType).toArray(); | |
| 26 | - /** | |
| 27 | - * 状态 | |
| 28 | - */ | |
| 29 | - private final Integer type; | |
| 30 | - /** | |
| 31 | - * 状态名 | |
| 32 | - */ | |
| 33 | - private final String name; | |
| 34 | - | |
| 35 | - @Override | |
| 36 | - public int[] array() { | |
| 37 | - return ARRAYS; | |
| 38 | - } | |
| 39 | - | |
| 40 | -} |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuExportReqVO.java
| 1 | 1 | package cn.iocoder.yudao.module.product.controller.admin.spu.vo; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.common.validation.InEnum; | |
| 4 | -import cn.iocoder.yudao.module.product.enums.spu.ProductSpuPageTabEnum; | |
| 5 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | 4 | import lombok.AllArgsConstructor; |
| 7 | 5 | import lombok.Data; |
| ... | ... | @@ -12,6 +10,11 @@ import java.time.LocalDateTime; |
| 12 | 10 | |
| 13 | 11 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| 14 | 12 | |
| 13 | +/** | |
| 14 | + * 商品Spu导出 Request VO,参数和 ProductSpuPageReqVO 是一致的 | |
| 15 | + * | |
| 16 | + * @author HUIHUI | |
| 17 | + */ | |
| 15 | 18 | @Schema(description = "管理后台 - 商品Spu导出 Request VO,参数和 ProductSpuPageReqVO 是一致的") |
| 16 | 19 | @Data |
| 17 | 20 | @NoArgsConstructor |
| ... | ... | @@ -22,7 +25,6 @@ public class ProductSpuExportReqVO { |
| 22 | 25 | private String name; |
| 23 | 26 | |
| 24 | 27 | @Schema(description = "前端请求的tab类型", example = "1") |
| 25 | - @InEnum(ProductSpuPageTabEnum.class) | |
| 26 | 28 | private Integer tabType; |
| 27 | 29 | |
| 28 | 30 | @Schema(description = "商品分类编号", example = "100") | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuPageReqVO.java
| ... | ... | @@ -2,14 +2,12 @@ package cn.iocoder.yudao.module.product.controller.admin.spu.vo; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | -import cn.iocoder.yudao.module.product.enums.spu.ProductSpuPageTabEnum; | |
| 6 | 5 | import io.swagger.v3.oas.annotations.media.Schema; |
| 7 | 6 | import lombok.Data; |
| 8 | 7 | import lombok.EqualsAndHashCode; |
| 9 | 8 | import lombok.ToString; |
| 10 | 9 | import org.springframework.format.annotation.DateTimeFormat; |
| 11 | 10 | |
| 12 | -import javax.validation.constraints.NotNull; | |
| 13 | 11 | import java.time.LocalDateTime; |
| 14 | 12 | |
| 15 | 13 | import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
| ... | ... | @@ -25,11 +23,35 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_ |
| 25 | 23 | @ToString(callSuper = true) |
| 26 | 24 | public class ProductSpuPageReqVO extends PageParam { |
| 27 | 25 | |
| 26 | + /** | |
| 27 | + * 出售中商品 | |
| 28 | + */ | |
| 29 | + public static final Integer FOR_SALE = 0; | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * 仓库中商品 | |
| 33 | + */ | |
| 34 | + public static final Integer IN_WAREHOUSE = 1; | |
| 35 | + | |
| 36 | + /** | |
| 37 | + * 已售空商品 | |
| 38 | + */ | |
| 39 | + public static final Integer SOLD_OUT = 2; | |
| 40 | + | |
| 41 | + /** | |
| 42 | + * 警戒库存 | |
| 43 | + */ | |
| 44 | + public static final Integer ALERT_STOCK = 3; | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * 商品回收站 | |
| 48 | + */ | |
| 49 | + public static final Integer RECYCLE_BIN = 4; | |
| 50 | + | |
| 28 | 51 | @Schema(description = "商品名称", example = "清凉小短袖") |
| 29 | 52 | private String name; |
| 30 | 53 | |
| 31 | 54 | @Schema(description = "前端请求的tab类型", required = true, example = "1") |
| 32 | - @InEnum(ProductSpuPageTabEnum.class) | |
| 33 | 55 | private Integer tabType; |
| 34 | 56 | |
| 35 | 57 | @Schema(description = "商品分类编号", example = "1") | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuRespVO.java
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/category/ProductCategoryDO.java
| ... | ... | @@ -19,6 +19,16 @@ import lombok.*; |
| 19 | 19 | @NoArgsConstructor |
| 20 | 20 | @AllArgsConstructor |
| 21 | 21 | public class ProductCategoryDO extends BaseDO { |
| 22 | + | |
| 23 | + /** | |
| 24 | + * 父分类编号 - 根分类 | |
| 25 | + */ | |
| 26 | + public static final Long PARENT_ID_NULL = 0L; | |
| 27 | + /** | |
| 28 | + * 限定分类层级 | |
| 29 | + */ | |
| 30 | + public static final int CATEGORY_LEVEL = 2; | |
| 31 | + | |
| 22 | 32 | /** |
| 23 | 33 | * 分类编号 |
| 24 | 34 | */ | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java
| ... | ... | @@ -10,7 +10,6 @@ import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSpuPageReq |
| 10 | 10 | import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO; |
| 11 | 11 | import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; |
| 12 | 12 | import cn.iocoder.yudao.module.product.enums.ProductConstants; |
| 13 | -import cn.iocoder.yudao.module.product.enums.spu.ProductSpuPageTabEnum; | |
| 14 | 13 | import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; |
| 15 | 14 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 16 | 15 | import org.apache.ibatis.annotations.Mapper; |
| ... | ... | @@ -119,25 +118,25 @@ public interface ProductSpuMapper extends BaseMapperX<ProductSpuDO> { |
| 119 | 118 | */ |
| 120 | 119 | static void appendTabQuery(Integer tabType, LambdaQueryWrapperX<ProductSpuDO> queryWrapper) { |
| 121 | 120 | // 出售中商品 |
| 122 | - if (ObjectUtil.equals(ProductSpuPageTabEnum.FOR_SALE.getType(), tabType)) { | |
| 121 | + if (ObjectUtil.equals(ProductSpuPageReqVO.FOR_SALE, tabType)) { | |
| 123 | 122 | queryWrapper.eqIfPresent(ProductSpuDO::getStatus, ProductSpuStatusEnum.ENABLE.getStatus()); |
| 124 | 123 | } |
| 125 | 124 | // 仓储中商品 |
| 126 | - if (ObjectUtil.equals(ProductSpuPageTabEnum.IN_WAREHOUSE.getType(), tabType)) { | |
| 125 | + if (ObjectUtil.equals(ProductSpuPageReqVO.IN_WAREHOUSE, tabType)) { | |
| 127 | 126 | queryWrapper.eqIfPresent(ProductSpuDO::getStatus, ProductSpuStatusEnum.DISABLE.getStatus()); |
| 128 | 127 | } |
| 129 | 128 | // 已售空商品 |
| 130 | - if (ObjectUtil.equals(ProductSpuPageTabEnum.SOLD_OUT.getType(), tabType)) { | |
| 129 | + if (ObjectUtil.equals(ProductSpuPageReqVO.SOLD_OUT, tabType)) { | |
| 131 | 130 | queryWrapper.eqIfPresent(ProductSpuDO::getStock, 0); |
| 132 | 131 | } |
| 133 | 132 | // 警戒库存 |
| 134 | - if (ObjectUtil.equals(ProductSpuPageTabEnum.ALERT_STOCK.getType(), tabType)) { | |
| 133 | + if (ObjectUtil.equals(ProductSpuPageReqVO.ALERT_STOCK, tabType)) { | |
| 135 | 134 | queryWrapper.le(ProductSpuDO::getStock, ProductConstants.ALERT_STOCK) |
| 136 | 135 | // 如果库存触发警戒库存且状态为回收站的话则不在警戒库存列表展示 |
| 137 | 136 | .notIn(ProductSpuDO::getStatus, ProductSpuStatusEnum.RECYCLE.getStatus()); |
| 138 | 137 | } |
| 139 | 138 | // 回收站 |
| 140 | - if (ObjectUtil.equals(ProductSpuPageTabEnum.RECYCLE_BIN.getType(), tabType)) { | |
| 139 | + if (ObjectUtil.equals(ProductSpuPageReqVO.RECYCLE_BIN, tabType)) { | |
| 141 | 140 | queryWrapper.eqIfPresent(ProductSpuDO::getStatus, ProductSpuStatusEnum.RECYCLE.getStatus()); |
| 142 | 141 | } |
| 143 | 142 | } | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImpl.java
| ... | ... | @@ -16,6 +16,7 @@ import java.util.List; |
| 16 | 16 | import java.util.Objects; |
| 17 | 17 | |
| 18 | 18 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 19 | +import static cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO.PARENT_ID_NULL; | |
| 19 | 20 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; |
| 20 | 21 | |
| 21 | 22 | /** |
| ... | ... | @@ -69,7 +70,7 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { |
| 69 | 70 | |
| 70 | 71 | private void validateParentProductCategory(Long id) { |
| 71 | 72 | // 如果是根分类,无需验证 |
| 72 | - if (Objects.equals(id, ProductConstants.PARENT_ID_NULL)) { | |
| 73 | + if (Objects.equals(id, PARENT_ID_NULL)) { | |
| 73 | 74 | return; |
| 74 | 75 | } |
| 75 | 76 | // 父分类不存在 |
| ... | ... | @@ -78,7 +79,7 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { |
| 78 | 79 | throw exception(CATEGORY_PARENT_NOT_EXISTS); |
| 79 | 80 | } |
| 80 | 81 | // 父分类不能是二级分类 |
| 81 | - if (!Objects.equals(category.getParentId(), ProductConstants.PARENT_ID_NULL)) { | |
| 82 | + if (!Objects.equals(category.getParentId(), PARENT_ID_NULL)) { | |
| 82 | 83 | throw exception(CATEGORY_PARENT_NOT_FIRST_LEVEL); |
| 83 | 84 | } |
| 84 | 85 | } |
| ... | ... | @@ -108,17 +109,16 @@ public class ProductCategoryServiceImpl implements ProductCategoryService { |
| 108 | 109 | |
| 109 | 110 | @Override |
| 110 | 111 | public Integer getCategoryLevel(Long id) { |
| 111 | - if (Objects.equals(id, ProductConstants.PARENT_ID_NULL)) { | |
| 112 | + if (Objects.equals(id, PARENT_ID_NULL)) { | |
| 112 | 113 | return 0; |
| 113 | 114 | } |
| 114 | - // TODO @puhui999:for 的原因,是因为避免脏数据,导致可能的死循环。一般不会超过 100 层哈 | |
| 115 | 115 | int level = 1; |
| 116 | - // fix: 循环次数不确定改为while循环 | |
| 117 | - while (true){ | |
| 116 | + // for 的原因,是因为避免脏数据,导致可能的死循环。一般不会超过 100 层哈 | |
| 117 | + for (int i = 0; i < 100; i++) { | |
| 118 | 118 | ProductCategoryDO category = productCategoryMapper.selectById(id); |
| 119 | 119 | // 如果没有父节点,break 结束 |
| 120 | 120 | if (category == null |
| 121 | - || Objects.equals(category.getParentId(), ProductConstants.PARENT_ID_NULL)) { | |
| 121 | + || Objects.equals(category.getParentId(), PARENT_ID_NULL)) { | |
| 122 | 122 | break; |
| 123 | 123 | } |
| 124 | 124 | // 继续递归父节点 | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java
| ... | ... | @@ -14,7 +14,6 @@ import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; |
| 14 | 14 | import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; |
| 15 | 15 | import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper; |
| 16 | 16 | import cn.iocoder.yudao.module.product.enums.ProductConstants; |
| 17 | -import cn.iocoder.yudao.module.product.enums.spu.ProductSpuPageTabEnum; | |
| 18 | 17 | import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; |
| 19 | 18 | import cn.iocoder.yudao.module.product.service.brand.ProductBrandService; |
| 20 | 19 | import cn.iocoder.yudao.module.product.service.category.ProductCategoryService; |
| ... | ... | @@ -29,6 +28,7 @@ import java.util.*; |
| 29 | 28 | |
| 30 | 29 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 31 | 30 | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.getSumValue; |
| 31 | +import static cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO.CATEGORY_LEVEL; | |
| 32 | 32 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.*; |
| 33 | 33 | |
| 34 | 34 | /** |
| ... | ... | @@ -129,7 +129,7 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 129 | 129 | private void validateCategory(Long id) { |
| 130 | 130 | categoryService.validateCategory(id); |
| 131 | 131 | // 校验层级 |
| 132 | - if (categoryService.getCategoryLevel(id) != ProductConstants.CATEGORY_LEVEL) { | |
| 132 | + if (categoryService.getCategoryLevel(id) < CATEGORY_LEVEL) { | |
| 133 | 133 | throw exception(SPU_SAVE_FAIL_CATEGORY_LEVEL_ERROR); |
| 134 | 134 | } |
| 135 | 135 | } |
| ... | ... | @@ -237,17 +237,17 @@ public class ProductSpuServiceImpl implements ProductSpuService { |
| 237 | 237 | |
| 238 | 238 | @Override |
| 239 | 239 | public Map<Integer, Long> getTabsCount() { |
| 240 | - Map<Integer, Long> counts = new HashMap<>(ProductConstants.SPU_TAB_COUNTS); | |
| 240 | + Map<Integer, Long> counts = new HashMap<>(5); | |
| 241 | 241 | // 查询销售中的商品数量 |
| 242 | - counts.put(ProductSpuPageTabEnum.FOR_SALE.getType(), productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.ENABLE.getStatus())); | |
| 242 | + counts.put(ProductSpuPageReqVO.FOR_SALE, productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.ENABLE.getStatus())); | |
| 243 | 243 | // 查询仓库中的商品数量 |
| 244 | - counts.put(ProductSpuPageTabEnum.IN_WAREHOUSE.getType(), productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.DISABLE.getStatus())); | |
| 244 | + counts.put(ProductSpuPageReqVO.IN_WAREHOUSE, productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.DISABLE.getStatus())); | |
| 245 | 245 | // 查询售空的商品数量 |
| 246 | - counts.put(ProductSpuPageTabEnum.SOLD_OUT.getType(), productSpuMapper.selectCount(ProductSpuDO::getStock, 0)); | |
| 246 | + counts.put(ProductSpuPageReqVO.SOLD_OUT, productSpuMapper.selectCount(ProductSpuDO::getStock, 0)); | |
| 247 | 247 | // 查询触发警戒库存的商品数量 |
| 248 | - counts.put(ProductSpuPageTabEnum.ALERT_STOCK.getType(), productSpuMapper.selectCount()); | |
| 248 | + counts.put(ProductSpuPageReqVO.ALERT_STOCK, productSpuMapper.selectCount()); | |
| 249 | 249 | // 查询回收站中的商品数量 |
| 250 | - counts.put(ProductSpuPageTabEnum.RECYCLE_BIN.getType(), productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.RECYCLE.getStatus())); | |
| 250 | + counts.put(ProductSpuPageReqVO.RECYCLE_BIN, productSpuMapper.selectCount(ProductSpuDO::getStatus, ProductSpuStatusEnum.RECYCLE.getStatus())); | |
| 251 | 251 | return counts; |
| 252 | 252 | } |
| 253 | 253 | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/category/ProductCategoryServiceImplTest.java
| ... | ... | @@ -18,9 +18,8 @@ import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertPojoEq |
| 18 | 18 | import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.assertServiceException; |
| 19 | 19 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomLongId; |
| 20 | 20 | import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.randomPojo; |
| 21 | - | |
| 21 | +import static cn.iocoder.yudao.module.product.dal.dataobject.category.ProductCategoryDO.PARENT_ID_NULL; | |
| 22 | 22 | import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.CATEGORY_NOT_EXISTS; |
| 23 | -import static cn.iocoder.yudao.module.product.enums.ProductConstants.PARENT_ID_NULL; | |
| 24 | 23 | import static org.junit.jupiter.api.Assertions.*; |
| 25 | 24 | |
| 26 | 25 | /** | ... | ... |
yudao-module-mall/yudao-module-product-biz/src/test/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImplTest.java
| ... | ... | @@ -14,7 +14,6 @@ import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSpuUpdateR |
| 14 | 14 | import cn.iocoder.yudao.module.product.convert.spu.ProductSpuConvert; |
| 15 | 15 | import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; |
| 16 | 16 | import cn.iocoder.yudao.module.product.dal.mysql.spu.ProductSpuMapper; |
| 17 | -import cn.iocoder.yudao.module.product.enums.spu.ProductSpuPageTabEnum; | |
| 18 | 17 | import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum; |
| 19 | 18 | import cn.iocoder.yudao.module.product.service.brand.ProductBrandServiceImpl; |
| 20 | 19 | import cn.iocoder.yudao.module.product.service.category.ProductCategoryServiceImpl; |
| ... | ... | @@ -318,7 +317,7 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { |
| 318 | 317 | productSpuMapper.insertBatch(createReqVOs); |
| 319 | 318 | // 调用 |
| 320 | 319 | ProductSpuPageReqVO productSpuPageReqVO = new ProductSpuPageReqVO(); |
| 321 | - productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.ALERT_STOCK.getType()); | |
| 320 | + productSpuPageReqVO.setTabType(ProductSpuPageReqVO.ALERT_STOCK); | |
| 322 | 321 | |
| 323 | 322 | PageResult<ProductSpuDO> spuPage = productSpuService.getSpuPage(productSpuPageReqVO); |
| 324 | 323 | |
| ... | ... | @@ -366,7 +365,7 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { |
| 366 | 365 | productSpuMapper.insertBatch(createReqVOs); |
| 367 | 366 | // 调用 |
| 368 | 367 | ProductSpuPageReqVO productSpuPageReqVO = new ProductSpuPageReqVO(); |
| 369 | - productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.ALERT_STOCK.getType()); | |
| 368 | + productSpuPageReqVO.setTabType(ProductSpuPageReqVO.ALERT_STOCK); | |
| 370 | 369 | PageResult<ProductSpuDO> spuPage = productSpuService.getSpuPage(productSpuPageReqVO); |
| 371 | 370 | assertEquals(createReqVOs.size(), spuPage.getTotal()); |
| 372 | 371 | } |
| ... | ... | @@ -407,11 +406,11 @@ public class ProductSpuServiceImplTest extends BaseDbUnitTest { |
| 407 | 406 | // 调用 |
| 408 | 407 | ProductSpuPageReqVO productSpuPageReqVO = new ProductSpuPageReqVO(); |
| 409 | 408 | // 查询条件 按需打开 |
| 410 | - //productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.ALERT_STOCK.getType()); | |
| 411 | - //productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.RECYCLE_BIN.getType()); | |
| 412 | - //productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.FOR_SALE.getType()); | |
| 413 | - //productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.IN_WAREHOUSE.getType()); | |
| 414 | - //productSpuPageReqVO.setTabType(ProductSpuPageTabEnum.SOLD_OUT.getType()); | |
| 409 | + //productSpuPageReqVO.setTabType(ProductSpuPageReqVO.ALERT_STOCK); | |
| 410 | + //productSpuPageReqVO.setTabType(ProductSpuPageReqVO.RECYCLE_BIN); | |
| 411 | + //productSpuPageReqVO.setTabType(ProductSpuPageReqVO.FOR_SALE); | |
| 412 | + //productSpuPageReqVO.setTabType(ProductSpuPageReqVO.IN_WAREHOUSE); | |
| 413 | + //productSpuPageReqVO.setTabType(ProductSpuPageReqVO.SOLD_OUT); | |
| 415 | 414 | //productSpuPageReqVO.setName(createReqVO.getName()); |
| 416 | 415 | //productSpuPageReqVO.setCategoryId(createReqVO.getCategoryId()); |
| 417 | 416 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/DeliveryExpressTemplateController.java
| 1 | 1 | package cn.iocoder.yudao.module.trade.controller.admin.delivery; |
| 2 | 2 | |
| 3 | +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | |
| 3 | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | 6 | import cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstemplate.*; |
| ... | ... | @@ -71,6 +72,15 @@ public class DeliveryExpressTemplateController { |
| 71 | 72 | return success(DeliveryExpressTemplateConvert.INSTANCE.convertList(list)); |
| 72 | 73 | } |
| 73 | 74 | |
| 75 | + @GetMapping("/list-all-simple") | |
| 76 | + @Operation(summary = "获取快递模版精简信息列表", description = "主要用于前端的下拉选项") | |
| 77 | + public CommonResult<List<DeliveryExpressTemplateSimpleRespVO>> getSimpleTemplateList() { | |
| 78 | + // 获取运费模版列表,只要开启状态的 | |
| 79 | + List<DeliveryExpressTemplateDO> list = deliveryExpressTemplateService.getDeliveryExpressTemplateList(); | |
| 80 | + // 排序后,返回给前端 | |
| 81 | + return success(DeliveryExpressTemplateConvert.INSTANCE.convertList(list)); | |
| 82 | + } | |
| 83 | + | |
| 74 | 84 | @GetMapping("/page") |
| 75 | 85 | @Operation(summary = "获得快递运费模板分页") |
| 76 | 86 | @PreAuthorize("@ss.hasPermission('trade:delivery:express-template:query')") | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/admin/delivery/vo/expresstemplate/DeliveryExpressTemplateSimpleRespVO.java
| ... | ... | @@ -2,19 +2,19 @@ package cn.iocoder.yudao.module.trade.controller.admin.delivery.vo.expresstempla |
| 2 | 2 | |
| 3 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | 4 | import lombok.*; |
| 5 | + | |
| 6 | +import javax.validation.constraints.NotNull; | |
| 5 | 7 | import java.time.LocalDateTime; |
| 6 | 8 | |
| 7 | -// TODO @jason:simplae 是不是不用继承 DeliveryExpressTemplateBaseVO,直接 id name 属性就够了。 | |
| 8 | 9 | @Schema(description = "管理后台 - 快递运费模板 精简 Response VO") |
| 9 | 10 | @Data |
| 10 | -@EqualsAndHashCode(callSuper = true) | |
| 11 | 11 | @ToString(callSuper = true) |
| 12 | -public class DeliveryExpressTemplateSimpleRespVO extends DeliveryExpressTemplateBaseVO { | |
| 12 | +public class DeliveryExpressTemplateSimpleRespVO { | |
| 13 | 13 | |
| 14 | 14 | @Schema(description = "编号,自增", required = true, example = "371") |
| 15 | 15 | private Long id; |
| 16 | 16 | |
| 17 | - @Schema(description = "创建时间", required = true) | |
| 18 | - private LocalDateTime createTime; | |
| 17 | + @Schema(description = "模板名称", required = true, example = "王五") | |
| 18 | + private String name; | |
| 19 | 19 | |
| 20 | 20 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateService.java
| ... | ... | @@ -57,6 +57,13 @@ public interface DeliveryExpressTemplateService { |
| 57 | 57 | List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(Collection<Long> ids); |
| 58 | 58 | |
| 59 | 59 | /** |
| 60 | + * 获得快递运费模板列表 | |
| 61 | + * | |
| 62 | + * @return 快递运费模板列表 | |
| 63 | + */ | |
| 64 | + List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList(); | |
| 65 | + | |
| 66 | + /** | |
| 60 | 67 | * 获得快递运费模板分页 |
| 61 | 68 | * |
| 62 | 69 | * @param pageReqVO 分页查询 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/delivery/DeliveryExpressTemplateServiceImpl.java
| ... | ... | @@ -198,6 +198,11 @@ public class DeliveryExpressTemplateServiceImpl implements DeliveryExpressTempla |
| 198 | 198 | } |
| 199 | 199 | |
| 200 | 200 | @Override |
| 201 | + public List<DeliveryExpressTemplateDO> getDeliveryExpressTemplateList() { | |
| 202 | + return expressTemplateMapper.selectList(); | |
| 203 | + } | |
| 204 | + | |
| 205 | + @Override | |
| 201 | 206 | public PageResult<DeliveryExpressTemplateDO> getDeliveryExpressTemplatePage(DeliveryExpressTemplatePageReqVO pageReqVO) { |
| 202 | 207 | return expressTemplateMapper.selectPage(pageReqVO); |
| 203 | 208 | } | ... | ... |