From 56803efea6b5d3ff94d3bba01c4ac89321cf732a Mon Sep 17 00:00:00 2001 From: ddmte32 Date: Wed, 3 Sep 2025 15:03:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=8F=91=E5=B8=83=E5=AE=A1?= =?UTF-8?q?=E6=89=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/NewModelFromGitController.java | 10 +++- .../ruoyi/platform/service/ModelsService.java | 4 +- .../service/impl/ModelsServiceImpl.java | 48 ++++++++++++++++++- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java index 46b6f55f..936626ff 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/NewModelFromGitController.java @@ -4,11 +4,12 @@ import cn.hutool.core.collection.CollectionUtil; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.GenericsAjaxResult; -import com.ruoyi.platform.annotations.NeedApproval; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.service.ModelsService; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.QueryModelMetricsVo; +import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.core.io.InputStreamResource; @@ -174,4 +175,11 @@ public class NewModelFromGitController extends BaseController { public AjaxResult unpraise(@PathVariable("id") Integer id) throws Exception { return AjaxResult.success(this.modelsService.unpraise(id)); } + + @PostMapping("/publish") + @ApiOperation(value = "发布") + public AjaxResult publish(@RequestBody ModelsVo modelsVo) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + return AjaxResult.success(this.modelsService.publish(modelsVo,loginUser)); + } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java index 5de1c2e4..e57ab286 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ModelsService.java @@ -1,12 +1,12 @@ package com.ruoyi.platform.service; -import com.ruoyi.platform.domain.ModelDependency1; import com.ruoyi.platform.domain.Models; import com.ruoyi.platform.domain.ModelsVersion; import com.ruoyi.platform.vo.ModelDependency1TreeVo; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.QueryModelMetricsVo; +import com.ruoyi.system.api.model.LoginUser; import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -126,4 +126,6 @@ public interface ModelsService { List convert(List> lst, String modelTopic, String modelTagName, String modelTypeName); String getNextVersion(ModelsVersion modelsVersion) throws Exception; + + String publish(ModelsVo modelsVo, LoginUser loginUser) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java index 12230a6b..32c3bc44 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java @@ -13,7 +13,9 @@ import com.ruoyi.platform.mapper.*; import com.ruoyi.platform.service.*; import com.ruoyi.platform.utils.*; import com.ruoyi.platform.vo.*; +import com.ruoyi.system.api.RemoteInfoPublishService; import com.ruoyi.system.api.constant.Constant; +import com.ruoyi.system.api.domain.NewSysNotificationParamsVo; import com.ruoyi.system.api.model.LoginUser; import io.minio.messages.Item; import org.apache.commons.io.FileUtils; @@ -43,7 +45,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -98,6 +99,12 @@ public class ModelsServiceImpl implements ModelsService { @Resource private DVCUtils dvcUtils; + @Resource + private ApprovalService approvalService; + + @Resource + private RemoteInfoPublishService remoteInfoPublishService; + @Resource private AssetWorkflowDao assetWorkflowDao; @@ -1355,6 +1362,45 @@ public class ModelsServiceImpl implements ModelsService { return incrementVersion(versionList); } + @Override + public String publish(ModelsVo modelsVo, LoginUser loginUser) throws Exception { + Set roles = loginUser.getRoles(); + if (roles.contains("admin")) { + //无需审批,直接通过 + return "发布成功"; + } + ModelsVo modelDetail = getModelDetail(modelsVo.getId(), modelsVo.getIdentifier(), modelsVo.getOwner(), null, false); + String username = loginUser.getUsername(); + Long userid = loginUser.getUserid(); + ApprovalRequest approvalRequest = new ApprovalRequest(); + approvalRequest.setApplicantName(username); + approvalRequest.setType(ApprovalType.DATASET.getCode()); + approvalRequest.setApplicantId(userid); + approvalRequest.setApproverId(1L); + approvalRequest.setStatus(ApprovalStatus.PENDING.getCode()); + + String titleTemplate = "{}发布的模型\"{}\"需要审核,请查看"; + String urlTemplate = "/dataset/model/info/{}?name={}&owner={}&identifier={}&is_public={}"; + + String titleFormat = StrUtil.format(titleTemplate, username, modelDetail.getName()); + String urlFormat = StrUtil.format(urlTemplate, modelDetail.getId(), modelDetail.getName(), modelDetail.getOwner(), modelDetail.getIdentifier(), modelDetail.getIsPublic()); + + approvalRequest.setTitle(titleFormat); + approvalRequest.setUrl(urlFormat); + approvalRequest.setContent(JSON.toJSONString(modelDetail)); + approvalService.submit(approvalRequest); + + NewSysNotificationParamsVo paramsVo = new NewSysNotificationParamsVo(); + paramsVo.setContent(titleFormat); + paramsVo.setReceivers("1"); + paramsVo.setSender(userid); + paramsVo.setType(2); + paramsVo.setNotification_url("/system/approval"); + remoteInfoPublishService.pushSysInfo(paramsVo); + + return "发布成功,待管理员审核"; + } + /** * 从Map列表中提取"v+数字"格式的版本号并升级 *