feat: 实现赞/踩系统(P2)
- 新增 PostLike/PostDislike 模型,复合主键 (user_id, post_id) - Post 表新增 LikesCount/DislikesCount 冗余计数器 - Repository 层:reaction_repo.go,含 WithTx 事务支持 - Service 层:reaction_service.go,赞踩互斥逻辑(6 态切换),事务包裹 - Controller 层:reaction_controller.go,3 个 API(ToggleLike/ToggleDislike/GetReaction) - 接口定义:controller/interfaces.go 新增 reactionUseCase,service/repository.go 新增 ReactionStore - 路由注册 + 依赖注入 + AutoMigrate - 前端:文章详情页赞踩按钮 + 状态查询 + 401 跳转登录 - 样式:posts.css 新增赞踩按钮样式
This commit is contained in:
@ -153,3 +153,16 @@ type commentStore interface {
|
||||
type commentNotifier interface {
|
||||
Create(userID uint, notifyType, title, content string, relatedID, commentID *uint) error
|
||||
}
|
||||
|
||||
// ReactionStore ReactionService 所需的仓储接口(ISP)
|
||||
type ReactionStore interface {
|
||||
FindLike(userID, postID uint) (*model.PostLike, error)
|
||||
CreateLike(like *model.PostLike) error
|
||||
DeleteLike(userID, postID uint) error
|
||||
FindDislike(userID, postID uint) (*model.PostDislike, error)
|
||||
CreateDislike(dislike *model.PostDislike) error
|
||||
DeleteDislike(userID, postID uint) error
|
||||
IncrPostLikes(postID uint, delta int) error
|
||||
IncrPostDislikes(postID uint, delta int) error
|
||||
WithTx(tx *gorm.DB) ReactionStore
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user