From db0139e7193d1825cc7be5178b89a64194852a38 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 11:55:09 +0800 Subject: [PATCH 01/29] 1 --- server/gamesapi/service/sapi_forward.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/gamesapi/service/sapi_forward.go b/server/gamesapi/service/sapi_forward.go index 04b8e8be..45027915 100644 --- a/server/gamesapi/service/sapi_forward.go +++ b/server/gamesapi/service/sapi_forward.go @@ -39,7 +39,7 @@ func (this *sApiForward) init() { for i := 0; i < len(this.userCache); i++ { p := new(SApiForwardLockCache) p.lock = new(sync.Mutex) - p.userHash = new(map[string]*SApiForwardLock) + p.userHash = &map[string]*SApiForwardLock{} this.userCache[i] = p } } From 138c46f7f1c82e1acde9531aa64d5be05fb1f445 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 13:51:49 +0800 Subject: [PATCH 02/29] 1 --- .../marketserver/api/v1/recharge/recharge.go | 11 +++--- server/marketserver/mt/RechargeCurrency.go | 14 +++++++ server/marketserver/mt/export.go | 6 +++ server/marketserver/mtb/mtb.auto_gen.go | 39 +++++++++++++++++++ server/marketserver/proto/mt.proto | 7 ++++ 5 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 server/marketserver/mt/RechargeCurrency.go diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 9f0efde4..dce7b473 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -50,10 +50,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { AccountAddress string `json:"account_address"` }{} if err := c.ShouldBindJSON(&reqJson); err != nil { - c.JSON(http.StatusOK, gin.H{ - "errcode": 1, - "errmsg": err.Error(), - }) + f5.RspErr(c, 1, err.Error()) return } currencyMeta := mt.Table.Contract.GetByNetIdName(reqJson.NetId, "TestToken") @@ -66,6 +63,10 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 2, "goods id param error") return } + if reqJson.Num < 0 { + f5.RspErr(c, 2, "num param error") + return + } nowTime := q5.ToInt32(f5.GetApp().GetRealSeconds()) shortOrderId := f5.GetApp().NewLockNodeUuid() orderId := "" @@ -76,7 +77,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { nowTime, 0, [3]int64{ - 0, + q5.ToInt64(reqJson.Num), q5.ToInt64(goodsMeta.GetId()), shortOrderId, }) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go new file mode 100644 index 00000000..c79f6e79 --- /dev/null +++ b/server/marketserver/mt/RechargeCurrency.go @@ -0,0 +1,14 @@ +package mt + +import ( + "f5" + "main/mtb" +) + +type RechargeCurrency struct { + mtb.RechargeCurrency +} + +type RechargeCurrencyTable struct { + f5.IdMetaTable[RechargeCurrency] +} diff --git a/server/marketserver/mt/export.go b/server/marketserver/mt/export.go index 45fedb45..28322a6f 100644 --- a/server/marketserver/mt/export.go +++ b/server/marketserver/mt/export.go @@ -16,6 +16,7 @@ type table struct { Web3ServiceCluster *Web3ServiceClusterTable Web3SignCluster *Web3SignClusterTable Recharge *RechargeTable + RechargeCurrency *RechargeCurrencyTable } var Table = f5.New(func(this *table) { @@ -66,6 +67,11 @@ var Table = f5.New(func(this *table) { this.PrimKey = "" }) + this.RechargeCurrency = f5.New(func(this *RechargeCurrencyTable) { + this.FileName = "../config/recharge_currency@recharge_currency.json" + this.PrimKey = "" + }) + this.Recharge = f5.New(func(this *RechargeTable) { this.FileName = "../res/recharge@recharge.json" this.PrimKey = "id" diff --git a/server/marketserver/mtb/mtb.auto_gen.go b/server/marketserver/mtb/mtb.auto_gen.go index 0689ba4d..fa812060 100644 --- a/server/marketserver/mtb/mtb.auto_gen.go +++ b/server/marketserver/mtb/mtb.auto_gen.go @@ -60,6 +60,15 @@ type Config struct { _flags2_ uint64 } +type RechargeCurrency struct { + currency_name string + exchange_rate int32 + currency_decimal int32 + + _flags1_ uint64 + _flags2_ uint64 +} + type Item struct { name string id int32 @@ -313,6 +322,30 @@ func (this *Config) HasJwksUri() bool { return (this._flags1_ & (uint64(1) << 2)) > 0 } +func (this *RechargeCurrency) GetCurrencyName() string { + return this.currency_name +} + +func (this *RechargeCurrency) HasCurrencyName() bool { + return (this._flags1_ & (uint64(1) << 1)) > 0 +} + +func (this *RechargeCurrency) GetExchangeRate() int32 { + return this.exchange_rate +} + +func (this *RechargeCurrency) HasExchangeRate() bool { + return (this._flags1_ & (uint64(1) << 2)) > 0 +} + +func (this *RechargeCurrency) GetCurrencyDecimal() int32 { + return this.currency_decimal +} + +func (this *RechargeCurrency) HasCurrencyDecimal() bool { + return (this._flags1_ & (uint64(1) << 3)) > 0 +} + func (this *Item) GetName() string { return this.name } @@ -475,6 +508,12 @@ func (this *Config) LoadFromKv(kv map[string]interface{}) { f5.ReadMetaTableField(&this.jwks_uri, "jwks_uri", &this._flags1_, 2, kv) } +func (this *RechargeCurrency) LoadFromKv(kv map[string]interface{}) { + f5.ReadMetaTableField(&this.currency_name, "currency_name", &this._flags1_, 1, kv) + f5.ReadMetaTableField(&this.exchange_rate, "exchange_rate", &this._flags1_, 2, kv) + f5.ReadMetaTableField(&this.currency_decimal, "currency_decimal", &this._flags1_, 3, kv) +} + func (this *Item) LoadFromKv(kv map[string]interface{}) { f5.ReadMetaTableField(&this.name, "name", &this._flags1_, 1, kv) f5.ReadMetaTableField(&this.id, "id", &this._flags1_, 2, kv) diff --git a/server/marketserver/proto/mt.proto b/server/marketserver/proto/mt.proto index e7547be8..e6edaa59 100644 --- a/server/marketserver/proto/mt.proto +++ b/server/marketserver/proto/mt.proto @@ -48,6 +48,13 @@ message Config optional string jwks_uri = 2; } +message RechargeCurrency +{ + optional string currency_name = 1; + optional int32 exchange_rate = 2; + optional int32 currency_decimal = 3; +} + message Item { optional string name = 1; From b82844d84c30b3b9be94025963d478045b1cbad8 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 14:09:27 +0800 Subject: [PATCH 03/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index c79f6e79..cde34654 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -11,4 +11,12 @@ type RechargeCurrency struct { type RechargeCurrencyTable struct { f5.IdMetaTable[RechargeCurrency] + selfConf *RechargeCurrency +} + +func (this *RechargeCurrencyTable) PostInit1() { + this.selfConf = this.GetById(int64(0)) + if this.selfConf == nil { + panic("无法读取recharge_currency.json") + } } From a9fa18e747e5430ec6e1e6353e133c7016a67f1e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 14:18:12 +0800 Subject: [PATCH 04/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 12 ++++++------ server/marketserver/mt/RechargeCurrency.go | 4 ++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index dce7b473..d4b4aea5 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -53,8 +53,8 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 1, err.Error()) return } - currencyMeta := mt.Table.Contract.GetByNetIdName(reqJson.NetId, "TestToken") - if currencyMeta == nil { + currencyContractMeta := mt.Table.Contract.GetByNetIdName(reqJson.NetId, "TestToken") + if currencyContractMeta == nil { f5.RspErr(c, 2, "server internal error") return } @@ -97,8 +97,8 @@ func (this *RechargeApi) Buy(c *gin.Context) { "account_address": reqJson.AccountAddress, "passport_address": passportAddress, "amount": price, - "currency_name": currencyMeta.GetName(), - "currency_address": currencyMeta.GetAddress(), + "currency_name": currencyContractMeta.GetName(), + "currency_address": currencyContractMeta.GetAddress(), } jsonRspObj := &struct { ErrCode int32 `json:"errcode"` @@ -130,8 +130,8 @@ func (this *RechargeApi) Buy(c *gin.Context) { reqJson.NetId, reqJson.AccountAddress, passportAddress, - currencyMeta.GetName(), - currencyMeta.GetAddress(), + currencyContractMeta.GetName(), + currencyContractMeta.GetAddress(), goodsMeta.GetId(), itemNum, price, diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index cde34654..d4d23e8a 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -20,3 +20,7 @@ func (this *RechargeCurrencyTable) PostInit1() { panic("无法读取recharge_currency.json") } } + +func (this *RechargeCurrencyTable) Get() *RechargeCurrency { + return this.selfConf +} From 4b9489d0b9751a9bce57d1ed1dfecdd6575eb05e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 14:30:48 +0800 Subject: [PATCH 05/29] 1 --- .../marketserver/api/v1/recharge/recharge.go | 25 ++++++++++++++----- server/marketserver/mtb/mtb.auto_gen.go | 8 +++--- server/marketserver/proto/mt.proto | 4 +-- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index d4b4aea5..0a8af6c2 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -53,7 +53,20 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 1, err.Error()) return } - currencyContractMeta := mt.Table.Contract.GetByNetIdName(reqJson.NetId, "TestToken") + currencyMeta := mt.Table.RechargeCurrency.Get() + if currencyMeta == nil { + f5.RspErr(c, 2, "server internal error") + return + } + if currencyMeta.GetExchangeRate() <= 0 || currencyMeta.GetExchangeRate() > 1000 { + f5.RspErr(c, 2, "server internal error") + return + } + if currencyMeta.GetCurrencyDecimal() <= 0 || currencyMeta.GetCurrencyDecimal() > 10 { + f5.RspErr(c, 2, "server internal error") + return + } + currencyContractMeta := mt.Table.Contract.GetByNetIdName(reqJson.NetId, currencyMeta.GetCurrencyName()) if currencyContractMeta == nil { f5.RspErr(c, 2, "server internal error") return @@ -88,7 +101,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { return } } - price := "1" + price := currencyMeta.GetCurrencyDecimal() * q5.ToInt64(reqJson.Num) params := map[string]string{ "c": "BcService", "a": "recharge", @@ -96,7 +109,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { "order_id": orderId, "account_address": reqJson.AccountAddress, "passport_address": passportAddress, - "amount": price, + "amount": q5.ToString(price), "currency_name": currencyContractMeta.GetName(), "currency_address": currencyContractMeta.GetAddress(), } @@ -105,8 +118,8 @@ func (this *RechargeApi) Buy(c *gin.Context) { ErrMsg string `json:"errmsg"` Calls []jccommon.ContractCall `json:"calls"` }{} - var itemNum int32 = 1 - var diamond int64 = 1 + var itemNum int32 = reqJson.Num + var diamond int64 = currencyMeta.GetExchangeRate() * int64(1) url := fmt.Sprintf("%s/webapp/index.php", mt.Table.Web3SignCluster.RandElement().GetUrl()) f5.GetHttpCliMgr().SendGoStyleRequest( url, @@ -134,7 +147,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { currencyContractMeta.GetAddress(), goodsMeta.GetId(), itemNum, - price, + q5.ToString(price), diamond) { f5.RspErr(c, 500, "server internal error") return diff --git a/server/marketserver/mtb/mtb.auto_gen.go b/server/marketserver/mtb/mtb.auto_gen.go index fa812060..16ed6db5 100644 --- a/server/marketserver/mtb/mtb.auto_gen.go +++ b/server/marketserver/mtb/mtb.auto_gen.go @@ -62,8 +62,8 @@ type Config struct { type RechargeCurrency struct { currency_name string - exchange_rate int32 - currency_decimal int32 + exchange_rate int64 + currency_decimal int64 _flags1_ uint64 _flags2_ uint64 @@ -330,7 +330,7 @@ func (this *RechargeCurrency) HasCurrencyName() bool { return (this._flags1_ & (uint64(1) << 1)) > 0 } -func (this *RechargeCurrency) GetExchangeRate() int32 { +func (this *RechargeCurrency) GetExchangeRate() int64 { return this.exchange_rate } @@ -338,7 +338,7 @@ func (this *RechargeCurrency) HasExchangeRate() bool { return (this._flags1_ & (uint64(1) << 2)) > 0 } -func (this *RechargeCurrency) GetCurrencyDecimal() int32 { +func (this *RechargeCurrency) GetCurrencyDecimal() int64 { return this.currency_decimal } diff --git a/server/marketserver/proto/mt.proto b/server/marketserver/proto/mt.proto index e6edaa59..a9746062 100644 --- a/server/marketserver/proto/mt.proto +++ b/server/marketserver/proto/mt.proto @@ -51,8 +51,8 @@ message Config message RechargeCurrency { optional string currency_name = 1; - optional int32 exchange_rate = 2; - optional int32 currency_decimal = 3; + optional int64 exchange_rate = 2; + optional int64 currency_decimal = 3; } message Item From d6fd79d1421edce83154a96d55ad081b0734ad5f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 15:12:04 +0800 Subject: [PATCH 06/29] 1 --- .../marketserver/api/v1/recharge/recharge.go | 18 ++-- server/marketserver/constant/constant.go | 6 ++ server/marketserver/mtb/mtb.auto_gen.go | 86 ++++++------------- server/marketserver/proto/mt.proto | 11 +-- third_party/q5 | 2 +- 5 files changed, 51 insertions(+), 72 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 0a8af6c2..7b392597 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -29,9 +29,9 @@ func (ea *RechargeApi) RechargeList(c *gin.Context) { mt.Table.Recharge.RawMetaTable.Traverse(func(tb *mt.Recharge) bool { tmpmap := map[string]interface{}{} tmpmap["goods_id"] = tb.GetId() - tmpmap["diamond"] = tb.GetRechargeItemNum() - tmpmap["currency"] = tb.GetRechargeCurrency() - tmpmap["price"] = tb.GetRechargeCostNum() + tmpmap["diamond"] = tb.GetDiamond() + //tmpmap["currency"] = tb.GetRechargeCurrency() + tmpmap["price"] = tb.GetPrice() rspObj.Rows = append(rspObj.Rows, tmpmap) @@ -53,16 +53,22 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 1, err.Error()) return } + if reqJson.Num <= 0 { + f5.RspErr(c, 2, "num param error") + return + } currencyMeta := mt.Table.RechargeCurrency.Get() if currencyMeta == nil { f5.RspErr(c, 2, "server internal error") return } - if currencyMeta.GetExchangeRate() <= 0 || currencyMeta.GetExchangeRate() > 1000 { + if currencyMeta.GetExchangeRate() <= 0 || + currencyMeta.GetExchangeRate() > constant.RECHARGE_CURRENCY_MAX_EXCHANGE_RAET { f5.RspErr(c, 2, "server internal error") return } - if currencyMeta.GetCurrencyDecimal() <= 0 || currencyMeta.GetCurrencyDecimal() > 10 { + if currencyMeta.GetCurrencyDecimal() <= 0 || + currencyMeta.GetCurrencyDecimal() > constant.RECHARGE_CURRENCY_MAX_DECIMAL { f5.RspErr(c, 2, "server internal error") return } @@ -101,7 +107,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { return } } - price := currencyMeta.GetCurrencyDecimal() * q5.ToInt64(reqJson.Num) + price := q5.PowInt64(10, currencyMeta.GetCurrencyDecimal()) * q5.ToInt64(reqJson.Num) params := map[string]string{ "c": "BcService", "a": "recharge", diff --git a/server/marketserver/constant/constant.go b/server/marketserver/constant/constant.go index eed5e807..03ac120b 100644 --- a/server/marketserver/constant/constant.go +++ b/server/marketserver/constant/constant.go @@ -17,3 +17,9 @@ const ( const ( SHOPCART_MAX_GOODS_NUM = 20 ) + +const ( + RECHARGE_CURRENCY_MAX_EXCHANGE_RAET = 50 + RECHARGE_CURRENCY_MAX_DECIMAL = 6 + RECHARGE_CURRENCY_MAX_BUY_NUM = 9999 +) diff --git a/server/marketserver/mtb/mtb.auto_gen.go b/server/marketserver/mtb/mtb.auto_gen.go index 16ed6db5..cdc502b1 100644 --- a/server/marketserver/mtb/mtb.auto_gen.go +++ b/server/marketserver/mtb/mtb.auto_gen.go @@ -88,13 +88,10 @@ type Language struct { } type Recharge struct { - recharge_cost_num string - recharge_icon string - recharge_item int32 - recharge_type int32 - recharge_item_num int32 id int32 - recharge_currency string + diamond int32 + price int32 + max_buy_times int32 _flags1_ uint64 _flags2_ uint64 @@ -394,60 +391,36 @@ func (this *Language) HasEn() bool { return (this._flags1_ & (uint64(1) << 2)) > 0 } -func (this *Recharge) GetRechargeCostNum() string { - return this.recharge_cost_num -} - -func (this *Recharge) HasRechargeCostNum() bool { - return (this._flags1_ & (uint64(1) << 1)) > 0 -} - -func (this *Recharge) GetRechargeIcon() string { - return this.recharge_icon -} - -func (this *Recharge) HasRechargeIcon() bool { - return (this._flags1_ & (uint64(1) << 2)) > 0 -} - -func (this *Recharge) GetRechargeItem() int32 { - return this.recharge_item -} - -func (this *Recharge) HasRechargeItem() bool { - return (this._flags1_ & (uint64(1) << 3)) > 0 -} - -func (this *Recharge) GetRechargeType() int32 { - return this.recharge_type -} - -func (this *Recharge) HasRechargeType() bool { - return (this._flags1_ & (uint64(1) << 4)) > 0 -} - -func (this *Recharge) GetRechargeItemNum() int32 { - return this.recharge_item_num -} - -func (this *Recharge) HasRechargeItemNum() bool { - return (this._flags1_ & (uint64(1) << 5)) > 0 -} - func (this *Recharge) GetId() int32 { return this.id } func (this *Recharge) HasId() bool { - return (this._flags1_ & (uint64(1) << 6)) > 0 + return (this._flags1_ & (uint64(1) << 1)) > 0 } -func (this *Recharge) GetRechargeCurrency() string { - return this.recharge_currency +func (this *Recharge) GetDiamond() int32 { + return this.diamond } -func (this *Recharge) HasRechargeCurrency() bool { - return (this._flags1_ & (uint64(1) << 7)) > 0 +func (this *Recharge) HasDiamond() bool { + return (this._flags1_ & (uint64(1) << 2)) > 0 +} + +func (this *Recharge) GetPrice() int32 { + return this.price +} + +func (this *Recharge) HasPrice() bool { + return (this._flags1_ & (uint64(1) << 3)) > 0 +} + +func (this *Recharge) GetMaxBuyTimes() int32 { + return this.max_buy_times +} + +func (this *Recharge) HasMaxBuyTimes() bool { + return (this._flags1_ & (uint64(1) << 4)) > 0 } func (this *Web3ServiceCluster) GetUrl() string { @@ -527,13 +500,10 @@ func (this *Language) LoadFromKv(kv map[string]interface{}) { } func (this *Recharge) LoadFromKv(kv map[string]interface{}) { - f5.ReadMetaTableField(&this.recharge_cost_num, "recharge_cost_num", &this._flags1_, 1, kv) - f5.ReadMetaTableField(&this.recharge_icon, "recharge_icon", &this._flags1_, 2, kv) - f5.ReadMetaTableField(&this.recharge_item, "recharge_item", &this._flags1_, 3, kv) - f5.ReadMetaTableField(&this.recharge_type, "recharge_type", &this._flags1_, 4, kv) - f5.ReadMetaTableField(&this.recharge_item_num, "recharge_item_num", &this._flags1_, 5, kv) - f5.ReadMetaTableField(&this.id, "id", &this._flags1_, 6, kv) - f5.ReadMetaTableField(&this.recharge_currency, "recharge_currency", &this._flags1_, 7, kv) + f5.ReadMetaTableField(&this.id, "id", &this._flags1_, 1, kv) + f5.ReadMetaTableField(&this.diamond, "diamond", &this._flags1_, 2, kv) + f5.ReadMetaTableField(&this.price, "price", &this._flags1_, 3, kv) + f5.ReadMetaTableField(&this.max_buy_times, "max_buy_times", &this._flags1_, 4, kv) } func (this *Web3ServiceCluster) LoadFromKv(kv map[string]interface{}) { diff --git a/server/marketserver/proto/mt.proto b/server/marketserver/proto/mt.proto index a9746062..c9c4e5e2 100644 --- a/server/marketserver/proto/mt.proto +++ b/server/marketserver/proto/mt.proto @@ -71,13 +71,10 @@ message Language message Recharge { - optional string recharge_cost_num = 1; - optional string recharge_icon =2; - optional int32 recharge_item =3; - optional int32 recharge_type =4; - optional int32 recharge_item_num =5; - optional int32 id =6; - optional string recharge_currency = 7; + optional int32 id = 1; + optional int32 diamond = 2; + optional int32 price = 3; + optional int32 max_buy_times = 4; } message Web3ServiceCluster diff --git a/third_party/q5 b/third_party/q5 index 489449c6..b065fccf 160000 --- a/third_party/q5 +++ b/third_party/q5 @@ -1 +1 @@ -Subproject commit 489449c65d408c649ec4ceeb3fa1ad48a692eb61 +Subproject commit b065fccf5cc960b8a411841424ef1de29dceb3ec From 6d32241f85c344cc8d8395d1c52f6ee2dc0f05a6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 15:27:46 +0800 Subject: [PATCH 07/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 17 +++++++++++++++-- server/marketserver/mt/RechargeCurrency.go | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 7b392597..9897ea98 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -23,15 +23,28 @@ func (ea *RechargeApi) RechargeList(c *gin.Context) { rspObj := struct { ErrCode int32 `json:"errcode"` ErrMsg string `json:"errmsg"` + CurrencyName string `json:"currency_name"` + CurrencyAddress string `json:"currency_address"` Rows []interface{} `json:"rows"` }{} + netId := q5.ToInt32(c.DefaultQuery("net_id", "0")) + currencyMeta := mt.Table.RechargeCurrency.Get(netId) + if currencyMeta == nil { + f5.RspErr(c, 2, "server internal error") + return + } + currencyContractMeta := mt.Table.Contract.GetByNetIdName(netId, currencyMeta.GetCurrencyName()) + if currencyContractMeta == nil { + f5.RspErr(c, 2, "server internal error") + return + } mt.Table.Recharge.RawMetaTable.Traverse(func(tb *mt.Recharge) bool { tmpmap := map[string]interface{}{} tmpmap["goods_id"] = tb.GetId() tmpmap["diamond"] = tb.GetDiamond() - //tmpmap["currency"] = tb.GetRechargeCurrency() tmpmap["price"] = tb.GetPrice() + tmpmap["max_buy_times"] = tb.GetMaxBuyTimes() rspObj.Rows = append(rspObj.Rows, tmpmap) @@ -57,7 +70,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 2, "num param error") return } - currencyMeta := mt.Table.RechargeCurrency.Get() + currencyMeta := mt.Table.RechargeCurrency.Get(reqJson.NetId) if currencyMeta == nil { f5.RspErr(c, 2, "server internal error") return diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index d4d23e8a..e5664e82 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -21,6 +21,6 @@ func (this *RechargeCurrencyTable) PostInit1() { } } -func (this *RechargeCurrencyTable) Get() *RechargeCurrency { +func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { return this.selfConf } From 79260bcbf7423c73063bf04721cfc07f55c1bf2d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 15:29:14 +0800 Subject: [PATCH 08/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 9897ea98..bbfb03bc 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -23,21 +23,8 @@ func (ea *RechargeApi) RechargeList(c *gin.Context) { rspObj := struct { ErrCode int32 `json:"errcode"` ErrMsg string `json:"errmsg"` - CurrencyName string `json:"currency_name"` - CurrencyAddress string `json:"currency_address"` Rows []interface{} `json:"rows"` }{} - netId := q5.ToInt32(c.DefaultQuery("net_id", "0")) - currencyMeta := mt.Table.RechargeCurrency.Get(netId) - if currencyMeta == nil { - f5.RspErr(c, 2, "server internal error") - return - } - currencyContractMeta := mt.Table.Contract.GetByNetIdName(netId, currencyMeta.GetCurrencyName()) - if currencyContractMeta == nil { - f5.RspErr(c, 2, "server internal error") - return - } mt.Table.Recharge.RawMetaTable.Traverse(func(tb *mt.Recharge) bool { tmpmap := map[string]interface{}{} From 5b9290558e4b63046b7f910479c33fe67a4e3e73 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 15:46:45 +0800 Subject: [PATCH 09/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index bbfb03bc..c89eea53 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -125,7 +125,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { Calls []jccommon.ContractCall `json:"calls"` }{} var itemNum int32 = reqJson.Num - var diamond int64 = currencyMeta.GetExchangeRate() * int64(1) + var diamond int64 = currencyMeta.GetExchangeRate() * int64(1) * int64(itemNum) url := fmt.Sprintf("%s/webapp/index.php", mt.Table.Web3SignCluster.RandElement().GetUrl()) f5.GetHttpCliMgr().SendGoStyleRequest( url, From 47b5018d19b2bbb5d20c82335a3749d751b5fb9a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 15:49:49 +0800 Subject: [PATCH 10/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index c89eea53..21277831 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -107,7 +107,8 @@ func (this *RechargeApi) Buy(c *gin.Context) { return } } - price := q5.PowInt64(10, currencyMeta.GetCurrencyDecimal()) * q5.ToInt64(reqJson.Num) + price := q5.PowInt64(10, currencyMeta.GetCurrencyDecimal()) * q5.ToInt64(goodsMeta.GetPrice()) * + q5.ToInt64(reqJson.Num) params := map[string]string{ "c": "BcService", "a": "recharge", @@ -125,7 +126,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { Calls []jccommon.ContractCall `json:"calls"` }{} var itemNum int32 = reqJson.Num - var diamond int64 = currencyMeta.GetExchangeRate() * int64(1) * int64(itemNum) + var diamond int64 = currencyMeta.GetExchangeRate() * q5.ToInt64(goodsMeta.GetDiamond()) * int64(itemNum) url := fmt.Sprintf("%s/webapp/index.php", mt.Table.Web3SignCluster.RandElement().GetUrl()) f5.GetHttpCliMgr().SendGoStyleRequest( url, From 759365412e5ca53c2ae906da05c4cfe24e01bc10 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 15:51:19 +0800 Subject: [PATCH 11/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 21277831..1f8af597 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -53,10 +53,6 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 1, err.Error()) return } - if reqJson.Num <= 0 { - f5.RspErr(c, 2, "num param error") - return - } currencyMeta := mt.Table.RechargeCurrency.Get(reqJson.NetId) if currencyMeta == nil { f5.RspErr(c, 2, "server internal error") @@ -82,7 +78,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 2, "goods id param error") return } - if reqJson.Num < 0 { + if reqJson.Num < 0 || reqJson.Num > goodsMeta.GetMaxBuyTimes() { f5.RspErr(c, 2, "num param error") return } From 14f4356dcb5c82af7c70f211253b11792e762262 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 16:19:27 +0800 Subject: [PATCH 12/29] 1 --- .../marketserver/api/v1/recharge/recharge.go | 8 +++++++ server/marketserver/mt/Recharge.go | 24 +++++++++++++++++++ server/marketserver/mt/RechargeCurrency.go | 20 ++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 1f8af597..c44e1038 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -78,6 +78,10 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 2, "goods id param error") return } + if goodsMeta.GetPrice() <= 0 { + f5.RspErr(c, 2, "goods id param error") + return + } if reqJson.Num < 0 || reqJson.Num > goodsMeta.GetMaxBuyTimes() { f5.RspErr(c, 2, "num param error") return @@ -105,6 +109,10 @@ func (this *RechargeApi) Buy(c *gin.Context) { } price := q5.PowInt64(10, currencyMeta.GetCurrencyDecimal()) * q5.ToInt64(goodsMeta.GetPrice()) * q5.ToInt64(reqJson.Num) + if price <= 0 || price < q5.ToInt64(goodsMeta.GetPrice()) { + f5.RspErr(c, 3, "server internal error") + return + } params := map[string]string{ "c": "BcService", "a": "recharge", diff --git a/server/marketserver/mt/Recharge.go b/server/marketserver/mt/Recharge.go index cc658238..101060ab 100644 --- a/server/marketserver/mt/Recharge.go +++ b/server/marketserver/mt/Recharge.go @@ -3,6 +3,7 @@ package mt import ( "f5" "main/mtb" + "main/constant" ) type Recharge struct { @@ -12,3 +13,26 @@ type Recharge struct { type RechargeTable struct { f5.IdMetaTable[Recharge] } + +func (this *Recharge) Init1() { + if this.GetDiamond() <= 0 { + panic("Recharge diamond <= 0") + return + } + if this.GetDiamond() > constant.RECHARGE_CURRENCY_MAX_EXCHANGE_RAET { + panic("Recharge diamond < upimit") + return + } + if this.GetPrice() <= 0 { + panic("Recharge price <= 0") + return + } + if this.GetMaxBuyTimes() <= 0 { + panic("Recharge max_buy_times <= 0") + return + } + if this.GetMaxBuyTimes() > constant.RECHARGE_CURRENCY_MAX_BUY_NUM { + panic("Recharge max_buy_times > uplimit") + return + } +} diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index e5664e82..71f009b5 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -3,6 +3,7 @@ package mt import ( "f5" "main/mtb" + "main/constant" ) type RechargeCurrency struct { @@ -14,6 +15,25 @@ type RechargeCurrencyTable struct { selfConf *RechargeCurrency } +func (this *RechargeCurrency) Init1() { + if this.GetExchangeRate() <= 0 { + panic("RechargeCurrency exchange_rate <= 0") + return + } + if this.GetExchangeRate() != constant.RECHARGE_CURRENCY_MAX_EXCHANGE_RAET { + panic("RechargeCurrency exchange_rate > uplimit") + return + } + if this.GetCurrencyDecimal() <= 0 { + panic("RechargeCurrency currency_decimal <= 0") + return + } + if this.GetCurrencyDecimal() != constant.RECHARGE_CURRENCY_MAX_DECIMAL { + panic("RechargeCurrency exchange_rate > uplimit") + return + } +} + func (this *RechargeCurrencyTable) PostInit1() { this.selfConf = this.GetById(int64(0)) if this.selfConf == nil { From 0993c99a268c50c4d984711b8043728ca5bc169f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 16:23:49 +0800 Subject: [PATCH 13/29] 1 --- bin/marketserver/res/recharge@recharge.json | 62 +++------------------ 1 file changed, 7 insertions(+), 55 deletions(-) diff --git a/bin/marketserver/res/recharge@recharge.json b/bin/marketserver/res/recharge@recharge.json index 8471d911..6dc055d9 100644 --- a/bin/marketserver/res/recharge@recharge.json +++ b/bin/marketserver/res/recharge@recharge.json @@ -1,56 +1,8 @@ [ - { - "recharge_cost_num": "15", - "recharge_icon": "itemIcon_diamond01", - "recharge_item": 10014, - "recharge_type": 1, - "recharge_item_num": 15, - "recharge_currency": "test currency", - "id": "1001" - }, - { - "recharge_cost_num": "62", - "recharge_icon": "itemIcon_diamond02", - "recharge_item": 10014, - "recharge_type": 1, - "recharge_item_num": 62, - "recharge_currency": "test currency", - "id": "1002" - }, - { - "recharge_cost_num": "162", - "recharge_icon": "itemIcon_diamond03", - "recharge_item": 10014, - "recharge_type": 1, - "recharge_item_num": 162, - "recharge_currency": "test currency", - "id": "1003" - }, - { - "recharge_cost_num": "325", - "recharge_icon": "itemIcon_diamond04", - "recharge_item": 10014, - "recharge_type": 1, - "recharge_item_num": 325, - "recharge_currency": "test currency", - "id": "1004" - }, - { - "recharge_cost_num": "800", - "recharge_icon": "itemIcon_diamond05", - "recharge_item": 10014, - "recharge_type": 1, - "recharge_item_num": 800, - "recharge_currency": "test currency", - "id": "1005" - }, - { - "recharge_cost_num": "", - "recharge_icon": "itemIcon_diamond06", - "recharge_item": 10014, - "recharge_type": 1, - "recharge_item_num": 0, - "recharge_currency": "test currency", - "id": "1006" - } - ] \ No newline at end of file + { + "id": 1001, + "diamond": 50, + "price": 1, + "max_buy_times": 9999 + } +] From 01848848c7022d375fb078b134618c4571f15b3f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 16:24:20 +0800 Subject: [PATCH 14/29] 1 --- .../config/recharge_currency@recharge_currency.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 bin/marketserver/config/recharge_currency@recharge_currency.json diff --git a/bin/marketserver/config/recharge_currency@recharge_currency.json b/bin/marketserver/config/recharge_currency@recharge_currency.json new file mode 100644 index 00000000..d25ec798 --- /dev/null +++ b/bin/marketserver/config/recharge_currency@recharge_currency.json @@ -0,0 +1,5 @@ +{ + "currency_name": "", + "exchange_rate": 50, + "currency_decimal": 6 +} From 389ee8ace746b40b3a578a9c00f66acb9ae80659 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 16:52:01 +0800 Subject: [PATCH 15/29] 1 --- .../config/recharge_currency@recharge_currency.json | 2 +- server/marketserver/api/v1/recharge/recharge.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/marketserver/config/recharge_currency@recharge_currency.json b/bin/marketserver/config/recharge_currency@recharge_currency.json index d25ec798..5016b3e6 100644 --- a/bin/marketserver/config/recharge_currency@recharge_currency.json +++ b/bin/marketserver/config/recharge_currency@recharge_currency.json @@ -1,5 +1,5 @@ { - "currency_name": "", + "currency_name": "TestToken", "exchange_rate": 50, "currency_decimal": 6 } diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index c44e1038..ca537177 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -46,7 +46,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { reqJson := struct { NetId int32 `json:"net_id"` GoodsId int32 `json:"goods_id"` - Num int32 `json:"num"` + Num int32 `json:"goods_num"` AccountAddress string `json:"account_address"` }{} if err := c.ShouldBindJSON(&reqJson); err != nil { @@ -82,7 +82,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 2, "goods id param error") return } - if reqJson.Num < 0 || reqJson.Num > goodsMeta.GetMaxBuyTimes() { + if reqJson.Num <= 0 || reqJson.Num > goodsMeta.GetMaxBuyTimes() { f5.RspErr(c, 2, "num param error") return } @@ -130,7 +130,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { Calls []jccommon.ContractCall `json:"calls"` }{} var itemNum int32 = reqJson.Num - var diamond int64 = currencyMeta.GetExchangeRate() * q5.ToInt64(goodsMeta.GetDiamond()) * int64(itemNum) + var diamond int64 = q5.ToInt64(goodsMeta.GetDiamond()) * int64(itemNum) url := fmt.Sprintf("%s/webapp/index.php", mt.Table.Web3SignCluster.RandElement().GetUrl()) f5.GetHttpCliMgr().SendGoStyleRequest( url, From dc8c2e6495bb4bba1dd106450a17e788e00d3767 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:30:02 +0800 Subject: [PATCH 16/29] 1 --- .../marketserver/api/v1/recharge/recharge.go | 1 + server/marketserver/mt/RechargeCurrency.go | 34 +++++++++++++++++-- server/marketserver/mt/export.go | 5 +-- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index ca537177..8ba5d5f4 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -20,6 +20,7 @@ type RechargeApi struct { } func (ea *RechargeApi) RechargeList(c *gin.Context) { + //netId := q5.ToInt64(c.Param("net_id")) rspObj := struct { ErrCode int32 `json:"errcode"` ErrMsg string `json:"errmsg"` diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index 71f009b5..07ecf652 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -1,7 +1,9 @@ package mt import ( + "q5" "f5" + "fmt" "main/mtb" "main/constant" ) @@ -11,7 +13,7 @@ type RechargeCurrency struct { } type RechargeCurrencyTable struct { - f5.IdMetaTable[RechargeCurrency] + f5.CustomMetaTable selfConf *RechargeCurrency } @@ -35,7 +37,6 @@ func (this *RechargeCurrency) Init1() { } func (this *RechargeCurrencyTable) PostInit1() { - this.selfConf = this.GetById(int64(0)) if this.selfConf == nil { panic("无法读取recharge_currency.json") } @@ -44,3 +45,32 @@ func (this *RechargeCurrencyTable) PostInit1() { func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { return this.selfConf } + +func (this *RechargeCurrencyTable) Load() { + nets := []int64{} + { + if jsonStr, err := f5.ReadJsonFile("../config/nets.json"); err == nil { + if err := q5.DecodeJson(jsonStr, &nets); err != nil { + panic(fmt.Sprintf("load metafile json decode error %s %s", "nets.json", err)) + } + } else { + panic(fmt.Sprintf("load metafile error %s %s", "nets.json", err)) + } + } + { + for _, val := range nets { + netId := val + fileName := fmt.Sprintf("../config/nets/%d/currency.json", netId) + if jsonStr, err := f5.ReadJsonFile(fileName); err == nil { + currencys := []struct { + CurrencyName string `json:"currency_name"` + ExchangeRate int64 `json:"exchange_rate"` + CurrencyDecimal int64 `json:"currency_decimal"` + }{} + if err := q5.DecodeJson(jsonStr, ¤cys); err != nil { + panic(fmt.Sprintf("load metafile json decode error %s %s", "currency.json", err)) + } + } + } + } +} diff --git a/server/marketserver/mt/export.go b/server/marketserver/mt/export.go index 28322a6f..4ca72c55 100644 --- a/server/marketserver/mt/export.go +++ b/server/marketserver/mt/export.go @@ -67,10 +67,7 @@ var Table = f5.New(func(this *table) { this.PrimKey = "" }) - this.RechargeCurrency = f5.New(func(this *RechargeCurrencyTable) { - this.FileName = "../config/recharge_currency@recharge_currency.json" - this.PrimKey = "" - }) + this.RechargeCurrency = new(RechargeCurrencyTable) this.Recharge = f5.New(func(this *RechargeTable) { this.FileName = "../res/recharge@recharge.json" From fbd911772edb05c8986d9a6709697e7f97114709 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:33:48 +0800 Subject: [PATCH 17/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index 07ecf652..9421c55d 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -4,17 +4,29 @@ import ( "q5" "f5" "fmt" - "main/mtb" "main/constant" ) type RechargeCurrency struct { - mtb.RechargeCurrency + currencyName string + exchangeRate int64 + currencyDecimal int64 +} + +func (this *RechargeCurrency) GetCurrencyName() string { + return this.currencyName +} + +func (this *RechargeCurrency) GetExchangeRate() int64 { + return this.exchangeRate +} + +func (this *RechargeCurrency) GetCurrencyDecimal() int64 { + return this.currencyDecimal } type RechargeCurrencyTable struct { f5.CustomMetaTable - selfConf *RechargeCurrency } func (this *RechargeCurrency) Init1() { @@ -36,14 +48,8 @@ func (this *RechargeCurrency) Init1() { } } -func (this *RechargeCurrencyTable) PostInit1() { - if this.selfConf == nil { - panic("无法读取recharge_currency.json") - } -} - func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { - return this.selfConf + return nil } func (this *RechargeCurrencyTable) Load() { From 81890d63744e22a3aea47994f424547009c019b9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:35:27 +0800 Subject: [PATCH 18/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index 9421c55d..59311e2e 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -13,6 +13,12 @@ type RechargeCurrency struct { currencyDecimal int64 } +func (this *RechargeCurrency) init(currencyName string, exchangeRate int64, currencyDecimal int64) { + this.currencyName = currencyName + this.exchangeRate = exchangeRate + this.currencyDecimal = currencyDecimal +} + func (this *RechargeCurrency) GetCurrencyName() string { return this.currencyName } From 87e168be9dca0a2fc8cd1b33c28c2f827ebabcd6 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:38:59 +0800 Subject: [PATCH 19/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index 59311e2e..b0e3aed6 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -13,6 +13,11 @@ type RechargeCurrency struct { currencyDecimal int64 } +type RechargeCurrencyTable struct { + f5.CustomMetaTable + netIdHash *q5.ConcurrentMap[int64, *RechargeCurrency] +} + func (this *RechargeCurrency) init(currencyName string, exchangeRate int64, currencyDecimal int64) { this.currencyName = currencyName this.exchangeRate = exchangeRate @@ -31,11 +36,7 @@ func (this *RechargeCurrency) GetCurrencyDecimal() int64 { return this.currencyDecimal } -type RechargeCurrencyTable struct { - f5.CustomMetaTable -} - -func (this *RechargeCurrency) Init1() { +func (this *RechargeCurrency) check() { if this.GetExchangeRate() <= 0 { panic("RechargeCurrency exchange_rate <= 0") return @@ -59,6 +60,7 @@ func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { } func (this *RechargeCurrencyTable) Load() { + this.netIdHash = new(q5.ConcurrentMap[int64, *RechargeCurrency]) nets := []int64{} { if jsonStr, err := f5.ReadJsonFile("../config/nets.json"); err == nil { From 07275ceb466bf0a8bb1d9bce17d660c243667ab5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:41:51 +0800 Subject: [PATCH 20/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index b0e3aed6..0c3c9819 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -76,14 +76,17 @@ func (this *RechargeCurrencyTable) Load() { netId := val fileName := fmt.Sprintf("../config/nets/%d/currency.json", netId) if jsonStr, err := f5.ReadJsonFile(fileName); err == nil { - currencys := []struct { + currencyCfg := struct { CurrencyName string `json:"currency_name"` ExchangeRate int64 `json:"exchange_rate"` CurrencyDecimal int64 `json:"currency_decimal"` }{} - if err := q5.DecodeJson(jsonStr, ¤cys); err != nil { + if err := q5.DecodeJson(jsonStr, ¤cyCfg); err != nil { panic(fmt.Sprintf("load metafile json decode error %s %s", "currency.json", err)) } + p := new(RechargeCurrency) + p.init(currencyCfg.CurrencyName, currencyCfg.ExchangeRate, currencyCfg.CurrencyDecimal) + this.netIdHash.Store(netId, p) } } } From 1f961f8917ebd9f88ef798ac36151e22e8161f32 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:44:40 +0800 Subject: [PATCH 21/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index 0c3c9819..b2e1b8f2 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -15,7 +15,7 @@ type RechargeCurrency struct { type RechargeCurrencyTable struct { f5.CustomMetaTable - netIdHash *q5.ConcurrentMap[int64, *RechargeCurrency] + netIdHash *q5.ConcurrentMap[int32, *RechargeCurrency] } func (this *RechargeCurrency) init(currencyName string, exchangeRate int64, currencyDecimal int64) { @@ -56,12 +56,16 @@ func (this *RechargeCurrency) check() { } func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { - return nil + if v, ok := this.netIdHash.Load(netId); ok { + return *v + } else { + return nil + } } func (this *RechargeCurrencyTable) Load() { - this.netIdHash = new(q5.ConcurrentMap[int64, *RechargeCurrency]) - nets := []int64{} + this.netIdHash = new(q5.ConcurrentMap[int32, *RechargeCurrency]) + nets := []int32{} { if jsonStr, err := f5.ReadJsonFile("../config/nets.json"); err == nil { if err := q5.DecodeJson(jsonStr, &nets); err != nil { @@ -86,6 +90,7 @@ func (this *RechargeCurrencyTable) Load() { } p := new(RechargeCurrency) p.init(currencyCfg.CurrencyName, currencyCfg.ExchangeRate, currencyCfg.CurrencyDecimal) + p.check() this.netIdHash.Store(netId, p) } } From d0dd50df99c192abc620f7909d14962c58735340 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:46:29 +0800 Subject: [PATCH 22/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 8ba5d5f4..4a405ad8 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -27,7 +27,7 @@ func (ea *RechargeApi) RechargeList(c *gin.Context) { Rows []interface{} `json:"rows"` }{} - mt.Table.Recharge.RawMetaTable.Traverse(func(tb *mt.Recharge) bool { + mt.Table.Recharge.Traverse(func(tb *mt.Recharge) bool { tmpmap := map[string]interface{}{} tmpmap["goods_id"] = tb.GetId() tmpmap["diamond"] = tb.GetDiamond() From 92e328f4175a76ac6bd7c3cdfb15688e749ce87e Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 17:47:34 +0800 Subject: [PATCH 23/29] 1 --- server/marketserver/api/v1/recharge/recharge.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index 4a405ad8..aa3f5a8b 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -20,13 +20,19 @@ type RechargeApi struct { } func (ea *RechargeApi) RechargeList(c *gin.Context) { - //netId := q5.ToInt64(c.Param("net_id")) + netId := q5.ToInt32(c.Param("net_id")) rspObj := struct { ErrCode int32 `json:"errcode"` ErrMsg string `json:"errmsg"` Rows []interface{} `json:"rows"` }{} + currencyMeta := mt.Table.RechargeCurrency.Get(netId) + if currencyMeta == nil { + f5.RspErr(c, 2, "server internal error") + return + } + mt.Table.Recharge.Traverse(func(tb *mt.Recharge) bool { tmpmap := map[string]interface{}{} tmpmap["goods_id"] = tb.GetId() From ca1bf9d3f0e8ac99965f98ca246b708b4ad6825a Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 19:26:44 +0800 Subject: [PATCH 24/29] 1 --- server/marketserver/mt/Recharge.go | 4 ---- server/marketserver/mt/RechargeCurrency.go | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/server/marketserver/mt/Recharge.go b/server/marketserver/mt/Recharge.go index 101060ab..b8769943 100644 --- a/server/marketserver/mt/Recharge.go +++ b/server/marketserver/mt/Recharge.go @@ -19,10 +19,6 @@ func (this *Recharge) Init1() { panic("Recharge diamond <= 0") return } - if this.GetDiamond() > constant.RECHARGE_CURRENCY_MAX_EXCHANGE_RAET { - panic("Recharge diamond < upimit") - return - } if this.GetPrice() <= 0 { panic("Recharge price <= 0") return diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index b2e1b8f2..c3d120ee 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -96,3 +96,18 @@ func (this *RechargeCurrencyTable) Load() { } } } + +func (this *RechargeCurrencyTable) PostInit1() { + this.netIdHash.Range( + func (key int32, val *RechargeCurrency) bool { + netId := key + currencyMeta := val + Table.Recharge.Traverse(func(ele *Recharge) bool { + if int64(ele.GetPrice()) * currencyMeta.GetExchangeRate() != int64(ele.GetDiamond()) { + panic(fmt.Sprintf("load metafile json decode error %s %s", "currency.json", netId)) + } + return true + }) + return true + }) +} From 6810b936e4522724a2544072e5f73bf2e32a9f4f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 7 Aug 2024 19:28:01 +0800 Subject: [PATCH 25/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index c3d120ee..18efd82d 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -104,7 +104,7 @@ func (this *RechargeCurrencyTable) PostInit1() { currencyMeta := val Table.Recharge.Traverse(func(ele *Recharge) bool { if int64(ele.GetPrice()) * currencyMeta.GetExchangeRate() != int64(ele.GetDiamond()) { - panic(fmt.Sprintf("load metafile json decode error %s %s", "currency.json", netId)) + panic(fmt.Sprintf("RechargeCurrency verifyerror net_id:%d id:%d", netId, ele.GetId())) } return true }) From c815a019acc841437051664440ff38da81f5ed2b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 8 Aug 2024 09:43:04 +0800 Subject: [PATCH 26/29] 1 --- .../13473/currency.json} | 0 server/marketserver/mt/RechargeCurrency.go | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename bin/marketserver/config/{recharge_currency@recharge_currency.json => currencys/13473/currency.json} (100%) diff --git a/bin/marketserver/config/recharge_currency@recharge_currency.json b/bin/marketserver/config/currencys/13473/currency.json similarity index 100% rename from bin/marketserver/config/recharge_currency@recharge_currency.json rename to bin/marketserver/config/currencys/13473/currency.json diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index 18efd82d..d271ef31 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -78,7 +78,7 @@ func (this *RechargeCurrencyTable) Load() { { for _, val := range nets { netId := val - fileName := fmt.Sprintf("../config/nets/%d/currency.json", netId) + fileName := fmt.Sprintf("../config/currencys/%d/currency.json", netId) if jsonStr, err := f5.ReadJsonFile(fileName); err == nil { currencyCfg := struct { CurrencyName string `json:"currency_name"` From 32d698e762d4d3c457f45ff8a6c1f5c9971eb161 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 8 Aug 2024 09:47:36 +0800 Subject: [PATCH 27/29] 1 --- server/marketserver/mt/RechargeCurrency.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/RechargeCurrency.go index d271ef31..0a17f47b 100644 --- a/server/marketserver/mt/RechargeCurrency.go +++ b/server/marketserver/mt/RechargeCurrency.go @@ -80,6 +80,7 @@ func (this *RechargeCurrencyTable) Load() { netId := val fileName := fmt.Sprintf("../config/currencys/%d/currency.json", netId) if jsonStr, err := f5.ReadJsonFile(fileName); err == nil { + f5.GetSysLog().Info("load currency %s", fileName) currencyCfg := struct { CurrencyName string `json:"currency_name"` ExchangeRate int64 `json:"exchange_rate"` From 91c45259b5a0114471ffc9b837fcb19325a03465 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 8 Aug 2024 09:49:03 +0800 Subject: [PATCH 28/29] 1 --- server/marketserver/mt/{RechargeCurrency.go => Currency.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename server/marketserver/mt/{RechargeCurrency.go => Currency.go} (100%) diff --git a/server/marketserver/mt/RechargeCurrency.go b/server/marketserver/mt/Currency.go similarity index 100% rename from server/marketserver/mt/RechargeCurrency.go rename to server/marketserver/mt/Currency.go From 01add69d2c7c9e24cab8cabc47494d15d571f607 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 8 Aug 2024 09:50:27 +0800 Subject: [PATCH 29/29] 1 --- .../marketserver/api/v1/recharge/recharge.go | 4 +- server/marketserver/mt/Currency.go | 38 +++++++++---------- server/marketserver/mt/export.go | 4 +- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/server/marketserver/api/v1/recharge/recharge.go b/server/marketserver/api/v1/recharge/recharge.go index aa3f5a8b..bf3be71a 100644 --- a/server/marketserver/api/v1/recharge/recharge.go +++ b/server/marketserver/api/v1/recharge/recharge.go @@ -27,7 +27,7 @@ func (ea *RechargeApi) RechargeList(c *gin.Context) { Rows []interface{} `json:"rows"` }{} - currencyMeta := mt.Table.RechargeCurrency.Get(netId) + currencyMeta := mt.Table.Currency.Get(netId) if currencyMeta == nil { f5.RspErr(c, 2, "server internal error") return @@ -60,7 +60,7 @@ func (this *RechargeApi) Buy(c *gin.Context) { f5.RspErr(c, 1, err.Error()) return } - currencyMeta := mt.Table.RechargeCurrency.Get(reqJson.NetId) + currencyMeta := mt.Table.Currency.Get(reqJson.NetId) if currencyMeta == nil { f5.RspErr(c, 2, "server internal error") return diff --git a/server/marketserver/mt/Currency.go b/server/marketserver/mt/Currency.go index 0a17f47b..68c349a7 100644 --- a/server/marketserver/mt/Currency.go +++ b/server/marketserver/mt/Currency.go @@ -7,55 +7,55 @@ import ( "main/constant" ) -type RechargeCurrency struct { +type Currency struct { currencyName string exchangeRate int64 currencyDecimal int64 } -type RechargeCurrencyTable struct { +type CurrencyTable struct { f5.CustomMetaTable - netIdHash *q5.ConcurrentMap[int32, *RechargeCurrency] + netIdHash *q5.ConcurrentMap[int32, *Currency] } -func (this *RechargeCurrency) init(currencyName string, exchangeRate int64, currencyDecimal int64) { +func (this *Currency) init(currencyName string, exchangeRate int64, currencyDecimal int64) { this.currencyName = currencyName this.exchangeRate = exchangeRate this.currencyDecimal = currencyDecimal } -func (this *RechargeCurrency) GetCurrencyName() string { +func (this *Currency) GetCurrencyName() string { return this.currencyName } -func (this *RechargeCurrency) GetExchangeRate() int64 { +func (this *Currency) GetExchangeRate() int64 { return this.exchangeRate } -func (this *RechargeCurrency) GetCurrencyDecimal() int64 { +func (this *Currency) GetCurrencyDecimal() int64 { return this.currencyDecimal } -func (this *RechargeCurrency) check() { +func (this *Currency) check() { if this.GetExchangeRate() <= 0 { - panic("RechargeCurrency exchange_rate <= 0") + panic("Currency exchange_rate <= 0") return } if this.GetExchangeRate() != constant.RECHARGE_CURRENCY_MAX_EXCHANGE_RAET { - panic("RechargeCurrency exchange_rate > uplimit") + panic("Currency exchange_rate > uplimit") return } if this.GetCurrencyDecimal() <= 0 { - panic("RechargeCurrency currency_decimal <= 0") + panic("Currency currency_decimal <= 0") return } if this.GetCurrencyDecimal() != constant.RECHARGE_CURRENCY_MAX_DECIMAL { - panic("RechargeCurrency exchange_rate > uplimit") + panic("Currency exchange_rate > uplimit") return } } -func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { +func (this *CurrencyTable) Get(netId int32) *Currency { if v, ok := this.netIdHash.Load(netId); ok { return *v } else { @@ -63,8 +63,8 @@ func (this *RechargeCurrencyTable) Get(netId int32) *RechargeCurrency { } } -func (this *RechargeCurrencyTable) Load() { - this.netIdHash = new(q5.ConcurrentMap[int32, *RechargeCurrency]) +func (this *CurrencyTable) Load() { + this.netIdHash = new(q5.ConcurrentMap[int32, *Currency]) nets := []int32{} { if jsonStr, err := f5.ReadJsonFile("../config/nets.json"); err == nil { @@ -89,7 +89,7 @@ func (this *RechargeCurrencyTable) Load() { if err := q5.DecodeJson(jsonStr, ¤cyCfg); err != nil { panic(fmt.Sprintf("load metafile json decode error %s %s", "currency.json", err)) } - p := new(RechargeCurrency) + p := new(Currency) p.init(currencyCfg.CurrencyName, currencyCfg.ExchangeRate, currencyCfg.CurrencyDecimal) p.check() this.netIdHash.Store(netId, p) @@ -98,14 +98,14 @@ func (this *RechargeCurrencyTable) Load() { } } -func (this *RechargeCurrencyTable) PostInit1() { +func (this *CurrencyTable) PostInit1() { this.netIdHash.Range( - func (key int32, val *RechargeCurrency) bool { + func (key int32, val *Currency) bool { netId := key currencyMeta := val Table.Recharge.Traverse(func(ele *Recharge) bool { if int64(ele.GetPrice()) * currencyMeta.GetExchangeRate() != int64(ele.GetDiamond()) { - panic(fmt.Sprintf("RechargeCurrency verifyerror net_id:%d id:%d", netId, ele.GetId())) + panic(fmt.Sprintf("Currency verifyerror net_id:%d id:%d", netId, ele.GetId())) } return true }) diff --git a/server/marketserver/mt/export.go b/server/marketserver/mt/export.go index 4ca72c55..9072795f 100644 --- a/server/marketserver/mt/export.go +++ b/server/marketserver/mt/export.go @@ -16,7 +16,7 @@ type table struct { Web3ServiceCluster *Web3ServiceClusterTable Web3SignCluster *Web3SignClusterTable Recharge *RechargeTable - RechargeCurrency *RechargeCurrencyTable + Currency *CurrencyTable } var Table = f5.New(func(this *table) { @@ -67,7 +67,7 @@ var Table = f5.New(func(this *table) { this.PrimKey = "" }) - this.RechargeCurrency = new(RechargeCurrencyTable) + this.Currency = new(CurrencyTable) this.Recharge = f5.New(func(this *RechargeTable) { this.FileName = "../res/recharge@recharge.json"