diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentTemplateController.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentTemplateController.java index ee6f5e57..1e1cf82f 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentTemplateController.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/controller/AgentTemplateController.java @@ -106,6 +106,9 @@ public class AgentTemplateController { @Operation(summary = "创建模板") @RequiresPermissions("sys:role:superAdmin") public Result createAgentTemplate(@Valid @RequestBody AgentTemplateEntity template) { + // 设置排序值为下一个可用的序号 + template.setSort(agentTemplateService.getNextAvailableSort()); + boolean saved = agentTemplateService.save(template); if (saved) { return ResultUtils.success(template); @@ -130,9 +133,20 @@ public class AgentTemplateController { @Operation(summary = "删除模板") @RequiresPermissions("sys:role:superAdmin") public Result deleteAgentTemplate(@PathVariable("id") String id) { + // 先查询要删除的模板信息,获取其排序值 + AgentTemplateEntity template = agentTemplateService.getById(id); + if (template == null) { + return ResultUtils.error("模板不存在"); + } + + Integer deletedSort = template.getSort(); + + // 执行删除操作 boolean deleted = agentTemplateService.removeById(id); if (deleted) { - return ResultUtils.success("删除成功"); + // 删除成功后,重新排序剩余模板 + agentTemplateService.reorderTemplatesAfterDelete(deletedSort); + return ResultUtils.success("删除模板成功"); } else { return ResultUtils.error("删除模板失败"); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentTemplateService.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentTemplateService.java index 4e279c40..b10a67f9 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentTemplateService.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/AgentTemplateService.java @@ -25,4 +25,18 @@ public interface AgentTemplateService extends IService { * @param modelId 模型ID */ void updateDefaultTemplateModelId(String modelType, String modelId); + + /** + * 删除模板后重新排序剩余模板 + * + * @param deletedSort 被删除模板的排序值 + */ + void reorderTemplatesAfterDelete(Integer deletedSort); + + /** + * 获取下一个可用的排序序号(寻找最小的未使用序号) + * + * @return 下一个可用的排序序号 + */ + Integer getNextAvailableSort(); } diff --git a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTemplateServiceImpl.java b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTemplateServiceImpl.java index 581adbdd..8c562edb 100644 --- a/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTemplateServiceImpl.java +++ b/main/manager-api/src/main/java/xiaozhi/modules/agent/service/impl/AgentTemplateServiceImpl.java @@ -10,6 +10,11 @@ import xiaozhi.modules.agent.dao.AgentTemplateDao; import xiaozhi.modules.agent.entity.AgentTemplateEntity; import xiaozhi.modules.agent.service.AgentTemplateService; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + /** * @author chenerlei * @description 针对表【ai_agent_template(智能体配置模板表)】的数据库操作Service实现 @@ -69,4 +74,48 @@ public class AgentTemplateServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); + updateWrapper.gt("sort", deletedSort) + .setSql("sort = sort - 1"); + + // 执行批量更新,将这些记录的排序值减1 + this.update(updateWrapper); + } + + @Override + public Integer getNextAvailableSort() { + // 查询所有已存在的排序值并按升序排序 + List sortValues = baseMapper.selectList(new QueryWrapper()) + .stream() + .map(AgentTemplateEntity::getSort) + .filter(Objects::nonNull) + .sorted() + .collect(Collectors.toList()); + + // 如果没有排序值,返回1 + if (sortValues.isEmpty()) { + return 1; + } + + // 寻找最小的未使用序号 + int expectedSort = 1; + for (Integer sort : sortValues) { + if (sort > expectedSort) { + // 找到空缺的序号 + return expectedSort; + } + expectedSort = sort + 1; + } + + // 如果没有空缺,返回最大序号+1 + return expectedSort; + } }