package com.iailab.module.ai.service.model; import cn.hutool.extra.spring.SpringUtil; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.common.util.object.BeanUtils; import com.iailab.module.ai.controller.admin.model.vo.tool.AiToolPageReqVO; import com.iailab.module.ai.controller.admin.model.vo.tool.AiToolSaveReqVO; import com.iailab.module.ai.dal.dataobject.model.AiToolDO; import com.iailab.module.ai.dal.mysql.model.AiToolMapper; import jakarta.annotation.Resource; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import java.util.Collection; import java.util.List; import static com.iailab.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.iailab.module.ai.enums.ErrorCodeConstants.TOOL_NAME_NOT_EXISTS; import static com.iailab.module.ai.enums.ErrorCodeConstants.TOOL_NOT_EXISTS; /** * AI 工具 Service 实现类 * * @author Iailab */ @Service @Validated public class AiToolServiceImpl implements AiToolService { @Resource private AiToolMapper toolMapper; @Override public Long createTool(AiToolSaveReqVO createReqVO) { // 校验名称是否存在 validateToolNameExists(createReqVO.getName()); // 插入 AiToolDO tool = BeanUtils.toBean(createReqVO, AiToolDO.class); toolMapper.insert(tool); return tool.getId(); } @Override public void updateTool(AiToolSaveReqVO updateReqVO) { // 1.1 校验存在 validateToolExists(updateReqVO.getId()); // 1.2 校验名称是否存在 validateToolNameExists(updateReqVO.getName()); // 2. 更新 AiToolDO updateObj = BeanUtils.toBean(updateReqVO, AiToolDO.class); toolMapper.updateById(updateObj); } @Override public void deleteTool(Long id) { // 校验存在 validateToolExists(id); // 删除 toolMapper.deleteById(id); } @Override public void validateToolExists(Long id) { if (toolMapper.selectById(id) == null) { throw exception(TOOL_NOT_EXISTS); } } private void validateToolNameExists(String name) { try { SpringUtil.getBean(name); } catch (NoSuchBeanDefinitionException e) { throw exception(TOOL_NAME_NOT_EXISTS, name); } } @Override public AiToolDO getTool(Long id) { return toolMapper.selectById(id); } @Override public List getToolList(Collection ids) { return toolMapper.selectBatchIds(ids); } @Override public PageResult getToolPage(AiToolPageReqVO pageReqVO) { return toolMapper.selectPage(pageReqVO); } @Override public List getToolListByStatus(Integer status) { return toolMapper.selectListByStatus(status); } }