mirror of
https://gitee.com/hhyykk/ipms-sjy.git
synced 2025-08-14 10:11:53 +08:00
页面装修数据结构定义
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author jason
|
||||
*/
|
||||
@Schema(description = "管理后台 - 页面装,整个页面 Request VO ")
|
||||
@Data
|
||||
public class DecoratePageReqVO {
|
||||
@Schema(description = "页面类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
@NotNull(message = "页面类型不能为空")
|
||||
private Integer type;
|
||||
@Schema(description = "页面组件列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO")
|
||||
@NotEmpty(message = "页面组件列表不能为空")
|
||||
@Valid
|
||||
private List<ComponentReqVO> components;
|
||||
|
||||
@Schema(description = "管理后台 - 页面组件 Request VO, 后面是不是可以做分组件保存?? ")
|
||||
@Data
|
||||
public static class ComponentReqVO {
|
||||
|
||||
@Schema(description = "组件编码", requiredMode = Schema.RequiredMode.REQUIRED, example = "nav-menu")
|
||||
@NotEmpty(message = "组件编码不能为空")
|
||||
private String componentCode;
|
||||
|
||||
@Schema(description = "组件对应值, json 字符串, 含内容配置,具体数据", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO")
|
||||
@NotEmpty(message = "组件值为空")
|
||||
private String value;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package cn.iocoder.yudao.module.promotion.controller.admin.decorate.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author jason
|
||||
*/
|
||||
@Schema(description = "管理后台 - 页面装修 Resp VO")
|
||||
@Data
|
||||
public class DecoratePageRespVO {
|
||||
@Schema(description = "页面类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||
private Integer type;
|
||||
@Schema(description = "页面组件", requiredMode = Schema.RequiredMode.REQUIRED, example = "TODO")
|
||||
private List<ComponentRespVO> components;
|
||||
|
||||
@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 = "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;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
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);
|
||||
}
|
||||
}
|
@@ -0,0 +1,48 @@
|
||||
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 com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 页面装修 DO
|
||||
*
|
||||
* @author jason
|
||||
*/
|
||||
@TableName(value ="promotion_page_decorate")
|
||||
@KeySequence("promotion_page_decorate_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
public class PageDecorateDO extends BaseDO {
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 页面类型
|
||||
* 枚举 {@link DecoratePageTypeEnum#getType()}
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 组件编码
|
||||
* 枚举 {@link PageComponentEnum#getCode()}
|
||||
*/
|
||||
private String componentCode;
|
||||
|
||||
/**
|
||||
* 组件值:json 格式。包含配置和数据
|
||||
*/
|
||||
private String componentValue;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
* 枚举 {@link CommonStatusEnum}
|
||||
*/
|
||||
private Integer status;
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package cn.iocoder.yudao.module.promotion.dal.mysql.decorate;
|
||||
|
||||
import cn.iocoder.yudao.module.promotion.dal.dataobject.decorate.PageDecorateDO;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@@ -0,0 +1,26 @@
|
||||
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);
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
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));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user