package service import ( "blazing/cool" "blazing/modules/player/model" "context" "github.com/pointernil/bitset32" ) func (s *TaskService) CanShop() bool { var gg *model.Task s.dbm(s.Model).Where("task_id", 500).Scan(&gg) if gg == nil { return false } r := bitset32.From(gg.Data) // 分支未完成时,标记完成并发放奖励 if !r.Test(70) { return false } var ggg *model.Task s.dbm(s.Model).Where("task_id", 600).Scan(&ggg) if ggg == nil { return false } // 分支未完成时,标记完成并发放奖励 if !bitset32.From(ggg.Data).Test(50) { return false } return true } // 获取任务信息 func (s *TaskService) Exec(id uint32, t func(*model.Task) bool) { var gg model.Task m1 := s.dbm(s.Model).Where("task_id", id) m1.Scan(&gg) if gg.Data == nil { gg.Data = make([]uint32, 0) } tre := t(&gg) if !tre { //不需要更新 return } if cool.Config.ServerInfo.IsVip != 0 { return } gg.PlayerID = uint64(s.userid) gg.TaskID = id _, err := m1.Save(gg) if err != nil { cool.Logger.Error(context.TODO(), "task save failed", s.userid, id, err) } } type TaskService struct { BaseService } func NewTaskService(id uint32) *TaskService { return &TaskService{ BaseService: BaseService{userid: id, Service: &cool.Service{Model: model.NewTask()}, }, } }