页面装修修改,后端只负责存取

This commit is contained in:
jason
2023-06-24 00:10:55 +08:00
parent 1dfbe45913
commit ad1f656dfa
25 changed files with 352 additions and 439 deletions

View File

@@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.promotion.controller.admin.decorate;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentRespVO;
import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum;
import cn.iocoder.yudao.module.promotion.service.decorate.DecorateComponentService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE;
@Tag(name = "管理后台 - 店铺页面装修")
@RestController
@RequestMapping("/promotion/decorate")
@Validated
public class DecorateComponentController {
@Resource
private DecorateComponentService decorateComponentService;
@PostMapping("/page-save")
@Operation(summary = "页面装修保存")
// TODO 加权限
public CommonResult<Boolean> pageSave(@Valid @RequestBody DecorateComponentReqVO reqVO) {
decorateComponentService.pageSave(reqVO);
return success(true);
}
@GetMapping("/get-page-components")
@Operation(summary = "获取装修页面组件")
@Parameter(name = "type", description = "页面类型", required = true)
// TODO 加权限
public CommonResult<DecorateComponentRespVO> getPageComponents(@RequestParam("type")
@InEnum(DecoratePageTypeEnum.class) Integer type) {
return success(INSTANCE.convert2(type, decorateComponentService.getPageComponents(type)));
}
}

View File

@@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo;
import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -11,20 +13,23 @@ import java.util.List;
/**
* @author jason
*/
@Schema(description = "管理后台 - 页面装,整个页面 Request VO ")
@Schema(description = "管理后台 - 页面装 Request VO ")
@Data
public class DecoratePageReqVO {
public class DecorateComponentReqVO {
@Schema(description = "页面类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "页面类型不能为空")
@InEnum(DecoratePageTypeEnum.class)
private Integer type;
@Schema(description = "页面组件列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO")
@NotEmpty(message = "页面组件列表不能为空")
@Valid
private List<ComponentReqVO> components;
@Schema(description = "管理后台 - 页面组件 Request VO, 后面是不是可以做分组件保存?? ")
@Schema(description = "管理后台 - 页面装修组件 Request VO")
@Data
public static class ComponentReqVO {
@Schema(description = "组件编码", example = "1")
private Long id;
@Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu")
@NotEmpty(message = "组件编码不能为空")
@@ -32,7 +37,7 @@ public class DecoratePageReqVO {
@Schema(description = "组件对应值, json 字符串, 含内容配置,具体数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO")
@NotEmpty(message = "组件值为空")
private String value;
private String componentValue;
}
}

View File

@@ -10,7 +10,7 @@ import java.util.List;
*/
@Schema(description = "管理后台 - 页面装修 Resp VO")
@Data
public class DecoratePageRespVO {
public class DecorateComponentRespVO {
@Schema(description = "页面类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Integer type;
@Schema(description = "页面组件", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO")
@@ -19,16 +19,12 @@ public class DecoratePageRespVO {
@Schema(description = "管理后台 - 页面组件 Resp VO")
@Data
public static class ComponentRespVO {
@Schema(description = "组件标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "首页广告")
private String title;
@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 Object config;
@Schema(description = "组件的样式配置", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO")
private Object style;
@Schema(description = "组件的具体数据", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "TODO")
private Object data;
private String componentValue;
}
}

View File

@@ -0,0 +1,38 @@
package cn.iocoder.yudao.module.promotion.controller.app.decorate;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.module.promotion.controller.app.decorate.vo.AppDecorateComponentRespVO;
import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum;
import cn.iocoder.yudao.module.promotion.service.decorate.DecorateComponentService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE;
@Tag(name = "用户 APP - 店铺装修")
@RestController
@RequestMapping("/promotion/decorate")
@Validated
public class AppDecorateController {
@Resource
private DecorateComponentService decorateComponentService;
@GetMapping("/get-page-components")
@Operation(summary = "获取装修页面组件")
@Parameter(name = "type", description = "页面类型", required = true)
public CommonResult<AppDecorateComponentRespVO> getPageComponents(@RequestParam("type")
@InEnum(DecoratePageTypeEnum.class) Integer type) {
return success(INSTANCE.appConvert(type, decorateComponentService.getPageComponents(type)));
}
}

View File

@@ -0,0 +1,30 @@
package cn.iocoder.yudao.module.promotion.controller.app.decorate.vo;
import io.swagger.v3.oas.annotations.media.Schema;
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<AppComponentRespVO> 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;
}
}

View File

@@ -0,0 +1,41 @@
package cn.iocoder.yudao.module.promotion.convert.decorate;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentRespVO;
import cn.iocoder.yudao.module.promotion.controller.app.decorate.vo.AppDecorateComponentRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
import static cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentRespVO.*;
import static cn.iocoder.yudao.module.promotion.controller.app.decorate.vo.AppDecorateComponentRespVO.*;
@Mapper
public interface DecorateComponentConvert {
DecorateComponentConvert INSTANCE = Mappers.getMapper(DecorateComponentConvert.class);
default List<DecorateComponentDO> convertList(Integer type, List<DecorateComponentReqVO.ComponentReqVO> components) {
return CollectionUtils.convertList(components, c -> convert(type, c));
}
default DecorateComponentRespVO convert2(Integer type, List<DecorateComponentDO> doList) {
List<ComponentRespVO> components = CollectionUtils.convertList(doList, this::convert3);
return new DecorateComponentRespVO().setType(type).setComponents(components);
}
DecorateComponentDO convert(Integer type, DecorateComponentReqVO.ComponentReqVO reqVO);
ComponentRespVO convert3(DecorateComponentDO componentDO);
// ========== App convert ==========
default AppDecorateComponentRespVO appConvert(Integer type, List<DecorateComponentDO> doList) {
List<AppComponentRespVO> components = CollectionUtils.convertList(doList, this::appConvert2);
return new AppDecorateComponentRespVO().setType(type).setComponents(components);
}
AppComponentRespVO appConvert2(DecorateComponentDO componentDO);
}

View File

@@ -1,45 +0,0 @@
package cn.iocoder.yudao.module.promotion.convert.decorate;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.promotion.api.decorate.dto.PageComponentDTO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.PageDecorateDO;
import cn.iocoder.yudao.module.promotion.enums.decorate.PageComponentEnum;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper
public interface DecoratePageConvert {
DecoratePageConvert INSTANCE = Mappers.getMapper(DecoratePageConvert.class);
default List<PageDecorateDO> convert(Integer type, List<DecoratePageReqVO.ComponentReqVO> components) {
return CollectionUtils.convertList(components, c -> {
PageComponentEnum component = PageComponentEnum.getOfCode(c.getComponentCode());
if (component == null) {
return null;
}
return new PageDecorateDO().setComponentCode(c.getComponentCode())
.setType(type).setComponentValue(c.getValue());
});
}
default DecoratePageRespVO convert2(Integer type, List<PageDecorateDO> doList) {
List<DecoratePageRespVO.ComponentRespVO> components = CollectionUtils.convertList(doList,
item -> {
PageComponentEnum component = PageComponentEnum.getOfCode(item.getComponentCode());
if (component == null) {
return null;
}
@SuppressWarnings("rawtypes")
PageComponentDTO dto = component.parsePageComponent(item.getComponentValue());
return new DecoratePageRespVO.ComponentRespVO()
.setTitle(dto.getTitle()).setStyle(dto.getStyle()).setComponentCode(item.getComponentCode())
.setConfig(dto.getConfig()).setData(dto.getData());
});
return new DecoratePageRespVO().setType(type).setComponents(components);
}
}

View File

@@ -3,20 +3,20 @@ package cn.iocoder.yudao.module.promotion.dal.dataobject.decorate;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum;
import cn.iocoder.yudao.module.promotion.enums.decorate.PageComponentEnum;
import cn.iocoder.yudao.module.promotion.enums.decorate.DecorateComponentEnum;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
/**
* 页面装修 DO
* 页面装修组件 DO, 一个页面由多个组件构成
*
* @author jason
*/
@TableName(value ="promotion_page_decorate")
@KeySequence("promotion_page_decorate_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@TableName(value ="promotion_decorate_component")
@KeySequence("promotion_decorate_component_seq") // 用于 OraclePostgreSQLKingbaseDB2H2 数据库的主键自增如果是 MySQL 等数据库可不写
@Data
public class PageDecorateDO extends BaseDO {
public class DecorateComponentDO extends BaseDO {
/**
* 编号
*/
@@ -31,7 +31,7 @@ public class PageDecorateDO extends BaseDO {
/**
* 组件编码
* 枚举 {@link PageComponentEnum#getCode()}
* 枚举 {@link DecorateComponentEnum#getCode()}
*/
private String componentCode;

View File

@@ -1,15 +1,15 @@
package cn.iocoder.yudao.module.promotion.dal.mysql.decorate;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.PageDecorateDO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface PageDecorateMapper extends BaseMapperX<PageDecorateDO> {
default List<PageDecorateDO> selectByPageType(Integer type){
return selectList(PageDecorateDO::getType, type);
public interface DecorateComponentMapper extends BaseMapperX<DecorateComponentDO> {
default List<DecorateComponentDO> selectByPageType(Integer type){
return selectList(DecorateComponentDO::getType, type);
}
}

View File

@@ -0,0 +1,27 @@
package cn.iocoder.yudao.module.promotion.service.decorate;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO;
import cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum;
import java.util.List;
/**
* 装修组件 Service 接口
*
* @author jason
*/
public interface DecorateComponentService {
/**
* 店铺装修页面保存
* @param reqVO 请求 VO
*/
void pageSave(DecorateComponentReqVO reqVO);
/**
* 根据页面类型。获取页面的组件信息
* @param type 页面类型 {@link DecoratePageTypeEnum#getType()}
*/
List<DecorateComponentDO> getPageComponents(Integer type);
}

View File

@@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.promotion.service.decorate;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecorateComponentReqVO.ComponentReqVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO;
import cn.iocoder.yudao.module.promotion.dal.mysql.decorate.DecorateComponentMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.promotion.convert.decorate.DecorateComponentConvert.INSTANCE;
/**
* 装修组件 Service 接口实现
* @author jason
*/
@Service
public class DecorateComponentServiceImpl implements DecorateComponentService {
@Resource
private DecorateComponentMapper decorateComponentMapper;
@Override
public void pageSave(DecorateComponentReqVO reqVO) {
// 1.新增或修改页面组件
List<DecorateComponentDO> oldList = decorateComponentMapper.selectByPageType(reqVO.getType());
decorateComponentMapper.saveOrUpdateBatch(INSTANCE.convertList(reqVO.getType(), reqVO.getComponents()));
// 2.删除相关组件
Set<Long> deleteIds = convertSet(oldList, DecorateComponentDO::getId);
deleteIds.removeAll(convertSet(reqVO.getComponents(), ComponentReqVO::getId, vo->Objects.nonNull(vo.getId())));
if (CollUtil.isNotEmpty(deleteIds)) {
decorateComponentMapper.deleteBatchIds(deleteIds);
}
}
@Override
public List<DecorateComponentDO> getPageComponents(Integer type) {
return decorateComponentMapper.selectByPageType(type);
}
}

View File

@@ -1,26 +0,0 @@
package cn.iocoder.yudao.module.promotion.service.decorate;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.PageDecorateDO;
import java.util.List;
/**
* 页面装修 Service 接口
*
* @author jason
*/
public interface DecoratePageService {
/**
* 测试请求
*/
List<PageDecorateDO> testReq(DecoratePageReqVO reqVO);
/**
* 测试响应
* @param type 页面类型
*/
DecoratePageRespVO testResp(Integer type);
}

View File

@@ -1,30 +0,0 @@
package cn.iocoder.yudao.module.promotion.service.decorate;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.PageDecorateDO;
import cn.iocoder.yudao.module.promotion.dal.mysql.decorate.PageDecorateMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import static cn.iocoder.yudao.module.promotion.convert.decorate.DecoratePageConvert.INSTANCE;
/**
* @author jason
*/
@Service
public class DecoratePageServiceImpl implements DecoratePageService {
@Resource
private PageDecorateMapper pageDecorateMapper;
@Override
public List<PageDecorateDO> testReq(DecoratePageReqVO reqVO) {
return INSTANCE.convert(reqVO.getType(), reqVO.getComponents());
}
@Override
public DecoratePageRespVO testResp(Integer type) {
return INSTANCE.convert2(type,pageDecorateMapper.selectByPageType(type));
}
}

View File

@@ -0,0 +1,45 @@
package cn.iocoder.yudao.module.promotion.service.decorate;
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.DecorateComponentDO;
import cn.iocoder.yudao.module.promotion.dal.mysql.decorate.DecorateComponentMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.List;
import static cn.iocoder.yudao.module.promotion.enums.decorate.DecorateComponentEnum.ROLLING_BANNER;
import static cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum.INDEX;
import static org.mockito.ArgumentMatchers.eq;
/**
* @author jason
*/
public class DecorateComponentServiceImplTest extends BaseMockitoUnitTest {
@InjectMocks
private DecorateComponentServiceImpl decoratePageService;
@Mock
private DecorateComponentMapper decorateComponentMapper;
@BeforeEach
public void init(){
}
@Test
void testResp(){
List<DecorateComponentDO> list = new ArrayList<>(1);
DecorateComponentDO decorateDO = new DecorateComponentDO()
.setType(INDEX.getType()).setComponentValue("")
.setComponentCode(ROLLING_BANNER.getCode()).setId(1L);
list.add(decorateDO);
//mock 方法
Mockito.when(decorateComponentMapper.selectByPageType(eq(1))).thenReturn(list);
}
}

View File

@@ -1,83 +0,0 @@
package cn.iocoder.yudao.module.promotion.service.decorate;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
import cn.iocoder.yudao.module.promotion.api.decorate.dto.CommonStyle;
import cn.iocoder.yudao.module.promotion.api.decorate.dto.PageComponentDTO;
import cn.iocoder.yudao.module.promotion.api.decorate.dto.RollingBannerComponent;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageReqVO;
import cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo.DecoratePageRespVO;
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.PageDecorateDO;
import cn.iocoder.yudao.module.promotion.dal.mysql.decorate.PageDecorateMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.List;
import static cn.iocoder.yudao.framework.common.enums.CommonStatusEnum.ENABLE;
import static cn.iocoder.yudao.module.promotion.enums.decorate.DecoratePageTypeEnum.INDEX;
import static cn.iocoder.yudao.module.promotion.enums.decorate.PageComponentEnum.ROLLING_BANNER;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.eq;
/**
* @author jason
*/
public class DecoratePageServiceImplTest extends BaseMockitoUnitTest {
@InjectMocks
private DecoratePageServiceImpl decoratePageService;
@Mock
private PageDecorateMapper pageDecorateMapper;
private PageComponentDTO<RollingBannerComponent.Config,
CommonStyle,
List<RollingBannerComponent.DataStructure>> bannerComponent;
@BeforeEach
public void init(){
CommonStyle commonStyle = new CommonStyle();
RollingBannerComponent.DataStructure banner1 = new RollingBannerComponent.DataStructure().setImg("http://127.0.0.1:8084/a.jpg")
.setPath("/pages/coupon_center/coupon_center")
.setStatus(ENABLE.getStatus());
List<RollingBannerComponent.DataStructure> banners = new ArrayList<>(1);
banners.add(banner1);
bannerComponent
= new PageComponentDTO<RollingBannerComponent.Config, CommonStyle, List<RollingBannerComponent.DataStructure>>().setTitle("首页横幅广告")
.setConfig(new RollingBannerComponent.Config().setEnabled(Boolean.TRUE))
.setStyle(commonStyle)
.setData(banners);
}
@Test
void testReq() {
// 准备请求参数
DecoratePageReqVO.ComponentReqVO cReq = new DecoratePageReqVO.ComponentReqVO()
.setComponentCode(ROLLING_BANNER.getCode())
.setValue(JsonUtils.toJsonString(bannerComponent));
List<DecoratePageReqVO.ComponentReqVO> cReqList = new ArrayList<>();
cReqList.add(cReq);
DecoratePageReqVO reqVO = new DecoratePageReqVO();
reqVO.setType(1);
reqVO.setComponents(cReqList);
System.out.printf("请求数据:%s%n",JsonUtils.toJsonPrettyString(reqVO));
List<PageDecorateDO> list = decoratePageService.testReq(reqVO);
assertThat(list).hasSize(1);
}
@Test
void testResp(){
List<PageDecorateDO> list = new ArrayList<>(1);
PageDecorateDO decorateDO = new PageDecorateDO()
.setType(INDEX.getType()).setComponentValue(JsonUtils.toJsonString(bannerComponent))
.setComponentCode(ROLLING_BANNER.getCode()).setId(1L);
list.add(decorateDO);
//mock 方法
Mockito.when(pageDecorateMapper.selectByPageType(eq(1))).thenReturn(list);
DecoratePageRespVO respVO = decoratePageService.testResp(1);
System.out.printf("响应数据:%s%n",JsonUtils.toJsonPrettyString(respVO));
}
}