diff --git a/modules/buried/module.go b/modules/buried/module.go index dccbc37d5..6440fddd0 100644 --- a/modules/buried/module.go +++ b/modules/buried/module.go @@ -80,28 +80,34 @@ func (this *Buried) ActiveCondition(uid string, condiIds ...int32) (err error) { if model, err = this.modelBuried.getburiedModel(uid); err != nil { return } - if bdatas, err = model.getUserBurieds(uid); err != nil { - return - } + for _, v := range condiIds { if conf, err = this.configure.getburiedcondidata(v); err != nil { return } - if bdata, ok = bdatas.Items[conf.Type]; ok { - if conf.Rtype == rtype2 { - ok = false - for _, v1 := range bdata.Condi { - if v1.Conid == v { - ok = true - v1.Value = 0 - v1.Statistics = make([]string, 0) - v1.Timestamp = time.Now().Unix() - v1.State = pb.BuriedItemState_Activated - break - } - } - + if conf.Rtype != rtype2 { //非接取任务 不处理 + continue + } + if bdatas == nil { //放在后面 可以减少网络io + if bdatas, err = model.getUserBurieds(uid); err != nil { + return } + } + + if bdata, ok = bdatas.Items[conf.Type]; ok { + ok = false + for _, v1 := range bdata.Condi { + if v1.Conid == v { + ok = true + v1.Value = 0 + v1.Statistics = make([]string, 0) + v1.Timestamp = time.Now().Unix() + v1.State = pb.BuriedItemState_Activated + chanage = true + break + } + } + } else { bdata = &pb.DBBuriedItem{ Btype: conf.Type, @@ -120,7 +126,6 @@ func (this *Buried) ActiveCondition(uid string, condiIds ...int32) (err error) { }) chanage = true } - } if chanage { err = model.updateUserBurieds(uid, bdatas)