Commit c3de25e760a66523d17ea3a5cf8ace57f6b821ec
1 parent
a159a983
营销:
1. 调整店铺装修接口
Showing
14 changed files
with
149 additions
and
151 deletions
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecorateComponentEnum.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.enums.decorate; |
| 2 | 2 | |
| 3 | +import lombok.AllArgsConstructor; | |
| 3 | 4 | import lombok.Getter; |
| 4 | 5 | |
| 5 | 6 | /** |
| ... | ... | @@ -8,11 +9,44 @@ import lombok.Getter; |
| 8 | 9 | * @author jason |
| 9 | 10 | */ |
| 10 | 11 | @Getter |
| 12 | +@AllArgsConstructor | |
| 13 | +@SuppressWarnings("JavadocLinkAsPlainText") | |
| 11 | 14 | public enum DecorateComponentEnum { |
| 12 | 15 | |
| 13 | - NAV_MENU("nav-menu", "导航菜单"), | |
| 14 | - ROLLING_BANNER("rolling-banner", "滚动横幅广告"), | |
| 15 | - PRODUCT_CATEGORY("product-category", "商品分类"); | |
| 16 | + /** | |
| 17 | + * 格式:[{ | |
| 18 | + * "name": "标题" | |
| 19 | + * "picUrl": "https://www.iocoder.cn/xxx.png", | |
| 20 | + * "url": "/pages/users/index" | |
| 21 | + * }] | |
| 22 | + * | |
| 23 | + * 最多 10 个 | |
| 24 | + */ | |
| 25 | + MENU("menu", "菜单"), | |
| 26 | + /** | |
| 27 | + * 格式:[{ | |
| 28 | + * "name": "标题" | |
| 29 | + * "url": "/pages/users/index" | |
| 30 | + * }] | |
| 31 | + */ | |
| 32 | + ROLLING_NEWS("scrolling-news", "滚动新闻"), | |
| 33 | + /** | |
| 34 | + * 格式:[{ | |
| 35 | + * "picUrl": "https://www.iocoder.cn/xxx.png", | |
| 36 | + * "url": "/pages/users/index" | |
| 37 | + * }] | |
| 38 | + */ | |
| 39 | + SLIDE_SHOW("slide-show", "轮播图"), | |
| 40 | + /** | |
| 41 | + * 格式:[{ | |
| 42 | + * "name": "标题" | |
| 43 | + * "type": "类型", // best、hot、new、benefit、good | |
| 44 | + * "tag": "标签" // 例如说:多买多省 | |
| 45 | + * }] | |
| 46 | + * | |
| 47 | + * 最多 4 个 | |
| 48 | + */ | |
| 49 | + PRODUCT_RECOMMEND("product-recommend", "商品推荐"); | |
| 16 | 50 | |
| 17 | 51 | /** |
| 18 | 52 | * 页面组件代码 |
| ... | ... | @@ -24,9 +58,4 @@ public enum DecorateComponentEnum { |
| 24 | 58 | */ |
| 25 | 59 | private final String desc; |
| 26 | 60 | |
| 27 | - DecorateComponentEnum(String code, String desc) { | |
| 28 | - this.code = code; | |
| 29 | - this.desc = desc; | |
| 30 | - } | |
| 31 | - | |
| 32 | 61 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-api/src/main/java/cn/iocoder/yudao/module/promotion/enums/decorate/DecoratePageEnum.java
| ... | ... | @@ -17,12 +17,13 @@ public enum DecoratePageEnum implements IntArrayValuable { |
| 17 | 17 | |
| 18 | 18 | INDEX(1, "首页"); |
| 19 | 19 | |
| 20 | - private static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DecoratePageEnum::getId).toArray(); | |
| 20 | + private static final int[] ARRAYS = Arrays.stream(values()).mapToInt(DecoratePageEnum::getPage).toArray(); | |
| 21 | 21 | |
| 22 | 22 | /** |
| 23 | - * 页面 id | |
| 23 | + * 页面编号 | |
| 24 | 24 | */ |
| 25 | - private final Integer id; | |
| 25 | + private final Integer page; | |
| 26 | + | |
| 26 | 27 | /** |
| 27 | 28 | * 页面名称 |
| 28 | 29 | */ | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/DecorateComponentController.http
0 → 100644
| 1 | +### /promotion/decorate/save 保存页面装修组件 | |
| 2 | +POST {{baseUrl}}/promotion/decorate/save | |
| 3 | +Content-Type: application/json | |
| 4 | +Authorization: Bearer {{token}} | |
| 5 | +tenant-id: {{adminTenentId}} | |
| 6 | + | |
| 7 | +{ | |
| 8 | + "page": 1, | |
| 9 | + "code": "slide-show", | |
| 10 | + "status": 0, | |
| 11 | + "value": "null" | |
| 12 | +} | |
| 13 | + | |
| 14 | +### /promotion/decorate/list 获取指定页面的组件列表 | |
| 15 | +GET {{baseUrl}}/promotion/decorate/list?page=1 | |
| 16 | +Content-Type: application/json | |
| 17 | +Authorization: Bearer {{token}} | |
| 18 | +tenant-id: {{adminTenentId}} | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/DecorateComponentController.java
| ... | ... | @@ -2,45 +2,49 @@ package cn.iocoder.yudao.module.promotion.controller.admin.decorate; |
| 2 | 2 | |
| 3 | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | -import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentSaveReqVO; | |
| 6 | 5 | import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentRespVO; |
| 6 | +import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentSaveReqVO; | |
| 7 | +import cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert; | |
| 7 | 8 | import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageEnum; |
| 8 | 9 | import cn.iocoder.yudao.module.promotion.service.decorate.DecorateComponentService; |
| 9 | 10 | import io.swagger.v3.oas.annotations.Operation; |
| 10 | 11 | import io.swagger.v3.oas.annotations.Parameter; |
| 11 | 12 | import io.swagger.v3.oas.annotations.tags.Tag; |
| 13 | +import org.springframework.security.access.prepost.PreAuthorize; | |
| 12 | 14 | import org.springframework.validation.annotation.Validated; |
| 13 | 15 | import org.springframework.web.bind.annotation.*; |
| 14 | 16 | |
| 15 | 17 | import javax.annotation.Resource; |
| 16 | 18 | import javax.validation.Valid; |
| 19 | +import java.util.List; | |
| 17 | 20 | |
| 18 | 21 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 19 | -import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE; | |
| 20 | 22 | |
| 21 | 23 | @Tag(name = "管理后台 - 店铺页面装修") |
| 22 | 24 | @RestController |
| 23 | 25 | @RequestMapping("/promotion/decorate") |
| 24 | 26 | @Validated |
| 25 | 27 | public class DecorateComponentController { |
| 28 | + | |
| 26 | 29 | @Resource |
| 27 | 30 | private DecorateComponentService decorateComponentService; |
| 28 | 31 | |
| 29 | - @PostMapping("/page-save") | |
| 30 | - @Operation(summary = "保存页面装修") | |
| 31 | - // TODO 加权限 | |
| 32 | - public CommonResult<Boolean> savePageComponents(@Valid @RequestBody DecorateComponentSaveReqVO reqVO) { | |
| 33 | - decorateComponentService.savePageComponents(reqVO); | |
| 32 | + @PostMapping("/save") | |
| 33 | + @Operation(summary = "保存页面装修组件") | |
| 34 | + @PreAuthorize("@ss.hasPermission('promotion:decorate:save')") | |
| 35 | + public CommonResult<Boolean> saveDecorateComponent(@Valid @RequestBody DecorateComponentSaveReqVO reqVO) { | |
| 36 | + decorateComponentService.saveDecorateComponent(reqVO); | |
| 34 | 37 | return success(true); |
| 35 | 38 | } |
| 36 | 39 | |
| 37 | - @GetMapping("/get-page-components") | |
| 38 | - @Operation(summary = "获取装修页面组件") | |
| 39 | - @Parameter(name = "pageId", description = "页面 id", required = true) | |
| 40 | - // TODO 加权限 | |
| 41 | - public CommonResult<DecorateComponentRespVO> getPageComponents( | |
| 42 | - @RequestParam("pageId") @InEnum(DecoratePageEnum.class) Integer pageId) { | |
| 43 | - return success(INSTANCE.convert2(pageId, decorateComponentService.getPageComponents(pageId))); | |
| 40 | + @GetMapping("/list") | |
| 41 | + @Operation(summary = "获取指定页面的组件列表") | |
| 42 | + @Parameter(name = "page", description = "页面 id", required = true) | |
| 43 | + @PreAuthorize("@ss.hasPermission('promotion:decorate:query')") | |
| 44 | + public CommonResult<List<DecorateComponentRespVO>> getDecorateComponentListByPage( | |
| 45 | + @RequestParam("page") @InEnum(DecoratePageEnum.class) Integer page) { | |
| 46 | + return success(DecorateComponentConvert.INSTANCE.convertList02( | |
| 47 | + decorateComponentService.getDecorateComponentListByPage(page, null))); | |
| 44 | 48 | } |
| 45 | 49 | |
| 46 | 50 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentRespVO.java
| ... | ... | @@ -3,31 +3,17 @@ package cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo; |
| 3 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | 4 | import lombok.Data; |
| 5 | 5 | |
| 6 | -import java.util.List; | |
| 7 | - | |
| 8 | 6 | @Schema(description = "管理后台 - 页面装修 Resp VO") |
| 9 | 7 | @Data |
| 10 | 8 | public class DecorateComponentRespVO { |
| 11 | 9 | |
| 12 | - @Schema(description = "页面 id ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 13 | - private Integer pageId; | |
| 14 | - | |
| 15 | - @Schema(description = "页面组件", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") | |
| 16 | - private List<ComponentRespVO> components; | |
| 17 | - | |
| 18 | - @Schema(description = "管理后台 - 页面组件 Resp VO") | |
| 19 | - @Data | |
| 20 | - public static class ComponentRespVO { | |
| 21 | - | |
| 22 | - @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 23 | - private Long id; | |
| 24 | - | |
| 25 | - @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") | |
| 26 | - private String code; | |
| 10 | + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") | |
| 11 | + private String code; | |
| 27 | 12 | |
| 28 | - @Schema(description = "组件的内容配置项", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO") | |
| 29 | - private String value; | |
| 13 | + @Schema(description = "组件的内容配置项", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO") | |
| 14 | + private String value; | |
| 30 | 15 | |
| 31 | - } | |
| 16 | + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 17 | + private Integer status; | |
| 32 | 18 | |
| 33 | 19 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/decorate/vo/DecorateComponentSaveReqVO.java
| ... | ... | @@ -5,10 +5,8 @@ import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageEnum; |
| 5 | 5 | import io.swagger.v3.oas.annotations.media.Schema; |
| 6 | 6 | import lombok.Data; |
| 7 | 7 | |
| 8 | -import javax.validation.Valid; | |
| 9 | 8 | import javax.validation.constraints.NotEmpty; |
| 10 | 9 | import javax.validation.constraints.NotNull; |
| 11 | -import java.util.List; | |
| 12 | 10 | |
| 13 | 11 | @Schema(description = "管理后台 - 页面装修的保存 Request VO ") |
| 14 | 12 | @Data |
| ... | ... | @@ -17,28 +15,17 @@ public class DecorateComponentSaveReqVO { |
| 17 | 15 | @Schema(description = "页面 id ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 18 | 16 | @NotNull(message = "页面 id 不能为空") |
| 19 | 17 | @InEnum(DecoratePageEnum.class) |
| 20 | - private Integer pageId; | |
| 18 | + private Integer page; | |
| 21 | 19 | |
| 22 | - @Schema(description = "页面组件列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") | |
| 23 | - @NotEmpty(message = "页面组件列表不能为空") | |
| 24 | - @Valid | |
| 25 | - private List<ComponentReqVO> components; | |
| 20 | + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") | |
| 21 | + @NotEmpty(message = "组件编码不能为空") | |
| 22 | + private String code; | |
| 26 | 23 | |
| 27 | - @Schema(description = "管理后台 - 页面装修组件 Request VO") | |
| 28 | - @Data | |
| 29 | - public static class ComponentReqVO { | |
| 24 | + @Schema(description = "组件对应值, json 字符串, 含内容配置,具体数据", requiredMode = Schema.RequiredMode.REQUIRED) | |
| 25 | + @NotEmpty(message = "组件值为空") | |
| 26 | + private String value; | |
| 30 | 27 | |
| 31 | - @Schema(description = "组件编码", example = "1") | |
| 32 | - private Long id; | |
| 33 | - | |
| 34 | - @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") | |
| 35 | - @NotEmpty(message = "组件编码不能为空") | |
| 36 | - private String code; | |
| 37 | - | |
| 38 | - @Schema(description = "组件对应值, json 字符串, 含内容配置,具体数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") | |
| 39 | - @NotEmpty(message = "组件值为空") | |
| 40 | - private String value; | |
| 41 | - | |
| 42 | - } | |
| 28 | + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 29 | + private Integer status; | |
| 43 | 30 | |
| 44 | 31 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/AppDecorateController.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.controller.app.decorate; |
| 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.validation.InEnum; |
| 5 | 6 | import cn.iocoder.yudao.module.promotion.controller.app.decorate.vo.AppDecorateComponentRespVO; |
| 7 | +import cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert; | |
| 6 | 8 | import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageEnum; |
| 7 | 9 | import cn.iocoder.yudao.module.promotion.service.decorate.DecorateComponentService; |
| 8 | 10 | import io.swagger.v3.oas.annotations.Operation; |
| ... | ... | @@ -15,9 +17,9 @@ import org.springframework.web.bind.annotation.RequestParam; |
| 15 | 17 | import org.springframework.web.bind.annotation.RestController; |
| 16 | 18 | |
| 17 | 19 | import javax.annotation.Resource; |
| 20 | +import java.util.List; | |
| 18 | 21 | |
| 19 | 22 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 20 | -import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE; | |
| 21 | 23 | |
| 22 | 24 | @Tag(name = "用户 APP - 店铺装修") |
| 23 | 25 | @RestController |
| ... | ... | @@ -28,12 +30,13 @@ public class AppDecorateController { |
| 28 | 30 | @Resource |
| 29 | 31 | private DecorateComponentService decorateComponentService; |
| 30 | 32 | |
| 31 | - @GetMapping("/get-page-components") | |
| 32 | - @Operation(summary = "获取装修页面组件") | |
| 33 | - @Parameter(name = "pageId", description = "页面 id", required = true) | |
| 34 | - public CommonResult<AppDecorateComponentRespVO> getPageComponents( | |
| 35 | - @RequestParam("pageId") @InEnum(DecoratePageEnum.class) Integer pageId) { | |
| 36 | - return success(INSTANCE.appConvert(pageId, decorateComponentService.getPageComponents(pageId))); | |
| 33 | + @GetMapping("/get-component-list") | |
| 34 | + @Operation(summary = "获取指定页面的组件列表") | |
| 35 | + @Parameter(name = "page", description = "页面编号", required = true) | |
| 36 | + public CommonResult<List<AppDecorateComponentRespVO>> getDecorateComponentListByPage( | |
| 37 | + @RequestParam("page") @InEnum(DecoratePageEnum.class) Integer page) { | |
| 38 | + return success(DecorateComponentConvert.INSTANCE.convertList( | |
| 39 | + decorateComponentService.getDecorateComponentListByPage(page, CommonStatusEnum.ENABLE.getStatus()))); | |
| 37 | 40 | } |
| 38 | 41 | |
| 39 | 42 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/decorate/vo/AppDecorateComponentRespVO.java
| ... | ... | @@ -3,28 +3,14 @@ package cn.iocoder.yudao.module.promotion.controller.app.decorate.vo; |
| 3 | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 4 | 4 | import lombok.Data; |
| 5 | 5 | |
| 6 | -import java.util.List; | |
| 7 | - | |
| 8 | -@Schema(description = "用户 App - 页面装修 Resp VO") | |
| 6 | +@Schema(description = "用户 App - 页面组件 Resp VO") | |
| 9 | 7 | @Data |
| 10 | 8 | public class AppDecorateComponentRespVO { |
| 11 | 9 | |
| 12 | - @Schema(description = "页面 id ", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 13 | - private Integer pageId; | |
| 14 | - | |
| 15 | - @Schema(description = "页面组件", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO") | |
| 16 | - private List<AppComponentRespVO> components; | |
| 17 | - | |
| 18 | - @Schema(description = "用户 App - 页面组件 Resp VO") | |
| 19 | - @Data | |
| 20 | - public static class AppComponentRespVO { | |
| 21 | - | |
| 22 | - @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") | |
| 23 | - private String code; | |
| 24 | - | |
| 25 | - @Schema(description = "组件的内容配置项", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO") | |
| 26 | - private String value; | |
| 10 | + @Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu") | |
| 11 | + private String code; | |
| 27 | 12 | |
| 28 | - } | |
| 13 | + @Schema(description = "组件的内容配置项", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO") | |
| 14 | + private String value; | |
| 29 | 15 | |
| 30 | 16 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/decorate/DecorateComponentConvert.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.convert.decorate; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | |
| 4 | -import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentSaveReqVO; | |
| 5 | 3 | import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentRespVO; |
| 4 | +import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentSaveReqVO; | |
| 6 | 5 | import cn.iocoder.yudao.module.promotion.controller.app.decorate.vo.AppDecorateComponentRespVO; |
| 7 | 6 | import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO; |
| 8 | 7 | import org.mapstruct.Mapper; |
| ... | ... | @@ -10,33 +9,15 @@ import org.mapstruct.factory.Mappers; |
| 10 | 9 | |
| 11 | 10 | import java.util.List; |
| 12 | 11 | |
| 13 | -import static cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentRespVO.*; | |
| 14 | -import static cn.iocoder.yudao.module.promotion.controller.app.decorate.vo.AppDecorateComponentRespVO.*; | |
| 15 | - | |
| 16 | 12 | @Mapper |
| 17 | 13 | public interface DecorateComponentConvert { |
| 18 | 14 | |
| 19 | 15 | DecorateComponentConvert INSTANCE = Mappers.getMapper(DecorateComponentConvert.class); |
| 20 | 16 | |
| 21 | - default List<DecorateComponentDO> convertList(Integer pageId, List<DecorateComponentSaveReqVO.ComponentReqVO> components) { | |
| 22 | - return CollectionUtils.convertList(components, c -> convert(pageId, c)); | |
| 23 | - } | |
| 24 | - | |
| 25 | - default DecorateComponentRespVO convert2(Integer pageId, List<DecorateComponentDO> list) { | |
| 26 | - List<ComponentRespVO> components = CollectionUtils.convertList(list, this::convert3); | |
| 27 | - return new DecorateComponentRespVO().setPageId(pageId).setComponents(components); | |
| 28 | - } | |
| 29 | - | |
| 30 | - DecorateComponentDO convert(Integer pageId, DecorateComponentSaveReqVO.ComponentReqVO reqVO); | |
| 31 | - | |
| 32 | - ComponentRespVO convert3(DecorateComponentDO componentDO); | |
| 17 | + List<DecorateComponentRespVO> convertList02(List<DecorateComponentDO> list); | |
| 33 | 18 | |
| 34 | - // ========== App convert ========== | |
| 35 | - default AppDecorateComponentRespVO appConvert(Integer pageId, List<DecorateComponentDO> list) { | |
| 36 | - List<AppComponentRespVO> components = CollectionUtils.convertList(list, this::appConvert2); | |
| 37 | - return new AppDecorateComponentRespVO().setPageId(pageId).setComponents(components); | |
| 38 | - } | |
| 19 | + DecorateComponentDO convert(DecorateComponentSaveReqVO bean); | |
| 39 | 20 | |
| 40 | - AppComponentRespVO appConvert2(DecorateComponentDO bean); | |
| 21 | + List<AppDecorateComponentRespVO> convertList(List<DecorateComponentDO> list); | |
| 41 | 22 | |
| 42 | 23 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/dataobject/decorate/DecorateComponentDO.java
| ... | ... | @@ -26,13 +26,14 @@ public class DecorateComponentDO extends BaseDO { |
| 26 | 26 | |
| 27 | 27 | /** |
| 28 | 28 | * 所属页面 id |
| 29 | - * 枚举 {@link DecoratePageEnum#getId()} | |
| 29 | + * | |
| 30 | + * 枚举 {@link DecoratePageEnum#getPage()} | |
| 30 | 31 | */ |
| 31 | - private Integer pageId; | |
| 32 | + private Integer page; | |
| 32 | 33 | |
| 33 | 34 | /** |
| 34 | - * 组件编码 | |
| 35 | - * 枚举 {@link DecorateComponentEnum#getCode()} | |
| 35 | + * 组件编码 | |
| 36 | + * 枚举 {@link DecorateComponentEnum#getCode()} | |
| 36 | 37 | */ |
| 37 | 38 | private String code; |
| 38 | 39 | |
| ... | ... | @@ -47,4 +48,5 @@ public class DecorateComponentDO extends BaseDO { |
| 47 | 48 | * 枚举 {@link CommonStatusEnum} |
| 48 | 49 | */ |
| 49 | 50 | private Integer status; |
| 51 | + | |
| 50 | 52 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/dal/mysql/decorate/DecorateComponentMapper.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.dal.mysql.decorate; |
| 2 | 2 | |
| 3 | -import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO; | |
| 4 | 3 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | |
| 5 | +import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO; | |
| 5 | 6 | import org.apache.ibatis.annotations.Mapper; |
| 6 | 7 | |
| 7 | 8 | import java.util.List; |
| ... | ... | @@ -9,8 +10,15 @@ import java.util.List; |
| 9 | 10 | @Mapper |
| 10 | 11 | public interface DecorateComponentMapper extends BaseMapperX<DecorateComponentDO> { |
| 11 | 12 | |
| 12 | - default List<DecorateComponentDO> selectByPage(Integer pageId){ | |
| 13 | - return selectList(DecorateComponentDO::getPageId, pageId); | |
| 13 | + default List<DecorateComponentDO> selectListByPageAndStatus(Integer page, Integer status) { | |
| 14 | + return selectList(new LambdaQueryWrapperX<DecorateComponentDO>() | |
| 15 | + .eq(DecorateComponentDO::getPage, page) | |
| 16 | + .eqIfPresent(DecorateComponentDO::getStatus, status)); | |
| 17 | + } | |
| 18 | + | |
| 19 | + default DecorateComponentDO selectByPageAndCode(Integer page, String code) { | |
| 20 | + return selectOne(DecorateComponentDO::getPage, page, | |
| 21 | + DecorateComponentDO::getCode, code); | |
| 14 | 22 | } |
| 15 | 23 | |
| 16 | 24 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentService.java
| ... | ... | @@ -14,17 +14,18 @@ import java.util.List; |
| 14 | 14 | public interface DecorateComponentService { |
| 15 | 15 | |
| 16 | 16 | /** |
| 17 | - * 店铺装修页面保存 | |
| 17 | + * 保存页面的组件信息 | |
| 18 | 18 | * |
| 19 | 19 | * @param reqVO 请求 VO |
| 20 | 20 | */ |
| 21 | - void savePageComponents(DecorateComponentSaveReqVO reqVO); | |
| 21 | + void saveDecorateComponent(DecorateComponentSaveReqVO reqVO); | |
| 22 | 22 | |
| 23 | 23 | /** |
| 24 | - * 根据页面 id。获取页面的组件信息 | |
| 24 | + * 根据页面 id,获取页面的组件信息 | |
| 25 | 25 | * |
| 26 | - * @param pageId 页面类型 {@link DecoratePageEnum#getId()} | |
| 26 | + * @param page 页面编号 {@link DecoratePageEnum#getPage()} | |
| 27 | + * @param status 状态 | |
| 27 | 28 | */ |
| 28 | - List<DecorateComponentDO> getPageComponents(Integer pageId); | |
| 29 | + List<DecorateComponentDO> getDecorateComponentListByPage(Integer page, Integer status); | |
| 29 | 30 | |
| 30 | 31 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentServiceImpl.java
| 1 | 1 | package cn.iocoder.yudao.module.promotion.service.decorate; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.collection.CollUtil; | |
| 4 | 3 | import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentSaveReqVO; |
| 5 | -import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentSaveReqVO.ComponentReqVO; | |
| 4 | +import cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert; | |
| 6 | 5 | import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO; |
| 7 | 6 | import cn.iocoder.yudao.module.promotion.dal.mysql.decorate.DecorateComponentMapper; |
| 8 | 7 | import org.springframework.stereotype.Service; |
| 9 | 8 | |
| 10 | 9 | import javax.annotation.Resource; |
| 11 | 10 | import java.util.List; |
| 12 | -import java.util.Objects; | |
| 13 | -import java.util.Set; | |
| 14 | - | |
| 15 | -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | |
| 16 | -import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE; | |
| 17 | 11 | |
| 18 | 12 | /** |
| 19 | 13 | * 装修组件 Service 实现 |
| ... | ... | @@ -27,22 +21,20 @@ public class DecorateComponentServiceImpl implements DecorateComponentService { |
| 27 | 21 | private DecorateComponentMapper decorateComponentMapper; |
| 28 | 22 | |
| 29 | 23 | @Override |
| 30 | - public void savePageComponents(DecorateComponentSaveReqVO reqVO) { | |
| 31 | - // 1.新增或修改页面组件 | |
| 32 | - List<DecorateComponentDO> oldList = decorateComponentMapper.selectByPage(reqVO.getPageId()); | |
| 33 | - | |
| 34 | - decorateComponentMapper.saveOrUpdateBatch(INSTANCE.convertList(reqVO.getPageId(), reqVO.getComponents())); | |
| 35 | - // 2.删除相关组件 | |
| 36 | - Set<Long> deleteIds = convertSet(oldList, DecorateComponentDO::getId); | |
| 37 | - deleteIds.removeAll(convertSet(reqVO.getComponents(), ComponentReqVO::getId, vo->Objects.nonNull(vo.getId()))); | |
| 38 | - if (CollUtil.isNotEmpty(deleteIds)) { | |
| 39 | - decorateComponentMapper.deleteBatchIds(deleteIds); | |
| 24 | + public void saveDecorateComponent(DecorateComponentSaveReqVO reqVO) { | |
| 25 | + // 1. 如果存在,则进行更新 | |
| 26 | + DecorateComponentDO dbComponent = decorateComponentMapper.selectByPageAndCode(reqVO.getPage(), reqVO.getCode()); | |
| 27 | + if (dbComponent != null) { | |
| 28 | + decorateComponentMapper.updateById(DecorateComponentConvert.INSTANCE.convert(reqVO).setId(dbComponent.getId())); | |
| 29 | + return; | |
| 40 | 30 | } |
| 31 | + // 2. 不存在,则进行新增 | |
| 32 | + decorateComponentMapper.insert(DecorateComponentConvert.INSTANCE.convert(reqVO)); | |
| 41 | 33 | } |
| 42 | 34 | |
| 43 | 35 | @Override |
| 44 | - public List<DecorateComponentDO> getPageComponents(Integer pageId) { | |
| 45 | - return decorateComponentMapper.selectByPage(pageId); | |
| 36 | + public List<DecorateComponentDO> getDecorateComponentListByPage(Integer page, Integer status) { | |
| 37 | + return decorateComponentMapper.selectListByPageAndStatus(page, status); | |
| 46 | 38 | } |
| 47 | 39 | |
| 48 | 40 | } | ... | ... |
yudao-module-mall/yudao-module-promotion-biz/src/test/java/cn/iocoder/yudao/module/promotion/service/decorate/DecorateComponentServiceImplTest.java
| ... | ... | @@ -12,7 +12,7 @@ import org.mockito.Mockito; |
| 12 | 12 | import java.util.ArrayList; |
| 13 | 13 | import java.util.List; |
| 14 | 14 | |
| 15 | -import static cn.iocoder.yudao.module.promotion.enums.decorate.DecorateComponentEnum.ROLLING_BANNER; | |
| 15 | +import static cn.iocoder.yudao.module.promotion.enums.decorate.DecorateComponentEnum.ROLLING_NEWS; | |
| 16 | 16 | import static cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageEnum.INDEX; |
| 17 | 17 | import static org.mockito.ArgumentMatchers.eq; |
| 18 | 18 | |
| ... | ... | @@ -37,10 +37,10 @@ public class DecorateComponentServiceImplTest extends BaseMockitoUnitTest { |
| 37 | 37 | void testResp(){ |
| 38 | 38 | List<DecorateComponentDO> list = new ArrayList<>(1); |
| 39 | 39 | DecorateComponentDO decorateDO = new DecorateComponentDO() |
| 40 | - .setPageId(INDEX.getId()).setValue("") | |
| 41 | - .setCode(ROLLING_BANNER.getCode()).setId(1L); | |
| 40 | + .setPage(INDEX.getPage()).setValue("") | |
| 41 | + .setCode(ROLLING_NEWS.getCode()).setId(1L); | |
| 42 | 42 | list.add(decorateDO); |
| 43 | 43 | //mock 方法 |
| 44 | - Mockito.when(decorateComponentMapper.selectByPage(eq(1))).thenReturn(list); | |
| 44 | + Mockito.when(decorateComponentMapper.selectListByPageAndStatus(eq(1))).thenReturn(list); | |
| 45 | 45 | } |
| 46 | 46 | } | ... | ... |