From 4a18a075f570ba35291405ceb141257651d40b99 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Tue, 4 Apr 2023 12:13:50 +0800 Subject: [PATCH] update --- modules/worldtask/api_accept.go | 19 +++++++++++++++++++ modules/worldtask/api_finish.go | 15 +++++++-------- modules/worldtask/model_worldtask.go | 14 +++++++------- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/modules/worldtask/api_accept.go b/modules/worldtask/api_accept.go index 9deafab93..fc0c191eb 100644 --- a/modules/worldtask/api_accept.go +++ b/modules/worldtask/api_accept.go @@ -20,6 +20,12 @@ func (a *apiComp) Accept(session comm.IUserSession, req *pb.WorldtaskAcceptReq) return } uid := session.GetUserId() + user := a.module.ModuleUser.GetUser(uid) + if user == nil { + code = pb.ErrorCode_UserSessionNobeing + return + } + myWorldtask, err := a.module.modelWorldtask.getWorldtask(uid) if err != nil { a.module.Error("获取玩家世界任务失败", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()}) @@ -34,6 +40,19 @@ func (a *apiComp) Accept(session comm.IUserSession, req *pb.WorldtaskAcceptReq) return } + // 判断玩家等级要求 + if user.Lv < curTaskConf.Lock { + code = pb.ErrorCode_WorldtaskLvNotEnough + return + } + + // 前置任务ID 只有世界任务才校验前置 + if !a.module.modelWorldtask.IsPreFinished(req.GroupId, myWorldtask, curTaskConf) { + a.module.Debug("前置任务未完成", log.Field{Key: "uid", Value: uid}, log.Field{Key: "preTaskId", Value: curTaskConf.Ontxe}, log.Field{Key: "taskId", Value: curTaskConf.Key}) + code = pb.ErrorCode_WorldtaskLastUnFinished + return + } + if myWorldtask.CurrentTask == nil { myWorldtask.CurrentTask = make(map[int32]*pb.Worldtask) } diff --git a/modules/worldtask/api_finish.go b/modules/worldtask/api_finish.go index 5456ac386..513c65f02 100644 --- a/modules/worldtask/api_finish.go +++ b/modules/worldtask/api_finish.go @@ -184,18 +184,17 @@ func (this *apiComp) Finish(session comm.IUserSession, req *pb.WorldtaskFinishRe } else { // 章节完成 if _, ok := userTask.Chapters[req.GroupId]; !ok { + delete(userTask.CurrentTask, req.GroupId) if userTask.Chapters == nil { - delete(userTask.CurrentTask, req.GroupId) userTask.Chapters = make(map[int32]int32) - userTask.Chapters[req.GroupId] = 1 //已解锁待领取 - update := map[string]interface{}{ - "chapters": userTask.Chapters, - "currentTask": userTask.CurrentTask, - } - this.module.modelWorldtask.Change(uid, update) } + userTask.Chapters[req.GroupId] = 1 //已解锁待领取 + update := map[string]interface{}{ + "chapters": userTask.Chapters, + "currentTask": userTask.CurrentTask, + } + this.module.modelWorldtask.Change(uid, update) } - } } diff --git a/modules/worldtask/model_worldtask.go b/modules/worldtask/model_worldtask.go index 6069a72ef..a8ac21112 100644 --- a/modules/worldtask/model_worldtask.go +++ b/modules/worldtask/model_worldtask.go @@ -231,16 +231,16 @@ func (this *ModelWorldtask) taskFinishPush(session comm.IUserSession, groupId in if curTaskConf.IdAfter == 0 { // 章节完成 if _, ok := userTask.Chapters[groupId]; !ok { + delete(userTask.CurrentTask, groupId) if userTask.Chapters == nil { - delete(userTask.CurrentTask, groupId) userTask.Chapters = make(map[int32]int32) - userTask.Chapters[groupId] = 1 //已解锁待领取 - update := map[string]interface{}{ - "chapters": userTask.Chapters, - "currentTask": userTask.CurrentTask, - } - this.Change(session.GetUserId(), update) } + userTask.Chapters[groupId] = 1 //已解锁待领取 + update := map[string]interface{}{ + "chapters": userTask.Chapters, + "currentTask": userTask.CurrentTask, + } + this.Change(session.GetUserId(), update) } }