package growtask import ( "fmt" "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) { var ( atno []*pb.UserAtno ) if errdata = this.AdvreceiveCheck(session, req); errdata != nil { return } uid := session.GetUserId() gt, err := this.module.modelGrowtask.getUserGrowtask(uid) if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if gt.Uid == "" { return } // 当前进阶奖励是否已领取 if gt.AdvReceive == req.TaskType { errdata = &pb.ErrorData{ Code: pb.ErrorCode_GrowtaskAdvReceive, Title: pb.ErrorCode_GrowtaskAdvReceive.ToString(), } return } // 当前进阶任务是否都完成 ok := this.module.modelGrowtask.isAllFinish(gt, req.TaskType) if !ok { errdata = &pb.ErrorData{ Code: pb.ErrorCode_GrowtaskAdvReceive, Title: pb.ErrorCode_GrowtaskAdvReceive.ToString(), } return } // 初始下一级任务数据 lv := gt.CurTaskType + 1 this.module.modelGrowtask.initGrowtask(uid, lv) //发奖 rewardCnf, err := this.module.configure.getGrowrewardCfg() if err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: err.Error(), } return } if rewardCnf == nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: err.Error(), } return } //更新领奖状态 update := map[string]interface{}{ "advReceive": req.TaskType, } if err := this.module.modelGrowtask.Change(uid, update); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), Message: err.Error(), } return } if conf, ok := rewardCnf.GetDataMap()[req.TaskType]; ok { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: fmt.Sprintf("no found task:%d", req.TaskType), } return } else { if errdata, atno = this.module.DispenseAtno(session, conf.Allreward, true); errdata != nil { this.module.Errorf("进阶奖励发放失败 taskType:%v uid:%v", req.TaskType, uid) return } } session.SendMsg(string(this.module.GetType()), GrowtaskSubTypeAdvreceive, &pb.GrowtaskAdvReceiveResp{ TaskType: req.TaskType, Reward: atno, }) go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.module.WriteUserLog(session.GetUserId(), req, comm.GMResAddType, "GrowtaskAdvReceiveReq", atno) }) return }