Commit 31453e19d4a33296cae0395d5545391bb56b8ee2

Authored by YunaiV
1 parent 1676f671

【新增】AI:聊天角色管理(80%)

Showing 9 changed files with 27 additions and 30 deletions
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatModelController.java
@@ -78,7 +78,8 @@ public class AiChatModelController { @@ -78,7 +78,8 @@ public class AiChatModelController {
78 @Parameter(name = "status", description = "状态", required = true, example = "1") 78 @Parameter(name = "status", description = "状态", required = true, example = "1")
79 public CommonResult<List<AiChatModelRespVO>> getChatModelSimpleList(@RequestParam("status") Integer status) { 79 public CommonResult<List<AiChatModelRespVO>> getChatModelSimpleList(@RequestParam("status") Integer status) {
80 List<AiChatModelDO> list = chatModelService.getChatModelList(status); 80 List<AiChatModelDO> list = chatModelService.getChatModelList(status);
81 - return success(convertList(list, model -> new AiChatModelRespVO().setId(model.getId()).setName(model.getName()))); 81 + return success(convertList(list, model -> new AiChatModelRespVO().setId(model.getId())
  82 + .setName(model.getName()).setModel(model.getModel())));
82 } 83 }
83 84
84 } 85 }
85 \ No newline at end of file 86 \ No newline at end of file
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatRoleController.java
1 package cn.iocoder.yudao.module.ai.controller.admin.model; 1 package cn.iocoder.yudao.module.ai.controller.admin.model;
2 2
3 -import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;  
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 3 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 -import cn.iocoder.yudao.framework.common.pojo.PageParam;  
6 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
7 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
8 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRolePageReqVO;  
9 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleRespVO;  
10 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleSaveReqVO; 6 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRolePageReqVO;
  7 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleRespVO;
  8 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveReqVO;
11 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 9 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
12 import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService; 10 import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService;
13 import io.swagger.v3.oas.annotations.Operation; 11 import io.swagger.v3.oas.annotations.Operation;
14 import io.swagger.v3.oas.annotations.Parameter; 12 import io.swagger.v3.oas.annotations.Parameter;
15 import io.swagger.v3.oas.annotations.tags.Tag; 13 import io.swagger.v3.oas.annotations.tags.Tag;
16 import jakarta.annotation.Resource; 14 import jakarta.annotation.Resource;
17 -import jakarta.servlet.http.HttpServletResponse;  
18 import jakarta.validation.Valid; 15 import jakarta.validation.Valid;
19 import org.springframework.security.access.prepost.PreAuthorize; 16 import org.springframework.security.access.prepost.PreAuthorize;
20 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
21 import org.springframework.web.bind.annotation.*; 18 import org.springframework.web.bind.annotation.*;
22 19
23 -import java.io.IOException;  
24 -import java.util.List;  
25 -  
26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
27 21
28 @Tag(name = "管理后台 - AI 聊天角色") 22 @Tag(name = "管理后台 - AI 聊天角色")
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRolePageReqVO.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/chatRole/AiChatRolePageReqVO.java
1 -package cn.iocoder.yudao.module.ai.controller.admin.model.vo.role; 1 +package cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole;
2 2
3 import lombok.*; 3 import lombok.*;
4 -import java.util.*;  
5 import io.swagger.v3.oas.annotations.media.Schema; 4 import io.swagger.v3.oas.annotations.media.Schema;
6 import cn.iocoder.yudao.framework.common.pojo.PageParam; 5 import cn.iocoder.yudao.framework.common.pojo.PageParam;
7 -import org.springframework.format.annotation.DateTimeFormat;  
8 -import java.time.LocalDateTime;  
9 -  
10 -import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;  
11 6
12 @Schema(description = "管理后台 - AI 聊天角色分页 Request VO") 7 @Schema(description = "管理后台 - AI 聊天角色分页 Request VO")
13 @Data 8 @Data
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleRespVO.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/chatRole/AiChatRoleRespVO.java
1 -package cn.iocoder.yudao.module.ai.controller.admin.model.vo.role; 1 +package cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole;
2 2
  3 +import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatModelDO;
  4 +import com.fhs.core.trans.anno.Trans;
  5 +import com.fhs.core.trans.constant.TransType;
  6 +import com.fhs.core.trans.vo.VO;
3 import io.swagger.v3.oas.annotations.media.Schema; 7 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 8 import lombok.Data;
5 9
@@ -7,7 +11,7 @@ import java.time.LocalDateTime; @@ -7,7 +11,7 @@ import java.time.LocalDateTime;
7 11
8 @Schema(description = "管理后台 - AI 聊天角色 Response VO") 12 @Schema(description = "管理后台 - AI 聊天角色 Response VO")
9 @Data 13 @Data
10 -public class AiChatRoleRespVO { 14 +public class AiChatRoleRespVO implements VO {
11 15
12 @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32746") 16 @Schema(description = "角色编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "32746")
13 private Long id; 17 private Long id;
@@ -16,7 +20,12 @@ public class AiChatRoleRespVO { @@ -16,7 +20,12 @@ public class AiChatRoleRespVO {
16 private Long userId; 20 private Long userId;
17 21
18 @Schema(description = "模型编号", example = "17640") 22 @Schema(description = "模型编号", example = "17640")
  23 + @Trans(type = TransType.SIMPLE, target = AiChatModelDO.class, fields = {"name", "model"}, refs = {"modelName", "model"})
19 private Long modelId; 24 private Long modelId;
  25 + @Schema(description = "模型名字", example = "张三")
  26 + private String modelName;
  27 + @Schema(description = "模型标识", example = "gpt-3.5-turbo-0125")
  28 + private String model;
20 29
21 @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") 30 @Schema(description = "角色名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
22 private String name; 31 private String name;
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleSaveReqVO.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/chatRole/AiChatRoleSaveReqVO.java
1 -package cn.iocoder.yudao.module.ai.controller.admin.model.vo.role; 1 +package cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole;
2 2
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.validation.InEnum; 4 import cn.iocoder.yudao.framework.common.validation.InEnum;
5 import io.swagger.v3.oas.annotations.media.Schema; 5 import io.swagger.v3.oas.annotations.media.Schema;
6 import lombok.*; 6 import lombok.*;
7 -import java.util.*;  
8 import jakarta.validation.constraints.*; 7 import jakarta.validation.constraints.*;
  8 +import org.hibernate.validator.constraints.URL;
9 9
10 @Schema(description = "管理后台 - AI 聊天角色新增/修改 Request VO") 10 @Schema(description = "管理后台 - AI 聊天角色新增/修改 Request VO")
11 @Data 11 @Data
@@ -23,6 +23,7 @@ public class AiChatRoleSaveReqVO { @@ -23,6 +23,7 @@ public class AiChatRoleSaveReqVO {
23 23
24 @Schema(description = "角色头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png") 24 @Schema(description = "角色头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/1.png")
25 @NotEmpty(message = "角色头像不能为空") 25 @NotEmpty(message = "角色头像不能为空")
  26 + @URL(message = "角色头像必须是 URL 格式")
26 private String avatar; 27 private String avatar;
27 28
28 @Schema(description = "角色类别", requiredMode = Schema.RequiredMode.REQUIRED, example = "创作") 29 @Schema(description = "角色类别", requiredMode = Schema.RequiredMode.REQUIRED, example = "创作")
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/AiChatRoleMapper.java
@@ -3,10 +3,9 @@ package cn.iocoder.yudao.module.ai.dal.mysql; @@ -3,10 +3,9 @@ package cn.iocoder.yudao.module.ai.dal.mysql;
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRolePageReqVO; 6 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRolePageReqVO;
7 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 7 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
8 import org.apache.ibatis.annotations.Mapper; 8 import org.apache.ibatis.annotations.Mapper;
9 -import org.springframework.stereotype.Repository;  
10 9
11 /** 10 /**
12 * AI 聊天角色 Mapper 11 * AI 聊天角色 Mapper
@@ -21,7 +20,7 @@ public interface AiChatRoleMapper extends BaseMapperX&lt;AiChatRoleDO&gt; { @@ -21,7 +20,7 @@ public interface AiChatRoleMapper extends BaseMapperX&lt;AiChatRoleDO&gt; {
21 .likeIfPresent(AiChatRoleDO::getName, reqVO.getName()) 20 .likeIfPresent(AiChatRoleDO::getName, reqVO.getName())
22 .eqIfPresent(AiChatRoleDO::getCategory, reqVO.getCategory()) 21 .eqIfPresent(AiChatRoleDO::getCategory, reqVO.getCategory())
23 .eqIfPresent(AiChatRoleDO::getPublicStatus, reqVO.getPublicStatus()) 22 .eqIfPresent(AiChatRoleDO::getPublicStatus, reqVO.getPublicStatus())
24 - .orderByDesc(AiChatRoleDO::getId)); 23 + .orderByAsc(AiChatRoleDO::getSort));
25 } 24 }
26 25
27 } 26 }
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiChatModelServiceImpl.java
@@ -95,8 +95,7 @@ public class AiChatModelServiceImpl implements AiChatModelService { @@ -95,8 +95,7 @@ public class AiChatModelServiceImpl implements AiChatModelService {
95 95
96 @Override 96 @Override
97 public List<AiChatModelDO> getChatModelList(Integer status) { 97 public List<AiChatModelDO> getChatModelList(Integer status) {
98 - chatModelMapper.selectList(status);  
99 - return null; 98 + return chatModelMapper.selectList(status);
100 } 99 }
101 100
102 @Override 101 @Override
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiChatRoleService.java
1 package cn.iocoder.yudao.module.ai.service.model; 1 package cn.iocoder.yudao.module.ai.service.model;
2 2
3 import cn.iocoder.yudao.framework.common.pojo.PageResult; 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRolePageReqVO;  
5 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleSaveReqVO; 4 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRolePageReqVO;
  5 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveReqVO;
6 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 6 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
7 import jakarta.validation.Valid; 7 import jakarta.validation.Valid;
8 8
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/model/AiChatRoleServiceImpl.java
1 package cn.iocoder.yudao.module.ai.service.model; 1 package cn.iocoder.yudao.module.ai.service.model;
2 2
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 -import cn.iocoder.yudao.framework.common.pojo.CommonResult;  
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.common.util.object.BeanUtils; 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRolePageReqVO;  
8 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleSaveReqVO; 6 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRolePageReqVO;
  7 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveReqVO;
9 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 8 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
10 import cn.iocoder.yudao.module.ai.dal.mysql.AiChatRoleMapper; 9 import cn.iocoder.yudao.module.ai.dal.mysql.AiChatRoleMapper;
11 import jakarta.annotation.Resource; 10 import jakarta.annotation.Resource;