互动:评论 / 投票 / 收藏 / 点赞 / 关注
互动能力挂载到任意内容主体(文章、沸点、评论等),通过 EntityType + EntityId 关联。
评论(CommentController,/api/cms/comments)
多级评论,支持系统级 / 用户级 / 内容级「可否评论」三重校验(ICommentService / ICommentManager)。
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | /valid-commentable | 当前是否处于可评论环境(系统开关) |
| GET | /subject-commentable | 指定主体(EntityType/EntityId)是否可评论 |
| GET | /query | 按主体分页查询评论列表 |
| GET | /{id} | 评论详情 |
| POST | / | 发表评论(CreateCommentReq,可指定根/回复) |
| DELETE | /{id} | 删除评论 |
投票(PollController,/api/cms/polls)
投票由 IPollService 管理,支持单选/多选、起止时间、选项计票。
| 方法 | 路由 | 说明 |
|---|---|---|
| POST | / | 创建投票(CreateUpdatePollReq,含选项) |
| PUT | /{id} | 更新投票 |
| DELETE | /{id} | 删除投票 |
| GET | /{id} | 投票详情 |
| GET | /public | 公开投票列表 |
| POST | /vote | 投票(PollId + 选项 Id 列表) |
| GET | /{id}/results | 计票结果(PollResultDto) |
| GET | /{pollId}/has-voted | 当前用户是否已投 |
管理端还可删除任意投票:
DELETE /api/cms/admin/polls/{id}(需CmsKit.Polls.*)。
收藏(BookmarkController,/api/cms/bookmarks)
收藏夹 + 收藏项两层(IBookmarkService / IBookmarkItemService)。content 接口对文章/沸点做收藏或取消(幂等切换)。
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | / | 收藏夹列表 |
| GET | /{id} | 收藏夹详情 |
| POST | / | 新建收藏夹(CreateUpdateBookmarkReq) |
| PUT | /{id} | 更新收藏夹 |
| DELETE | /{id} | 删除收藏夹 |
| POST | /content | 收藏/取消收藏某项内容(CreateCancelBookmarkItemReq) |
| GET | /users | 某收藏项的用户列表 |
点赞 / 踩(UserLikeController,/api/cms/user-like)
IUserLikeService 提供点赞与「踩」两类反馈,均为幂等切换(CreateOrCancelAsync / CreateOrCancelDislikeAsync)。
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | / | 点赞列表(可按 EntityType/EntityId 过滤) |
| POST | / | 点赞 / 取消点赞 |
| POST | /dislike | 踩 / 取消踩 |
微反应 Boost(BoostController,/api/cms/boost)
介于「点赞」与「评论」之间的轻量表情反应(BoostService / IBoostService),内容不超过若干字符。
| 方法 | 路由 | 说明 |
|---|---|---|
| POST | / | 创建/更新微反应(CreateBoostReq:SubjectId/SubjectType/Content) |
| DELETE | /{subjectId}/{subjectType} | 取消微反应 |
| GET | /list | 某主体的微反应列表 |
关注 / 粉丝(UserSubscribeController,/api/cms/user-subscribe)
IUserSubscribeService 维护用户间关注关系。
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | /{subscribeUserId} | 是否已关注该用户 |
| DELETE | /{subscribeUserId} | 取消关注 |
| POST | /{subscribeUserId} | 关注 |
| GET | / | 我的关注列表 |
| GET | /fans | 我的粉丝列表 |
| GET | /user/{userId} | 指定用户的关注列表 |
用户标签(UserTagController,/api/cms/user-tag)
用户可订阅标签,用于个性化推荐与聚合(IUserTagService)。
| 方法 | 路由 | 说明 |
|---|---|---|
| POST | /{tagId} | 订阅某标签 |
| DELETE | /{tagId} | 取消订阅 |
| GET | /subscribe-tags | 我订阅的标签 |
| GET | /subscribe-tag-users | 订阅了某标签的用户 |
互动日志(UserInteractionLogController,/api/cms/user-interaction-log)
IUserInteractionLogService / IUserInteractionLogManager 记录并统计用户行为(浏览、点赞等),供推荐与看板使用。
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | /list | 互动日志分页列表 |
| GET | /chart | 互动日志图表数据 |
开发示例
// 发表一条对文章的评论
await _commentService.CreateAsync(new CreateCommentReq
{
EntityType = nameof(Article),
EntityId = articleId,
Content = "写得很棒!"
});
// 给文章点赞(幂等)
await _userLikeService.CreateOrCancelAsync(new CreateUpdateUserLikeReq
{
SubjectType = /* Article */,
SubjectId = articleId
});