Commit f0a1666e84609aeec284427cbec33042e97aee35

Authored by cherishsince
1 parent c124681c

【调整】调整AI角色模块

Showing 9 changed files with 114 additions and 100 deletions
yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/AiChatRoleClassifyEnum.java renamed to yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/AiChatRoleCategoryEnum.java
@@ -12,7 +12,7 @@ import lombok.Getter; @@ -12,7 +12,7 @@ import lombok.Getter;
12 */ 12 */
13 @AllArgsConstructor 13 @AllArgsConstructor
14 @Getter 14 @Getter
15 -public enum AiChatRoleClassifyEnum { 15 +public enum AiChatRoleCategoryEnum {
16 16
17 WRITING("writing", "写作"), 17 WRITING("writing", "写作"),
18 18
@@ -21,17 +21,17 @@ public enum AiChatRoleClassifyEnum { @@ -21,17 +21,17 @@ public enum AiChatRoleClassifyEnum {
21 ; 21 ;
22 22
23 23
24 - private String classify; 24 + private String category;
25 25
26 private String name; 26 private String name;
27 27
28 28
29 - public static AiChatRoleClassifyEnum valueOfClassify(String classify) {  
30 - for (AiChatRoleClassifyEnum itemEnum : AiChatRoleClassifyEnum.values()) {  
31 - if (itemEnum.getClassify().equals(classify)) { 29 + public static AiChatRoleCategoryEnum valueOfCategory(String category) {
  30 + for (AiChatRoleCategoryEnum itemEnum : AiChatRoleCategoryEnum.values()) {
  31 + if (itemEnum.getCategory().equals(category)) {
32 return itemEnum; 32 return itemEnum;
33 } 33 }
34 } 34 }
35 - throw new IllegalArgumentException("Invalid MessageType value: " + classify); 35 + throw new IllegalArgumentException("Invalid MessageType value: " + category);
36 } 36 }
37 } 37 }
yudao-module-ai/yudao-module-ai-api/src/main/java/cn/iocoder/yudao/module/ai/enums/AiChatRoleEnableEnum.java deleted
1 -package cn.iocoder.yudao.module.ai.enums;  
2 -  
3 -import lombok.AllArgsConstructor;  
4 -import lombok.Getter;  
5 -  
6 -/**  
7 - * chat角色 可见范围  
8 - *  
9 - * @author fansili  
10 - * @time 2024/4/24 16:44  
11 - * @since 1.0  
12 - */  
13 -@AllArgsConstructor  
14 -@Getter  
15 -public enum AiChatRoleEnableEnum {  
16 -  
17 - OPEN("open", "公开"),  
18 - CLOSE("close", "关闭"),  
19 -  
20 - ;  
21 -  
22 - private String type;  
23 -  
24 - private String name;  
25 -  
26 -  
27 - public static AiChatRoleEnableEnum valueOfType(String type) {  
28 - for (AiChatRoleEnableEnum itemEnum : AiChatRoleEnableEnum.values()) {  
29 - if (itemEnum.getType().equals(type)) {  
30 - return itemEnum;  
31 - }  
32 - }  
33 - throw new IllegalArgumentException("Invalid MessageType value: " + type);  
34 - }  
35 -  
36 -}  
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/AiChatRoleController.java
@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*; @@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
20 */ 20 */
21 @Tag(name = "A4-chat角色") 21 @Tag(name = "A4-chat角色")
22 @RestController 22 @RestController
23 -@RequestMapping("/ai/chat") 23 +@RequestMapping("/ai/chat/role")
24 @Slf4j 24 @Slf4j
25 @AllArgsConstructor 25 @AllArgsConstructor
26 public class AiChatRoleController { 26 public class AiChatRoleController {
@@ -28,37 +28,35 @@ public class AiChatRoleController { @@ -28,37 +28,35 @@ public class AiChatRoleController {
28 private final AiChatRoleService chatRoleService; 28 private final AiChatRoleService chatRoleService;
29 29
30 @Operation(summary = "chat角色 - 角色列表") 30 @Operation(summary = "chat角色 - 角色列表")
31 - @GetMapping("/role/list") 31 + @GetMapping("/list")
32 public PageResult<AiChatRoleListRes> list(@Validated @ModelAttribute AiChatRoleListReq req) { 32 public PageResult<AiChatRoleListRes> list(@Validated @ModelAttribute AiChatRoleListReq req) {
33 return chatRoleService.list(req); 33 return chatRoleService.list(req);
34 } 34 }
35 35
36 @Operation(summary = "chat角色 - 添加") 36 @Operation(summary = "chat角色 - 添加")
37 - @PutMapping("/role")  
38 - public CommonResult<Void> add(@Validated @RequestBody AiChatRoleAddReq req) { 37 + @PutMapping("/add")
  38 + public CommonResult<Void> add(@Validated @RequestBody AiChatRoleAddReqVO req) {
39 chatRoleService.add(req); 39 chatRoleService.add(req);
40 return CommonResult.success(null); 40 return CommonResult.success(null);
41 } 41 }
42 42
43 @Operation(summary = "chat角色 - 修改") 43 @Operation(summary = "chat角色 - 修改")
44 - @PostMapping("/role/{id}")  
45 - public CommonResult<Void> update(@PathVariable("id") Long id,  
46 - @Validated @RequestBody AiChatRoleUpdateReq req) {  
47 - chatRoleService.update(id, req); 44 + @PostMapping("/update")
  45 + public CommonResult<Void> update(@Validated @RequestBody AiChatRoleUpdateReqVO req) {
  46 + chatRoleService.update(req);
48 return CommonResult.success(null); 47 return CommonResult.success(null);
49 } 48 }
50 49
51 @Operation(summary = "chat角色 - 修改可见性") 50 @Operation(summary = "chat角色 - 修改可见性")
52 - @PostMapping("/role/{id}/update-enable")  
53 - public CommonResult<Void> updateEnable(@PathVariable("id") Long id,  
54 - @Validated @RequestBody AiChatRoleUpdateVisibilityReq req) {  
55 - chatRoleService.updateEnable(id, req); 51 + @PostMapping("/update-public-status")
  52 + public CommonResult<Void> updatePublicStatus(@Validated @RequestBody AiChatRoleUpdatePublicStatusReqVO req) {
  53 + chatRoleService.updatePublicStatus(req);
56 return CommonResult.success(null); 54 return CommonResult.success(null);
57 } 55 }
58 56
59 @Operation(summary = "chat角色 - 删除") 57 @Operation(summary = "chat角色 - 删除")
60 - @DeleteMapping("/role/{id}")  
61 - public CommonResult<Void> delete(@PathVariable("id") Long id) { 58 + @DeleteMapping("/delete")
  59 + public CommonResult<Void> delete(@RequestParam("id") Long id) {
62 chatRoleService.delete(id); 60 chatRoleService.delete(id);
63 return CommonResult.success(null); 61 return CommonResult.success(null);
64 } 62 }
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleAddReq.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleAddReqVO.java
1 package cn.iocoder.yudao.module.ai.controller.admin.model.vo.role; 1 package cn.iocoder.yudao.module.ai.controller.admin.model.vo.role;
2 2
3 -import cn.iocoder.yudao.framework.common.pojo.PageParam;  
4 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
5 import jakarta.validation.constraints.NotNull; 4 import jakarta.validation.constraints.NotNull;
6 import lombok.Data; 5 import lombok.Data;
@@ -14,21 +13,40 @@ import lombok.experimental.Accessors; @@ -14,21 +13,40 @@ import lombok.experimental.Accessors;
14 */ 13 */
15 @Data 14 @Data
16 @Accessors(chain = true) 15 @Accessors(chain = true)
17 -public class AiChatRoleAddReq extends PageParam { 16 +public class AiChatRoleAddReqVO {
18 17
19 @NotNull 18 @NotNull
20 @Schema(description = "角色名,角色的显示名称") 19 @Schema(description = "角色名,角色的显示名称")
21 private String name; 20 private String name;
22 21
23 - @NotNull  
24 - @Schema(description = "角色介绍,详细描述角色的功能或用途")  
25 - private String introduce; 22 + @Schema(description = "头像")
  23 + private String avatar;
26 24
27 @NotNull 25 @NotNull
28 @Schema(description = "分类,角色所属的类别,如娱乐、创作等") 26 @Schema(description = "分类,角色所属的类别,如娱乐、创作等")
29 - private String classify; 27 + private String category;
  28 +
  29 + @NotNull
  30 + @Schema(description = "角色描述")
  31 + private String description;
  32 +
  33 + @Schema(description = "角色欢迎语")
  34 + private String welcomeMessage;
  35 +
  36 + @NotNull
  37 + @Schema(description = "角色设定(消息)")
  38 + private String systemMessage;
  39 +
  40 + @NotNull
  41 + @Schema(description = "模型编号")
  42 + private Long modelId;
30 43
31 @NotNull 44 @NotNull
32 @Schema(description = "开启状态 open、close") 45 @Schema(description = "开启状态 open、close")
33 - private String enable; 46 + private Boolean publicStatus;
  47 +
  48 + @NotNull
  49 + @Schema(description = "排序")
  50 + private Integer sort;
  51 +
34 } 52 }
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleUpdateVisibilityReq.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleUpdatePublicStatusReqVO.java
@@ -14,9 +14,14 @@ import lombok.experimental.Accessors; @@ -14,9 +14,14 @@ import lombok.experimental.Accessors;
14 */ 14 */
15 @Data 15 @Data
16 @Accessors(chain = true) 16 @Accessors(chain = true)
17 -public class AiChatRoleUpdateVisibilityReq extends PageParam { 17 +public class AiChatRoleUpdatePublicStatusReqVO extends PageParam {
18 18
19 - @NotNull 19 +
  20 + @NotNull(message = "角色编号不能为空")
  21 + @Schema(description = "角色编号")
  22 + private Long id;
  23 +
  24 + @NotNull(message = "开启状态不能为空")
20 @Schema(description = "开启状态 open、close") 25 @Schema(description = "开启状态 open、close")
21 - private String enable; 26 + private Boolean publicStatus;
22 } 27 }
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleUpdateReq.java renamed to yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/controller/admin/model/vo/role/AiChatRoleUpdateReqVO.java
@@ -14,21 +14,49 @@ import lombok.experimental.Accessors; @@ -14,21 +14,49 @@ import lombok.experimental.Accessors;
14 */ 14 */
15 @Data 15 @Data
16 @Accessors(chain = true) 16 @Accessors(chain = true)
17 -public class AiChatRoleUpdateReq extends PageParam { 17 +public class AiChatRoleUpdateReqVO extends PageParam {
  18 +
  19 +
  20 + @NotNull(message = "角色编号不能为空")
  21 + @Schema(description = "角色编号")
  22 + private Long id;
18 23
19 @NotNull 24 @NotNull
20 @Schema(description = "角色名,角色的显示名称") 25 @Schema(description = "角色名,角色的显示名称")
21 private String name; 26 private String name;
22 27
23 - @NotNull  
24 - @Schema(description = "角色介绍,详细描述角色的功能或用途")  
25 - private String introduce; 28 + @Schema(description = "头像")
  29 + private String avatar;
26 30
27 @NotNull 31 @NotNull
28 @Schema(description = "分类,角色所属的类别,如娱乐、创作等") 32 @Schema(description = "分类,角色所属的类别,如娱乐、创作等")
29 - private String classify; 33 + private String category;
  34 +
  35 + @NotNull
  36 + @Schema(description = "角色描述")
  37 + private String description;
  38 +
  39 + @Schema(description = "角色欢迎语")
  40 + private String welcomeMessage;
  41 +
  42 + @NotNull
  43 + @Schema(description = "角色设定(消息)")
  44 + private String systemMessage;
  45 +
  46 + @NotNull
  47 + @Schema(description = "模型编号")
  48 + private Long modelId;
30 49
31 @NotNull 50 @NotNull
32 @Schema(description = "开启状态 open、close") 51 @Schema(description = "开启状态 open、close")
33 - private String enable; 52 + private Boolean publicStatus;
  53 +
  54 + @NotNull
  55 + @Schema(description = "排序")
  56 + private Integer sort;
  57 +
  58 + @NotNull
  59 + @Schema(description = "状态")
  60 + private Integer status;
  61 +
34 } 62 }
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/convert/AiChatRoleConvert.java
1 package cn.iocoder.yudao.module.ai.convert; 1 package cn.iocoder.yudao.module.ai.convert;
2 2
3 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 3 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
4 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleAddReq; 4 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleAddReqVO;
5 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleRes; 5 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleRes;
6 -import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleUpdateReq; 6 +import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleUpdateReqVO;
7 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleListRes; 7 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleListRes;
8 import org.mapstruct.Mapper; 8 import org.mapstruct.Mapper;
9 import org.mapstruct.factory.Mappers; 9 import org.mapstruct.factory.Mappers;
@@ -36,7 +36,7 @@ public interface AiChatRoleConvert { @@ -36,7 +36,7 @@ public interface AiChatRoleConvert {
36 * @param req 36 * @param req
37 * @return 37 * @return
38 */ 38 */
39 - AiChatRoleDO convertAiChatRoleDO(AiChatRoleAddReq req); 39 + AiChatRoleDO convertAiChatRoleDO(AiChatRoleAddReqVO req);
40 40
41 /** 41 /**
42 * 转换 - AiChatRoleDO 42 * 转换 - AiChatRoleDO
@@ -44,7 +44,7 @@ public interface AiChatRoleConvert { @@ -44,7 +44,7 @@ public interface AiChatRoleConvert {
44 * @param req 44 * @param req
45 * @return 45 * @return
46 */ 46 */
47 - AiChatRoleDO convertAiChatRoleDO(AiChatRoleUpdateReq req); 47 + AiChatRoleDO convertAiChatRoleDO(AiChatRoleUpdateReqVO req);
48 48
49 /** 49 /**
50 * 转换 - AiChatRoleRes 50 * 转换 - AiChatRoleRes
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/AiChatRoleService.java
@@ -26,24 +26,22 @@ public interface AiChatRoleService { @@ -26,24 +26,22 @@ public interface AiChatRoleService {
26 * @param req 26 * @param req
27 * @return 27 * @return
28 */ 28 */
29 - void add(AiChatRoleAddReq req); 29 + void add(AiChatRoleAddReqVO req);
30 30
31 /** 31 /**
32 * chat角色 - 修改 32 * chat角色 - 修改
33 * 33 *
34 - * @param id  
35 * @param req 34 * @param req
36 */ 35 */
37 - void update(Long id, AiChatRoleUpdateReq req); 36 + void update(AiChatRoleUpdateReqVO req);
38 37
39 38
40 /** 39 /**
41 * chat角色 - 修改可见性 40 * chat角色 - 修改可见性
42 * 41 *
43 - * @param id  
44 * @param req 42 * @param req
45 */ 43 */
46 - void updateEnable(Long id, AiChatRoleUpdateVisibilityReq req); 44 + void updatePublicStatus(AiChatRoleUpdatePublicStatusReqVO req);
47 45
48 /** 46 /**
49 * chat角色 - 删除 47 * chat角色 - 删除
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatRoleServiceImpl.java
1 package cn.iocoder.yudao.module.ai.service.impl; 1 package cn.iocoder.yudao.module.ai.service.impl;
2 2
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil; 5 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; 7 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
@@ -9,9 +10,9 @@ import cn.iocoder.yudao.module.ai.ErrorCodeConstants; @@ -9,9 +10,9 @@ import cn.iocoder.yudao.module.ai.ErrorCodeConstants;
9 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.*; 10 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.*;
10 import cn.iocoder.yudao.module.ai.convert.AiChatRoleConvert; 11 import cn.iocoder.yudao.module.ai.convert.AiChatRoleConvert;
11 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; 12 import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO;
12 -import cn.iocoder.yudao.module.ai.enums.AiChatRoleClassifyEnum;  
13 -import cn.iocoder.yudao.module.ai.enums.AiChatRoleEnableEnum;  
14 import cn.iocoder.yudao.module.ai.dal.mysql.AiChatRoleMapper; 13 import cn.iocoder.yudao.module.ai.dal.mysql.AiChatRoleMapper;
  14 +import cn.iocoder.yudao.module.ai.enums.AiChatRoleCategoryEnum;
  15 +import cn.iocoder.yudao.module.ai.service.AiChatModalService;
15 import cn.iocoder.yudao.module.ai.service.AiChatRoleService; 16 import cn.iocoder.yudao.module.ai.service.AiChatRoleService;
16 import lombok.AllArgsConstructor; 17 import lombok.AllArgsConstructor;
17 import lombok.extern.slf4j.Slf4j; 18 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +32,7 @@ import java.util.List; @@ -31,6 +32,7 @@ import java.util.List;
31 public class AiChatRoleServiceImpl implements AiChatRoleService { 32 public class AiChatRoleServiceImpl implements AiChatRoleService {
32 33
33 private final AiChatRoleMapper aiChatRoleMapper; 34 private final AiChatRoleMapper aiChatRoleMapper;
  35 + private final AiChatModalService aiChatModalService;
34 36
35 @Override 37 @Override
36 public PageResult<AiChatRoleListRes> list(AiChatRoleListReq req) { 38 public PageResult<AiChatRoleListRes> list(AiChatRoleListReq req) {
@@ -52,42 +54,43 @@ public class AiChatRoleServiceImpl implements AiChatRoleService { @@ -52,42 +54,43 @@ public class AiChatRoleServiceImpl implements AiChatRoleService {
52 } 54 }
53 55
54 @Override 56 @Override
55 - public void add(AiChatRoleAddReq req) { 57 + public void add(AiChatRoleAddReqVO req) {
56 // 转换enum,并校验enum 58 // 转换enum,并校验enum
57 - AiChatRoleClassifyEnum.valueOfClassify(req.getClassify());  
58 - AiChatRoleEnableEnum.valueOfType(req.getEnable()); 59 + AiChatRoleCategoryEnum.valueOfCategory(req.getCategory());
  60 + // 校验模型是否存在
  61 + aiChatModalService.validateExists(req.getModelId());
59 // 转换do 62 // 转换do
60 AiChatRoleDO insertAiChatRoleDO = AiChatRoleConvert.INSTANCE.convertAiChatRoleDO(req); 63 AiChatRoleDO insertAiChatRoleDO = AiChatRoleConvert.INSTANCE.convertAiChatRoleDO(req);
61 insertAiChatRoleDO.setUserId(SecurityFrameworkUtils.getLoginUserId()); 64 insertAiChatRoleDO.setUserId(SecurityFrameworkUtils.getLoginUserId());
62 - insertAiChatRoleDO.setUseCount(0); 65 + insertAiChatRoleDO.setStatus(CommonStatusEnum.ENABLE.getStatus());
63 // 保存 66 // 保存
64 aiChatRoleMapper.insert(insertAiChatRoleDO); 67 aiChatRoleMapper.insert(insertAiChatRoleDO);
65 } 68 }
66 69
67 @Override 70 @Override
68 - public void update(Long id, AiChatRoleUpdateReq req) {  
69 - // 转换enum,并校验enum  
70 - AiChatRoleClassifyEnum.valueOfClassify(req.getClassify());  
71 - AiChatRoleEnableEnum.valueOfType(req.getEnable()); 71 + public void update(AiChatRoleUpdateReqVO req) {
72 // 检查角色是否存在 72 // 检查角色是否存在
73 - validateExists(id); 73 + validateExists(req.getId());
  74 + // 转换enum,并校验enum
  75 + AiChatRoleCategoryEnum.valueOfCategory(req.getCategory());
  76 + // 校验模型是否存在
  77 + aiChatModalService.validateExists(req.getModelId());
74 // 转换do 78 // 转换do
75 AiChatRoleDO updateChatRole = AiChatRoleConvert.INSTANCE.convertAiChatRoleDO(req); 79 AiChatRoleDO updateChatRole = AiChatRoleConvert.INSTANCE.convertAiChatRoleDO(req);
76 - updateChatRole.setId(id); 80 + updateChatRole.setId(req.getId());
77 aiChatRoleMapper.updateById(updateChatRole); 81 aiChatRoleMapper.updateById(updateChatRole);
78 } 82 }
79 83
80 84
81 @Override 85 @Override
82 - public void updateEnable(Long id, AiChatRoleUpdateVisibilityReq req) {  
83 - // 转换enum,并校验enum  
84 - AiChatRoleEnableEnum.valueOfType(req.getEnable()); 86 + public void updatePublicStatus(AiChatRoleUpdatePublicStatusReqVO req) {
85 // 检查角色是否存在 87 // 检查角色是否存在
86 - validateExists(id); 88 + validateExists(req.getId());
87 // 更新 89 // 更新
88 - aiChatRoleMapper.updateById(new AiChatRoleDO()  
89 - .setId(id)  
90 - .setEnable(req.getEnable()) 90 + aiChatRoleMapper.updateById(
  91 + new AiChatRoleDO()
  92 + .setId(req.getId())
  93 + .setPublicStatus(req.getPublicStatus())
91 ); 94 );
92 } 95 }
93 96