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,8 +22,9 @@ func buildDeps(db *gorm.DB, cfg *config.Config, siteSettings *config.SiteSetting
|
||||
// 域能系统
|
||||
energyRepo := repository.NewEnergyRepo(db)
|
||||
fundRepo := repository.NewFundRepo(db)
|
||||
energyService := service.NewEnergyService(db, energyRepo, nil, notificationService)
|
||||
energyService.SetFundRepo(fundRepo)
|
||||
energyRepo.SetFundStore(fundRepo) // 为跨仓库 Transaction 注入 FundStore
|
||||
energyService := service.NewEnergyService(energyRepo, nil, notificationService)
|
||||
energyService.SetFundRepo(fundRepo) // 只读查询
|
||||
|
||||
// 等级/签到/任务系统(链式注入域能服务)
|
||||
_, levelSvc, levelCtrl := buildDepsLevel(db, notificationService, authMdw)
|
||||
@ -72,18 +73,18 @@ func buildDeps(db *gorm.DB, cfg *config.Config, siteSettings *config.SiteSetting
|
||||
|
||||
// 赞/踩系统
|
||||
reactionRepo := repository.NewReactionRepo(db)
|
||||
reactionService := service.NewReactionService(db, reactionRepo)
|
||||
reactionService := service.NewReactionService(reactionRepo)
|
||||
reactionCtrl := controller.NewReactionController(reactionService)
|
||||
|
||||
// 关注系统
|
||||
followRepo := repository.NewFollowRepo(db)
|
||||
followService := service.NewFollowService(db, followRepo)
|
||||
followService := service.NewFollowService(followRepo)
|
||||
followService.SetNotifier(notificationService) // 关注通知
|
||||
followCtrl := controller.NewFollowController(followService)
|
||||
|
||||
// 收藏夹系统(需在 SpaceController 之前初始化)
|
||||
favoriteRepo := repository.NewFavoriteRepo(db)
|
||||
favoriteService := service.NewFavoriteService(db, favoriteRepo)
|
||||
favoriteService := service.NewFavoriteService(favoriteRepo)
|
||||
favoriteCtrl := controller.NewFavoriteController(favoriteService)
|
||||
|
||||
// 用户空间
|
||||
|
||||
Reference in New Issue
Block a user