From e9687b4f81c47a84c1b111f68def0ca7e81fe5e3 Mon Sep 17 00:00:00 2001 From: Liuyang <2746366019@qq.com> Date: Thu, 16 Jan 2025 10:12:06 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20=E6=A0=87=E7=AD=BE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E4=BD=BF=E7=94=A8=E7=8A=B6=E6=80=81=E4=BB=8E=E5=90=AF?= =?UTF-8?q?=E7=94=A8=E5=8F=98=E4=B8=BA=E5=81=9C=E7=94=A8=E6=97=B6=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=BA=94=E7=94=A8=E4=B8=AD=E5=BF=83=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=AF=A5=E6=A0=87=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/ApplicationService.java | 8 +++ .../application/ApplicationServiceImpl.java | 21 +++++++ .../llm/service/label/LabelServiceImpl.java | 57 +++++++++++++++++++ 3 files changed, 86 insertions(+) diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationService.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationService.java index bd796ece5..ffabcbbb6 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationService.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationService.java @@ -67,4 +67,12 @@ public interface ApplicationService { * @return Map */ Map getApplicatioMap (); + + /** + * 根据 标签id 获取 应用 + * + * @param labelId 标签id + * @return 应用 + */ + Map getApplicationByLabelId (Long labelId); } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java index 3f815802b..151c9a7a3 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java @@ -229,4 +229,25 @@ public class ApplicationServiceImpl implements ApplicationService { .collect(Collectors.toMap(ApplicationDO::getId, ApplicationDO::getAppName)); } + /** + * 根据 标签id 获取 应用 + * + * @param labelId 标签id + * @return 应用 + */ + @Override + public Map getApplicationByLabelId (Long labelId) { + if (labelId == null){ + return Collections.emptyMap(); + } + List applications = this.applicationMapper.selectList(new LambdaQueryWrapper() + .select(ApplicationDO::getId, ApplicationDO::getAppName) + .eq(ApplicationDO::getAppLabel, labelId)); + if (CollectionUtils.isEmpty(applications)){ + return Collections.emptyMap(); + } + + return applications.stream().collect(Collectors.toMap(ApplicationDO::getId, ApplicationDO::getAppName)); + } + } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java index 162156bb6..3185cfde2 100644 --- a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/label/LabelServiceImpl.java @@ -1,13 +1,16 @@ package cn.iocoder.yudao.module.llm.service.label; +import cn.iocoder.yudao.framework.common.exception.ErrorCode; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.llm.controller.admin.label.vo.LabelPageReqVO; import cn.iocoder.yudao.module.llm.controller.admin.label.vo.LabelSaveReqVO; import cn.iocoder.yudao.module.llm.dal.dataobject.label.LabelDO; import cn.iocoder.yudao.module.llm.dal.mysql.label.LabelMapper; +import cn.iocoder.yudao.module.llm.service.application.ApplicationService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -34,6 +37,9 @@ public class LabelServiceImpl implements LabelService { @Resource private LabelMapper labelMapper; + @Resource + private ApplicationService applicationService; + @Override public Long createLabel (LabelSaveReqVO createReqVO) { validateLabelNameExists(createReqVO); @@ -49,11 +55,62 @@ public class LabelServiceImpl implements LabelService { // 校验存在 validateLabelExists(updateReqVO.getId()); validateLabelNameExists(updateReqVO); + // 校验是否启用状态从启用变为停用 + checkIfLabelEnabledToDisabled(updateReqVO); // 更新 LabelDO updateObj = BeanUtils.toBean(updateReqVO, LabelDO.class); labelMapper.updateById(updateObj); } + /** + * 检查是否启用状态从启用变为停用 + * + * @param updateRequestVO 标签修改 + */ + private void checkIfLabelEnabledToDisabled (LabelSaveReqVO updateRequestVO) { + Long id = updateRequestVO.getId(); + // 获取标签信息 + LabelDO labelDO = labelMapper.selectById(id); + // 检查标签状态是否从启用变为停用 + if (labelDO.getStatus() == 0) { + if (updateRequestVO.getStatus() == 1) { + // 验证标签使用情况 + validateLabelUse(labelDO); + } + } + } + + /** + * 校验标签使用情况 + * + * @param label 标签对象 + */ + private void validateLabelUse (LabelDO label) { + Long id = label.getId(); + String labelName = label.getLabelName(); + + // 检查标签是否在 应用中心 有使用 + validateLabelUsesInApplicationCenter(id, labelName); + // 检查标签是否在 Prompt 模版中有使用 + // validateLabelUsesInPromptTemplate(id); + // 检查标签是否在 Prompt 模版备份中有使用 + // validateLabelUsesInPromptTemplateBackup(id); + } + + /** + * 检查标签是否在 应用中心 有使用 + * + * @param id 标签id + * @param name 标签名称 + */ + private void validateLabelUsesInApplicationCenter (Long id, String name) { + Map application = applicationService.getApplicationByLabelId(id); + if (CollectionUtils.isNotEmpty(application)) { + String msg = String.format("标签【%s】在应用中心 %s 有使用,请先删除应用中心中的标签", name, application.values()); + throw exception(new ErrorCode(10004_001, msg)); + } + } + @Override public void deleteLabel (Long id) { // 校验存在