diff --git a/modules/worldtask/api_accept.go b/modules/worldtask/api_accept.go index a84115ab7..aeb819b8b 100644 --- a/modules/worldtask/api_accept.go +++ b/modules/worldtask/api_accept.go @@ -4,6 +4,7 @@ import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" + "go_dreamfactory/utils" ) // 任务接取 @@ -87,9 +88,10 @@ func (a *apiComp) Accept(session comm.IUserSession, req *pb.WorldtaskAcceptReq) } else { // 已完成的任务条件 rsp.CondiIds = a.module.ModuleBuried.CheckCondition(uid, curTaskConf.Completetask...) + a.module.ModuleBuried.ActiveCondition(uid, utils.NoContain(rsp.CondiIds, curTaskConf.Completetask)...) } a.sendMsg(session, WorldtaskSubtypeAccept, rsp) - a.module.ModuleBuried.ActiveCondition(uid, curTaskConf.Completetask...) + return } diff --git a/modules/worldtask/api_completetask.go b/modules/worldtask/api_completetask.go index 1ad54b635..275835ac6 100644 --- a/modules/worldtask/api_completetask.go +++ b/modules/worldtask/api_completetask.go @@ -2,9 +2,7 @@ package worldtask import ( "go_dreamfactory/comm" - "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" - "go_dreamfactory/utils" ) // 任务完成条件 @@ -43,28 +41,32 @@ func (this *apiComp) CompleteCondi(session comm.IUserSession, req *pb.WorldtaskC myWorldtask.Uid = uid wt := myWorldtask.CurrentTask[req.GroupId] - if m, err := this.module.service.GetModule(comm.ModuleRtask); err == nil { - iwt, ok := m.(comm.IRtask) - if ok { - if code = iwt.CheckCondi(uid, req.CondiId); code != pb.ErrorCode_Success { - rsp.Code = code - rsp.CondiId = req.CondiId - rsp.TaskId = req.TaskId - this.module.Debug("任务完成条件不满足", - log.Field{Key: "uid", Value: uid}, - log.Field{Key: "taskId", Value: req.TaskId}, - log.Field{Key: "condiId", Value: req.CondiId}, - ) - this.sendMsg(session, WorldtaskComplete, rsp) - return - } - if wt == nil { - wt = &pb.Worldtask{} - } - if _, b := utils.Findx(wt.CondiIds, req.CondiId); !b { - wt.CondiIds = append(wt.CondiIds, req.CondiId) - } - } + // if m, err := this.module.service.GetModule(comm.ModuleRtask); err == nil { + // iwt, ok := m.(comm.IRtask) + // if ok { + // if code = iwt.CheckCondi(uid, req.CondiId); code != pb.ErrorCode_Success { + // rsp.Code = code + // rsp.CondiId = req.CondiId + // rsp.TaskId = req.TaskId + // this.module.Debug("任务完成条件不满足", + // log.Field{Key: "uid", Value: uid}, + // log.Field{Key: "taskId", Value: req.TaskId}, + // log.Field{Key: "condiId", Value: req.CondiId}, + // ) + // this.sendMsg(session, WorldtaskComplete, rsp) + // return + // } + // if wt == nil { + // wt = &pb.Worldtask{} + // } + // if _, b := utils.Findx(wt.CondiIds, req.CondiId); !b { + // wt.CondiIds = append(wt.CondiIds, req.CondiId) + // } + // } + // } + condIds := this.module.ModuleBuried.CheckCondition(uid, req.CondiId) + if len(condIds) > 0 { + wt.CondiIds = append(wt.CondiIds, condIds...) } myWorldtask.CurrentTask[req.GroupId] = wt diff --git a/modules/worldtask/api_finish.go b/modules/worldtask/api_finish.go index 4997db0c2..41b90c0f3 100644 --- a/modules/worldtask/api_finish.go +++ b/modules/worldtask/api_finish.go @@ -95,7 +95,9 @@ func (this *apiComp) Finish(session comm.IUserSession, req *pb.WorldtaskFinishRe condiFlag bool ) for _, condId := range curTaskConf.Completetask { - if this.module.modelWorldtask.checkCondi(uid, condId) { + conIds := this.module.ModuleBuried.CheckCondition(uid, condId) + // if this.module.modelWorldtask.checkCondi(uid, condId) { + if len(conIds) > 0 { condiFlag = true } else { condiFlag = false @@ -194,27 +196,32 @@ func (this *apiComp) updateCheckCond(uid string, userTask *pb.DBWorldtask, nextT TaskType: nextTaskConf.Des, } } - if m, err := this.module.service.GetModule(comm.ModuleRtask); err == nil { - iwt, ok := m.(comm.IRtask) - if ok { - if mc := iwt.CheckCondi(uid, condiId); mc != pb.ErrorCode_Success { - this.module.Debug("任务完成条件不满足", - log.Field{Key: "uid", Value: uid}, - log.Field{Key: "taskId", Value: nextTaskId}, - log.Field{Key: "condiId", Value: condiId}, - ) - } else { - if ok { - nwt.CondiIds = append(nwt.CondiIds, condiId) - } else { - condiIds := []int32{condiId} - nwt.CondiIds = condiIds - } - } - } + // if m, err := this.module.service.GetModule(comm.ModuleRtask); err == nil { + // iwt, ok := m.(comm.IRtask) + // if ok { + // if mc := iwt.CheckCondi(uid, condiId); mc != pb.ErrorCode_Success { + // this.module.Debug("任务完成条件不满足", + // log.Field{Key: "uid", Value: uid}, + // log.Field{Key: "taskId", Value: nextTaskId}, + // log.Field{Key: "condiId", Value: condiId}, + // ) + // } else { + // if ok { + // nwt.CondiIds = append(nwt.CondiIds, condiId) + // } else { + // condiIds := []int32{condiId} + // nwt.CondiIds = condiIds + // } + // } + // } + // } + condIds := this.module.ModuleBuried.CheckCondition(uid, condiId) + if len(condIds) > 0 { + nwt.CondiIds = condIds + userTask.CurrentTask[nextTaskConf.Group] = nwt + update["currentTask"] = userTask.CurrentTask } - userTask.CurrentTask[nextTaskConf.Group] = nwt - update["currentTask"] = userTask.CurrentTask + } } diff --git a/modules/worldtask/model_worldtask.go b/modules/worldtask/model_worldtask.go index f4b1771dd..7756a7e28 100644 --- a/modules/worldtask/model_worldtask.go +++ b/modules/worldtask/model_worldtask.go @@ -208,24 +208,30 @@ func (this *ModelWorldtask) updateCheckCond(uid string, userLv int32, userTask * TaskType: nextTaskConf.Des, } } - if m, err := this.service.GetModule(comm.ModuleRtask); err == nil { - iwt, ok := m.(comm.IRtask) - if ok { - if mc := iwt.CheckCondi(uid, condiId); mc != pb.ErrorCode_Success { - this.moduleWorldtask.Debug("任务完成条件不满足", - log.Field{Key: "uid", Value: uid}, - log.Field{Key: "taskId", Value: nextTaskId}, - log.Field{Key: "condiId", Value: condiId}, - ) - } else { - if ok { - nwt.CondiIds = append(nwt.CondiIds, condiId) - } else { - condiIds := []int32{condiId} - nwt.CondiIds = condiIds - } - } - } + // if m, err := this.service.GetModule(comm.ModuleRtask); err == nil { + // iwt, ok := m.(comm.IRtask) + // if ok { + // if mc := iwt.CheckCondi(uid, condiId); mc != pb.ErrorCode_Success { + // this.moduleWorldtask.Debug("任务完成条件不满足", + // log.Field{Key: "uid", Value: uid}, + // log.Field{Key: "taskId", Value: nextTaskId}, + // log.Field{Key: "condiId", Value: condiId}, + // ) + // } else { + // if ok { + // nwt.CondiIds = append(nwt.CondiIds, condiId) + // } else { + // condiIds := []int32{condiId} + // nwt.CondiIds = condiIds + // } + // } + // } + // } + condIds := this.moduleWorldtask.ModuleBuried.CheckCondition(uid, condiId) + if len(condIds) > 0 { + nwt.CondiIds = condIds + userTask.CurrentTask[nextTaskConf.Group] = nwt + update["currentTask"] = userTask.CurrentTask } userTask.CurrentTask[nextTaskConf.Group] = nwt update["currentTask"] = userTask.CurrentTask diff --git a/utils/trans.go b/utils/trans.go index 186e881df..d25879b2c 100644 --- a/utils/trans.go +++ b/utils/trans.go @@ -27,3 +27,16 @@ func RemoveDuplicate(arr []int32) []int32 { } return result } + +func NoContain(exist, all []int32) (contain []int32) { + existMap := make(map[int32]bool) + for _, b := range exist { + existMap[b] = true + } + for _, a := range all { + if !existMap[a] { + contain = append(contain, a) + } + } + return +}