Commit c3de25e760a66523d17ea3a5cf8ace57f6b821ec

Authored by YunaiV
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 }
... ...