package task import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" "google.golang.org/protobuf/proto" ) //任务奖励领取 func (this *apiComp) ReceiveCheck(session comm.IUserSession, req *pb.TaskReceiveReq) (code pb.ErrorCode) { if req.Id == "" { code = pb.ErrorCode_TaskIdEmpty } else if req.TaskTag == 0 { code = pb.ErrorCode_TaskTagEmpty } return } func (this *apiComp) Receive(session comm.IUserSession, req *pb.TaskReceiveReq) (code pb.ErrorCode, data proto.Message) { if code = this.ReceiveCheck(session, req); code != pb.ErrorCode_Success { return } uid := session.GetUserId() // 获取待领取的任务 userTask := this.moduleTask.modelTask.getUserTask(uid, req.Id) if userTask == nil { code = pb.ErrorCode_TaskNotFound return } //判断是否完成 if userTask.Status == 0 { code = pb.ErrorCode_TaskNoFinished return } //判断任务是否领取 if userTask.Received == 1 { code = pb.ErrorCode_TaskReceived return } // 待领取的任务配置 conf := this.moduleTask.configure.getTaskById(userTask.TaskId) if conf == nil { code = pb.ErrorCode_ConfigNoFound return } // 更新活跃度 if conf.Active > 0 { //更新活跃度 ue, err := this.moduleTask.ModuleUser.GetUserExpand(session.GetUserId()) if err != nil { code = pb.ErrorCode_DBError return } update := make(map[string]interface{}) if ue != nil { if comm.TaskTag(req.TaskTag) == comm.TASK_DAILY { ue.Activeday = ue.Activeday + conf.Active update["activeday"] = ue.Activeday } if comm.TaskTag(req.TaskTag) == comm.TASK_WEEKLY { ue.Activeweek = ue.Activeweek + conf.Active update["activeweek"] = ue.Activeweek } } if len(update) > 0 { if err = this.moduleTask.ModuleUser.ChangeUserExpand(session.GetUserId(), update); err != nil { code = pb.ErrorCode_DBError return } } } //奖励 if code = this.moduleTask.DispenseRes(session, conf.Reword, true); code != pb.ErrorCode_Success { this.moduleTask.Error("发送奖励", log.Fields{"uid": uid, "reward": conf.Reword, "code": code}) return } //更新用户领取状态 update := map[string]interface{}{ "received": 1, } if err := this.moduleTask.modelTask.modifyUserTask(session.GetUserId(), userTask.Id, update); err != nil { code = pb.ErrorCode_DBError return } resp := &pb.TaskReceiveResp{ TaskId: userTask.TaskId, } err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeReceive, resp) if err != nil { code = pb.ErrorCode_SystemError return } // 监听玩家经验 //this.moduleTask.ModuleUser.EventUserChanged(session) return }