package validevents import ( "joybuywork/internal/repository/model" "joybuywork/internal/repository/mtype" "joybuywork/internal/service/provider/players" ) type slot struct { base } func (s *slot) Event(user *model.FissionUser) (targetNum int32, setHelp bool, err error) { player, err := players.NewSlot(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 *slot) 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 *slot) 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 *slot) _fixTaskDo(user *model.FissionUser, tasks []*model.FissionCampaignTask) (err error) { player, err := players.NewSlot(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 }