package task import ( "go_dreamfactory/comm" "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 } resp := &pb.TaskReceiveResp{} defer func() { err := session.SendMsg(string(this.moduleTask.GetType()), TaskSubTypeReceive, resp) if err != nil { code = pb.ErrorCode_SystemError } }() userTask := this.moduleTask.modelTask.getUserTask(session.GetUserId(), req.Id) if userTask != nil { //判断是否完成 if userTask.Status == 0 { code = pb.ErrorCode_TaskHandle 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 code = this.moduleTask.DispenseRes(session, conf.Reword, true); code != pb.ErrorCode_Success { 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.TaskId = userTask.TaskId // 监听玩家经验 this.moduleTask.ModuleUser.EventUserChanged(session) } return }