package cn.iocoder.yudao.module.ai.controller.admin.model; import cn.hutool.core.util.ObjUtil; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRolePageReqVO; import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleRespVO; import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveMyReqVO; import cn.iocoder.yudao.module.ai.controller.admin.model.vo.chatRole.AiChatRoleSaveReqVO; import cn.iocoder.yudao.module.ai.dal.dataobject.model.AiChatRoleDO; import cn.iocoder.yudao.module.ai.service.model.AiChatRoleService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; @Tag(name = "管理后台 - AI 聊天角色") @RestController @RequestMapping("/ai/chat-role") @Validated public class AiChatRoleController { @Resource private AiChatRoleService chatRoleService; @GetMapping("/my-page") @Operation(summary = "获得【我的】聊天角色分页") public CommonResult> getChatRoleMyPage(@Valid AiChatRolePageReqVO pageReqVO) { PageResult pageResult = chatRoleService.getChatRoleMyPage(pageReqVO, getLoginUserId()); return success(BeanUtils.toBean(pageResult, AiChatRoleRespVO.class)); } @GetMapping("/get-my") @Operation(summary = "获得【我的】聊天角色") @Parameter(name = "id", description = "编号", required = true, example = "1024") public CommonResult getChatRoleMy(@RequestParam("id") Long id) { AiChatRoleDO chatRole = chatRoleService.getChatRole(id); if (ObjUtil.notEqual(chatRole.getUserId(), getLoginUserId())) { return success(null); } return success(BeanUtils.toBean(chatRole, AiChatRoleRespVO.class)); } @PostMapping("/create-my") @Operation(summary = "创建【我的】聊天角色") public CommonResult createChatRoleMy(@Valid @RequestBody AiChatRoleSaveMyReqVO createReqVO) { return success(chatRoleService.createChatRoleMy(createReqVO, getLoginUserId())); } @PutMapping("/update-my") @Operation(summary = "更新【我的】聊天角色") public CommonResult updateChatRoleMy(@Valid @RequestBody AiChatRoleSaveMyReqVO updateReqVO) { chatRoleService.updateChatRoleMy(updateReqVO, getLoginUserId()); return success(true); } @DeleteMapping("/delete-my") @Operation(summary = "删除【我的】聊天角色") @Parameter(name = "id", description = "编号", required = true) public CommonResult deleteChatRoleMy(@RequestParam("id") Long id) { chatRoleService.deleteChatRoleMy(id, getLoginUserId()); return success(true); } @GetMapping("/category-list") @Operation(summary = "获得聊天角色的分类列表") public CommonResult> getChatRoleCategoryList() { return success(chatRoleService.getChatRoleCategoryList()); } // ========== 角色管理 ========== @PostMapping("/create") @Operation(summary = "创建聊天角色") @PreAuthorize("@ss.hasPermission('ai:chat-role:create')") public CommonResult createChatRole(@Valid @RequestBody AiChatRoleSaveReqVO createReqVO) { return success(chatRoleService.createChatRole(createReqVO)); } @PutMapping("/update") @Operation(summary = "更新聊天角色") @PreAuthorize("@ss.hasPermission('ai:chat-role:update')") public CommonResult updateChatRole(@Valid @RequestBody AiChatRoleSaveReqVO updateReqVO) { chatRoleService.updateChatRole(updateReqVO); return success(true); } @DeleteMapping("/delete") @Operation(summary = "删除聊天角色") @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('ai:chat-role:delete')") public CommonResult deleteChatRole(@RequestParam("id") Long id) { chatRoleService.deleteChatRole(id); return success(true); } @GetMapping("/get") @Operation(summary = "获得聊天角色") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('ai:chat-role:query')") public CommonResult getChatRole(@RequestParam("id") Long id) { AiChatRoleDO chatRole = chatRoleService.getChatRole(id); return success(BeanUtils.toBean(chatRole, AiChatRoleRespVO.class)); } @GetMapping("/page") @Operation(summary = "获得聊天角色分页") @PreAuthorize("@ss.hasPermission('ai:chat-role:query')") public CommonResult> getChatRolePage(@Valid AiChatRolePageReqVO pageReqVO) { PageResult pageResult = chatRoleService.getChatRolePage(pageReqVO); return success(BeanUtils.toBean(pageResult, AiChatRoleRespVO.class)); } }