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 bf652a1dd..b2cba004c 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 @@ -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 listAllH5Projects() { - return h5ProjectService.list(); - } +// /** +// * 查询所有H5项目 +// * +// * @return H5项目列表 +// */ +// @Operation(summary = "查询所有H5项目") +// @GetMapping +// public List 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 groupIds; } -} +} \ No newline at end of file