package activity import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/sys/configure" cfg "go_dreamfactory/sys/configure/structs" ) //参数校验 func (this *apiComp) TurntableRewardCheck(session comm.IUserSession, req *pb.ActivityTurntableRewardReq) (errdata *pb.ErrorData) { if req.Oid == "" { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), } } return } // 大转盘抽奖 func (this *apiComp) TurntableReward(session comm.IUserSession, req *pb.ActivityTurntableRewardReq) (errdata *pb.ErrorData) { if errdata = this.TurntableRewardCheck(session, req); errdata != nil { return } var ( activity *pb.DBHuodong // 活动数据 err error atno []*pb.UserAtno reward []int32 need []*cfg.Gameatn ) //key := fmt.Sprintf("%s-%s", session.GetUserId(), req.Oid) data, err := this.module.modelhdData.getHddataByOid(session.GetUserId(), req.Oid) if err == nil { if activity, err = this.module.modelhdList.getHdListByHdId(req.Oid); err == nil { curTime := configure.Now().Unix() if activity.Stime > curTime || curTime > activity.Etime { //不在活动时间范围内 errdata = &pb.ErrorData{ Code: pb.ErrorCode_ActivityNotIntime, Title: pb.ErrorCode_ActivityNotIntime.ToString(), } return } } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ActivityInvalid, Title: pb.ErrorCode_ActivityInvalid.ToString(), } return } } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Title: pb.ErrorCode_DBError.ToString(), } return } // 消耗校验 pricekey := this.module.ModuleTools.GetGlobalConf().GiftBuy if res, err := this.module.ModuleTools.GetPriceGroupCost(pricekey, data.Val+1); len(res) > 0 { need = append(need, res...) } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ConfigNoFound, Title: pb.ErrorCode_ConfigNoFound.ToString(), Message: err.Error(), } return } if errdata = this.module.CheckRes(session, need); errdata != nil { // 资源不足 return } if data.Val >= this.module.configure.GetMaxTurntableCount() { // 领取校验 errdata = &pb.ErrorData{ Code: pb.ErrorCode_ActivityRepatReward, Title: pb.ErrorCode_ActivityRepatReward.ToString(), } return } for k := range data.Gotarr { reward = append(reward, k) } // 发奖 item, drawkey, err := this.module.Turntable(data.Val+1, reward) if err == nil { if errdata, atno = this.module.DispenseAtno(session, []*cfg.Gameatn{item}, true); errdata != nil { return } // 修改进度 data.Gotarr[drawkey] = 1 data.Val += 1 } else { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ActivityRepatReward, Title: pb.ErrorCode_ActivityRepatReward.ToString(), } return } if errdata = this.module.ConsumeRes(session, need, true); errdata != nil { // 资源不足 return } update := make(map[string]interface{}) update["gotarr"] = data.Gotarr update["val"] = data.Val this.module.modelhdData.ModifyActivityList(session.GetUserId(), data.Id, update) session.SendMsg(string(this.module.GetType()), "turntablereward", &pb.ActivityTurntableRewardResp{ Data: data, Atno: atno, Drawkey: drawkey, }) return }