Browse Source

积分功能开发

dev-credits
chenzhihang 10 months ago
parent
commit
288bb3d2dc
12 changed files with 44 additions and 27 deletions
  1. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java
  2. +3
    -3
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java
  3. +3
    -3
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java
  4. +19
    -6
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ResourceOccupyTask.java
  5. +2
    -2
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java
  6. +1
    -2
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java
  7. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java
  8. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java
  9. +5
    -5
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java
  10. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java
  11. +1
    -1
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DevEnvironmentDaoMapper.xml
  12. +6
    -1
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml

+ 1
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ResourceOccupyDao.java View File

@@ -14,7 +14,7 @@ public interface ResourceOccupyDao {

int edit(@Param("resourceOccupy") ResourceOccupy resourceOccupy);

List<ResourceOccupy> getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskInsId") Long taskInsId, @Param("nodeId") String nodeId);
List<ResourceOccupy> getResourceOccupyByTask(@Param("taskType") String taskType, @Param("taskId") Long taskId, @Param("taskInsId") Long taskInsId, @Param("nodeId") String nodeId);

int deduceCredit(@Param("credit") Double credit, @Param("userId") Long userId);



+ 3
- 3
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java View File

@@ -51,7 +51,7 @@ public class ExperimentInstanceStatusTask {
} catch (Exception e) {
experimentIns.setStatus(Constant.Failed);
// 结束扣除积分
resourceOccupyService.endDeduce(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), null, null);
resourceOccupyService.endDeduce(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), null, null);
}

// 扣除积分
@@ -65,9 +65,9 @@ public class ExperimentInstanceStatusTask {

String finishedAt = (String) value.get("finishedAt");
if (StringUtils.isEmpty(finishedAt)) {
resourceOccupyService.deducing(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), key, startTime);
resourceOccupyService.deducing(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), key, startTime);
} else {
resourceOccupyService.endDeduce(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), key, startTime);
resourceOccupyService.endDeduce(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), key, startTime);
}
}
}


+ 3
- 3
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/RayInsStatusTask.java View File

@@ -45,15 +45,15 @@ public class RayInsStatusTask {

// 扣除积分
if (Constant.Running.equals(rayIns.getStatus())) {
resourceOccupyService.deducing(Constant.TaskType_Ray, rayIns.getId(), null,null);
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, rayIns.getId(), null,null);
resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, rayIns.getId(), null, null);
}
} catch (Exception e) {
rayIns.setStatus(Constant.Failed);
// 结束扣除积分
resourceOccupyService.endDeduce(Constant.TaskType_Ray, rayIns.getId(), null, null);
resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, rayIns.getId(), null, null);
}
// 线程安全的添加操作
synchronized (rayIds) {


+ 19
- 6
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ResourceOccupyTask.java View File

@@ -5,7 +5,9 @@ import com.ruoyi.platform.domain.DevEnvironment;
import com.ruoyi.platform.domain.ServiceVersion;
import com.ruoyi.platform.mapper.DevEnvironmentDao;
import com.ruoyi.platform.mapper.ServiceDao;
import com.ruoyi.platform.service.JupyterService;
import com.ruoyi.platform.service.ResourceOccupyService;
import com.ruoyi.platform.vo.PodStatusVo;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@@ -24,21 +26,32 @@ public class ResourceOccupyTask {
@Resource
private ServiceDao serviceDao;

@Resource
private JupyterService jupyterService;

// 开发环境功能扣除积分
@Scheduled(cron = "0 0/1 * * * ?") // 每10分钟执行一次
public void devDeduceCredit() {
@Scheduled(cron = "0 0/1 * * * ?") // 每1分钟执行一次
public void devDeduceCredit() throws Exception {
List<DevEnvironment> devEnvironments = devEnvironmentDao.getRunning();
for (DevEnvironment devEnvironment : devEnvironments) {
resourceOccupyService.deducing(Constant.TaskType_Dev, Long.valueOf(devEnvironment.getId()), null, null);
for (DevEnvironment devEnv : devEnvironments) {
PodStatusVo podStatusVo = this.jupyterService.getJupyterStatus(devEnv);
if (!devEnv.getStatus().equals(podStatusVo.getStatus())) {
devEnv.setStatus(podStatusVo.getStatus());
devEnv.setUrl(podStatusVo.getUrl());
this.devEnvironmentDao.update(devEnv);
}
if (Constant.Running.equals(devEnv.getStatus())) {
resourceOccupyService.deducing(Constant.TaskType_Dev, Long.valueOf(devEnv.getId()), null, null, null);
}
}
}

// 服务功能扣除积分
@Scheduled(cron = "0 0/1 * * * ?") // 每10分钟执行一次
@Scheduled(cron = "0 0/1 * * * ?") // 每1分钟执行一次
public void serviceDeduceCredit() {
List<ServiceVersion> serviceVersions = serviceDao.getRunning();
for (ServiceVersion serviceVersion : serviceVersions) {
resourceOccupyService.deducing(Constant.TaskType_Service, serviceVersion.getId(), null, null);
resourceOccupyService.deducing(Constant.TaskType_Service, null, serviceVersion.getId(), null, null);
}
}
}

+ 2
- 2
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ResourceOccupyService.java View File

@@ -13,9 +13,9 @@ public interface ResourceOccupyService {

void startDeduce(Integer computingResourceId, String taskType, Long taskId, Long taskInsId, Long workflowId, String taskName, String nodeId);

void endDeduce(String taskType, Long taskInsId, String nodeId, Date nodeStartTime);
void endDeduce(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime);

void deducing(String taskType, Long taskInsId, String nodeId, Date nodeStartTime);
void deducing(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime);

Page<ResourceOccupy> queryByPage(PageRequest pageRequest);



+ 1
- 2
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java View File

@@ -1,6 +1,5 @@
package com.ruoyi.platform.service.impl;

import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.platform.constant.Constant;
@@ -416,7 +415,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
updateExperimentStatus(experimentIns.getExperimentId());

// 结束扣除积分
resourceOccupyService.endDeduce(Constant.TaskType_Workflow, Long.valueOf(experimentIns.getId()), null, null);
resourceOccupyService.endDeduce(Constant.TaskType_Workflow, null, Long.valueOf(experimentIns.getId()), null, null);
return true;
} else {
throw new Exception("终止错误");


+ 1
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/JupyterServiceImpl.java View File

@@ -142,7 +142,7 @@ public class JupyterServiceImpl implements JupyterService {
this.devEnvironmentService.update(devEnvironment);

// 结束扣积分
resourceOccupyService.endDeduce(Constant.TaskType_Dev, Long.valueOf(id), null, null);
resourceOccupyService.endDeduce(Constant.TaskType_Dev, Long.valueOf(id), null, null, null);
return deleteResult + ",编辑器已停止";

}


+ 1
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/RayInsServiceImpl.java View File

@@ -168,7 +168,7 @@ public class RayInsServiceImpl implements RayInsService {
rayInsDao.update(ins);
updateRayStatus(rayIns.getRayId());
// 结束扣积分
resourceOccupyService.endDeduce(Constant.TaskType_Ray, id, null, null);
resourceOccupyService.endDeduce(Constant.TaskType_Ray, null, id, null, null);
return true;
} else {
return false;


+ 5
- 5
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ResourceOccupyServiceImpl.java View File

@@ -78,10 +78,10 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService {

@Override
@Transactional
public void endDeduce(String taskType, Long taskInsId, String nodeId, Date nodeStartTime) {
List<ResourceOccupy> resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskInsId, nodeId);
public void endDeduce(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime) {
List<ResourceOccupy> resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId, taskInsId, nodeId);
for (ResourceOccupy resourceOccupy : resourceOccupys) {
deducing(taskType, taskInsId, nodeId, nodeStartTime);
deducing(taskType, taskId, taskInsId, nodeId, nodeStartTime);
resourceOccupy.setState(Constant.State_invalid);
resourceOccupyDao.edit(resourceOccupy);

@@ -96,8 +96,8 @@ public class ResourceOccupyServiceImpl implements ResourceOccupyService {

@Override
@Transactional
public void deducing(String taskType, Long taskInsId, String nodeId, Date nodeStartTime) {
List<ResourceOccupy> resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskInsId, nodeId);
public void deducing(String taskType, Long taskId, Long taskInsId, String nodeId, Date nodeStartTime) {
List<ResourceOccupy> resourceOccupys = resourceOccupyDao.getResourceOccupyByTask(taskType, taskId, taskInsId, nodeId);
for (ResourceOccupy resourceOccupy : resourceOccupys) {
Date now = new Date();
long timeDifferenceMillis;


+ 1
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ServiceServiceImpl.java View File

@@ -297,7 +297,7 @@ public class ServiceServiceImpl implements ServiceService {
serviceVersion.setRunState(Constant.Stopped);
serviceDao.updateServiceVersion(serviceVersion);
// 结束扣积分
resourceOccupyService.endDeduce(Constant.TaskType_Service, id, null, null);
resourceOccupyService.endDeduce(Constant.TaskType_Service, null, id, null, null);
return "停止成功";
} else {
throw new RuntimeException("停止失败");


+ 1
- 1
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/DevEnvironmentDaoMapper.xml View File

@@ -127,7 +127,7 @@
</select>

<select id="getRunning" resultType="com.ruoyi.platform.domain.DevEnvironment">
select * from dev_environment where state = 1 and status = 'Running'
select * from dev_environment where state = 1 and (status = 'Running' or status = 'Pending' or status = 'Init')
</select>

<!--新增所有列-->


+ 6
- 1
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ResourceOccupy.xml View File

@@ -55,7 +55,12 @@
select *
from resource_occupy
where task_type = #{taskType}
and task_ins_id = #{taskInsId}
<if test="taskId != null and taskId !=''">
and task_id = #{taskId}
</if>
<if test="taskInsId != null and taskInsId !=''">
and task_ins_id = #{taskInsId}
</if>
<if test="nodeId != null and nodeId !=''">
and node_id = #{nodeId}
</if>


Loading…
Cancel
Save