fix: Service 层移除直接持有的 *gorm.DB,引入 Repository Transaction 方法
- ReactionStore/FollowStore/EnergyStore/FavoriteStore 接口新增 Transaction 方法 - EnergyStore.Transaction 支持跨仓库事务(EnergyStore + FundStore) - ReactionRepo/FollowRepo/FavoriteRepo/EnergyRepo 实现 Transaction 方法 - ReactionRepo 新增 GetPostLikesCount 方法,消除 Service 直查 DB - ReactionService/FollowService/FavoriteService/EnergyService 移除 db 字段 - EnergyRepo 通过 SetFundStore 注入 FundStore 用于跨仓库事务 - 更新 deps_extra.go 构造函数调用
This commit is contained in:
@ -22,6 +22,22 @@ func (r *ReactionRepo) WithTx(tx *gorm.DB) service.ReactionStore {
|
||||
return &ReactionRepo{db: tx}
|
||||
}
|
||||
|
||||
// Transaction 在事务内执行业务逻辑
|
||||
func (r *ReactionRepo) Transaction(fn func(tx service.ReactionStore) error) error {
|
||||
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||
return fn(r.WithTx(tx))
|
||||
})
|
||||
}
|
||||
|
||||
// GetPostLikesCount 查询文章点赞数
|
||||
func (r *ReactionRepo) GetPostLikesCount(postID uint) (int, error) {
|
||||
var post model.Post
|
||||
if err := r.db.Select("likes_count").First(&post, postID).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return post.LikesCount, nil
|
||||
}
|
||||
|
||||
// FindLike 查找点赞记录
|
||||
func (r *ReactionRepo) FindLike(userID, postID uint) (*model.PostLike, error) {
|
||||
var like model.PostLike
|
||||
|
||||
Reference in New Issue
Block a user