添加备份Prompt模板记录的接口。
This commit is contained in:
parent
3f8965e885
commit
ded79140ca
@ -43,6 +43,10 @@ public interface ErrorCodeConstants {
|
||||
|
||||
ErrorCode PROMPT_TEMPLATES_EXISTS = new ErrorCode(100_1001, "模板信息已存在");
|
||||
|
||||
ErrorCode PROMPT_TEMPLATESBACKUP_EXISTS = new ErrorCode(100_1002, "模板信息已备份");
|
||||
|
||||
ErrorCode PROMPT_TEMPLATES_BACKUP_NOT_EXISTS = new ErrorCode(101_1000, "Prompt模板备份不存在");
|
||||
|
||||
ErrorCode PROMPT_TEMPLATES_APPLICATIONS_NOT_EXISTS = new ErrorCode(10017, "模板信息不存在");
|
||||
|
||||
ErrorCode PROMPT_TEMPLATES_TAGS_NOT_EXISTS = new ErrorCode(10017, "模板信息不存在");
|
||||
|
@ -76,4 +76,12 @@ public class PromptTemplatesController {
|
||||
HttpServletResponse response) throws Exception {
|
||||
this.promptTemplatesService.exportPromptTemplatesExcel(pageReqVO, response);
|
||||
}
|
||||
|
||||
@PostMapping("/backup")
|
||||
@Operation(summary = "备份Prompt模板")
|
||||
@PreAuthorize("@ss.hasPermission('llm:prompt-templates:update')")
|
||||
public CommonResult<Boolean> backupPromptTemplates(@Valid @RequestBody PromptTemplatesSaveReqVO updateReqVO) {
|
||||
promptTemplatesService.backupPromptTemplates(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
}
|
@ -63,4 +63,10 @@ public class PromptTemplatesRespVO {
|
||||
@ExcelProperty("模板内容")
|
||||
private String templateText;
|
||||
|
||||
@Schema(description = "是否已备份")
|
||||
private Boolean isBackup;
|
||||
|
||||
@Schema(description = "备份模板Id")
|
||||
private Long backupId;
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,93 @@
|
||||
package cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
import java.io.IOException;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import cn.iocoder.yudao.module.llm.service.prompttemplatesbackup.PromptTemplatesBackupService;
|
||||
|
||||
@Tag(name = "管理后台 - Prompt模板备份")
|
||||
@RestController
|
||||
@RequestMapping("/llm/prompt-templates-backup")
|
||||
@Validated
|
||||
public class PromptTemplatesBackupController {
|
||||
|
||||
@Resource
|
||||
private PromptTemplatesBackupService promptTemplatesBackupService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建Prompt模板备份")
|
||||
@PreAuthorize("@ss.hasPermission('llm:prompt-templates-backup:create')")
|
||||
public CommonResult<Long> createPromptTemplatesBackup(@Valid @RequestBody PromptTemplatesBackupSaveReqVO createReqVO) {
|
||||
return success(promptTemplatesBackupService.createPromptTemplatesBackup(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新Prompt模板备份")
|
||||
@PreAuthorize("@ss.hasPermission('llm:prompt-templates-backup:update')")
|
||||
public CommonResult<Boolean> updatePromptTemplatesBackup(@Valid @RequestBody PromptTemplatesBackupSaveReqVO updateReqVO) {
|
||||
promptTemplatesBackupService.updatePromptTemplatesBackup(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除Prompt模板备份")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('llm:prompt-templates-backup:delete')")
|
||||
public CommonResult<Boolean> deletePromptTemplatesBackup(@RequestParam("id") Long id) {
|
||||
promptTemplatesBackupService.deletePromptTemplatesBackup(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得Prompt模板备份")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('llm:prompt-templates-backup:query')")
|
||||
public CommonResult<PromptTemplatesBackupRespVO> getPromptTemplatesBackup(@RequestParam("id") Long id) {
|
||||
return success(promptTemplatesBackupService.getPromptTemplatesBackup(id));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得Prompt模板备份分页")
|
||||
@PreAuthorize("@ss.hasPermission('llm:prompt-templates-backup:query')")
|
||||
public CommonResult<PageResult<PromptTemplatesBackupRespVO>> getPromptTemplatesBackupPage(@Valid PromptTemplatesBackupPageReqVO pageReqVO) {
|
||||
return success(promptTemplatesBackupService.getPromptTemplatesBackupPage(pageReqVO));
|
||||
}
|
||||
|
||||
// @GetMapping("/export-excel")
|
||||
// @Operation(summary = "导出Prompt模板备份 Excel")
|
||||
// @PreAuthorize("@ss.hasPermission('llm:prompt-templates-backup:export')")
|
||||
// @ApiAccessLog(operateType = EXPORT)
|
||||
// public void exportPromptTemplatesBackupExcel(@Valid PromptTemplatesBackupPageReqVO pageReqVO,
|
||||
// HttpServletResponse response) throws IOException {
|
||||
// pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
// List<PromptTemplatesBackupDO> list = promptTemplatesBackupService.getPromptTemplatesBackupPage(pageReqVO).getList();
|
||||
// // 导出 Excel
|
||||
// ExcelUtils.write(response, "Prompt模板备份.xls", "数据", PromptTemplatesBackupRespVO.class,
|
||||
// BeanUtils.toBean(list, PromptTemplatesBackupRespVO.class));
|
||||
// }
|
||||
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - Prompt模板备份分页 Request VO")
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class PromptTemplatesBackupPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "原模板Id", example = "31631")
|
||||
private Long srcId;
|
||||
|
||||
@Schema(description = "模板名称", example = "张三")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "模板分类")
|
||||
private Integer templateCategory;
|
||||
|
||||
@Schema(description = "模板框架")
|
||||
private Integer templateFramework;
|
||||
|
||||
@Schema(description = "模板内容")
|
||||
private String templateText;
|
||||
|
||||
@Schema(description = "变量标识符")
|
||||
private Integer variableIdentifier;
|
||||
|
||||
@Schema(description = "模板类型", example = "1")
|
||||
private Integer templateType;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
package cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.AbilityFramework;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.BriefFramework;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.SampleFramework;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
@Schema(description = "管理后台 - Prompt模板备份 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class PromptTemplatesBackupRespVO {
|
||||
|
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4054")
|
||||
@ExcelProperty("主键")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "原模板Id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31631")
|
||||
@ExcelProperty("原模板Id")
|
||||
private Long srcId;
|
||||
|
||||
@Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
||||
@ExcelProperty("模板名称")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "模板分类")
|
||||
@ExcelProperty("模板分类")
|
||||
private Integer templateCategory;
|
||||
|
||||
@Schema(description = "模板框架")
|
||||
@ExcelProperty("模板框架")
|
||||
private Integer templateFramework;
|
||||
|
||||
@Schema(description = "模板内容")
|
||||
@ExcelProperty("模板内容")
|
||||
private String templateText;
|
||||
|
||||
@Schema(description = "变量标识符")
|
||||
@ExcelProperty("变量标识符")
|
||||
private Integer variableIdentifier;
|
||||
|
||||
@Schema(description = "模板类型", example = "1")
|
||||
@ExcelProperty("模板类型")
|
||||
private Integer templateType;
|
||||
|
||||
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
@Schema(description = "使用量")
|
||||
@ExcelProperty("使用量")
|
||||
private int usedCount;
|
||||
|
||||
@Schema(description = "标签Id列表", example = "[1, 2, 3]")
|
||||
private List<String> tagIds;
|
||||
|
||||
@Schema(description = "应用Id列表", example = "[1, 2, 3]")
|
||||
private List<String> applicationIds;
|
||||
|
||||
@Schema(description = "关联应用")
|
||||
@ExcelProperty("关联应用")
|
||||
private int applicationCount;
|
||||
|
||||
@Schema(description = "简介框架")
|
||||
private BriefFramework briefFramework;
|
||||
|
||||
@Schema(description = "角色能力框架")
|
||||
private AbilityFramework abilityFramework;
|
||||
|
||||
@Schema(description = "角色能力框架")
|
||||
private SampleFramework sampleFramework;
|
||||
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
package cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - Prompt模板备份新增/修改 Request VO")
|
||||
@Data
|
||||
public class PromptTemplatesBackupSaveReqVO {
|
||||
|
||||
@Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4054")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "原模板Id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31631")
|
||||
@NotNull(message = "原模板Id不能为空")
|
||||
private Long srcId;
|
||||
|
||||
@Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
||||
@NotEmpty(message = "模板名称不能为空")
|
||||
private String name;
|
||||
|
||||
@Schema(description = "模板分类")
|
||||
private Integer templateCategory;
|
||||
|
||||
@Schema(description = "模板框架")
|
||||
private Integer templateFramework;
|
||||
|
||||
@Schema(description = "模板内容")
|
||||
private String templateText;
|
||||
|
||||
@Schema(description = "变量标识符")
|
||||
private Integer variableIdentifier;
|
||||
|
||||
@Schema(description = "模板类型", example = "1")
|
||||
private Integer templateType;
|
||||
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
|
||||
/**
|
||||
* Prompt模板备份 DO
|
||||
*
|
||||
* @author 华大大模型
|
||||
*/
|
||||
@TableName("llm_prompt_templates_backup")
|
||||
@KeySequence("llm_prompt_templates_backup_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PromptTemplatesBackupDO extends BaseDO {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 原模板Id
|
||||
*/
|
||||
private Long srcId;
|
||||
/**
|
||||
* 模板名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 模板分类
|
||||
*/
|
||||
private Integer templateCategory;
|
||||
/**
|
||||
* 模板框架
|
||||
*/
|
||||
private Integer templateFramework;
|
||||
/**
|
||||
* 模板内容
|
||||
*/
|
||||
private String templateText;
|
||||
/**
|
||||
* 变量标识符
|
||||
*/
|
||||
private Integer variableIdentifier;
|
||||
/**
|
||||
* 模板类型
|
||||
*/
|
||||
private Integer templateType;
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesbackup;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
|
||||
|
||||
/**
|
||||
* Prompt模板备份 Mapper
|
||||
*
|
||||
* @author 华大大模型
|
||||
*/
|
||||
@Mapper
|
||||
public interface PromptTemplatesBackupMapper extends BaseMapperX<PromptTemplatesBackupDO> {
|
||||
|
||||
default PageResult<PromptTemplatesBackupDO> selectPage(PromptTemplatesBackupPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<PromptTemplatesBackupDO>()
|
||||
.eqIfPresent(PromptTemplatesBackupDO::getSrcId, reqVO.getSrcId())
|
||||
.likeIfPresent(PromptTemplatesBackupDO::getName, reqVO.getName())
|
||||
.eqIfPresent(PromptTemplatesBackupDO::getTemplateCategory, reqVO.getTemplateCategory())
|
||||
.eqIfPresent(PromptTemplatesBackupDO::getTemplateFramework, reqVO.getTemplateFramework())
|
||||
.eqIfPresent(PromptTemplatesBackupDO::getTemplateText, reqVO.getTemplateText())
|
||||
.eqIfPresent(PromptTemplatesBackupDO::getVariableIdentifier, reqVO.getVariableIdentifier())
|
||||
.eqIfPresent(PromptTemplatesBackupDO::getTemplateType, reqVO.getTemplateType())
|
||||
.betweenIfPresent(PromptTemplatesBackupDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(PromptTemplatesBackupDO::getId));
|
||||
}
|
||||
|
||||
}
|
@ -18,4 +18,6 @@ public interface PromptTemplatesService {
|
||||
|
||||
void exportPromptTemplatesExcel(PromptTemplatesPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws Exception;
|
||||
|
||||
void backupPromptTemplates(@Valid PromptTemplatesSaveReqVO updateReqVO);
|
||||
}
|
@ -1,12 +1,15 @@
|
||||
package cn.iocoder.yudao.module.llm.service.prompttemplates;
|
||||
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.PromptTemplatesBackupSaveReqVO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.label.LabelDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesapplications.PromptTemplatesApplicationsDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatestags.PromptTemplatesTagsDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesapplications.PromptTemplatesApplicationsMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatestags.PromptTemplatesTagsMapper;
|
||||
import cn.iocoder.yudao.module.llm.service.label.LabelService;
|
||||
import cn.iocoder.yudao.module.llm.service.prompttemplatesbackup.PromptTemplatesBackupService;
|
||||
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@ -43,6 +46,8 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService {
|
||||
private DictDataApi dictDataApi;
|
||||
@Resource
|
||||
private LabelService labelService;
|
||||
@Resource
|
||||
private PromptTemplatesBackupService promptTemplatesBackupService;
|
||||
|
||||
@Override
|
||||
public Long createPromptTemplates(PromptTemplatesSaveReqVO createReqVO) {
|
||||
@ -244,6 +249,17 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService {
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
PromptTemplatesBackupDO backupDO = this.promptTemplatesBackupService.getPromptTemplatesBackupBySrcId(respVO.getId());
|
||||
if(backupDO == null) {
|
||||
respVO.setIsBackup(false);
|
||||
} else {
|
||||
respVO.setIsBackup(true);
|
||||
respVO.setBackupId(backupDO.getId());
|
||||
}
|
||||
} catch(Exception e) {
|
||||
respVO.setIsBackup(false);
|
||||
}
|
||||
}
|
||||
return pageRespList;
|
||||
}
|
||||
@ -278,4 +294,17 @@ public class PromptTemplatesServiceImpl implements PromptTemplatesService {
|
||||
ExcelUtils.write(response, "Prompt模板信息.xls", "数据",
|
||||
PromptTemplatesExcelVO.class, excelList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backupPromptTemplates(PromptTemplatesSaveReqVO updateReqVO) {
|
||||
PromptTemplatesDO templatesDo = this.promptTemplatesMapper.selectById(updateReqVO.getId());
|
||||
if(templatesDo == null) {
|
||||
throw exception(PROMPT_TEMPLATES_NOT_EXISTS);
|
||||
}
|
||||
this.promptTemplatesBackupService.isBackup(updateReqVO.getId());
|
||||
PromptTemplatesBackupSaveReqVO templatesBackupDo = BeanUtils.toBean(templatesDo, PromptTemplatesBackupSaveReqVO.class);
|
||||
templatesBackupDo.setId(null);
|
||||
templatesBackupDo.setSrcId(updateReqVO.getId());
|
||||
this.promptTemplatesBackupService.createPromptTemplatesBackup(templatesBackupDo);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,59 @@
|
||||
package cn.iocoder.yudao.module.llm.service.prompttemplatesbackup;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
|
||||
/**
|
||||
* Prompt模板备份 Service 接口
|
||||
*
|
||||
* @author 华大大模型
|
||||
*/
|
||||
public interface PromptTemplatesBackupService {
|
||||
|
||||
/**
|
||||
* 创建Prompt模板备份
|
||||
*
|
||||
* @param createReqVO 创建信息
|
||||
* @return 编号
|
||||
*/
|
||||
Long createPromptTemplatesBackup(@Valid PromptTemplatesBackupSaveReqVO createReqVO);
|
||||
|
||||
/**
|
||||
* 更新Prompt模板备份
|
||||
*
|
||||
* @param updateReqVO 更新信息
|
||||
*/
|
||||
void updatePromptTemplatesBackup(@Valid PromptTemplatesBackupSaveReqVO updateReqVO);
|
||||
|
||||
/**
|
||||
* 删除Prompt模板备份
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
void deletePromptTemplatesBackup(Long id);
|
||||
|
||||
/**
|
||||
* 获得Prompt模板备份
|
||||
*
|
||||
* @param id 编号
|
||||
* @return Prompt模板备份
|
||||
*/
|
||||
PromptTemplatesBackupRespVO getPromptTemplatesBackup(Long id);
|
||||
|
||||
/**
|
||||
* 获得Prompt模板备份分页
|
||||
*
|
||||
* @param pageReqVO 分页查询
|
||||
* @return Prompt模板备份分页
|
||||
*/
|
||||
PageResult<PromptTemplatesBackupRespVO> getPromptTemplatesBackupPage(PromptTemplatesBackupPageReqVO pageReqVO);
|
||||
|
||||
void isBackup(Long srcId);
|
||||
|
||||
PromptTemplatesBackupDO getPromptTemplatesBackupBySrcId(Long srcId);
|
||||
|
||||
}
|
@ -0,0 +1,179 @@
|
||||
package cn.iocoder.yudao.module.llm.service.prompttemplatesbackup;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.AbilityFramework;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.BriefFramework;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.PromptTemplatesRespVO;
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplates.vo.SampleFramework;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplates.PromptTemplatesDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesapplications.PromptTemplatesApplicationsDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatestags.PromptTemplatesTagsDO;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesapplications.PromptTemplatesApplicationsMapper;
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatestags.PromptTemplatesTagsMapper;
|
||||
import cn.iocoder.yudao.module.system.api.dict.DictDataApi;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.controller.admin.prompttemplatesbackup.vo.*;
|
||||
import cn.iocoder.yudao.module.llm.dal.dataobject.prompttemplatesbackup.PromptTemplatesBackupDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
import cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesbackup.PromptTemplatesBackupMapper;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* Prompt模板备份 Service 实现类
|
||||
*
|
||||
* @author 华大大模型
|
||||
*/
|
||||
@Service
|
||||
@Validated
|
||||
public class PromptTemplatesBackupServiceImpl implements PromptTemplatesBackupService {
|
||||
|
||||
@Resource
|
||||
private PromptTemplatesBackupMapper promptTemplatesBackupMapper;
|
||||
@Resource
|
||||
private PromptTemplatesTagsMapper promptTemplatesTagsMapper;
|
||||
@Resource
|
||||
private PromptTemplatesApplicationsMapper promptTemplatesApplicationsMapper;
|
||||
@Resource
|
||||
private DictDataApi dictDataApi;
|
||||
|
||||
@Override
|
||||
public Long createPromptTemplatesBackup(PromptTemplatesBackupSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
PromptTemplatesBackupDO promptTemplatesBackup = BeanUtils.toBean(createReqVO, PromptTemplatesBackupDO.class);
|
||||
promptTemplatesBackupMapper.insert(promptTemplatesBackup);
|
||||
// 返回
|
||||
return promptTemplatesBackup.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updatePromptTemplatesBackup(PromptTemplatesBackupSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validatePromptTemplatesBackupExists(updateReqVO.getId());
|
||||
// 更新
|
||||
PromptTemplatesBackupDO updateObj = BeanUtils.toBean(updateReqVO, PromptTemplatesBackupDO.class);
|
||||
promptTemplatesBackupMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deletePromptTemplatesBackup(Long id) {
|
||||
// 校验存在
|
||||
validatePromptTemplatesBackupExists(id);
|
||||
// 删除
|
||||
promptTemplatesBackupMapper.deleteById(id);
|
||||
}
|
||||
|
||||
private void validatePromptTemplatesBackupExists(Long id) {
|
||||
if (promptTemplatesBackupMapper.selectById(id) == null) {
|
||||
throw exception(PROMPT_TEMPLATES_BACKUP_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PromptTemplatesBackupRespVO getPromptTemplatesBackup(Long id) {
|
||||
PromptTemplatesBackupDO templatesDO = this.promptTemplatesBackupMapper.selectById(id);
|
||||
if(templatesDO == null) {
|
||||
return null;
|
||||
}
|
||||
PromptTemplatesBackupRespVO promptTemplates = BeanUtils.toBean(templatesDO, PromptTemplatesBackupRespVO.class);
|
||||
List<PromptTemplatesTagsDO> tagDOList = this.promptTemplatesTagsMapper
|
||||
.selectList("prompt_template_id", id);
|
||||
if(tagDOList!=null && !tagDOList.isEmpty()) {
|
||||
List<String> tagIds = tagDOList.stream()
|
||||
.map(p->p.getTagId().toString())
|
||||
.collect(Collectors.toList());
|
||||
promptTemplates.setTagIds(tagIds);
|
||||
}
|
||||
List<PromptTemplatesApplicationsDO> applicationDOList = this.promptTemplatesApplicationsMapper
|
||||
.selectList("prompt_template_id", id);
|
||||
if(applicationDOList!=null && !applicationDOList.isEmpty()) {
|
||||
List<String> applicationIds = applicationDOList.stream()
|
||||
.map(p->p.getApplicationId().toString())
|
||||
.collect(Collectors.toList());
|
||||
promptTemplates.setApplicationIds(applicationIds);
|
||||
}
|
||||
String categoryName = this.dictDataApi.getDictDataLabel("llm_prompt_template_framework",Integer.valueOf(templatesDO.getTemplateFramework()));
|
||||
switch (categoryName) {
|
||||
case "简介框架":
|
||||
promptTemplates.setBriefFramework(JSON.parseObject(promptTemplates
|
||||
.getTemplateText(), BriefFramework.class));
|
||||
promptTemplates.setTemplateText("");
|
||||
break;
|
||||
case "角色能力框架":
|
||||
promptTemplates.setAbilityFramework(JSON.parseObject(promptTemplates
|
||||
.getTemplateText(), AbilityFramework.class));
|
||||
promptTemplates.setTemplateText("");
|
||||
break;
|
||||
case "样例提示框架":
|
||||
promptTemplates.setSampleFramework(JSON.parseObject(promptTemplates
|
||||
.getTemplateText(), SampleFramework.class));
|
||||
promptTemplates.setTemplateText("");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return promptTemplates;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<PromptTemplatesBackupRespVO> getPromptTemplatesBackupPage(PromptTemplatesBackupPageReqVO pageReqVO) {
|
||||
PageResult<PromptTemplatesBackupDO> pageDoList = this.promptTemplatesBackupMapper.selectPage(pageReqVO);
|
||||
PageResult<PromptTemplatesBackupRespVO> pageRespList = BeanUtils.toBean(pageDoList, PromptTemplatesBackupRespVO.class);
|
||||
List<PromptTemplatesBackupRespVO> templatesRespList = pageRespList.getList();
|
||||
for(PromptTemplatesBackupRespVO respVO : templatesRespList) {
|
||||
// TODO 使用量查询暂时设置为0
|
||||
respVO.setUsedCount(0);
|
||||
try {
|
||||
List<PromptTemplatesTagsDO> tagDOList = this.promptTemplatesTagsMapper
|
||||
.selectList("prompt_template_id", respVO.getId());
|
||||
if(tagDOList!=null && !tagDOList.isEmpty()) {
|
||||
List<String> tagIds = tagDOList.stream()
|
||||
.map(p->p.getTagId().toString())
|
||||
.collect(Collectors.toList());
|
||||
respVO.setTagIds(tagIds);
|
||||
}
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
Long applicationCount = this.promptTemplatesApplicationsMapper.selectCount(
|
||||
new QueryWrapper<PromptTemplatesApplicationsDO>()
|
||||
.eq("prompt_template_id", respVO.getId()));
|
||||
respVO.setApplicationCount(Integer.parseInt(applicationCount.toString()));
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return pageRespList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void isBackup(Long srcId) {
|
||||
List<PromptTemplatesBackupDO> templateBackupDOList = this.promptTemplatesBackupMapper.selectList("src_id", srcId);
|
||||
if(templateBackupDOList!=null && !templateBackupDOList.isEmpty()) {
|
||||
throw exception(PROMPT_TEMPLATESBACKUP_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public PromptTemplatesBackupDO getPromptTemplatesBackupBySrcId(Long srcId) {
|
||||
List<PromptTemplatesBackupDO> templateBackupDOList = this.promptTemplatesBackupMapper.selectList("src_id", srcId);
|
||||
if(templateBackupDOList==null || templateBackupDOList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
return templateBackupDOList.get(0);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="cn.iocoder.yudao.module.llm.dal.mysql.prompttemplatesbackup.PromptTemplatesBackupMapper">
|
||||
|
||||
<!--
|
||||
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||
-->
|
||||
|
||||
</mapper>
|
Loading…
x
Reference in New Issue
Block a user