浏览代码

添加支付变量限制,防止过快调用

slambb 3 年之前
父节点
当前提交
8b169e4916
共有 3 个文件被更改,包括 36 次插入7 次删除
  1. 4 2
      assets/Scene/MyCityScene - 004.fire
  2. 9 3
      assets/Script/Lease/LeaseSaleInfo.js
  3. 23 2
      assets/Script/public/GameData.js

+ 4 - 2
assets/Scene/MyCityScene - 004.fire

@@ -718,7 +718,7 @@
       "__type__": "cc.Vec3",
       "x": 0,
       "y": 0,
-      "z": 535.2036995387831
+      "z": 525.6774200971543
     },
     "_scale": {
       "__type__": "cc.Vec3",
@@ -862,7 +862,7 @@
       "__type__": "cc.Vec3",
       "x": 0,
       "y": 0,
-      "z": 535.2036995387831
+      "z": 525.6774200971543
     },
     "_scale": {
       "__type__": "cc.Vec3",
@@ -122801,6 +122801,8 @@
     "scheduleObj": null,
     "toastCallback": null,
     "isStart": true,
+    "isPayingCnt": false,
+    "isPlayingSnb": false,
     "_id": "4a0Gepxu1Aso5f0MropwBw"
   },
   {

+ 9 - 3
assets/Script/Lease/LeaseSaleInfo.js

@@ -34,6 +34,7 @@ cc.Class({
             tooltip: "inputEditbox"
         },
 
+        isPlayingSnb: false,
     },
     inputValue(value, e) {
 
@@ -69,9 +70,14 @@ cc.Class({
             });
             return;
         }
-
+        if (this.isPlayingSnb) {
+            console.warn("同时触发支付SNB过快!");
+            return;
+        }
+        this.isPlayingSnb = true;
 
         GlobalD.GameData.onSaleFruit({ fruitId: this.fruitInfo.id, amount: this.inputInviteValue }, (res, value) => {
+            this.isPlayingSnb = false;
             // console.log(value);
             if (value.code === 0) {
                 // let NumLabel = this.upTarget.getComponent("Content_Button").NumLabel.getComponent(cc.Label);
@@ -82,12 +88,12 @@ cc.Class({
                 //     NumLabel.string = parseInt(NumLabel.string) - this.inputInviteValue;
                 //     this.saleAmount.string = parseInt(this.saleAmount.string) - this.inputInviteValue;
                 // }
-                GlobalD.GameData.SetSNB(GlobalD.GameData.GetSNB() + (this.inputInviteValue*this.fruitInfo.priceSnb));
+                GlobalD.GameData.SetSNB(GlobalD.GameData.GetSNB() + (this.inputInviteValue * this.fruitInfo.priceSnb));
 
                 var BuildingView = cc.find("Canvas/UICamera/BuildingContainer/BuildingView").getComponent("BuildingView");
                 BuildingView.onUpdateList();
                 this.saleAmount.string = parseInt(this.saleAmount.string) - this.inputInviteValue;
-    
+
                 GlobalD.GameData.showToast(cc.find('Canvas/UICamera'), "成功售卖了!", 2, () => {
                     console.log("finish toast!");
                 });

+ 23 - 2
assets/Script/public/GameData.js

@@ -69,7 +69,13 @@ cc.Class({
         toast: null,
         scheduleObj: null,
         toastCallback: null,
-        isStart: true
+        isStart: true,
+
+        /**
+         * 限制重复触发支付, 正在支付中转态,
+         */
+        isPayingCnt:false,
+        isPlayingSnb:false,
 
     },
     onLoad() {
@@ -1132,6 +1138,11 @@ cc.Class({
             return;
         }
         //
+        if(this.isPlayingCnt){
+            console.warn("同时触发支付CNT过快!");
+            return;
+        }
+        this.isPlayingCnt = true;
         if (GlobalD.GameData.GetCNT() < cntAmount) {
             console.log("cnt 不足,GetCNT:" + GlobalD.GameData.GetCNT() + "消费的cntAmount" + cntAmount);
             GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "CNT不足!", 2, () => {
@@ -1145,6 +1156,7 @@ cc.Class({
 
         GlobalD.dapp.payCnt(cntAmount, payType, itemType).then((data) => {
             const [err, tx] = data;
+            this.isPlayingCnt = false;
             if (err === null) {
                 // TODO 成功, 支付为链上操作,需要提供回调接口给这边服务端确认交易成功后修改购买订单结果
                 console.log(tx) // 交易hash,唯一标识符
@@ -1183,6 +1195,12 @@ cc.Class({
             console.warn("GlobalD.dapp未初始化,不能onSnbToCnt!");
             return;
         }
+        if(this.isPlayingSnb){
+            console.warn("同时触发支付SNB过快!");
+            return;
+        }
+        this.isPlayingSnb = true;
+
         if (GlobalD.GameData.GetSNB() <= 0) {
             console.log("神农呗数量GetSNB:", GlobalD.GameData.GetSNB(), "替换snbAmount:", snbAmount);
             GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "神农呗数量不足!", 2, () => {
@@ -1193,6 +1211,7 @@ cc.Class({
 
         GlobalD.dapp.snbToCnt(snbAmount).then((data) => {
             const [err, tx] = data;
+            this.isPlayingSnb = false;
             if (err === null) {
                 // TODO 成功, 兑换为链上操作,需要提供回调接口给这边服务端确认交易成功后修改扣除SNB数量
                 console.log(tx) // 交易hash,唯一标识符
@@ -1244,7 +1263,7 @@ cc.Class({
             this.toast.active = false
             if (this.toastCallback != null && this.toastCallback != undefined) {
                 this.toastCallback();
-                console.log(this.toastCallback);
+                // console.log(this.toastCallback);
             }
             this.isStart = false;
         } else {
@@ -1258,6 +1277,7 @@ cc.Class({
         if (this.toast) {
             this.toast.active = true;
             this.toast.parent = parent;
+            this.toast.zIndex = 999;
             let DetailLabel = this.toast.getChildByName('DetailLabel');
             DetailLabel.getComponent(cc.Label).string = content;
             this.toastEndTime = time;
@@ -1265,6 +1285,7 @@ cc.Class({
             cc.loader.loadRes("prefab/gameToast", function (err, texture) {
                 this.toast = cc.instantiate(texture);
                 this.toast.parent = parent;
+                this.toast.zIndex = 999;
                 let DetailLabel = this.toast.getChildByName('DetailLabel');
                 DetailLabel.getComponent(cc.Label).string = content;
                 this.toastEndTime = time;