diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5ProjectController.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5ProjectController.java index 764adcfe1..58b5c18e4 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5ProjectController.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/controller/H5ProjectController.java @@ -3,8 +3,8 @@ package com.luban.api.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.luban.api.entity.H5Project; +import com.luban.api.mongo.entity.H5ProjectContent; import com.luban.api.service.H5ProjectService; -import com.luban.api.vo.H5ProjectContentVO; import com.luban.api.vo.H5ProjectDetailVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -74,7 +74,7 @@ public class H5ProjectController { // 获取项目内容 if (h5Project != null) { - H5ProjectContentVO content = h5ProjectService.getProjectContent(h5Project.getId()); + H5ProjectContent content = h5ProjectService.getProjectContent(h5Project.getId()); detailVO.setContent(content); } @@ -161,7 +161,7 @@ public class H5ProjectController { public static class CreateH5ProjectRequest { private String type; private String title; - private H5ProjectContentVO content; + private H5ProjectContent content; private Long contentUpdatedAt; private String description; private String previewUrl; diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/mongo/entity/H5ProjectContent.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/mongo/entity/H5ProjectContent.java index ff200b1c6..fe1f9b475 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/mongo/entity/H5ProjectContent.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/mongo/entity/H5ProjectContent.java @@ -1,10 +1,12 @@ package com.luban.api.mongo.entity; -import com.luban.api.vo.H5ProjectContentVO; import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; +import java.util.List; +import java.util.Map; + /** * H5项目内容实体类 (存储在MongoDB中) * @@ -21,9 +23,24 @@ public class H5ProjectContent { private Long id; /** - * 内容 + * 版本号 */ - private H5ProjectContentVO content; + private String version; + + /** + * 类型 + */ + private String type; + + /** + * 全局配置 + */ + private Global global; + + /** + * 布局列表 + */ + private List layouts; /** * 创建时间戳 @@ -35,4 +52,197 @@ public class H5ProjectContent { */ private Long updateTime; + /** + * 全局配置类 + */ + @Data + public static class Global { + private Double zoom; + private Integer dpi; + private String unit; + private Boolean showWatermark; + private BackgroundMusic backgroundMusic; + private String mode; + private Layout layout; + private PageTransition pageTransition; + private Webpage webpage; + } + + /** + * 背景音乐类 + */ + @Data + public static class BackgroundMusic { + private String src; + private Map options; + } + + /** + * 页面转换类 + */ + @Data + public static class PageTransition { + private String name; + private String value; + } + + /** + * 网页信息类 + */ + @Data + public static class Webpage { + private String thumbnail; + } + + /** + * 布局类 + */ + @Data + public static class Layout { + private String title; + private String backgroundImage; + private String backgroundEffectImage; + private String backgroundColor; + private BackgroundImageInfo backgroundImageInfo; + private Boolean backgroundWatermarkEnable; + private String backgroundRepeat; + private Object backgroundGradient; + private BackgroundMask backgroundMask; + private Integer height; + private Integer width; + private Object mosaic; + private Object border; + private Object className; + private Object repeatId; + private Object repeatGroup; + private Map metaInfo; + private Boolean watermarkEnable; + private Object filter; + private Object filterInfo; + private Boolean borderEnable; + private Integer borderRadius; + private String borderImageRepeat; + private List elements; + } + + /** + * 背景图片信息类 + */ + @Data + public static class BackgroundImageInfo { + private Integer width; + private Integer height; + private Double opacity; + private Transform transform; + } + + /** + * 背景遮罩类 + */ + @Data + public static class BackgroundMask { + private String color; + private Double opacity; + } + + /** + * 变换类 + */ + @Data + public static class Transform { + private Double a; + private Double b; + private Double c; + private Double d; + private Double tx; + private Double ty; + } + + /** + * 元素类 + */ + @Data + public static class Element { + private String type; + private String category; + private Double opacity; + private List padding; + private Double width; + private Double height; + private Double left; + private Double top; + private Transform transform; + private Object boxShadow; + private Integer resize; + private Boolean dragable; + private Boolean rotatable; + private Boolean editable; + private Boolean frozen; + private Boolean hidden; + private Boolean lock; + private Integer borderRadius; + private Map filter; + private Boolean watermarkEnable; + private Map metaInfo; + private String linkId; + private Boolean groupable; + private String url; + private String imageUrl; + private Integer effectedImageWidth; + private Integer effectedImageHeight; + private Integer effectedImageOffsetLeft; + private Integer effectedImageOffsetTop; + private List imageEffects; + private List aggregatedColors; + private Object mainColor; + private Double effectScale; + private Transform imageTransform; + private FilterInfo filterInfo; + private Integer naturalWidth; + private Integer naturalHeight; + private String version; + private List animations; + private String content; + private List contents; + private Boolean autoScale; + private List textEffects; + private String listStyle; + private Integer autoAdaptive; + private Object textDecoration; + private String writingMode; + private String textAlign; + private String verticalAlign; + private List parents; + } + + /** + * 过滤信息类 + */ + @Data + public static class FilterInfo { + private Integer id; + private String zipUrl; + private String prunedZipUrl; + private Double strong; + } + + /** + * 动画类 + */ + @Data + public static class Animation { + private String type; + private Integer order; + private Map keyframes; + private List easing; + private List offset; + private Integer delay; + private Integer duration; + private String fill; + private String name; + private Object customValues; + private Integer groupOrder; + private List excludeScale; + private String method; + } } \ No newline at end of file diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5ProjectService.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5ProjectService.java index c7690f71d..46b0184c3 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5ProjectService.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/H5ProjectService.java @@ -1,9 +1,8 @@ package com.luban.api.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.luban.api.dto.H5ProjectContentDTO; import com.luban.api.entity.H5Project; -import com.luban.api.vo.H5ProjectContentVO; +import com.luban.api.mongo.entity.H5ProjectContent; import java.util.List; @@ -24,7 +23,7 @@ public interface H5ProjectService extends IService { * @param groupIds 分组ID列表 * @return 是否保存成功 */ - boolean saveH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List groupIds); + boolean saveH5ProjectWithContent(H5Project h5Project, H5ProjectContent content, List groupIds); /** * 更新H5项目及其内容 @@ -34,7 +33,7 @@ public interface H5ProjectService extends IService { * @param groupIds 分组ID列表 * @return 是否更新成功 */ - boolean updateH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List groupIds); + boolean updateH5ProjectWithContent(H5Project h5Project, H5ProjectContent content, List groupIds); /** * 根据ID获取H5项目及其内容 @@ -66,5 +65,5 @@ public interface H5ProjectService extends IService { * @param contentId 内容ID * @return 项目内容 */ - H5ProjectContentVO getProjectContent(Long contentId); + H5ProjectContent getProjectContent(Long contentId); } \ No newline at end of file diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java index c808a6a15..6bbaafa27 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/service/impl/H5ProjectServiceImpl.java @@ -8,7 +8,6 @@ import com.luban.api.entity.H5ProjectGroup; import com.luban.api.mongo.dao.H5ProjectContentRepository; import com.luban.api.mongo.entity.H5ProjectContent; import com.luban.api.service.H5ProjectService; -import com.luban.api.vo.H5ProjectContentVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,7 +33,7 @@ public class H5ProjectServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) - public boolean saveH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List groupIds) { + public boolean saveH5ProjectWithContent(H5Project h5Project, H5ProjectContent content, List groupIds) { // 设置创建和更新时间戳 long currentTime = System.currentTimeMillis(); h5Project.setCreateTime(currentTime); @@ -45,13 +44,11 @@ public class H5ProjectServiceImpl extends ServiceImpl i if (saved && content != null) { // 保存H5ProjectContent到MongoDB - H5ProjectContent h5ProjectContent = new H5ProjectContent(); - h5ProjectContent.setId(h5Project.getId()); - h5ProjectContent.setContent(content); - h5ProjectContent.setCreateTime(currentTime); - h5ProjectContent.setUpdateTime(currentTime); - - h5ProjectContentRepository.save(h5ProjectContent); + content.setId(h5Project.getId()); + content.setCreateTime(currentTime); + content.setUpdateTime(currentTime); + + h5ProjectContentRepository.save(content); } // 保存项目与分组的关联关系 @@ -64,7 +61,7 @@ public class H5ProjectServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) - public boolean updateH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List groupIds) { + public boolean updateH5ProjectWithContent(H5Project h5Project, H5ProjectContent content, List groupIds) { // 设置更新时间戳 long currentTime = System.currentTimeMillis(); h5Project.setUpdateTime(currentTime); @@ -74,12 +71,10 @@ public class H5ProjectServiceImpl extends ServiceImpl i if (updated && content != null) { // 更新或创建H5ProjectContent到MongoDB - H5ProjectContent h5ProjectContent = h5ProjectContentRepository.findById(h5Project.getId()).orElse(new H5ProjectContent()); - h5ProjectContent.setId(h5Project.getId()); - h5ProjectContent.setContent(content); - h5ProjectContent.setUpdateTime(currentTime); + content.setId(h5Project.getId()); + content.setUpdateTime(currentTime); - h5ProjectContentRepository.save(h5ProjectContent); + h5ProjectContentRepository.save(content); } // 更新项目与分组的关联关系 @@ -110,10 +105,9 @@ public class H5ProjectServiceImpl extends ServiceImpl i } @Override - public H5ProjectContentVO getProjectContent(Long contentId) { + public H5ProjectContent getProjectContent(Long contentId) { if (contentId != null) { - H5ProjectContent content = h5ProjectContentRepository.findById(contentId).orElse(null); - return content != null ? content.getContent() : null; + return h5ProjectContentRepository.findById(contentId).orElse(null); } return null; } diff --git a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/vo/H5ProjectDetailVO.java b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/vo/H5ProjectDetailVO.java index 72c3753f2..8675b6047 100644 --- a/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/vo/H5ProjectDetailVO.java +++ b/ruoyi-site/ruoyi-h5/src/main/java/com/luban/api/vo/H5ProjectDetailVO.java @@ -1,6 +1,7 @@ package com.luban.api.vo; import com.luban.api.entity.H5Project; +import com.luban.api.mongo.entity.H5ProjectContent; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -27,7 +28,7 @@ public class H5ProjectDetailVO { * 项目内容 */ @Schema(title = "项目内容") - private H5ProjectContentVO content; + private H5ProjectContent content; /** * 项目关联的分组ID列表