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 12 */
13 13 @AllArgsConstructor
14 14 @Getter
15   -public enum AiChatRoleClassifyEnum {
  15 +public enum AiChatRoleCategoryEnum {
16 16  
17 17 WRITING("writing", "写作"),
18 18  
... ... @@ -21,17 +21,17 @@ public enum AiChatRoleClassifyEnum {
21 21 ;
22 22  
23 23  
24   - private String classify;
  24 + private String category;
25 25  
26 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 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 20 */
21 21 @Tag(name = "A4-chat角色")
22 22 @RestController
23   -@RequestMapping("/ai/chat")
  23 +@RequestMapping("/ai/chat/role")
24 24 @Slf4j
25 25 @AllArgsConstructor
26 26 public class AiChatRoleController {
... ... @@ -28,37 +28,35 @@ public class AiChatRoleController {
28 28 private final AiChatRoleService chatRoleService;
29 29  
30 30 @Operation(summary = "chat角色 - 角色列表")
31   - @GetMapping("/role/list")
  31 + @GetMapping("/list")
32 32 public PageResult<AiChatRoleListRes> list(@Validated @ModelAttribute AiChatRoleListReq req) {
33 33 return chatRoleService.list(req);
34 34 }
35 35  
36 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 39 chatRoleService.add(req);
40 40 return CommonResult.success(null);
41 41 }
42 42  
43 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 47 return CommonResult.success(null);
49 48 }
50 49  
51 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 54 return CommonResult.success(null);
57 55 }
58 56  
59 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 60 chatRoleService.delete(id);
63 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 1 package cn.iocoder.yudao.module.ai.controller.admin.model.vo.role;
2 2  
3   -import cn.iocoder.yudao.framework.common.pojo.PageParam;
4 3 import io.swagger.v3.oas.annotations.media.Schema;
5 4 import jakarta.validation.constraints.NotNull;
6 5 import lombok.Data;
... ... @@ -14,21 +13,40 @@ import lombok.experimental.Accessors;
14 13 */
15 14 @Data
16 15 @Accessors(chain = true)
17   -public class AiChatRoleAddReq extends PageParam {
  16 +public class AiChatRoleAddReqVO {
18 17  
19 18 @NotNull
20 19 @Schema(description = "角色名,角色的显示名称")
21 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 25 @NotNull
28 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 44 @NotNull
32 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 14 */
15 15 @Data
16 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 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 14 */
15 15 @Data
16 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 24 @NotNull
20 25 @Schema(description = "角色名,角色的显示名称")
21 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 31 @NotNull
28 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 50 @NotNull
32 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 1 package cn.iocoder.yudao.module.ai.convert;
2 2  
3 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 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 7 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.AiChatRoleListRes;
8 8 import org.mapstruct.Mapper;
9 9 import org.mapstruct.factory.Mappers;
... ... @@ -36,7 +36,7 @@ public interface AiChatRoleConvert {
36 36 * @param req
37 37 * @return
38 38 */
39   - AiChatRoleDO convertAiChatRoleDO(AiChatRoleAddReq req);
  39 + AiChatRoleDO convertAiChatRoleDO(AiChatRoleAddReqVO req);
40 40  
41 41 /**
42 42 * 转换 - AiChatRoleDO
... ... @@ -44,7 +44,7 @@ public interface AiChatRoleConvert {
44 44 * @param req
45 45 * @return
46 46 */
47   - AiChatRoleDO convertAiChatRoleDO(AiChatRoleUpdateReq req);
  47 + AiChatRoleDO convertAiChatRoleDO(AiChatRoleUpdateReqVO req);
48 48  
49 49 /**
50 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 26 * @param req
27 27 * @return
28 28 */
29   - void add(AiChatRoleAddReq req);
  29 + void add(AiChatRoleAddReqVO req);
30 30  
31 31 /**
32 32 * chat角色 - 修改
33 33 *
34   - * @param id
35 34 * @param req
36 35 */
37   - void update(Long id, AiChatRoleUpdateReq req);
  36 + void update(AiChatRoleUpdateReqVO req);
38 37  
39 38  
40 39 /**
41 40 * chat角色 - 修改可见性
42 41 *
43   - * @param id
44 42 * @param req
45 43 */
46   - void updateEnable(Long id, AiChatRoleUpdateVisibilityReq req);
  44 + void updatePublicStatus(AiChatRoleUpdatePublicStatusReqVO req);
47 45  
48 46 /**
49 47 * chat角色 - 删除
... ...
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/service/impl/AiChatRoleServiceImpl.java
1 1 package cn.iocoder.yudao.module.ai.service.impl;
2 2  
3 3 import cn.hutool.core.util.StrUtil;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 5 import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
5 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 7 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
... ... @@ -9,9 +10,9 @@ import cn.iocoder.yudao.module.ai.ErrorCodeConstants;
9 10 import cn.iocoder.yudao.module.ai.controller.admin.model.vo.role.*;
10 11 import cn.iocoder.yudao.module.ai.convert.AiChatRoleConvert;
11 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 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 16 import cn.iocoder.yudao.module.ai.service.AiChatRoleService;
16 17 import lombok.AllArgsConstructor;
17 18 import lombok.extern.slf4j.Slf4j;
... ... @@ -31,6 +32,7 @@ import java.util.List;
31 32 public class AiChatRoleServiceImpl implements AiChatRoleService {
32 33  
33 34 private final AiChatRoleMapper aiChatRoleMapper;
  35 + private final AiChatModalService aiChatModalService;
34 36  
35 37 @Override
36 38 public PageResult<AiChatRoleListRes> list(AiChatRoleListReq req) {
... ... @@ -52,42 +54,43 @@ public class AiChatRoleServiceImpl implements AiChatRoleService {
52 54 }
53 55  
54 56 @Override
55   - public void add(AiChatRoleAddReq req) {
  57 + public void add(AiChatRoleAddReqVO req) {
56 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 62 // 转换do
60 63 AiChatRoleDO insertAiChatRoleDO = AiChatRoleConvert.INSTANCE.convertAiChatRoleDO(req);
61 64 insertAiChatRoleDO.setUserId(SecurityFrameworkUtils.getLoginUserId());
62   - insertAiChatRoleDO.setUseCount(0);
  65 + insertAiChatRoleDO.setStatus(CommonStatusEnum.ENABLE.getStatus());
63 66 // 保存
64 67 aiChatRoleMapper.insert(insertAiChatRoleDO);
65 68 }
66 69  
67 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 78 // 转换do
75 79 AiChatRoleDO updateChatRole = AiChatRoleConvert.INSTANCE.convertAiChatRoleDO(req);
76   - updateChatRole.setId(id);
  80 + updateChatRole.setId(req.getId());
77 81 aiChatRoleMapper.updateById(updateChatRole);
78 82 }
79 83  
80 84  
81 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  
... ...