diff --git a/modules/task/api_activereceive.go b/modules/task/api_activereceive.go index 6aee401c6..0b63ce9aa 100644 --- a/modules/task/api_activereceive.go +++ b/modules/task/api_activereceive.go @@ -2,7 +2,9 @@ package task import ( "go_dreamfactory/comm" + "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" + cfg "go_dreamfactory/sys/configure/structs" "google.golang.org/protobuf/proto" ) @@ -21,76 +23,89 @@ func (this *apiComp) ActiveReceive(session comm.IUserSession, req *pb.TaskActive if code = this.ActiveReceiveCheck(session, req); code != pb.ErrorCode_Success { return } + uid := session.GetUserId() + + // ua := this.moduleTask.modelTaskActive.getUserActive(uid, req.Id, comm.TaskTag(req.TaskTag)) + // if ua == nil { + // code = pb.ErrorCode_TaskActiveNofound + // return + // } + + //判断是否已领取 + // if ua.Received == 1 { + // code = pb.ErrorCode_TaskReceived + // return + // } + + var rewards []*cfg.Gameatn + // 玩家的 + activeList := this.moduleTask.modelTaskActive.getActiveListByTag(uid, comm.TaskTag(req.TaskTag)) + for _, v := range activeList { + if v.Received != 1 { //未领取 + conf := this.moduleTask.configure.getTaskActiveById(v.RId) + if conf == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + + // get user expand + ue, err := this.moduleTask.ModuleUser.GetUserExpand(uid) + if err != nil { + code = pb.ErrorCode_DBError + return + } + + if ue == nil { + code = pb.ErrorCode_UserExpandNull + return + } + + update := make(map[string]interface{}) + if req.TaskTag == int32(comm.TASK_DAILY) { + if ue.Activeday >= conf.Active { + update["received"] = 1 + } else { + code = pb.ErrorCode_TaskActiveNoenough + return + } + } else if req.TaskTag == int32(comm.TASK_WEEKLY) { + if ue.Activeweek >= conf.Active { + update["received"] = 1 + } else { + code = pb.ErrorCode_TaskActiveNoenough + return + } + } + if len(update) > 0 { + if err := this.moduleTask.modelTaskActive.updateReceive(session.GetUserId(), + v.Id, + comm.TaskTag(req.TaskTag), + update); err != nil { + this.moduleTask.Errorf("updateReceive err %v", err) + code = pb.ErrorCode_DBError + return + } + } + rewards = append(rewards, conf.Reword...) + } + } + + if len(rewards) > 0 { + //派发奖励 + if code = this.moduleTask.DispenseRes(session, rewards, true); code != pb.ErrorCode_Success { + this.moduleTask.Error("活跃度奖励", log.Fields{"uid": uid, "rewards": rewards, "code": code}) + } + } + resp := &pb.TaskActiveReceiveResp{ TaskTag: req.TaskTag, Id: req.Id, } - defer func() { - err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeActiveReceive, resp) - if err != nil { - code = pb.ErrorCode_SystemError - } - }() - - ua := this.moduleTask.modelTaskActive.getUserActive(session.GetUserId(), req.Id, comm.TaskTag(req.TaskTag)) - if ua == nil { - code = pb.ErrorCode_TaskActiveNofound - return - } - - //判断是否已领取 - if ua.Received == 1 { - code = pb.ErrorCode_TaskReceived - return - } - - conf := this.moduleTask.configure.getTaskActiveById(ua.RId) - if conf == nil { - code = pb.ErrorCode_ConfigNoFound - return - } - - // get user expand - ue, err := this.moduleTask.ModuleUser.GetUserExpand(session.GetUserId()) + err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeActiveReceive, resp) if err != nil { - code = pb.ErrorCode_DBError - return + code = pb.ErrorCode_SystemError } - if ue == nil { - code = pb.ErrorCode_UserExpandNull - return - } - - update := make(map[string]interface{}) - if req.TaskTag == int32(comm.TASK_DAILY) { - if ue.Activeday >= conf.Active { - update["received"] = 1 - } else { - code = pb.ErrorCode_TaskActiveNoenough - return - } - } else if req.TaskTag == int32(comm.TASK_WEEKLY) { - if ue.Activeweek >= conf.Active { - update["received"] = 1 - } else { - code = pb.ErrorCode_TaskActiveNoenough - return - } - } - if len(update) > 0 { - if err := this.moduleTask.modelTaskActive.updateReceive(session.GetUserId(), - ua.Id, - comm.TaskTag(req.TaskTag), - update); err != nil { - this.moduleTask.Errorf("updateReceive err %v", err) - code = pb.ErrorCode_DBError - return - } - } - - //派发奖励 - code = this.moduleTask.DispenseRes(session, conf.Reword, true) return }