From 2b7ad2ac810d1188a3a87d44915eb7f3bdc6a951 Mon Sep 17 00:00:00 2001 From: limin Date: Wed, 18 Dec 2024 17:04:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0app=20=E5=BA=94=E7=94=A8?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=20=E5=A2=9E=E5=88=A0=E6=94=B9=E6=9F=A5=20?= =?UTF-8?q?=E7=AE=80=E5=8D=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/llm/enums/ErrorCodeConstants.java | 3 + .../application/ApplicationController.java | 95 +++++++++++++++++++ .../application/vo/ApplicationPageReqVO.java | 21 ++++ .../application/vo/ApplicationRespVO.java | 78 +++++++++++++++ .../application/vo/ApplicationSaveReqVO.java | 57 +++++++++++ .../dataobject/application/ApplicationDO.java | 85 +++++++++++++++++ .../mysql/application/ApplicationMapper.java | 27 ++++++ .../application/ApplicationService.java | 55 +++++++++++ .../application/ApplicationServiceImpl.java | 78 +++++++++++++++ .../mapper/application/ApplicationMapper.xml | 12 +++ 10 files changed, 511 insertions(+) create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/ApplicationController.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationPageReqVO.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationRespVO.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationSaveReqVO.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/application/ApplicationDO.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/application/ApplicationMapper.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationService.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java create mode 100644 yudao-module-llm/yudao-module-llm-biz/src/main/resources/mapper/application/ApplicationMapper.xml diff --git a/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java b/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java index 28f40b855..320f073d0 100644 --- a/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java +++ b/yudao-module-llm/yudao-module-llm-api/src/main/java/cn/iocoder/yudao/module/llm/enums/ErrorCodeConstants.java @@ -12,4 +12,7 @@ public interface ErrorCodeConstants { ErrorCode LABEL_NOT_EXISTS = new ErrorCode(10004,"标签不存在"); ErrorCode FINE_TUNING_TASK_NOT_EXISTS = new ErrorCode(10005, "微调任务不存在"); + + ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(10005, "应用名称服务不存在"); + } diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/ApplicationController.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/ApplicationController.java new file mode 100644 index 000000000..682d1adbd --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/ApplicationController.java @@ -0,0 +1,95 @@ +package cn.iocoder.yudao.module.llm.controller.admin.application; + +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.application.vo.*; +import cn.iocoder.yudao.module.llm.dal.dataobject.application.ApplicationDO; +import cn.iocoder.yudao.module.llm.service.application.ApplicationService; + +@Tag(name = "管理后台 - 大模型应用") +@RestController +@RequestMapping("/llm/application") +@Validated +public class ApplicationController { + + @Resource + private ApplicationService applicationService; + + @PostMapping("/create") + @Operation(summary = "创建大模型应用") + @PreAuthorize("@ss.hasPermission('llm:application:create')") + public CommonResult createApplication(@Valid @RequestBody ApplicationSaveReqVO createReqVO) { + return success(applicationService.createApplication(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新大模型应用") + @PreAuthorize("@ss.hasPermission('llm:application:update')") + public CommonResult updateApplication(@Valid @RequestBody ApplicationSaveReqVO updateReqVO) { + applicationService.updateApplication(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除大模型应用") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('llm:application:delete')") + public CommonResult deleteApplication(@RequestParam("id") Long id) { + applicationService.deleteApplication(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得大模型应用") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('llm:application:query')") + public CommonResult getApplication(@RequestParam("id") Long id) { + ApplicationDO application = applicationService.getApplication(id); + return success(BeanUtils.toBean(application, ApplicationRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得大模型应用分页") + @PreAuthorize("@ss.hasPermission('llm:application:query')") + public CommonResult> getApplicationPage(@Valid ApplicationPageReqVO pageReqVO) { + PageResult pageResult = applicationService.getApplicationPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ApplicationRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出大模型应用 Excel") + @PreAuthorize("@ss.hasPermission('llm:application:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportApplicationExcel(@Valid ApplicationPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = applicationService.getApplicationPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "大模型应用.xls", "数据", ApplicationRespVO.class, + BeanUtils.toBean(list, ApplicationRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationPageReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationPageReqVO.java new file mode 100644 index 000000000..ddd163563 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationPageReqVO.java @@ -0,0 +1,21 @@ +package cn.iocoder.yudao.module.llm.controller.admin.application.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 = "管理后台 - 大模型应用分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class ApplicationPageReqVO extends PageParam { + + @Schema(description = "应用名称", example = "赵六") + private String appName; + +} \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationRespVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationRespVO.java new file mode 100644 index 000000000..b353b7842 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationRespVO.java @@ -0,0 +1,78 @@ +package cn.iocoder.yudao.module.llm.controller.admin.application.vo; + +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.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 大模型应用 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ApplicationRespVO { + + @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31452") + @ExcelProperty("应用ID") + private Long id; + + @Schema(description = "应用名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("应用名称") + private String appName; + + @Schema(description = "应用简介") + @ExcelProperty("应用简介") + private String appIntro; + + @Schema(description = "应用分类,使用字典(llm_application_category)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "应用分类,使用字典(llm_application_category)", converter = DictConvert.class) + @DictFormat("llm_application_category") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Long appCategory; + + @Schema(description = "应用标签,保存多个标签ID,用逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("应用标签,保存多个标签ID,用逗号分隔") + private String appLabel; + + @Schema(description = "模型服务,模型服务ID") + @ExcelProperty("模型服务,模型服务ID") + private Long appModel; + + @Schema(description = "随机性") + @ExcelProperty("随机性") + private Integer temperature; + + @Schema(description = "采样性") + @ExcelProperty("采样性") + private Integer topP; + + @Schema(description = "单次回复限制") + @ExcelProperty("单次回复限制") + private Integer maxTokens; + + @Schema(description = "系统Prompt") + @ExcelProperty("系统Prompt") + private String prompt; + + @Schema(description = "向量知识库,知识库ID") + @ExcelProperty("向量知识库,知识库ID") + private Long retrievalAugmentedGeneration; + + @Schema(description = "应用API地址", example = "https://www.iocoder.cn") + @ExcelProperty("应用API地址") + private String appUrl; + + @Schema(description = "应用图标") + @ExcelProperty("应用图标") + private String appLogo; + + @Schema(description = "聊天人次", example = "8556") + @ExcelProperty("聊天人次") + private Long chatCount; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationSaveReqVO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationSaveReqVO.java new file mode 100644 index 000000000..6048f0706 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/controller/admin/application/vo/ApplicationSaveReqVO.java @@ -0,0 +1,57 @@ +package cn.iocoder.yudao.module.llm.controller.admin.application.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; + +@Schema(description = "管理后台 - 大模型应用新增/修改 Request VO") +@Data +public class ApplicationSaveReqVO { + + @Schema(description = "应用ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "31452") + private Long id; + + @Schema(description = "应用名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "应用名称不能为空") + private String appName; + + @Schema(description = "应用简介") + private String appIntro; + + @Schema(description = "应用分类,使用字典(llm_application_category)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "应用分类,使用字典(llm_application_category)不能为空") + private Long appCategory; + + @Schema(description = "应用标签,保存多个标签ID,用逗号分隔", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "应用标签,保存多个标签ID,用逗号分隔不能为空") + private String appLabel; + + @Schema(description = "模型服务,模型服务ID") + private Long appModel; + + @Schema(description = "随机性") + private Integer temperature; + + @Schema(description = "采样性") + private Integer topP; + + @Schema(description = "单次回复限制") + private Integer maxTokens; + + @Schema(description = "系统Prompt") + private String prompt; + + @Schema(description = "向量知识库,知识库ID") + private Long retrievalAugmentedGeneration; + + @Schema(description = "应用API地址", example = "https://www.iocoder.cn") + private String appUrl; + + @Schema(description = "应用图标") + private String appLogo; + + @Schema(description = "聊天人次", example = "8556") + private Long chatCount; + +} \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/application/ApplicationDO.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/application/ApplicationDO.java new file mode 100644 index 000000000..389f57262 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/dataobject/application/ApplicationDO.java @@ -0,0 +1,85 @@ +package cn.iocoder.yudao.module.llm.dal.dataobject.application; + +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; + +/** + * 大模型应用 DO + * + * @author 华大大模型 + */ +@TableName("llm_application") +@KeySequence("llm_application_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ApplicationDO extends BaseDO { + + /** + * 应用ID + */ + @TableId + private Long id; + /** + * 应用名称 + */ + private String appName; + /** + * 应用简介 + */ + private String appIntro; + /** + * 应用分类,使用字典(llm_application_category) + * + * 枚举 {@link TODO llm_application_category 对应的类} + */ + private Long appCategory; + /** + * 应用标签,保存多个标签ID,用逗号分隔 + */ + private String appLabel; + /** + * 模型服务,模型服务ID + */ + private Long appModel; + /** + * 随机性 + */ + private Integer temperature; + /** + * 采样性 + */ + private Integer topP; + /** + * 单次回复限制 + */ + private Integer maxTokens; + /** + * 系统Prompt + */ + private String prompt; + /** + * 向量知识库,知识库ID + */ + private Long retrievalAugmentedGeneration; + /** + * 应用API地址 + */ + private String appUrl; + /** + * 应用图标 + */ + private String appLogo; + /** + * 聊天人次 + */ + private Long chatCount; + +} \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/application/ApplicationMapper.java b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/application/ApplicationMapper.java new file mode 100644 index 000000000..a82969236 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/dal/mysql/application/ApplicationMapper.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.llm.dal.mysql.application; + +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.application.ApplicationDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.llm.controller.admin.application.vo.*; + +/** + * 大模型应用 Mapper + * + * @author 华大大模型 + */ +@Mapper +public interface ApplicationMapper extends BaseMapperX { + + default PageResult selectPage(ApplicationPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(ApplicationDO::getAppName, reqVO.getAppName()) + .eq(ApplicationDO::getDeleted,false) + .orderByDesc(ApplicationDO::getId)); + } + +} \ No newline at end of file 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 new file mode 100644 index 000000000..979fddedf --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.llm.service.application; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.llm.controller.admin.application.vo.*; +import cn.iocoder.yudao.module.llm.dal.dataobject.application.ApplicationDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 大模型应用 Service 接口 + * + * @author 华大大模型 + */ +public interface ApplicationService { + + /** + * 创建大模型应用 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createApplication(@Valid ApplicationSaveReqVO createReqVO); + + /** + * 更新大模型应用 + * + * @param updateReqVO 更新信息 + */ + void updateApplication(@Valid ApplicationSaveReqVO updateReqVO); + + /** + * 删除大模型应用 + * + * @param id 编号 + */ + void deleteApplication(Long id); + + /** + * 获得大模型应用 + * + * @param id 编号 + * @return 大模型应用 + */ + ApplicationDO getApplication(Long id); + + /** + * 获得大模型应用分页 + * + * @param pageReqVO 分页查询 + * @return 大模型应用分页 + */ + PageResult getApplicationPage(ApplicationPageReqVO pageReqVO); + +} \ No newline at end of file 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 new file mode 100644 index 000000000..82e21c3e2 --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/java/cn/iocoder/yudao/module/llm/service/application/ApplicationServiceImpl.java @@ -0,0 +1,78 @@ +package cn.iocoder.yudao.module.llm.service.application; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +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 cn.iocoder.yudao.module.llm.controller.admin.application.vo.*; +import cn.iocoder.yudao.module.llm.dal.dataobject.application.ApplicationDO; +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.application.ApplicationMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.llm.enums.ErrorCodeConstants.*; + +/** + * 大模型应用 Service 实现类 + * + * @author 华大大模型 + */ +@Service +@Validated +public class ApplicationServiceImpl implements ApplicationService { + + @Resource + private ApplicationMapper applicationMapper; + + @Override + public Long createApplication(ApplicationSaveReqVO createReqVO) { + // 插入 + ApplicationDO application = BeanUtils.toBean(createReqVO, ApplicationDO.class); + applicationMapper.insert(application); + // 返回 + return application.getId(); + } + + @Override + public void updateApplication(ApplicationSaveReqVO updateReqVO) { + // 校验存在 + validateApplicationExists(updateReqVO.getId()); + // 更新 + ApplicationDO updateObj = BeanUtils.toBean(updateReqVO, ApplicationDO.class); + applicationMapper.updateById(updateObj); + } + + @Override + public void deleteApplication(Long id) { + // 校验存在 + validateApplicationExists(id); + // 删除 + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(ApplicationDO::getId, id) + .set(ApplicationDO::getDeleted,true); + applicationMapper.update(null, wrapper); + } + + private void validateApplicationExists(Long id) { + if (applicationMapper.selectById(id) == null) { + throw exception(APPLICATION_NOT_EXISTS); + } + } + + @Override + public ApplicationDO getApplication(Long id) { + return applicationMapper.selectById(id); + } + + @Override + public PageResult getApplicationPage(ApplicationPageReqVO pageReqVO) { + return applicationMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-llm/yudao-module-llm-biz/src/main/resources/mapper/application/ApplicationMapper.xml b/yudao-module-llm/yudao-module-llm-biz/src/main/resources/mapper/application/ApplicationMapper.xml new file mode 100644 index 000000000..d481237ba --- /dev/null +++ b/yudao-module-llm/yudao-module-llm-biz/src/main/resources/mapper/application/ApplicationMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file