package growtask import ( "go_dreamfactory/comm" "go_dreamfactory/pb" ) //进阶奖励领取 func (this *apiComp) AdvreceiveCheck(session comm.IUserSession, req *pb.GrowtaskAdvReceiveReq) (errdata *pb.ErrorData) { if req.TaskType == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } func (this *apiComp) Advreceive(session comm.IUserSession, req *pb.GrowtaskAdvReceiveReq) (errdata *pb.ErrorData) { if code = this.AdvreceiveCheck(session, req); errdata != nil { return } uid := session.GetUserId() gt, err := this.module.modelGrowtask.getUserGrowtask(uid) if err != nil { code = pb.ErrorCode_DBError return } if gt.Uid == "" { return } // 当前进阶奖励是否已领取 if gt.AdvReceive == req.TaskType { code = pb.ErrorCode_GrowtaskAdvReceive return } // 当前进阶任务是否都完成 ok := this.module.modelGrowtask.isAllFinish(gt, req.TaskType) if !ok { code = pb.ErrorCode_GrowtaskAdvReceive return } // 初始下一级任务数据 lv := gt.CurTaskType + 1 this.module.modelGrowtask.initGrowtask(uid, lv) //发奖 rewardCnf, err := this.module.configure.getGrowrewardCfg() if err != nil { code = pb.ErrorCode_ConfigNoFound return } if rewardCnf == nil { code = pb.ErrorCode_ConfigNoFound return } //更新领奖状态 update := map[string]interface{}{ "advReceive": req.TaskType, } if err := this.module.modelGrowtask.Change(uid, update); err != nil { code = pb.ErrorCode_DBError return } if conf, ok := rewardCnf.GetDataMap()[req.TaskType]; ok { if code := this.module.DispenseRes(session, conf.Allreward, true); errdata != nil { this.module.Errorf("进阶奖励发放失败 taskType:%v uid:%v", req.TaskType, uid) } } rsp := &pb.GrowtaskAdvReceiveResp{ TaskType: req.TaskType, } if err := session.SendMsg(string(this.module.GetType()), GrowtaskSubTypeAdvreceive, rsp); err != nil { code = pb.ErrorCode_SystemError } return }