From d1ca1a5e9490702b6a5b9e366d0ea5f48dbc0c04 Mon Sep 17 00:00:00 2001 From: liwei1dao Date: Thu, 17 Aug 2023 15:37:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=95=86=E5=BA=97=E8=A3=85?= =?UTF-8?q?=E5=A4=87=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/shop/api_buy.go | 48 ++++++++++++++++++++++++++++++--------- modules/shop/configure.go | 48 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 83 insertions(+), 13 deletions(-) diff --git a/modules/shop/api_buy.go b/modules/shop/api_buy.go index f3eb21f15..9d22556b5 100644 --- a/modules/shop/api_buy.go +++ b/modules/shop/api_buy.go @@ -23,15 +23,18 @@ func (this *apiComp) BuyCheck(session comm.IUserSession, req *pb.ShopBuyReq) (er // /获取用户商品列表 func (this *apiComp) Buy(session comm.IUserSession, req *pb.ShopBuyReq) (errdata *pb.ErrorData) { var ( - err error - conf *cfg.GameShopitemData - shopData *pb.DBShop - good *pb.UserShopGood - filed string - record *pb.UserShopData - need []*cfg.Gameatn - give []*cfg.Gameatn - tasks []*pb.BuriedParam = make([]*pb.BuriedParam, 0) + err error + conf *cfg.GameShopitemData + shopData *pb.DBShop + good *pb.UserShopGood + filed string + record *pb.UserShopData + need []*cfg.Gameatn + give []*cfg.Gameatn + tasks []*pb.BuriedParam = make([]*pb.BuriedParam, 0) + equi *pb.DB_Equipment + equiconf *cfg.GameEquipData + equibuyconf *cfg.GameShopBuyequiCosData ) if errdata = this.BuyCheck(session, req); errdata != nil { return @@ -141,8 +144,31 @@ func (this *apiComp) Buy(session comm.IUserSession, req *pb.ShopBuyReq) (errdata return } good.Buy += req.BuyNum - if errdata = this.module.ConsumeRes(session, need, true); errdata != nil { - return + if !conf.Preview { + if errdata = this.module.ConsumeRes(session, need, true); errdata != nil { + return + } + } else { //装备价格采用计算价格 + equi = record.Preview[req.Gid] + if equiconf, err = this.module.configure.getGameEquipData(equi.CId); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + return + } + if equibuyconf, err = this.module.configure.getShopBuyequiCosData(equiconf.InitLv, equi.Lv); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_ConfigNoFound, + Title: pb.ErrorCode_ConfigNoFound.ToString(), + Message: err.Error(), + } + return + } + if errdata = this.module.ConsumeRes(session, equibuyconf.Suittype, true); errdata != nil { + return + } } this.module.modelShop.Change(session.GetUserId(), map[string]interface{}{filed: record}) if !conf.Preview { diff --git a/modules/shop/configure.go b/modules/shop/configure.go index ebd8e785f..bc526fcbe 100644 --- a/modules/shop/configure.go +++ b/modules/shop/configure.go @@ -10,8 +10,10 @@ import ( ) const ( - game_shop = "game_shop.json" - game_shopitem = "game_shopitem.json" + game_shop = "game_shop.json" + game_shopitem = "game_shopitem.json" + game_shopbuyequicos = "game_shopbuyequicos.json" + game_equip = "game_equip.json" //装备信息表 ) // /背包配置管理组件 @@ -26,6 +28,8 @@ func (this *configureComp) Init(service core.IService, module core.IModule, comp this.module = module.(*Shop) this.LoadConfigure(game_shop, cfg.NewGameShop) this.LoadConfigure(game_shopitem, cfg.NewGameShopitem) + this.LoadConfigure(game_shopbuyequicos, cfg.NewGameShopBuyequiCos) + this.LoadConfigure(game_equip, cfg.NewGameEquip) return } @@ -118,3 +122,43 @@ func (this *configureComp) GetShopItemsConfigureByIds(keys ...int32) (result []* } return } + +// 获取装备套装配置 +func (this *configureComp) getShopBuyequiCosData(intlv, lv int32) (conf *cfg.GameShopBuyequiCosData, err error) { + var ( + v interface{} + ) + if v, err = this.GetConfigure(game_shopbuyequicos); err != nil { + this.module.Errorf("err:%v", err) + return + } else { + for _, v := range v.(*cfg.GameShopBuyequiCos).GetDataList() { + if v.InitLv == intlv && v.UpLv == lv { + conf = v + return + } + } + } + err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_shopbuyequicos, fmt.Sprintf("intlv:%d lv:%d", intlv, lv)) + this.module.Errorln(err) + return +} + +// 获取装备配置数据 +func (this *configureComp) getGameEquipData(equipmentId string) (configure *cfg.GameEquipData, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(game_equip); err != nil { + this.module.Errorf("err:%v", err) + return + } else { + if configure, ok = v.(*cfg.GameEquip).GetDataMap()[equipmentId]; !ok { + err = comm.NewNotFoundConfErr(string(this.module.GetType()), game_equip, equipmentId) + this.module.Errorln(err) + return + } + } + return +}