From 01efe7f3f454c385250345c6f15e6462b02a1988 Mon Sep 17 00:00:00 2001 From: liwei <2211068034@qq.com> Date: Mon, 17 Jul 2023 18:06:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=B7=A5=E4=BC=9A=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=BF=9B=E5=BA=A6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/buried/modelburied.go | 4 + modules/buried/module.go | 4 +- modules/sociaty/api_cross_tasklist.go | 104 +++++++++++++++----------- 3 files changed, 65 insertions(+), 47 deletions(-) diff --git a/modules/buried/modelburied.go b/modules/buried/modelburied.go index d1491f550..66c7efd99 100644 --- a/modules/buried/modelburied.go +++ b/modules/buried/modelburied.go @@ -108,3 +108,7 @@ func (this *buriedModel) updateUserBurieds(uid string, data *pb.DBBuried) (err e }) return } + +func (this *buriedModel) userlock(uid string) (result *redis.RedisMutex, err error) { + return this.model.Redis.NewRedisMutex(fmt.Sprintf("ulockburied:%s", uid)) +} diff --git a/modules/buried/module.go b/modules/buried/module.go index 88592f962..dc527fd77 100644 --- a/modules/buried/module.go +++ b/modules/buried/module.go @@ -81,7 +81,7 @@ func (this *Buried) ActiveCondition(uid string, condiIds ...int32) (err error) { return } this.Debug("激活埋点!", log.Field{Key: "condiIds", Value: condiIds}) - lock, _ := this.modelBuried.userlock(uid) + lock, _ := model.userlock(uid) err = lock.Lock() if err != nil { this.Error("埋点分布式锁失效 err!", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()}) @@ -228,7 +228,7 @@ func (this *Buried) FinishConditionAndCheck(uid string, finishcondiIds []int32, } this.Debug("完成埋点!", log.Field{Key: "finishcondiIds", Value: finishcondiIds}) - lock, _ := this.modelBuried.userlock(uid) + lock, _ := model.userlock(uid) err = lock.Lock() if err != nil { this.Error("埋点分布式锁失效 err!", log.Field{Key: "uid", Value: uid}, log.Field{Key: "err", Value: err.Error()}) diff --git a/modules/sociaty/api_cross_tasklist.go b/modules/sociaty/api_cross_tasklist.go index 7a9d288a5..23c5adfd5 100644 --- a/modules/sociaty/api_cross_tasklist.go +++ b/modules/sociaty/api_cross_tasklist.go @@ -1,6 +1,7 @@ package sociaty import ( + "fmt" "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" @@ -13,61 +14,74 @@ func (this *apiComp) TaskListCheck(session comm.IUserSession, req *pb.SociatyTas } func (this *apiComp) TaskList(session comm.IUserSession, req *pb.SociatyTaskListReq) (errdata *pb.ErrorData) { - uid := session.GetUserId() + var ( + sociatyTask *pb.DBSociatyTask + condis []*pb.ConIProgress + condisMap map[int32]*pb.ConIProgress = make(map[int32]*pb.ConIProgress) + comid *pb.ConIProgress + ok bool + tasklist []int32 + err error + ) - sociaty := this.module.modelSociaty.getUserSociaty(uid) + sociaty := this.module.modelSociaty.getUserSociaty(session.GetUserId()) if sociaty == nil { - - this.module.Error("当前玩家所在的公会未找到", log.Field{Key: "uid", Value: uid}) + this.module.Error("当前玩家所在的公会未找到", log.Field{Key: "uid", Value: session.GetUserId()}) + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_SociatyNoFound, + Title: pb.ErrorCode_SociatyNoFound.ToString(), + Message: fmt.Sprintf("no found Sociaty!"), + } return } - rsp := &pb.SociatyTaskListResp{} - sociatyTask := this.module.modelSociatyTask.getUserTask(uid, sociaty.Id) - if sociatyTask.SociatyId != "" { - var taskList []*pb.SociatyTask - - for _, v := range sociatyTask.TaskList { - // if _, ok := this.module.modelSociaty.validTask(uid, v.TaskId); ok { - // status = 1 //完成 - // } - - conds, err := this.module.ModuleBuried.CheckCondition(uid, v.TaskId) - if err != nil { - this.module.Error(err.Error()) - continue - } - - for _, cond := range conds { - v.Cond = cond - if cond.State == pb.BuriedItemFinishState_buried_finish { - v.Status = 1 - } - } - - taskList = append(taskList, &pb.SociatyTask{ - TaskId: v.TaskId, - Status: v.Status, - Received: v.Received, - Cond: v.Cond, - }) + if sociatyTask = this.module.modelSociatyTask.getUserTask(session.GetUserId(), sociaty.Id); sociatyTask.SociatyId == "" { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: "no found task!", } - rsp.List = taskList + return + } + for _, v := range sociatyTask.TaskList { + if v.Status == 0 { + tasklist = append(tasklist, v.TaskId) + } + } + condis, err = this.module.ModuleBuried.CheckCondition(session.GetUserId(), tasklist...) + if err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ExternalModule, + Title: pb.ErrorCode_ExternalModule.ToString(), + Message: err.Error(), + } + return + } + for _, v := range condis { + condisMap[v.Conid] = v + } - if err := this.module.modelSociatyTask.updateTaskList(sociaty.Id, uid, taskList); err != nil { - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_DBError, - Title: pb.ErrorCode_DBError.ToString(), - Message: err.Error(), + for _, v := range sociatyTask.TaskList { + if comid, ok = condisMap[v.TaskId]; ok { + v.Cond = comid + if comid.State == pb.BuriedItemFinishState_buried_finish { + v.Status = 1 } - - this.module.Error("更新公会任务列表失败", - log.Field{Key: "uid", Value: uid}, - log.Field{Key: "sociatyId", Value: sociaty.Id}, - log.Field{Key: "err", Value: err.Error()}) } } - session.SendMsg(string(this.module.GetType()), SociatySubTypeTasklist, rsp) + if err := this.module.modelSociatyTask.updateTaskList(sociaty.Id, session.GetUserId(), sociatyTask.TaskList); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + + this.module.Error("更新公会任务列表失败", + log.Field{Key: "uid", Value: session.GetUserId()}, + log.Field{Key: "sociatyId", Value: sociaty.Id}, + log.Field{Key: "err", Value: err.Error()}) + } + session.SendMsg(string(this.module.GetType()), SociatySubTypeTasklist, &pb.SociatyTaskListResp{List: sociatyTask.TaskList}) return }