package dispatch import ( "go_dreamfactory/comm" "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" ) // 领取派遣奖励 func (a *apiComp) ReceiveCheck(session comm.IUserSession, req *pb.DispatchReceiveReq) (errdata *pb.ErrorData) { if req.TaskId == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } func (a *apiComp) Receive(session comm.IUserSession, req *pb.DispatchReceiveReq) (errdata *pb.ErrorData) { if errdata = a.ReceiveCheck(session, req); errdata != nil { return } d := a.module.modelDispatch.getDBDispatch(session.GetUserId()) if d == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DataNotFound, Title: pb.ErrorCode_DataNotFound.ToString(), } return } var flag bool for _, v := range d.Nb.Tasks { if v.TaskId == req.TaskId { if v.Status == 2 { flag = true break } } } if !flag { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DispatchNoFinished, Title: pb.ErrorCode_DispatchNoFinished.ToString(), } return } tasks, oldTask := a.module.modelDispatch.replaceTask(session.GetUserId(), req.TaskId, d) //更新公告任务 d.Nb.TaskCount++ d.Nb.WeekCount++ if err := a.module.modelDispatch.updateTasks(session.GetUserId(), d.Nb, tasks); err != nil { a.module.Debug("更新公告失败", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "taskId", Value: req.TaskId}) return } //奖励 if oldTask != nil && oldTask.TaskId == req.TaskId { gd, err := a.module.configure.getDispatchTaskConf(oldTask.TaskId) if err != nil { } a.module.DispenseRes(session, gd.Reward, true) if oldTask.Exaward { a.module.DispenseRes(session, gd.Rewardex, true) } //记录任务使用次数 if d.Completecount == nil { d.Completecount = make(map[int32]int32) } d.Completecount[req.TaskId] += 1 update := map[string]interface{}{ "completecount": d.Completecount, } a.module.modelDispatch.Change(session.GetUserId(), update) } rsp := &pb.DispatchReceiveResp{ Rsp: &pb.DispatchTaskRsp{ TaskId: req.TaskId, Exaward: oldTask.Exaward, }, } session.SendMsg(string(a.module.GetType()), "receive", rsp) return }