package svc import ( ea "github.com/earn-alliance/earnalliance-go" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/stores/sqlx" "nova_task/internal/config" "nova_task/internal/model" ) type ServiceContext struct { Config config.Config TaskModel model.NhTaskModel TaskAssetModel model.NhTaskAssetModel TaskAssetRecordModel model.NhTaskAssetRecordModel TaskProgressModel model.NhTaskProgressModel TwitterModel model.NhTwitterModel PromoteBindModel model.NhPromoteBindModel TouristBindModel model.NhTouristBindModel CommunityModel model.NhTaskCommunityModel UserModel model.NhUserModel WalletModel model.NhWalletModel ConfigModel model.NhSystemConfigModel Earn *ea.Client DBConn sqlx.SqlConn } func NewServiceContext(c config.Config) *ServiceContext { dbConn := c.MySql.Conn() return &ServiceContext{ Config: c, TaskModel: model.NewNhTaskModel(dbConn), TaskAssetModel: model.NewNhTaskAssetModel(dbConn), TaskAssetRecordModel: model.NewNhTaskAssetRecordModel(dbConn), TaskProgressModel: model.NewNhTaskProgressModel(dbConn), TwitterModel: model.NewNhTwitterModel(dbConn), PromoteBindModel: model.NewNhPromoteBindModel(dbConn), CommunityModel: model.NewNhTaskCommunityModel(dbConn), UserModel: model.NewNhUserModel(dbConn), TouristBindModel: model.NewNhTouristBindModel(dbConn), WalletModel: model.NewNhWalletModel(dbConn), ConfigModel: model.NewNhSystemConfigModel(dbConn, c.Cache), Earn: c.Earn.BuildEarnClient(), DBConn: dbConn, } } func (s *ServiceContext) Close() { err := s.Earn.Flush() if err != nil { logx.Errorw("flush earn error", logx.Field("err", err)) } s.Earn.Close() }