102 lines
2.3 KiB
Go
102 lines
2.3 KiB
Go
// package 更新任务触发后的数据更新
|
|
package rtask
|
|
|
|
import (
|
|
"go_dreamfactory/pb"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// 覆盖更新
|
|
func (this *ModelRtask) overrideUpdate(uid string, cfg *cfg.GameRdtaskCondiData, vals ...int32) (err error) {
|
|
var paramLen int
|
|
if paramLen, err = verifyParam(cfg, vals...); err != nil {
|
|
return err
|
|
}
|
|
|
|
record := &pb.DBRtaskRecord{}
|
|
err = this.Get(uid, record)
|
|
if err != nil {
|
|
return errors.Wrapf(err, "获取玩家任务记录 err: %v rtype[%v]", uid, cfg.Id)
|
|
}
|
|
|
|
if record.Vals == nil {
|
|
data := &pb.RtaskData{
|
|
Data: toMap(vals...),
|
|
}
|
|
record.Vals = map[int32]*pb.RtaskData{
|
|
cfg.Id: data,
|
|
}
|
|
if err := this.Add(uid, record); err != nil {
|
|
return errors.Wrapf(err, "添加玩家任务记录 err: %v rtype[%v]", uid, cfg.Id)
|
|
}
|
|
} else {
|
|
if v, ok := record.Vals[cfg.Id]; ok {
|
|
m := isEqual(paramLen, v, cfg, vals...)
|
|
if len(m) > 0 {
|
|
update := map[string]interface{}{
|
|
"vals": m,
|
|
}
|
|
err = this.Change(uid, update)
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// 累计更新 - 招募等
|
|
func (this *ModelRtask) addUpdate(uid string, cfg *cfg.GameRdtaskCondiData, vals ...int32) (err error) {
|
|
var paramLen int
|
|
if paramLen, err = verifyParam(cfg, vals...); err != nil {
|
|
return err
|
|
}
|
|
|
|
record := &pb.DBRtaskRecord{}
|
|
err = this.Get(uid, record)
|
|
if err != nil {
|
|
return errors.Wrapf(err, "获取玩家任务记录 err: %v rtype[%v]", uid, cfg.Id)
|
|
}
|
|
|
|
if record.Vals == nil {
|
|
data := &pb.RtaskData{
|
|
Data: toMap(vals...),
|
|
}
|
|
|
|
record.Vals = map[int32]*pb.RtaskData{
|
|
cfg.Id: data,
|
|
}
|
|
if err := this.Add(uid, record); err != nil {
|
|
return errors.Wrapf(err, "添加玩家任务记录 err: %v rtype[%v]", uid, cfg.Id)
|
|
}
|
|
} else {
|
|
data := make(map[int32]int32)
|
|
//查找任务数据
|
|
if v, ok := record.Vals[cfg.Id]; ok {
|
|
if paramLen == 1 {
|
|
data[0] += v.Data[0]
|
|
} else if paramLen == 2 {
|
|
//第一个参数为累加,后续参数为判断条件
|
|
if data[1] == cfg.Data2 {
|
|
data[1] += v.Data[1]
|
|
}
|
|
} else if paramLen == 3 {
|
|
if data[1] == cfg.Data2 && data[2] == cfg.Data3 {
|
|
data[2] += v.Data[2]
|
|
}
|
|
}
|
|
if len(data) > 0 {
|
|
update := map[string]interface{}{
|
|
"vals": data,
|
|
}
|
|
err = this.Change(uid, update)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
return
|
|
}
|