From 3a22e540ad02298604c17a8e394d2c8995adbb88 Mon Sep 17 00:00:00 2001 From: ddmte32 Date: Wed, 27 Aug 2025 08:43:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E3=80=81=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=AE=A1=E6=89=B9=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/annotations/NeedApproval.java | 10 +++ .../aspect/ModelApprovalAspect.java | 63 +++++++++++++++++++ .../dataset/NewDatasetFromGitController.java | 2 + .../model/NewModelFromGitController.java | 3 + .../com/ruoyi/platform/vo/NewDatasetVo.java | 2 + 5 files changed, 80 insertions(+) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/NeedApproval.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/aspect/ModelApprovalAspect.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/NeedApproval.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/NeedApproval.java new file mode 100644 index 00000000..d543cb42 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/NeedApproval.java @@ -0,0 +1,10 @@ +package com.ruoyi.platform.annotations; + +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface NeedApproval { + // 可以添加一些配置参数,如审批类型等 +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/aspect/ModelApprovalAspect.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/aspect/ModelApprovalAspect.java new file mode 100644 index 00000000..ce2b4a5b --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/annotations/aspect/ModelApprovalAspect.java @@ -0,0 +1,63 @@ +package com.ruoyi.platform.annotations.aspect; + +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.redis.service.RedisService; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +@Aspect +@Component +public class ModelApprovalAspect { +// +// // 注入审批服务(假设已存在) +// private final ApprovalService approvalService; +// +// public ModelApprovalAspect(ApprovalService approvalService) { +// this.approvalService = approvalService; +// } + + @Autowired + private RedisService redisService; + + @Around("@annotation(com.ruoyi.platform.annotations.NeedApproval)") + public Object checkApproval(ProceedingJoinPoint joinPoint) throws Throwable { + // 获取方法参数,第一个参数是模型对象 + Object[] args = joinPoint.getArgs(); + if (args.length == 0) { + return joinPoint.proceed(); + } + + Object model = args[0]; + + try { + Method getIsPublic = model.getClass().getMethod("getIsPublic"); + Method getName = model.getClass().getMethod("getName"); + Method getId = model.getClass().getMethod("getId"); + boolean isPublic = (boolean) getIsPublic.invoke(model); + String name = (String) getIsPublic.invoke(getName); + int id = (int) getIsPublic.invoke(getId); + + if (isPublic) { + Class modelClass = model.getClass(); + Field isApproved = modelClass.getDeclaredField("isApproved"); + isApproved.setAccessible(false); + redisService.setCacheObject("ModelApproval_"+name+"_"+id, model); + // 公共模型,提交审批并阻止原方法执行 +// approvalService.submitForApproval(model); + return AjaxResult.success("模型已提交审批"); + } else { + // 个人模型,直接放行 + return joinPoint.proceed(); + } + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + return joinPoint.proceed(); + } + } +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java index 176769ff..e43897d0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/NewDatasetFromGitController.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.controller.dataset; import cn.hutool.core.collection.CollectionUtil; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.platform.annotations.NeedApproval; import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.service.NewDatasetService; import com.ruoyi.platform.utils.DVCUtils; @@ -44,6 +45,7 @@ public class NewDatasetFromGitController { */ @PostMapping("/addDatasetAndVersion") @ApiOperation("添加数据集和版本") + @NeedApproval public AjaxResult addDatasetAndVersion(@RequestBody NewDatasetVo datasetVo) throws Exception { return AjaxResult.success(this.newDatasetService.newCreateDataset(datasetVo)); 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 69bf5820..784e6366 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,6 +4,7 @@ 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.platform.domain.ModelsVersion; import com.ruoyi.platform.service.ModelsService; import com.ruoyi.platform.vo.ModelsVo; @@ -30,6 +31,7 @@ public class NewModelFromGitController extends BaseController { @PostMapping("/addModel") @ApiOperation("添加模型") + @NeedApproval public GenericsAjaxResult addModelAndVersion(@RequestBody ModelsVo modelsVo) { return genericsSuccess(this.modelsService.newCreateModel(modelsVo)); } @@ -143,6 +145,7 @@ public class NewModelFromGitController extends BaseController { return AjaxResult.success(); } + @DeleteMapping("/deleteVersion") @ApiOperation(value = "删除模型版本") public AjaxResult deleteVersion(@RequestParam("id") Integer id, @RequestParam("identifier") String identifier, @RequestParam("owner") String owner, @RequestParam("version") String version diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java index b7d06dc9..f3aa3303 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/NewDatasetVo.java @@ -32,6 +32,8 @@ public class NewDatasetVo implements Serializable { */ @ApiModelProperty(name = "is_public", value = "是否公开1公开,0私有") private Boolean isPublic; + @ApiModelProperty(name = "is_approved", value = "是否审批通过1通过,0不通过") + private Boolean isApproved; @ApiModelProperty(name = "data_type",value = "数据集类型") private String dataType; @ApiModelProperty(name = "data_tag",value = "数据集标签")