项目结构初始化

This commit is contained in:
lizhengwei 2025-11-14 09:34:19 +08:00
parent 0cc70434fc
commit 22babfb24f
7 changed files with 139 additions and 24 deletions

View File

@ -0,0 +1,41 @@
### 查询所有H5分组
GET http://localhost:19200/h5/h5-groups
Accept: application/json
### 分页查询H5分组
GET http://localhost:19200/h5/h5-groups/page?pageNum=1&pageSize=10
Accept: application/json
### 根据ID查询H5分组
GET http://localhost:19200/h5/h5-groups/1
Accept: application/json
### 根据父级ID查询子分组
GET http://localhost:19200/h5/h5-groups/children/1
Accept: application/json
### 创建H5分组
POST http://localhost:19200/h5/h5-groups
Content-Type: application/json
{
"name": "测试分组",
"parentId": 0,
"sort": 1,
"status": 1
}
### 更新H5分组
PUT http://localhost:19200/h5/h5-groups/1
Content-Type: application/json
{
"name": "更新后的测试分组",
"parentId": 0,
"sort": 2,
"status": 1
}
### 删除H5分组
DELETE http://localhost:19200/h5/h5-groups/1
Accept: application/json

View File

@ -0,0 +1,75 @@
### 查询所有H5项目
GET http://localhost:19200/h5/h5-projects
Accept: application/json
### 分页查询H5项目
GET http://localhost:19200/h5/h5-projects/page?pageNum=1&pageSize=10
Accept: application/json
### 根据ID查询H5项目
GET http://localhost:19200/h5/h5-projects/1
Accept: application/json
### 创建H5项目
POST http://localhost:19200/h5/h5-projects
Content-Type: application/json
{
"type": "type1",
"title": "测试项目",
"content": {
"version": "6.0.0",
"type": "poster",
"global": {
"zoom": 0.582425068119891,
"dpi": 72,
"unit": "px"
},
"layouts": []
},
"contentUpdatedAt": 1620000000,
"description": "这是一个测试项目",
"previewUrl": "http://example.com/preview.jpg",
"previewUrlWatermark": "http://example.com/preview-watermark.jpg",
"previewWidth": 375,
"previewHeight": 667,
"status": 1,
"groupIds": [1, 2]
}
### 更新H5项目
PUT http://localhost:19200/h5/h5-projects/1
Content-Type: application/json
{
"type": "type1",
"title": "更新后的测试项目",
"content": {
"version": "6.0.0",
"type": "poster",
"global": {
"zoom": 0.582425068119891,
"dpi": 72,
"unit": "px"
},
"layouts": [
{
"title": "画板 1",
"width": 750,
"height": 1468
}
]
},
"contentUpdatedAt": 1620000001,
"description": "这是更新后的测试项目",
"previewUrl": "http://example.com/preview2.jpg",
"previewUrlWatermark": "http://example.com/preview2-watermark.jpg",
"previewWidth": 375,
"previewHeight": 667,
"status": 1,
"groupIds": [1, 3]
}
### 删除H5项目
DELETE http://localhost:19200/h5/h5-projects/1
Accept: application/json

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.luban.api.entity.H5Project; import com.luban.api.entity.H5Project;
import com.luban.api.service.H5ProjectService; import com.luban.api.service.H5ProjectService;
import com.luban.api.vo.H5ProjectContentVO;
import com.luban.api.vo.H5ProjectDetailVO; import com.luban.api.vo.H5ProjectDetailVO;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
@ -73,7 +74,7 @@ public class H5ProjectController {
// 获取项目内容 // 获取项目内容
if (h5Project != null) { if (h5Project != null) {
String content = h5ProjectService.getProjectContent(h5Project.getId()); H5ProjectContentVO content = h5ProjectService.getProjectContent(h5Project.getId());
detailVO.setContent(content); detailVO.setContent(content);
} }
@ -160,7 +161,7 @@ public class H5ProjectController {
public static class CreateH5ProjectRequest { public static class CreateH5ProjectRequest {
private String type; private String type;
private String title; private String title;
private String content; private H5ProjectContentVO content;
private Long contentUpdatedAt; private Long contentUpdatedAt;
private String description; private String description;
private String previewUrl; private String previewUrl;

View File

@ -1,5 +1,6 @@
package com.luban.api.mongo.entity; package com.luban.api.mongo.entity;
import com.luban.api.vo.H5ProjectContentVO;
import lombok.Data; import lombok.Data;
import org.springframework.data.annotation.Id; import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
@ -22,7 +23,7 @@ public class H5ProjectContent {
/** /**
* 内容 * 内容
*/ */
private String content; private H5ProjectContentVO content;
/** /**
* 创建时间戳 * 创建时间戳

View File

@ -1,7 +1,9 @@
package com.luban.api.service; package com.luban.api.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.luban.api.dto.H5ProjectContentDTO;
import com.luban.api.entity.H5Project; import com.luban.api.entity.H5Project;
import com.luban.api.vo.H5ProjectContentVO;
import java.util.List; import java.util.List;
@ -22,7 +24,7 @@ public interface H5ProjectService extends IService<H5Project> {
* @param groupIds 分组ID列表 * @param groupIds 分组ID列表
* @return 是否保存成功 * @return 是否保存成功
*/ */
boolean saveH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds); boolean saveH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List<Long> groupIds);
/** /**
* 更新H5项目及其内容 * 更新H5项目及其内容
@ -32,7 +34,7 @@ public interface H5ProjectService extends IService<H5Project> {
* @param groupIds 分组ID列表 * @param groupIds 分组ID列表
* @return 是否更新成功 * @return 是否更新成功
*/ */
boolean updateH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds); boolean updateH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List<Long> groupIds);
/** /**
* 根据ID获取H5项目及其内容 * 根据ID获取H5项目及其内容
@ -64,5 +66,5 @@ public interface H5ProjectService extends IService<H5Project> {
* @param contentId 内容ID * @param contentId 内容ID
* @return 项目内容 * @return 项目内容
*/ */
String getProjectContent(Long contentId); H5ProjectContentVO getProjectContent(Long contentId);
} }

View File

@ -8,10 +8,10 @@ import com.luban.api.entity.H5ProjectGroup;
import com.luban.api.mongo.dao.H5ProjectContentRepository; import com.luban.api.mongo.dao.H5ProjectContentRepository;
import com.luban.api.mongo.entity.H5ProjectContent; import com.luban.api.mongo.entity.H5ProjectContent;
import com.luban.api.service.H5ProjectService; import com.luban.api.service.H5ProjectService;
import com.luban.api.vo.H5ProjectContentVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -34,7 +34,7 @@ public class H5ProjectServiceImpl extends ServiceImpl<H5ProjectDao, H5Project> i
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean saveH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds) { public boolean saveH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List<Long> groupIds) {
// 设置创建和更新时间戳 // 设置创建和更新时间戳
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
h5Project.setCreateTime(currentTime); h5Project.setCreateTime(currentTime);
@ -43,7 +43,7 @@ public class H5ProjectServiceImpl extends ServiceImpl<H5ProjectDao, H5Project> i
// 先保存H5Project基本信息到MySQL // 先保存H5Project基本信息到MySQL
boolean saved = this.save(h5Project); boolean saved = this.save(h5Project);
if (saved && StringUtils.hasText(content)) { if (saved && content != null) {
// 保存H5ProjectContent到MongoDB // 保存H5ProjectContent到MongoDB
H5ProjectContent h5ProjectContent = new H5ProjectContent(); H5ProjectContent h5ProjectContent = new H5ProjectContent();
h5ProjectContent.setId(h5Project.getId()); h5ProjectContent.setId(h5Project.getId());
@ -64,7 +64,7 @@ public class H5ProjectServiceImpl extends ServiceImpl<H5ProjectDao, H5Project> i
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean updateH5ProjectWithContent(H5Project h5Project, String content, List<Long> groupIds) { public boolean updateH5ProjectWithContent(H5Project h5Project, H5ProjectContentVO content, List<Long> groupIds) {
// 设置更新时间戳 // 设置更新时间戳
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
h5Project.setUpdateTime(currentTime); h5Project.setUpdateTime(currentTime);
@ -72,7 +72,7 @@ public class H5ProjectServiceImpl extends ServiceImpl<H5ProjectDao, H5Project> i
// 更新H5Project基本信息到MySQL // 更新H5Project基本信息到MySQL
boolean updated = this.updateById(h5Project); boolean updated = this.updateById(h5Project);
if (updated && StringUtils.hasText(content)) { if (updated && content != null) {
// 更新或创建H5ProjectContent到MongoDB // 更新或创建H5ProjectContent到MongoDB
H5ProjectContent h5ProjectContent = h5ProjectContentRepository.findById(h5Project.getId()).orElse(new H5ProjectContent()); H5ProjectContent h5ProjectContent = h5ProjectContentRepository.findById(h5Project.getId()).orElse(new H5ProjectContent());
h5ProjectContent.setId(h5Project.getId()); h5ProjectContent.setId(h5Project.getId());
@ -110,15 +110,10 @@ public class H5ProjectServiceImpl extends ServiceImpl<H5ProjectDao, H5Project> i
} }
@Override @Override
public String getProjectContent(Long contentId) { public H5ProjectContentVO getProjectContent(Long contentId) {
if (contentId != null) { if (contentId != null) {
try { H5ProjectContent content = h5ProjectContentRepository.findById(contentId).orElse(null);
Long id = Long.valueOf(contentId);
H5ProjectContent content = h5ProjectContentRepository.findById(id).orElse(null);
return content != null ? content.getContent() : null; return content != null ? content.getContent() : null;
} catch (NumberFormatException e) {
return null;
}
} }
return null; return null;
} }

View File

@ -27,7 +27,7 @@ public class H5ProjectDetailVO {
* 项目内容 * 项目内容
*/ */
@Schema(title = "项目内容") @Schema(title = "项目内容")
private String content; private H5ProjectContentVO content;
/** /**
* 项目关联的分组ID列表 * 项目关联的分组ID列表