[update] 删除模型服务校验应用

This commit is contained in:
Liuyang 2025-01-21 10:12:02 +08:00
parent 3150a4e715
commit 545551bec7
3 changed files with 72 additions and 1 deletions

View File

@ -99,4 +99,12 @@ public interface ApplicationService {
* @return 应用
*/
Map<Long, String> getApplicationByBaseModelId (Long baseModelId);
/**
* 根据 模型服务id 获取 应用
*
* @param modelServiceId 模型服务id
* @return 应用
*/
Map<Long, String> getApplicationByModelServiceId (Long modelServiceId);
}

View File

@ -385,11 +385,22 @@ public class ApplicationServiceImpl implements ApplicationService {
return getApplicationByBaseModelIdAndType(baseModelId, 1);
}
/**
* 根据 模型服务id 获取 应用
*
* @param modelServiceId 模型服务id
* @return 应用
*/
@Override
public Map<Long, String> getApplicationByModelServiceId (Long modelServiceId) {
return getApplicationByBaseModelIdAndType(modelServiceId, 0);
}
/**
* 根据 模型id 和模型类型 获取 应用
*
* @param modelId 模型id
* @param appModelType 应用模型类型 1:预制模型 2:我的模型
* @param appModelType 应用模型类型 0:我的模型 1:预制模型
* @return 应用
*/
public Map<Long, String> getApplicationByBaseModelIdAndType (Long modelId, Integer appModelType) {

View File

@ -1,19 +1,27 @@
package cn.iocoder.yudao.module.llm.service.modelservice;
import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.ModelServicePageReqVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.ModelServiceRespVO;
import cn.iocoder.yudao.module.llm.controller.admin.modelservice.vo.ModelServiceSaveReqVO;
import cn.iocoder.yudao.module.llm.dal.dataobject.basemodel.BaseModelDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.finetuningtask.FineTuningTaskDO;
import cn.iocoder.yudao.module.llm.dal.dataobject.modelservice.ModelServiceDO;
import cn.iocoder.yudao.module.llm.dal.mysql.finetuningtask.FineTuningTaskMapper;
import cn.iocoder.yudao.module.llm.dal.mysql.modelservice.ModelServiceMapper;
import cn.iocoder.yudao.module.llm.framework.backend.config.LLMBackendProperties;
import cn.iocoder.yudao.module.llm.service.application.ApplicationService;
import cn.iocoder.yudao.module.llm.service.async.AsyncModelServiceService;
import cn.iocoder.yudao.module.llm.service.finetuningtask.FineTuningTaskService;
import cn.iocoder.yudao.module.llm.service.http.ModelService;
import cn.iocoder.yudao.module.llm.service.modelassesstaskauto.ModelAssessTaskAutoService;
import cn.iocoder.yudao.module.llm.service.modelassesstaskmanual.ModelAssessTaskManualService;
import cn.iocoder.yudao.module.llm.service.modelassesstaskmanualbackup.ModelAssessTaskManualBackupService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -52,6 +60,19 @@ public class ModelServiceServiceImpl implements ModelServiceService {
@Resource
private ModelService modelService;
@Lazy
@Resource
private ApplicationService applicationService;
@Resource
private ModelAssessTaskManualService modelAssessTaskManualService;
@Resource
private ModelAssessTaskAutoService modelAssessTaskAutoService;
@Resource
private ModelAssessTaskManualBackupService modelAssessTaskManualBackupService;
@Override
public Long createModelService(ModelServiceSaveReqVO createReqVO) {
@ -104,10 +125,41 @@ public class ModelServiceServiceImpl implements ModelServiceService {
public void deleteModelService(Long id) {
// 校验存在
validateModelServiceExists(id);
// 校验使用
validateModelUse(id);
// 删除
modelServiceMapper.deleteById(id);
}
/**
* 校验模型使用情况
*
* @param id 模型ID
*/
private void validateModelUse (Long id) {
ModelServiceDO modelDO = modelServiceMapper.selectById(id);
String modelName = modelDO.getServiceName();
// 校验 基座模型 是否在 应用中心 有使用
validateModelUsesInApplicationCenter(id, modelName);
}
/**
* 校验模型是否在 应用中心 有使用
*
* @param id 模型ID
* @param modelName 模型名称
*/
private void validateModelUsesInApplicationCenter (Long id, String modelName) {
Map<Long, String> application = applicationService.getApplicationByModelServiceId(id);
if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isNotEmpty(application)) {
String msg = String.format("模型【%s】在应用中心 %s 有使用,请先取消使用", modelName, application.values());
throw exception(new ErrorCode(10003_001, msg));
}
}
private void validateModelServiceExists(Long id) {
if (modelServiceMapper.selectById(id) == null) {
throw exception(MODEL_SERVICE_NOT_EXISTS);