diff --git a/src/main/java/com/yolo/keyborad/controller/AiCompanionController.java b/src/main/java/com/yolo/keyborad/controller/AiCompanionController.java index 7e344b7..a979c2f 100644 --- a/src/main/java/com/yolo/keyborad/controller/AiCompanionController.java +++ b/src/main/java/com/yolo/keyborad/controller/AiCompanionController.java @@ -70,4 +70,15 @@ public class AiCompanionController { List result = aiCompanionService.getChattedCompanions(userId); return ResultUtils.success(result); } + + @GetMapping("/{companionId}") + @Operation(summary = "根据ID获取AI角色详情", description = "根据AI角色ID查询角色详细信息,包含点赞数、评论数和当前用户点赞状态") + public BaseResponse getCompanionById(@PathVariable Long companionId) { + if (companionId == null) { + throw new BusinessException(ErrorCode.COMPANION_ID_EMPTY); + } + Long userId = StpUtil.getLoginIdAsLong(); + AiCompanionVO result = aiCompanionService.getCompanionById(userId, companionId); + return ResultUtils.success(result); + } } diff --git a/src/main/java/com/yolo/keyborad/service/KeyboardAiCompanionService.java b/src/main/java/com/yolo/keyborad/service/KeyboardAiCompanionService.java index bfeeb70..8ebad84 100644 --- a/src/main/java/com/yolo/keyborad/service/KeyboardAiCompanionService.java +++ b/src/main/java/com/yolo/keyborad/service/KeyboardAiCompanionService.java @@ -55,4 +55,13 @@ public interface KeyboardAiCompanionService extends IService getChattedCompanions(Long userId); + + /** + * 根据ID获取AI角色详情(带点赞数、评论数和当前用户点赞状态) + * + * @param userId 当前用户ID + * @param companionId AI角色ID + * @return AI角色详情 + */ + AiCompanionVO getCompanionById(Long userId, Long companionId); } diff --git a/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiCompanionServiceImpl.java b/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiCompanionServiceImpl.java index 8989f77..fee1b69 100644 --- a/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiCompanionServiceImpl.java +++ b/src/main/java/com/yolo/keyborad/service/impl/KeyboardAiCompanionServiceImpl.java @@ -262,4 +262,39 @@ public class KeyboardAiCompanionServiceImpl extends ServiceImpl likeWrapper = new LambdaQueryWrapper<>(); + likeWrapper.eq(KeyboardAiCompanionLike::getCompanionId, companionId) + .eq(KeyboardAiCompanionLike::getStatus, (short) 1); + long likeCount = companionLikeService.count(likeWrapper); + + // 统计评论数 + LambdaQueryWrapper commentWrapper = new LambdaQueryWrapper<>(); + commentWrapper.eq(KeyboardAiCompanionComment::getCompanionId, companionId) + .eq(KeyboardAiCompanionComment::getStatus, (short) 1); + long commentCount = companionCommentService.count(commentWrapper); + + // 获取当前用户点赞状态 + boolean liked = companionLikeService.hasLiked(userId, companionId); + + // 转换为VO + AiCompanionVO vo = BeanUtil.copyProperties(companion, AiCompanionVO.class); + vo.setLikeCount((int) likeCount); + vo.setCommentCount((int) commentCount); + vo.setLiked(liked); + + return vo; + } }