package validevents import ( "joybuywork/internal/repository/model" "joybuywork/internal/repository/mtype" "joybuywork/internal/service/provider/players" ) type quiz struct { base } func (s *quiz) Event(user *model.FissionUser) (targetNum int32, setHelp bool, err error) { player, err := players.NewQuiz(s.Ctx, user, players.SetCpn(s.cpn), players.SetDao(s.GetDao())) if err != nil { return } targetData, err := s._event(user, func(user *model.FissionUser, tasks []*model.FissionCampaignTask) (err error) { return player.FinishTask(tasks...) }) if err != nil { return } targetNum = targetData.targetNum return } func (s *quiz) Register(helper, beHelper *model.FissionUser) (setHelp bool, err error) { tasks, setHelp, err := s._getRegisterTasks(helper.CampaignID) if err != nil || len(tasks) == 0 { return } err = s._fixTaskDo(beHelper, tasks) if err != nil { return } return } func (s *quiz) Install(helper, beHelper *model.FissionUser) (setHelp bool, err error) { tasks, setHelp, err := s._getInstallTasks(helper.CampaignID) if err != nil || len(tasks) == 0 { return } err = s._fixTaskDo(beHelper, tasks) if err != nil { return } return } // 用户固定事件任务 func (s *quiz) _fixTaskDo(user *model.FissionUser, tasks []*model.FissionCampaignTask) (err error) { player, err := players.NewQuiz(s.Ctx, user, players.SetCpn(s.cpn), players.SetDao(s.GetDao())) if err != nil { return } for _, task := range tasks { switch task.PropMark { case mtype.FissionCampaignTaskPropMarkChance: err = s._taskEffectDo(user, task, func() (err error) { return player.FinishTask(task) }) if err != nil { return } } } return }