From ebcc7ec57f3eb9a319232d8c440c6b131b204e38 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Thu, 15 Jun 2023 11:40:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=93=81=E5=8C=A0=E9=93=BA?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E8=BF=9B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/smithy/api_receive.go | 1 - modules/smithy/api_refuse.go | 18 +++++-- modules/smithy/model_task.go | 76 ++++++++++------------------ modules/smithy/model_trade.go | 2 +- modules/worldtask/model_worldtask.go | 4 ++ 5 files changed, 47 insertions(+), 54 deletions(-) diff --git a/modules/smithy/api_receive.go b/modules/smithy/api_receive.go index 9aa2e8fe9..3c1086ba1 100644 --- a/modules/smithy/api_receive.go +++ b/modules/smithy/api_receive.go @@ -25,7 +25,6 @@ func (this *apiComp) TaskAward(session comm.IUserSession, req *pb.SmithyTaskAwar if err := this.module.modelTask.updateTaskRecord(session.GetUserId(), req.TaskId); err != nil { var errCustom = new(comm.CustomError) if errors.As(err, &errCustom) { - //code = errCustom.Code errdata = &pb.ErrorData{ Code: errCustom.Code, Title: errCustom.Code.ToString(), diff --git a/modules/smithy/api_refuse.go b/modules/smithy/api_refuse.go index 2cbe5c01e..535c7a95f 100644 --- a/modules/smithy/api_refuse.go +++ b/modules/smithy/api_refuse.go @@ -1,6 +1,7 @@ package smithy import ( + "errors" "go_dreamfactory/comm" "go_dreamfactory/pb" ) @@ -22,10 +23,19 @@ func (this *apiComp) Refuse(session comm.IUserSession, req *pb.SmithyRefuseReq) cus, err := this.module.modelTrade.updateCustomer(session.GetUserId(), req.CustomerId) if err != nil { - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_DBError, - Title: pb.ErrorCode_DBError.ToString(), - Message: err.Error(), + var errCustom = new(comm.CustomError) + if errors.As(err, &errCustom) { + errdata = &pb.ErrorData{ + Code: errCustom.Code, + Title: errCustom.Code.ToString(), + Message: err.Error(), + } + } else { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } } return } diff --git a/modules/smithy/model_task.go b/modules/smithy/model_task.go index 4d3b988e0..6bb186d44 100644 --- a/modules/smithy/model_task.go +++ b/modules/smithy/model_task.go @@ -86,29 +86,35 @@ func (this *modelTask) TCondFinishNotify(uid string, conds []*pb.ConIProgress) { 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 - } + } + 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, - }) + var newTask []*pb.TujianTask + existTaskMap := make(map[int32]*pb.TujianTask) + for _, task := range dt.Tasks { + existTaskMap[task.TaskId] = task + } + + for k, v := range condMap { + if task, ok := existTaskMap[k]; ok { + task.Cond = v + if v.State == pb.BuriedItemFinishState_buried_finish { + task.Received = 1 } + } else { + newTask = append(newTask, &pb.TujianTask{ + TaskId: k, + Cond: v, + }) } } + dt.Tasks = append(dt.Tasks, newTask...) update["tasks"] = dt.Tasks if len(update) > 0 { @@ -120,44 +126,30 @@ func (this *modelTask) TCondFinishNotify(uid string, conds []*pb.ConIProgress) { } 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) update := make(map[string]interface{}) if dt.Uid != "" { for _, v := range dt.Tasks { if v.TaskId == taskId { - if v.Cond != nil && v.Cond.State == pb.BuriedItemFinishState_buried_finish { + if v.Received == 1 { v.Received = 2 + } else if v.Received == 2 { + return comm.NewCustomError(pb.ErrorCode_SmithyTaskReceived) + } else { + return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished) } - } else { - return comm.NewCustomError(pb.ErrorCode_SmithyTaskNoFinished) + break } - // 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}) update["tasks"] = dt.Tasks } @@ -183,15 +175,3 @@ func (this *modelTask) checkReddot17107(uid string) bool { } return false } - -// 检查任务状态 -// 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 -// } diff --git a/modules/smithy/model_trade.go b/modules/smithy/model_trade.go index b6e2507d5..3436ea64e 100644 --- a/modules/smithy/model_trade.go +++ b/modules/smithy/model_trade.go @@ -136,7 +136,7 @@ func (s *modelTrade) updateCustomer(uid string, customerId int32) (*pb.DBCustome //上限 limit := s.module.modelStove.StoveSkillAddCustomer(uid) left := limit - cus.Total - if left <= 0 { + if left < 0 { return nil, comm.NewCustomError(pb.ErrorCode_SmithyCustomerLimit) } diff --git a/modules/worldtask/model_worldtask.go b/modules/worldtask/model_worldtask.go index 5661e5d40..462eb08c0 100644 --- a/modules/worldtask/model_worldtask.go +++ b/modules/worldtask/model_worldtask.go @@ -12,6 +12,7 @@ import ( "go_dreamfactory/utils" "go.mongodb.org/mongo-driver/mongo" + "go.mongodb.org/mongo-driver/x/bsonx" ) type ModelWorldtask struct { @@ -25,6 +26,9 @@ func (this *ModelWorldtask) Init(service core.IService, module core.IModule, com this.TableName = comm.TableWorldtask this.moduleWorldtask = module.(*Worldtask) this.service = service + this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ + Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}}, + }) return }