diff --git a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java index 018988707..614469e92 100644 --- a/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java +++ b/yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/mybatis/core/mapper/BaseMapperX.java @@ -132,9 +132,10 @@ public interface BaseMapperX extends MPJBaseMapper { /** * 批量修改插入, 会根据实体的主键是否为空,更新还是修改。默认为 1000 + * * @param entities 实体们 */ - default void saveOrUpdateBatch(Collection entities){ + default void saveOrUpdateBatch(Collection entities){ Db.saveOrUpdateBatch(entities); } diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageItemRespVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageItemRespVO.java deleted file mode 100644 index 6467c0b17..000000000 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageItemRespVO.java +++ /dev/null @@ -1,39 +0,0 @@ -package cn.iocoder.yudao.module.product.controller.app.spu.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import java.util.List; - -@Schema(description = "用户 App - 商品 SPU 分页项 Response VO") -@Data -public class AppProductSpuPageItemRespVO { - - @Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - private Long id; - - @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道") - @NotEmpty(message = "商品名称不能为空") - private String name; - - @Schema(description = "分类编号", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "分类编号不能为空") - private Long categoryId; - - @Schema(description = "商品图片的数组", requiredMode = Schema.RequiredMode.REQUIRED) - private List picUrls; - - @Schema(description = " 最小价格,单位使用:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Integer minPrice; - - @Schema(description = "最大价格,单位使用:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Integer maxPrice; - - // ========== 统计相关字段 ========= - - @Schema(description = "商品销量", example = "1024") - private Integer salesCount; - -} diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java index 653ca5215..30a545b37 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageReqVO.java @@ -20,6 +20,9 @@ public class AppProductSpuPageReqVO extends PageParam { public static final String SORT_FIELD_SALES_COUNT = "salesCount"; public static final String RECOMMEND_TYPE_HOT = "hot"; + public static final String RECOMMEND_TYPE_BENEFIT = "benefit"; + public static final String RECOMMEND_TYPE_BEST = "best"; + public static final String RECOMMEND_TYPE_NEW = "new"; public static final String RECOMMEND_TYPE_GOOD = "good"; @Schema(description = "分类编号", example = "1") diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageRespVO.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageRespVO.java index f78155e17..7a4d1cf32 100644 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageRespVO.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/app/spu/vo/AppProductSpuPageRespVO.java @@ -32,6 +32,9 @@ public class AppProductSpuPageRespVO { @Schema(description = "商品价格,单位使用:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Integer price; + @Schema(description = "市场价,单位使用:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Integer marketPrice; + @Schema(description = "库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "666") private Integer stock; diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java index 9c237fa9f..0448381fa 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/spu/ProductSpuMapper.java @@ -67,6 +67,12 @@ public interface ProductSpuMapper extends BaseMapperX { // 推荐类型的过滤条件 if (ObjUtil.equal(pageReqVO.getRecommendType(), AppProductSpuPageReqVO.RECOMMEND_TYPE_HOT)) { query.eq(ProductSpuDO::getRecommendHot, true); + } else if (ObjUtil.equal(pageReqVO.getRecommendType(), AppProductSpuPageReqVO.RECOMMEND_TYPE_BENEFIT)) { + query.eq(ProductSpuDO::getRecommendBenefit, true); + } else if (ObjUtil.equal(pageReqVO.getRecommendType(), AppProductSpuPageReqVO.RECOMMEND_TYPE_BEST)) { + query.eq(ProductSpuDO::getRecommendBest, true); + } else if (ObjUtil.equal(pageReqVO.getRecommendType(), AppProductSpuPageReqVO.RECOMMEND_TYPE_NEW)) { + query.eq(ProductSpuDO::getRecommendNew, true); } else if (ObjUtil.equal(pageReqVO.getRecommendType(), AppProductSpuPageReqVO.RECOMMEND_TYPE_GOOD)) { query.eq(ProductSpuDO::getRecommendGood, true); } diff --git a/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecorateComponentEnum.java b/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecorateComponentEnum.java index 28e1cacc5..e9b9a902b 100644 --- a/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecorateComponentEnum.java +++ b/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecorateComponentEnum.java @@ -9,6 +9,7 @@ import lombok.Getter; */ @Getter public enum DecorateComponentEnum { + NAV_MENU("nav-menu", "导航菜单"), ROLLING_BANNER("rolling-banner", "滚动横幅广告"), PRODUCT_CATEGORY("product-category", "商品分类"); @@ -27,4 +28,5 @@ public enum DecorateComponentEnum { this.code = code; this.desc = desc; } + } diff --git a/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecoratePageTypeEnum.java b/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecoratePageTypeEnum.java index 1d8d25c19..17591fa1b 100644 --- a/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecoratePageTypeEnum.java +++ b/yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecoratePageTypeEnum.java @@ -14,6 +14,7 @@ import java.util.Arrays; @AllArgsConstructor @Getter public enum DecoratePageTypeEnum implements IntArrayValuable { + INDEX(1, "首页"); private static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DecoratePageTypeEnum::getType).toArray(); @@ -31,4 +32,5 @@ public enum DecoratePageTypeEnum implements IntArrayValuable { public int[] array() { return ARRAYS; } + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/DecorateComponentController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/DecorateComponentController.java index f52fe943f..fa694e75d 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/DecorateComponentController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/DecorateComponentController.java @@ -38,8 +38,9 @@ public class DecorateComponentController { @Operation(summary = "获取装修页面组件") @Parameter(name = "type", description = "页面类型", required = true) // TODO 加权限 - public CommonResult getPageComponents(@RequestParam("type") - @InEnum(DecoratePageTypeEnum.class) Integer type) { + public CommonResult getPageComponents( + @RequestParam("type") @InEnum(DecoratePageTypeEnum.class) Integer type) { return success(INSTANCE.convert2(type, decorateComponentService.getPageComponents(type))); } + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentReqVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentReqVO.java index 997388236..d4827e2eb 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentReqVO.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentReqVO.java @@ -10,9 +10,6 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; -/** - * @author jason - */ @Schema(description = "管理后台 - 页面装修 Request VO ") @Data public class DecorateComponentReqVO { @@ -20,6 +17,7 @@ public class DecorateComponentReqVO { @NotNull(message = "页面类型不能为空") @InEnum(DecoratePageTypeEnum.class) private Integer type; + @Schema(description = "页面组件列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") @NotEmpty(message = "页面组件列表不能为空") @Valid diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentRespVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentRespVO.java index e936102cc..b16276e45 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentRespVO.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentRespVO.java @@ -5,26 +5,29 @@ import lombok.Data; import java.util.List; -/** - * @author jason - */ @Schema(description = "管理后台 - 页面装修 Resp VO") @Data public class DecorateComponentRespVO { + @Schema(description = "页面类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Integer type; + @Schema(description = "页面组件", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") private List components; @Schema(description = "管理后台 - 页面组件 Resp VO") @Data public static class ComponentRespVO { + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Long id; + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") private String componentCode; + @Schema(description = "组件的内容配置项", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO") private String componentValue; + } } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/AppDecorateController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/AppDecorateController.java index a6d9c463c..6df9575f0 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/AppDecorateController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/AppDecorateController.java @@ -31,8 +31,9 @@ public class AppDecorateController { @GetMapping("/get-page-components") @Operation(summary = "获取装修页面组件") @Parameter(name = "type", description = "页面类型", required = true) - public CommonResult getPageComponents(@RequestParam("type") - @InEnum(DecoratePageTypeEnum.class) Integer type) { + public CommonResult getPageComponents( + @RequestParam("type") @InEnum(DecoratePageTypeEnum.class) Integer type) { return success(INSTANCE.appConvert(type, decorateComponentService.getPageComponents(type))); } + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/vo/AppDecorateComponentRespVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/vo/AppDecorateComponentRespVO.java index 32391528d..c9bf90210 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/vo/AppDecorateComponentRespVO.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/vo/AppDecorateComponentRespVO.java @@ -5,26 +5,29 @@ import lombok.Data; import java.util.List; -/** - * @author jason - */ @Schema(description = "用户 App - 页面装修 Resp VO") @Data public class AppDecorateComponentRespVO { + @Schema(description = "页面类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Integer type; + @Schema(description = "页面组件", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") private List components; @Schema(description = "用户 App - 页面组件 Resp VO") @Data public static class AppComponentRespVO { + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private Long id; + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") private String componentCode; + @Schema(description = "组件的内容配置项", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO") private String componentValue; + } } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/decorate/DecorateComponentConvert.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/decorate/DecorateComponentConvert.java index 62837b19d..8fd310e6c 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/decorate/DecorateComponentConvert.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/decorate/DecorateComponentConvert.java @@ -22,8 +22,8 @@ public interface DecorateComponentConvert { return CollectionUtils.convertList(components, c -> convert(type, c)); } - default DecorateComponentRespVO convert2(Integer type, List doList) { - List components = CollectionUtils.convertList(doList, this::convert3); + default DecorateComponentRespVO convert2(Integer type, List list) { + List components = CollectionUtils.convertList(list, this::convert3); return new DecorateComponentRespVO().setType(type).setComponents(components); } @@ -32,10 +32,11 @@ public interface DecorateComponentConvert { ComponentRespVO convert3(DecorateComponentDO componentDO); // ========== App convert ========== - default AppDecorateComponentRespVO appConvert(Integer type, List doList) { - List components = CollectionUtils.convertList(doList, this::appConvert2); + default AppDecorateComponentRespVO appConvert(Integer type, List list) { + List components = CollectionUtils.convertList(list, this::appConvert2); return new AppDecorateComponentRespVO().setType(type).setComponents(components); } - AppComponentRespVO appConvert2(DecorateComponentDO componentDO); + AppComponentRespVO appConvert2(DecorateComponentDO bean); + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/decorate/DecorateComponentDO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/decorate/DecorateComponentDO.java index 7af199013..0740921ad 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/decorate/DecorateComponentDO.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/decorate/DecorateComponentDO.java @@ -17,24 +17,26 @@ import lombok.Data; @KeySequence("promotion_decorate_component_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data public class DecorateComponentDO extends BaseDO { + /** * 编号 */ @TableId private Long id; + // TODO @jason:要不改成 page?貌似更合理; /** * 页面类型 * 枚举 {@link DecoratePageTypeEnum#getType()} */ private Integer type; + // TODO @jason:code、value,因为在 component /** * 组件编码 * 枚举 {@link DecorateComponentEnum#getCode()} */ private String componentCode; - /** * 组件值:json 格式。包含配置和数据 */ @@ -42,7 +44,8 @@ public class DecorateComponentDO extends BaseDO { /** * 状态 + * * 枚举 {@link CommonStatusEnum} */ private Integer status; -} \ No newline at end of file +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/decorate/DecorateComponentMapper.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/decorate/DecorateComponentMapper.java index 27ddccd0e..d78fc3b4f 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/decorate/DecorateComponentMapper.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/decorate/DecorateComponentMapper.java @@ -8,9 +8,11 @@ import java.util.List; @Mapper public interface DecorateComponentMapper extends BaseMapperX { + default List selectByPageType(Integer type){ return selectList(DecorateComponentDO::getType, type); } + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentService.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentService.java index 5902b61b6..c9f8a6b67 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentService.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentService.java @@ -15,13 +15,16 @@ public interface DecorateComponentService { /** * 店铺装修页面保存 + * * @param reqVO 请求 VO */ void pageSave(DecorateComponentReqVO reqVO); /** * 根据页面类型。获取页面的组件信息 + * * @param type 页面类型 {@link DecoratePageTypeEnum#getType()} */ List getPageComponents(Integer type); + } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentServiceImpl.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentServiceImpl.java index f7202cba4..0cf88861b 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentServiceImpl.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentServiceImpl.java @@ -16,11 +16,13 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE; /** - * 装修组件 Service 接口实现 + * 装修组件 Service 实现 + * * @author jason */ @Service public class DecorateComponentServiceImpl implements DecorateComponentService { + @Resource private DecorateComponentMapper decorateComponentMapper; @@ -42,4 +44,5 @@ public class DecorateComponentServiceImpl implements DecorateComponentService { public List getPageComponents(Integer type) { return decorateComponentMapper.selectByPageType(type); } + }