diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java index 0a3b608d..f7451a23 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/devEnvironment/DevEnvironmentController.java @@ -61,7 +61,7 @@ public class DevEnvironmentController extends BaseController { * @return 新增结果 */ @PostMapping - public GenericsAjaxResult add(@RequestBody DevEnvironmentVo devEnvironmentVo) { + public GenericsAjaxResult add(@RequestBody DevEnvironmentVo devEnvironmentVo) throws Exception { return genericsSuccess(this.devEnvironmentService.insert(devEnvironmentVo)); } @@ -72,7 +72,7 @@ public class DevEnvironmentController extends BaseController { * @return 编辑结果 */ @PutMapping - public GenericsAjaxResult edit(@RequestBody DevEnvironment devEnvironment) { + public GenericsAjaxResult edit(@RequestBody DevEnvironment devEnvironment) throws Exception { return genericsSuccess(this.devEnvironmentService.update(devEnvironment)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java index 11d8f07d..e18d0899 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/service/ServiceController.java @@ -73,7 +73,7 @@ public class ServiceController extends BaseController { @PutMapping("/serviceVersion") @ApiOperation("编辑服务版本") - public GenericsAjaxResult editServiceVersion(@RequestBody ServiceVersionVo serviceVersionVo) { + public GenericsAjaxResult editServiceVersion(@RequestBody ServiceVersionVo serviceVersionVo) throws Exception { return genericsSuccess(serviceService.editServiceVersion(serviceVersionVo)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java index 7f3cf4a4..8a92d4b2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java @@ -14,4 +14,8 @@ public interface ResourceOccupyDao { ResourceOccupy getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskId") Long taskId); int deduceCredit(@Param("credit") Float credit, @Param("userId") Long userId); + + int updateUsed(@Param("id") Integer id, @Param("used") Integer used); + + int updateUnUsed(@Param("id") Integer id, @Param("used") Integer used); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java index 4562c7d4..4b6723ab 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DevEnvironmentService.java @@ -36,7 +36,7 @@ public interface DevEnvironmentService { * @param devEnvironment 实例对象 * @return 实例对象 */ - DevEnvironment insert(DevEnvironmentVo devEnvironmentVo); + DevEnvironment insert(DevEnvironmentVo devEnvironmentVo) throws Exception; /** * 修改数据 @@ -44,7 +44,7 @@ public interface DevEnvironmentService { * @param devEnvironment 实例对象 * @return 实例对象 */ - DevEnvironment update(DevEnvironment devEnvironment); + DevEnvironment update(DevEnvironment devEnvironment) throws Exception; /** * 通过主键删除数据 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java index 947a4a6d..12b34188 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ServiceService.java @@ -22,7 +22,7 @@ public interface ServiceService { Service editService(Service service); - String editServiceVersion(ServiceVersionVo serviceVersionVo); + String editServiceVersion(ServiceVersionVo serviceVersionVo) throws Exception; Service getService(Long id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java index 0180d88d..6488b967 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DevEnvironmentServiceImpl.java @@ -6,6 +6,7 @@ import com.ruoyi.platform.domain.PodStatus; import com.ruoyi.platform.mapper.DevEnvironmentDao; import com.ruoyi.platform.service.DevEnvironmentService; import com.ruoyi.platform.service.JupyterService; +import com.ruoyi.platform.service.ResourceOccupyService; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.vo.DevEnvironmentVo; import com.ruoyi.platform.vo.PodStatusVo; @@ -36,6 +37,8 @@ public class DevEnvironmentServiceImpl implements DevEnvironmentService { @Lazy private JupyterService jupyterService; + @Resource + private ResourceOccupyService resourceOccupyService; /** * 通过ID查询单条数据 @@ -87,7 +90,10 @@ public class DevEnvironmentServiceImpl implements DevEnvironmentService { * @return 实例对象 */ @Override - public DevEnvironment insert(DevEnvironmentVo devEnvironmentVo) { + public DevEnvironment insert(DevEnvironmentVo devEnvironmentVo) throws Exception { + // 判断是否有资源 + resourceOccupyService.haveResource(devEnvironmentVo.getComputingResourceId()); + //插入预备,此时不需要判断版本重复 DevEnvironment devEnvironment = new DevEnvironment(); LoginUser loginUser = SecurityUtils.getLoginUser(); @@ -120,7 +126,10 @@ public class DevEnvironmentServiceImpl implements DevEnvironmentService { * @return 实例对象 */ @Override - public DevEnvironment update(DevEnvironment devEnvironment) { + public DevEnvironment update(DevEnvironment devEnvironment) throws Exception { + // 判断是否有资源 + resourceOccupyService.haveResource(devEnvironment.getComputingResourceId()); + LoginUser loginUser = SecurityUtils.getLoginUser(); devEnvironment.setUpdateBy(loginUser.getUsername()); devEnvironment.setUpdateTime(new Date()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java index 1050499f..8ea5d473 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayServiceImpl.java @@ -66,6 +66,10 @@ public class RayServiceImpl implements RayService { if (rayByName != null) { throw new RuntimeException("实验名称已存在"); } + + // 判断是否有资源 + resourceOccupyService.haveResource(rayVo.getComputingResourceId()); + Ray ray = new Ray(); BeanUtils.copyProperties(rayVo, ray); String username = SecurityUtils.getLoginUser().getUsername(); @@ -87,6 +91,10 @@ public class RayServiceImpl implements RayService { if (oldRay != null && !oldRay.getId().equals(rayVo.getId())) { throw new RuntimeException("实验名称已存在"); } + + // 判断是否有资源 + resourceOccupyService.haveResource(rayVo.getComputingResourceId()); + Ray ray = new Ray(); BeanUtils.copyProperties(rayVo, ray); ray.setUpdateBy(SecurityUtils.getLoginUser().getUsername()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java index 3809629f..ea0f12c7 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java @@ -55,6 +55,12 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { resourceOccupy.setTaskType(taskType); resourceOccupy.setTaskId(taskId); resourceOccupyDao.save(resourceOccupy); + + if (Constant.Computing_Resource_GPU.equals(computingResource.getComputingResource())) { + resourceOccupyDao.updateUsed(computingResource.getResourceId(), computingResource.getGpuNums()); + } else { + resourceOccupyDao.updateUsed(computingResource.getResourceId(), computingResource.getCpuCores()); + } } @Override @@ -62,8 +68,14 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { ResourceOccupy resourceOccupy = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId); deducing(taskType, taskId); resourceOccupy.setState(Constant.State_invalid); - resourceOccupy.setDeduceLastTime(new Date()); resourceOccupyDao.edit(resourceOccupy); + + ComputingResource computingResource = computingResourceDao.queryById(resourceOccupy.getComputingResourceId()); + if (Constant.Computing_Resource_GPU.equals(computingResource.getComputingResource())) { + resourceOccupyDao.updateUnUsed(computingResource.getResourceId(), computingResource.getGpuNums()); + } else { + resourceOccupyDao.updateUnUsed(computingResource.getResourceId(), computingResource.getCpuCores()); + } } @Override @@ -74,5 +86,8 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService { float deduceCredit = resourceOccupy.getCreditPerHour() * hours; resourceOccupyDao.deduceCredit(deduceCredit, resourceOccupy.getUserId()); + + resourceOccupy.setDeduceLastTime(new Date()); + resourceOccupyDao.edit(resourceOccupy); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java index 8e613098..d046fe25 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java @@ -120,6 +120,9 @@ public class ServiceServiceImpl implements ServiceService { throw new RuntimeException("服务版本已存在,无法新增"); } + // 判断是否有资源 + resourceOccupyService.haveResource(serviceVersionVo.getComputingResourceId()); + ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); LoginUser loginUser = SecurityUtils.getLoginUser(); serviceVersion.setCreateBy(loginUser.getUsername()); @@ -139,7 +142,10 @@ public class ServiceServiceImpl implements ServiceService { } @Override - public String editServiceVersion(ServiceVersionVo serviceVersionVo) { + public String editServiceVersion(ServiceVersionVo serviceVersionVo) throws Exception { + // 判断是否有资源 + resourceOccupyService.haveResource(serviceVersionVo.getComputingResourceId()); + ServiceVersion serviceVersion = getServiceVersion(serviceVersionVo); ServiceVersion oldServiceVersion = serviceDao.getServiceVersionById(serviceVersionVo.getId()); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/RayVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/RayVo.java index 4cf000e5..fe3cc30b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/RayVo.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/RayVo.java @@ -57,6 +57,8 @@ public class RayVo { private String resource; + private Integer computingResourceId; + private String createBy; private Date createTime; diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml index 6b87f09c..b20b9215 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml @@ -25,6 +25,18 @@ where user_id = #{userId} + + update resource + set used = used + #{used} + where id = #{id} + + + + update resource + set used = used - #{used} + where id = #{id} + +