diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java index a9394405..f5b0b759 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java @@ -1,12 +1,13 @@ package com.ruoyi.platform.scheduling; -import com.ruoyi.system.api.constant.Constant; import com.ruoyi.platform.domain.Ray; import com.ruoyi.platform.domain.RayIns; import com.ruoyi.platform.mapper.RayDao; import com.ruoyi.platform.mapper.RayInsDao; +import com.ruoyi.platform.mapper.ResourceOccupyDao; import com.ruoyi.platform.service.RayInsService; import com.ruoyi.platform.service.ResourceOccupyService; +import com.ruoyi.system.api.constant.Constant; import org.apache.commons.lang3.StringUtils; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -25,7 +26,8 @@ public class RayInsStatusTask { private RayInsDao rayInsDao; @Resource private RayDao rayDao; - + @Resource + private ResourceOccupyDao resourceOccupyDao; @Resource private ResourceOccupyService resourceOccupyService; @@ -41,13 +43,19 @@ public class RayInsStatusTask { for (RayIns rayIns : rayInsList) { //当原本状态为null或非终止态时才调用argo接口 try { - rayIns = rayInsService.queryStatusFromArgo(rayIns); - // 扣除积分 - if (Constant.Running.equals(rayIns.getStatus())) { - resourceOccupyService.deducing(Constant.TaskType_Ray, null, rayIns.getId(), null, null); - } else if (Constant.Failed.equals(rayIns.getStatus()) || Constant.Terminated.equals(rayIns.getStatus()) - || Constant.Succeeded.equals(rayIns.getStatus())) { - resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, rayIns.getId(), null, null); + Long userId = resourceOccupyDao.getResourceOccupyByTask(Constant.TaskType_Ray, rayIns.getRayId(), rayIns.getId(), null).get(0).getUserId(); + if (resourceOccupyDao.getUserCredit(userId) <= 0) { + rayIns.setStatus(Constant.Failed); + rayInsService.terminateRayIns(rayIns.getId()); + } else { + rayIns = rayInsService.queryStatusFromArgo(rayIns); + // 扣除积分 + if (Constant.Running.equals(rayIns.getStatus())) { + resourceOccupyService.deducing(Constant.TaskType_Ray, null, rayIns.getId(), null, null); + } else if (Constant.Failed.equals(rayIns.getStatus()) || Constant.Terminated.equals(rayIns.getStatus()) + || Constant.Succeeded.equals(rayIns.getStatus())) { + resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, rayIns.getId(), null, null); + } } } catch (Exception e) { rayIns.setStatus(Constant.Failed); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java index 124a18a2..9f3ec88d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java @@ -157,8 +157,8 @@ public class RayInsServiceImpl implements RayInsService { if (innerMap.containsKey("phase")) { String phaseValue = (String) innerMap.get("phase"); // 如果值不等于 Succeeded,则赋值为 Failed - if (!StringUtils.equals("Succeeded", phaseValue)) { - innerMap.put("phase", "Failed"); + if (!StringUtils.equals(Constant.Succeeded, phaseValue)) { + innerMap.put("phase", Constant.Failed); } } }