package turntable import ( "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" ) // 参数校验 func (this *apiComp) DrawCheck(session comm.IUserSession, req *pb.TurntableDrawReq) (errdata *pb.ErrorData) { return } func (this *apiComp) Draw(session comm.IUserSession, req *pb.TurntableDrawReq) (errdata *pb.ErrorData) { var ( err error atno []*pb.UserAtno reward []int32 need []*cfg.Gameatn ) data, err := this.module.modelt.getUserTurntable(session.GetUserId()) if err != nil { 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, int32(len(data.Data))+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 int32(len(data.Data)) >= this.module.configure.GetMaxTurntableCount() { // 领取校验 errdata = &pb.ErrorData{ Code: pb.ErrorCode_ActivityRepatReward, Title: pb.ErrorCode_ActivityRepatReward.ToString(), } return } for k := range data.Data { reward = append(reward, k) } // 发奖 item, drawkey, err := this.module.Turntable(int32(len(data.Data))+1, reward) if err == nil { if errdata, atno = this.module.DispenseAtno(session, []*cfg.Gameatn{item}, true); errdata != nil { return } // 修改进度 data.Data[drawkey] = 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 } this.module.modelt.Change(session.GetUserId(), map[string]interface{}{ "data": data.Data, }) session.SendMsg(string(this.module.GetType()), "draw", &pb.TurntableDrawResp{ Data: data, Atno: atno, Drawkey: drawkey, }) go this.module.AsynHandleSession(session.Clone(), func(session comm.IUserSession) { this.module.WriteUserLog(session.GetUserId(), comm.GMResAddType, "TurntableDrawReq", atno) }) return }