package task import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/pb" "go.mongodb.org/mongo-driver/bson/primitive" ) type ModelTaskActive struct { modules.MCompModel moduleTask *ModuleTask } func (this *ModelTaskActive) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { this.TableName = comm.TableTaskActive err = this.MCompModel.Init(service, module, comp, options) this.moduleTask = module.(*ModuleTask) return } //初始化活跃度 func (this *ModelTaskActive) initActiveReward(uid string, taskTag comm.TaskTag) { data := this.moduleTask.configure.getTaskActiveByTag(int32(taskTag)) for _, conf := range data { objId := primitive.NewObjectID().Hex() ta := &pb.DBTaskActive{ Id: objId, Uid: uid, Tag: int32(taskTag), RId: conf.Key, } if err := this.moduleTask.modelTaskActive.AddList(uid, ta.Id, ta); err != nil { this.moduleTask.Errorf("uid:%v tag:%v initActiv add err %v", uid, err) return } } } //获取玩家活跃度列表 func (this *ModelTaskActive) getActiveListByTag(uid string, taskTag comm.TaskTag) (list []*pb.DBTaskActive) { al := []*pb.DBTaskActive{} if err := this.GetList(uid, &al); err != nil { this.moduleTask.Errorf("getUserActiveList err:%v", err) return al } for _, v := range al { if v.Tag == int32(taskTag) { list = append(list, v) } } return list } //获取玩家活跃记录 id 唯一ID func (this *ModelTaskActive) getUserActive(uid, id string, taskTag comm.TaskTag) *pb.DBTaskActive { record := this.getActiveListByTag(uid, taskTag) for _, v := range record { if v.Id == id { return v } } return nil } func (this *ModelTaskActive) updateReceive(uid, id string, taskTag comm.TaskTag, data map[string]interface{}) (err error) { if len(data) == 0 { return } return this.moduleTask.modelTaskActive.ChangeList(uid, id, data) } //清空活跃度任务 func (this *ModelTaskActive) clearTask(uid string, taskTag ...comm.TaskTag) { if len(taskTag) == 0 { this.moduleTask.Errorf("least one param for taskTag") return } data := this.getActiveListByTag(uid, taskTag[0]) for _, v := range data { if err := this.moduleTask.modelTaskActive.DelListlds(uid, v.Id); err != nil { this.moduleTask.Errorf("uid: %v err:%v", uid, err) return } } }