在线h5开发

This commit is contained in:
Github_lizhw 2026-03-17 22:28:15 +08:00
parent 6f04adaa83
commit 75b9a2edc2

View File

@ -1,18 +1,20 @@
package com.luban.api.controller;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.dromara.md.form.api.constant.BaseConstant;
import com.dromara.md.form.utils.TenantHelper;
import com.luban.api.constant.ProjectStatus;
import com.luban.api.dto.H5ProjectContentDTO;
import com.luban.api.dto.query.H5ProjectQueryDTO;
import com.luban.api.entity.H5Project;
import com.luban.api.service.H5FormService;
import com.luban.api.service.H5ProjectService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.satoken.utils.LoginHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -34,19 +36,17 @@ public class H5ProjectController {
@Autowired
private H5ProjectService h5ProjectService;
@Autowired
private H5FormService h5FormService;
/**
* 查询所有H5项目
*
* @return H5项目列表
*/
@Operation(summary = "查询所有H5项目")
@GetMapping
public List<H5Project> listAllH5Projects() {
return h5ProjectService.list();
}
// /**
// * 查询所有H5项目
// *
// * @return H5项目列表
// */
// @Operation(summary = "查询所有H5项目")
// @GetMapping
// public List<H5Project> listAllH5Projects() {
// return h5ProjectService.list();
// }
/**
* 分页查询H5项目
@ -76,91 +76,68 @@ public class H5ProjectController {
}
/**
* 创建H5项目
* 创建或更新H5项目
*
* @param id H5项目ID为空时创建不为空时更新
* @param request 包含H5项目信息和内容的请求
* @return 项目ID
*/
@Operation(summary = "创建H5项目")
@PostMapping
public Long createH5Project(@RequestBody CreateH5ProjectRequest request) {
H5Project h5Project = new H5Project();
h5Project.setType(request.getType());
h5Project.setTitle(request.getTitle());
h5Project.setContentUpdatedAt(request.getContentUpdatedAt());
h5Project.setDescription(request.getDescription());
h5Project.setPreviewUrl(request.getPreviewUrl());
h5Project.setPreviewUrlWatermark(request.getPreviewUrlWatermark());
h5Project.setPreviewWidth(request.getPreviewWidth());
h5Project.setPreviewHeight(request.getPreviewHeight());
h5Project.setStatus(request.getStatus());
h5Project.setCreatedBy(LoginHelper.getUserId());
boolean success = h5ProjectService.saveH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
if (success) {
return h5Project.getId();
@Operation(summary = "创建或更新H5项目")
@PostMapping("/saveOrUpdate")
public Long saveOrUpdate(@RequestParam(required = false) Long id, @RequestBody CreateH5ProjectRequest request) {
H5Project h5Project;
boolean isUpdate = id != null;
if (isUpdate) {
h5Project = h5ProjectService.getById(id);
if (h5Project == null) {
throw new ServiceException("项目不存在");
}
if (h5Project.getStatus() != ProjectStatus.Draft.getValue()) {
throw new ServiceException("只能更新草稿状态的项目");
}
BeanUtil.copyProperties(request, h5Project);
} else {
throw new RuntimeException("创建项目失败");
h5Project = BeanUtil.copyProperties(request, H5Project.class);
h5Project.setStatus(ProjectStatus.Draft.getValue());
h5Project.setCreatedBy(LoginHelper.getUserId());
}
boolean success;
if (isUpdate) {
success = h5ProjectService.updateH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
} else {
success = h5ProjectService.saveH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
}
if (!success) {
throw new ServiceException(isUpdate ? "更新项目失败" : "创建项目失败");
}
return h5Project.getId();
}
/**
* 更新H5项目
* 更新H5项目状态
*
* @param id H5项目ID
* @param request 包含H5项目信息和内容的请求
* @param id H5项目ID
* @param status 状态值
* @return 是否更新成功
*/
@Operation(summary = "更新 H5 项目")
@PostMapping("/update/{id}")
public Boolean updateH5Project(@PathVariable Long id, @RequestBody CreateH5ProjectRequest request) {
@Operation(summary = "更新H5项目状态")
@PostMapping("/updateStatus")
public Boolean updateStatus(@RequestParam Long id, @RequestParam Integer status) {
H5Project h5Project = h5ProjectService.getById(id);
if (h5Project == null) {
throw new RuntimeException("项目不存在");
throw new ServiceException("项目不存在");
}
h5Project.setType(request.getType());
h5Project.setTitle(request.getTitle());
h5Project.setContentUpdatedAt(request.getContentUpdatedAt());
h5Project.setDescription(request.getDescription());
h5Project.setPreviewUrl(request.getPreviewUrl());
h5Project.setPreviewUrlWatermark(request.getPreviewUrlWatermark());
h5Project.setPreviewWidth(request.getPreviewWidth());
h5Project.setPreviewHeight(request.getPreviewHeight());
h5Project.setStatus(request.getStatus());
return h5ProjectService.updateH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
}
/**
* 更新H5项目
*
* @param id H5项目ID
* @param request 包含H5项目信息和内容的请求
* @return 是否更新成功
*/
@Operation(summary = "更新状态")
@PostMapping("updateStatus")
public Boolean updateStatus(@RequestParam Long id, @RequestBody CreateH5ProjectRequest request) {
H5Project h5Project = h5ProjectService.getById(id);
if (h5Project == null) {
throw new RuntimeException("项目不存在");
Long currentUserId = LoginHelper.getUserId();
if (!currentUserId.equals(h5Project.getCreatedBy())) {
throw new ServiceException("无权限操作此项目");
}
h5Project.setType(request.getType());
h5Project.setTitle(request.getTitle());
h5Project.setContentUpdatedAt(request.getContentUpdatedAt());
h5Project.setDescription(request.getDescription());
h5Project.setPreviewUrl(request.getPreviewUrl());
h5Project.setPreviewUrlWatermark(request.getPreviewUrlWatermark());
h5Project.setPreviewWidth(request.getPreviewWidth());
h5Project.setPreviewHeight(request.getPreviewHeight());
h5Project.setStatus(request.getStatus());//TODO 改成发布状态
//获取表单并保存
h5FormService.saveForm(request.getContent());
return h5ProjectService.updateH5ProjectWithContent(h5Project, request.getContent(), request.getGroupIds());
h5Project.setStatus(status);
return h5ProjectService.updateById(h5Project);
}
/**
@ -190,7 +167,6 @@ public class H5ProjectController {
private String previewUrlWatermark;
private Integer previewWidth;
private Integer previewHeight;
private Integer status;
private List<Long> groupIds;
}
}
}