update
This commit is contained in:
parent
ff492fe145
commit
73b1ac3cb6
@ -20,7 +20,9 @@ func (a *apiComp) Tasklist(session comm.IUserSession, req *pb.SmithyTasklistReq)
|
||||
dt, err := a.module.modelTask.getTaskRecord(session.GetUserId())
|
||||
if err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
//遍历配置列表
|
||||
resp.Tasks = []*pb.TujianTask{}
|
||||
|
||||
} else {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_DBError,
|
||||
@ -30,31 +32,8 @@ func (a *apiComp) Tasklist(session comm.IUserSession, req *pb.SmithyTasklistReq)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
for _, t := range dt.Tasks {
|
||||
conf, err := a.module.configure.GetSmithyTask(t.TaskId)
|
||||
if err != nil {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_ConfigNoFound,
|
||||
Title: pb.ErrorCode_ConfigNoFound.ToString(),
|
||||
Message: err.Error(),
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
conds, err := a.module.ModuleBuried.CheckCondition(session.GetUserId(), conf.TypeId)
|
||||
if err != nil {
|
||||
errdata = &pb.ErrorData{
|
||||
Code: pb.ErrorCode_ExternalModule,
|
||||
Title: pb.ErrorCode_ExternalModule.ToString(),
|
||||
Message: err.Error(),
|
||||
}
|
||||
return
|
||||
}
|
||||
if len(conds) > 0 {
|
||||
t.Cond = conds[0]
|
||||
}
|
||||
}
|
||||
resp.Tasks = dt.Tasks
|
||||
|
||||
}
|
||||
|
||||
session.SendMsg(string(a.module.GetType()), "tasklist", resp)
|
||||
|
@ -303,6 +303,20 @@ func (this *configureComp) GetSmithyTask(taskId int32) (data *cfg.GameSmithyTask
|
||||
return
|
||||
}
|
||||
|
||||
func (this *configureComp) GetSmithyTasks() (data []*cfg.GameSmithyTaskData, err error) {
|
||||
var (
|
||||
v interface{}
|
||||
)
|
||||
if v, err = this.GetConfigure(game_smithytask); err == nil {
|
||||
if configure, ok := v.(*cfg.GameSmithyTask); ok {
|
||||
if data = configure.GetDataList(); data != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (this *configureComp) GetSmithyMake(cid int32) (data *cfg.GameSmithyMakeData, err error) {
|
||||
var (
|
||||
v interface{}
|
||||
|
@ -3,6 +3,8 @@ package smithy
|
||||
import (
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/sys/event"
|
||||
"go_dreamfactory/lego/sys/log"
|
||||
"go_dreamfactory/modules"
|
||||
"go_dreamfactory/pb"
|
||||
|
||||
@ -22,66 +24,160 @@ func (this *modelTask) Init(service core.IService, module core.IModule, comp cor
|
||||
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
|
||||
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
|
||||
})
|
||||
event.Register(comm.EventBuriedComplete, this.TCondFinishNotify)
|
||||
return
|
||||
}
|
||||
|
||||
func (this *modelTask) getTaskRecord(uid string) (*pb.DBTujianTask, error) {
|
||||
tt := &pb.DBTujianTask{}
|
||||
tt := &pb.DBTujianTask{Uid: uid}
|
||||
if err := this.Get(uid, tt); err != nil {
|
||||
return tt, err
|
||||
}
|
||||
return tt, nil
|
||||
}
|
||||
|
||||
func (this *modelTask) updateTaskRecord(uid string, taskId int32) error {
|
||||
if !this.checkTaskStatus(uid, taskId) {
|
||||
return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished)
|
||||
func (this *modelTask) TCondFinishNotify(uid string, conds []*pb.ConIProgress) {
|
||||
this.module.Debug("铁匠铺任务通知", log.Field{Key: "uid", Value: uid}, log.Field{Key: "conds", Value: conds})
|
||||
confList, err := this.module.configure.GetSmithyTasks()
|
||||
if err != nil {
|
||||
this.module.Error(err.Error())
|
||||
return
|
||||
}
|
||||
condMap := make(map[int32]*pb.ConIProgress)
|
||||
for _, conf := range confList {
|
||||
for _, cond := range conds {
|
||||
if cond.Conid == conf.TypeId {
|
||||
condMap[conf.Key] = cond
|
||||
}
|
||||
}
|
||||
}
|
||||
update := make(map[string]interface{})
|
||||
dt, err := this.getTaskRecord(uid)
|
||||
if err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
tj := &pb.DBTujianTask{Uid: uid}
|
||||
tj.Tasks = append(tj.Tasks, &pb.TujianTask{TaskId: taskId, Received: 2})
|
||||
return this.Add(uid, tj)
|
||||
for k, v := range condMap {
|
||||
tt := &pb.TujianTask{
|
||||
TaskId: k,
|
||||
Cond: v,
|
||||
}
|
||||
if v.State == pb.BuriedItemFinishState_buried_finish {
|
||||
tt.Received = 1
|
||||
}
|
||||
dt.Tasks = append(dt.Tasks, tt)
|
||||
if err := this.Add(uid, dt); err != nil {
|
||||
this.module.Error(err.Error())
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
} else {
|
||||
this.module.Error(err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if dt.Tasks == nil {
|
||||
for k, v := range condMap {
|
||||
tt := &pb.TujianTask{
|
||||
TaskId: k,
|
||||
Cond: v,
|
||||
}
|
||||
if v.State == pb.BuriedItemFinishState_buried_finish {
|
||||
tt.Received = 1
|
||||
}
|
||||
dt.Tasks = append(dt.Tasks, tt)
|
||||
update["tasks"] = dt.Tasks
|
||||
if err := this.Change(uid, update); err != nil {
|
||||
this.module.Error(err.Error())
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
for _, t := range dt.Tasks {
|
||||
for k, v := range condMap {
|
||||
// update
|
||||
if t.TaskId == k {
|
||||
t.Cond = v
|
||||
} else {
|
||||
//add
|
||||
dt.Tasks = append(dt.Tasks, &pb.TujianTask{
|
||||
TaskId: k,
|
||||
Cond: v,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
update["tasks"] = dt.Tasks
|
||||
|
||||
if len(update) > 0 {
|
||||
if err := this.Change(uid, update); err != nil {
|
||||
this.module.Error(err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (this *modelTask) updateTaskRecord(uid string, taskId int32) error {
|
||||
// if !this.checkTaskStatus(uid, taskId) {
|
||||
// return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished)
|
||||
// }
|
||||
dt, err := this.getTaskRecord(uid)
|
||||
if err != nil {
|
||||
if err == mongo.ErrNoDocuments {
|
||||
// tj := &pb.DBTujianTask{Uid: uid}
|
||||
// tj.Tasks = append(tj.Tasks, &pb.TujianTask{TaskId: taskId, Received: 2})
|
||||
// return this.Add(uid, tj)
|
||||
return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
taskMap := make(map[int32]int32)
|
||||
// taskMap := make(map[int32]int32)
|
||||
update := make(map[string]interface{})
|
||||
|
||||
if dt.Uid != "" {
|
||||
for _, v := range dt.Tasks {
|
||||
taskMap[v.TaskId] = v.Received
|
||||
if v.TaskId == taskId {
|
||||
if v.Cond != nil && v.Cond.State == pb.BuriedItemFinishState_buried_finish {
|
||||
v.Received = 2
|
||||
}
|
||||
} else {
|
||||
return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished)
|
||||
}
|
||||
// taskMap[v.TaskId] = v.Received
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
if t, ok := taskMap[taskId]; ok {
|
||||
if t == 2 {
|
||||
return comm.NewCustomError(pb.ErrorCode_SmithyTaskReceived)
|
||||
} else {
|
||||
update["received"] = 2
|
||||
}
|
||||
} else {
|
||||
dt.Tasks = append(dt.Tasks, &pb.TujianTask{TaskId: taskId, Received: 2})
|
||||
// if t, ok := taskMap[taskId]; ok {
|
||||
// if t == 2 {
|
||||
// return comm.NewCustomError(pb.ErrorCode_SmithyTaskReceived)
|
||||
// } else {
|
||||
// update["received"] = 2
|
||||
// }
|
||||
// } else {
|
||||
// dt.Tasks = append(dt.Tasks, &pb.TujianTask{TaskId: taskId, Received: 2})
|
||||
update["tasks"] = dt.Tasks
|
||||
}
|
||||
|
||||
if err := this.Change(uid, update); err != nil {
|
||||
return err
|
||||
if len(update) > 0 {
|
||||
if err := this.Change(uid, update); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// 检查任务状态
|
||||
func (this *modelTask) checkTaskStatus(uid string, taskId int32) bool {
|
||||
conf, _ := this.module.configure.GetSmithyTask(taskId)
|
||||
if conf == nil {
|
||||
return false
|
||||
}
|
||||
// if ec := this.module.ModuleRtask.CheckCondi(uid, conf.TypeId); ec != nil {
|
||||
// return false
|
||||
// }
|
||||
return true
|
||||
}
|
||||
// func (this *modelTask) checkTaskStatus(uid string, taskId int32) bool {
|
||||
// conf, _ := this.module.configure.GetSmithyTask(taskId)
|
||||
// if conf == nil {
|
||||
// return false
|
||||
// }
|
||||
// // if ec := this.module.ModuleRtask.CheckCondi(uid, conf.TypeId); ec != nil {
|
||||
// // return false
|
||||
// // }
|
||||
// return true
|
||||
// }
|
||||
|
Loading…
Reference in New Issue
Block a user