dzduole преди 2 дни
родител
ревизия
43f83cc61c

+ 3 - 3
art/fgui/assets/game/UISecretary/UIFuli/component/Component_fl_1.xml

@@ -5,9 +5,9 @@
     <text id="n6_im8n" name="n6" xy="349,187" size="203,42" fontSize="30" color="#ffffff" autoSize="none" bold="true" text="Privilege 1:"/>
     <text id="n7_im8n" name="n7" xy="349,294" size="202,42" fontSize="30" color="#ffffff" autoSize="none" bold="true" text="Privilege 2:"/>
     <text id="n8_im8n" name="n8" xy="349,348" size="201,42" fontSize="30" color="#ffffff" autoSize="none" bold="true" text="Privilege 3:"/>
-    <text id="n5_im8n" name="n5" xy="572,187" size="366,101" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="Remove interstitial ads and banner ad" input="true"/>
-    <text id="n9_im8n" name="n9" xy="572,294" size="365,43" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="We&apos;ll give away a club" input="true"/>
-    <text id="n10_im8n" name="n10" xy="572,348" size="355,43" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="500 diamond" input="true"/>
+    <text id="n5_im8n" name="n5" xy="572,187" size="366,101" touchable="false" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="Remove interstitial ads and banner ad" input="true"/>
+    <text id="n9_im8n" name="n9" xy="572,294" size="365,43" touchable="false" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="We&apos;ll give away a club" input="true"/>
+    <text id="n10_im8n" name="n10" xy="572,348" size="355,43" touchable="false" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="500 diamond" input="true"/>
     <text id="n11_im8n" name="txt_price" xy="616,396" size="102,66" fontSize="50" color="#fefefe" bold="true" strokeColor="#d62c20" strokeSize="3" text="4.99"/>
     <component id="n12_loyp" name="n_no" src="loypv59r" fileName="UISecretary/UIFuli/component/Button_h.xml" xy="372,470"/>
     <component id="n13_loyp" name="n_buy" src="loypv59s" fileName="UISecretary/UIFuli/component/Button_lv.xml" xy="790,470"/>

+ 3 - 3
art/fgui/assets/game/UISecretary/UIFuli/component/Component_fl_2.xml

@@ -6,9 +6,9 @@
     <text id="n4_im8n" name="n4" xy="417,206" size="199,42" fontSize="30" color="#ffffff" autoSize="none" bold="true" text="Privilege 1:"/>
     <text id="n6_im8n" name="n6" xy="417,282" size="200,42" fontSize="30" color="#ffffff" autoSize="none" bold="true" text="Privilege 2:"/>
     <text id="n7_im8n" name="n7" xy="417,340" size="199,42" fontSize="30" color="#ffffff" autoSize="none" bold="true" text="Privilege 3:"/>
-    <text id="n5_im8n" name="n5" xy="632,206" size="366,49" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="Play all modes for free" input="true"/>
-    <text id="n8_im8n" name="n8" xy="632,282" size="366,49" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="3000 diamond" input="true"/>
-    <text id="n9_im8n" name="n9" xy="632,340" size="366,49" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="No ads at all" input="true"/>
+    <text id="n5_im8n" name="n5" xy="632,206" size="366,49" touchable="false" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="Play all modes for free" input="true"/>
+    <text id="n8_im8n" name="n8" xy="632,282" size="366,49" touchable="false" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="3000 diamond" input="true"/>
+    <text id="n9_im8n" name="n9" xy="632,340" size="366,49" touchable="false" fontSize="30" color="#ffff00" autoSize="none" bold="true" strokeColor="#000000" text="No ads at all" input="true"/>
     <component id="n10_loyp" name="n_no" src="loypv59r" fileName="UISecretary/UIFuli/component/Button_h.xml" xy="372,470"/>
     <component id="n11_loyp" name="n_buy" src="loypv59s" fileName="UISecretary/UIFuli/component/Button_lv.xml" xy="790,470"/>
   </displayList>

BIN
client/laya/bin/asset/fgui/game.obj


+ 335 - 96
client/laya/bin/js/bundle.js

@@ -850,7 +850,7 @@
 
     class HttpMgr {
         constructor() {
-            this.isDev = false;
+            this.isDev = true;
             HttpMgr._instance = this;
         }
         static getInstance() {
@@ -1147,6 +1147,53 @@
     }
     ui_UIBox.URL = "ui://isxx5ak7erstv4nm";
 
+    class LocalStorageManager {
+        test1() {
+            LocalStorageManager.setItem("playerName", "Tom");
+            LocalStorageManager.setItem("playerLevel", 5);
+            LocalStorageManager.setItem("playerData", { score: 100, level: 3 });
+            const name = LocalStorageManager.getItem("playerName");
+            const level = LocalStorageManager.getItem("playerLevel");
+            const data = LocalStorageManager.getItem("playerData");
+            console.log(name);
+            console.log(level);
+            console.log(data);
+            LocalStorageManager.removeItem("playerLevel");
+        }
+        static setItem(key, value) {
+            Laya.LocalStorage.setItem(key, JSON.stringify(value));
+        }
+        static getItem(key) {
+            const data = Laya.LocalStorage.getItem(key);
+            if (data === null)
+                return null;
+            try {
+                return JSON.parse(data);
+            }
+            catch (e) {
+                return data;
+            }
+        }
+        static removeItem(key) {
+            Laya.LocalStorage.removeItem(key);
+        }
+        static clear() {
+            Laya.LocalStorage.clear();
+        }
+        static hasJosnKey(key) {
+            var value = Laya.LocalStorage.getJSON(key);
+            if (value != null) {
+                return true;
+            }
+            else {
+                return false;
+            }
+        }
+        static hasKey(key) {
+            return Laya.LocalStorage.getItem(key) !== null;
+        }
+    }
+
     class GlobalManager {
         constructor() {
         }
@@ -1223,6 +1270,11 @@
             }, "testAsyncCallback", JSON.stringify(reqObj));
         }
         showInternAd(mark) {
+            let boo1 = this.checkAdForUserOrderForSpid17(1);
+            if (boo1) {
+                console.log('zh: VIP SPID = 1,免除插页AD');
+                return false;
+            }
             console.log('zh:showInternAd start');
             if (!Laya.Browser.onAndroid) {
                 console.log('zh:showInternAd 非android dev');
@@ -1258,7 +1310,27 @@
             console.log('zh:开始关闭游戏-');
             this.bridge.call("exitAndCloseGame");
         }
+        checkAdForUserOrderForSpid17(spid) {
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+            if (userInfo != null) {
+                if (!userInfo.buySpids) {
+                    userInfo.buySpids = { 1: false, 7: false };
+                }
+                else {
+                    console.log('zh:检查    userInfo.buySpidsX[' + spid + '] ' + userInfo.buySpids[spid]);
+                }
+                let boo = userInfo.buySpids[spid];
+                console.log('zh:检查是否免AD   SPID=' + spid + '=  免除AD?=' + boo);
+                return boo;
+            }
+            return false;
+        }
         showRewardAd(mark) {
+            let boo7 = this.checkAdForUserOrderForSpid17(7);
+            if (boo7) {
+                console.log('zh: VIP SPID = 7,无任何AD');
+                return false;
+            }
             if (!Laya.Browser.onAndroid) {
                 return false;
             }
@@ -1354,7 +1426,7 @@
             }
             this.bridge.call("loginOutForApp");
         }
-        startGgPay(token, ggSpid) {
+        startGgPay(token, ggSpid, spid) {
             if (!Laya.Browser.onAndroid) {
                 return;
             }
@@ -1364,13 +1436,14 @@
             let jsonObj = {
                 token: token,
                 ggSpid: ggSpid,
+                spid: spid,
                 spsl: 1
             };
             let reqData = JSON.stringify(jsonObj);
             console.log("zh:startGgPay ts  reqData=" + reqData);
             this.bridge.call("startGgPay", reqData);
         }
-        testPay1ForMoNiPayOver(token, ggSpid) {
+        testPay1ForMoNiPayOver(token, ggSpid, spid) {
             if (!Laya.Browser.onAndroid) {
                 return;
             }
@@ -1380,6 +1453,7 @@
             let jsonObj = {
                 token: token,
                 ggSpid: ggSpid,
+                spid: spid,
                 spsl: 1
             };
             let reqData = JSON.stringify(jsonObj);
@@ -4980,53 +5054,6 @@
     }
     UIPower.uiName = "UIPower";
 
-    class LocalStorageManager {
-        test1() {
-            LocalStorageManager.setItem("playerName", "Tom");
-            LocalStorageManager.setItem("playerLevel", 5);
-            LocalStorageManager.setItem("playerData", { score: 100, level: 3 });
-            const name = LocalStorageManager.getItem("playerName");
-            const level = LocalStorageManager.getItem("playerLevel");
-            const data = LocalStorageManager.getItem("playerData");
-            console.log(name);
-            console.log(level);
-            console.log(data);
-            LocalStorageManager.removeItem("playerLevel");
-        }
-        static setItem(key, value) {
-            Laya.LocalStorage.setItem(key, JSON.stringify(value));
-        }
-        static getItem(key) {
-            const data = Laya.LocalStorage.getItem(key);
-            if (data === null)
-                return null;
-            try {
-                return JSON.parse(data);
-            }
-            catch (e) {
-                return data;
-            }
-        }
-        static removeItem(key) {
-            Laya.LocalStorage.removeItem(key);
-        }
-        static clear() {
-            Laya.LocalStorage.clear();
-        }
-        static hasJosnKey(key) {
-            var value = Laya.LocalStorage.getJSON(key);
-            if (value != null) {
-                return true;
-            }
-            else {
-                return false;
-            }
-        }
-        static hasKey(key) {
-            return Laya.LocalStorage.getItem(key) !== null;
-        }
-    }
-
     class UILevelProp extends UIBase {
         constructor() {
             super();
@@ -5973,6 +6000,7 @@
             this.index = 0;
             this.uiIndex = 0;
             this.ggSpid = "";
+            this.spid = 0;
             this.ui = ui;
             this.index = index;
             this.initData();
@@ -5985,15 +6013,19 @@
             this.ui.n_jiaGe.text = data.spjg + "";
             this.ui.n_zuanShi.text = "X" + data.zssl + "";
             this.ggSpid = data.ggSpid;
+            this.spid = data.spid;
             let baseUrl = "asset/sound/ogg/";
             this.ui.zsImg.url = xGame.common.getGameIconUrl(data.img);
         }
         gotoBuy() {
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = this.ggSpid;
-                JSBridgeUtils.instance.startGgPay(token, ggSpid);
+                let spid = this.spid;
+                console.log('zh:gotoBuy1 ggSpid =' + ggSpid);
+                console.log('zh:gotoBuy1 spid =' + spid);
+                JSBridgeUtils.instance.startGgPay(token, ggSpid, spid);
                 return;
             }
             else {
@@ -6004,7 +6036,7 @@
             xGame.soundMgr.playSound(xGame.common.btnClickStr);
             let djItem = cfgTable.daoJuData[this.index + 1];
             console.log('zh:点击购买 djItem =' + JSON.stringify(djItem));
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo == null) {
                 xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
                 return;
@@ -6942,10 +6974,11 @@
                         let code = res.code;
                         let msg = res.msg;
                         if (code == 200) {
-                            let keyStr = 'userInfo';
+                            let keyStr = keyForLoginInfo;
                             let jsonStr = {
                                 "username": res.username,
-                                "token": res.token
+                                "token": res.token,
+                                "buySpids": { 1: false, 7: false }
                             };
                             LocalStorageManager.setItem(keyStr, jsonStr);
                             xGame.uiMgr.Show(UIMsg, msg);
@@ -7077,11 +7110,11 @@
             this.hide();
         }
         gotoBuy() {
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = 'com.vadltq.strike.ball.cue.noads.pack';
-                JSBridgeUtils.instance.startGgPay(token, ggSpid);
+                JSBridgeUtils.instance.startGgPay(token, ggSpid, 1);
                 return;
             }
             else {
@@ -7160,11 +7193,11 @@
             this.hide();
         }
         gotoBuy() {
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = 'com.vadltq.strike.ball.cue.passcard';
-                JSBridgeUtils.instance.startGgPay(token, ggSpid);
+                JSBridgeUtils.instance.startGgPay(token, ggSpid, 7);
                 return;
             }
             else {
@@ -7541,6 +7574,7 @@
             }
             this.c_btn_for_user();
             window['nativeCallJs'] = this.nativeCallJs.bind(this);
+            this.loadUserSpOrderForAd();
         }
         Logout() {
             if (LocalStorageManager.hasJosnKey(keyForLoginInfo)) {
@@ -7555,13 +7589,106 @@
         gotoRegUser() {
             xGame.uiMgr.Show(UIReg);
         }
-        showFuLi1() {
+        showFuLiSp1() {
             console.log('zh:福利1');
-            xGame.uiMgr.Show(UIFuli1);
+            this.checkForShowFuLi17(1);
         }
-        showFuLi2() {
-            console.log('zh:福利2');
-            xGame.uiMgr.Show(UIFuli2);
+        showFuLiSp7() {
+            console.log('zh:福利7');
+            this.checkForShowFuLi17(7);
+        }
+        loadUserSpOrderForAd() {
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+            if (userInfo == null) {
+                return;
+            }
+            let reqData = xGame.httpMgr.getReqData();
+            xGame.httpMgr.sendPost2025('order/getOrderListForNoChongFuBuy', reqData, (res) => {
+                try {
+                    console.log('zh:loadUserSpOrderForAd res = ' + JSON.stringify(res));
+                    let code = res.code;
+                    let msg = res.msg;
+                    if (code == 401) {
+                        Laya.LocalStorage.setItem(keyForLoginInfo, null);
+                        xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
+                        return;
+                    }
+                    if (code == 200) {
+                        let data = res.data;
+                        let buy_spid1 = false;
+                        let buy_spid7 = false;
+                        for (let index = 0; index < data.length; index++) {
+                            let element = data[index];
+                            console.log('zh:list  element.spid = ' + element.spid);
+                            if (element.spid == 1) {
+                                buy_spid1 = true;
+                            }
+                            if (element.spid == 7) {
+                                buy_spid7 = true;
+                            }
+                        }
+                        DataMgr.updateLocalUserDataForSpid17(1, buy_spid1);
+                        DataMgr.updateLocalUserDataForSpid17(7, buy_spid7);
+                    }
+                    else {
+                        xGame.uiMgr.Show(UIMsg, msg);
+                    }
+                }
+                catch (error) {
+                    console.log('error=' + error);
+                    alert(error);
+                }
+                finally {
+                }
+            });
+        }
+        checkForShowFuLi17(spid) {
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+            if (userInfo == null) {
+                console.log('zh:没有登录就不显示福利弹框了');
+                return;
+            }
+            console.log('zh:是否需要展示福利 ' + spid + ' 的弹窗');
+            let reqData = xGame.httpMgr.getReqData();
+            let pd = JSON.parse(reqData);
+            pd.productId = spid;
+            reqData = JSON.stringify(pd);
+            xGame.httpMgr.sendPost2025('order/checkBuyFuLi', reqData, (res) => {
+                try {
+                    console.log('zh:checkForShowFuLi17 res = ' + JSON.stringify(res));
+                    let code = res.code;
+                    let msg = res.msg;
+                    if (code == 401) {
+                        Laya.LocalStorage.setItem(keyForLoginInfo, null);
+                        xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
+                        return;
+                    }
+                    if (code == 200) {
+                        let isBuyOk = res.data;
+                        DataMgr.updateLocalUserDataForSpid17(spid, isBuyOk);
+                        if (isBuyOk === false) {
+                            if (spid === 1) {
+                                xGame.uiMgr.Show(UIFuli1);
+                            }
+                            if (spid === 7) {
+                                xGame.uiMgr.Show(UIFuli2);
+                            }
+                        }
+                        else {
+                            console.log('zh:已经购买了SPID=' + spid + ',不需要再提示用户了');
+                        }
+                    }
+                    else {
+                        xGame.uiMgr.Show(UIMsg, msg);
+                    }
+                }
+                catch (error) {
+                    console.log('error=' + error);
+                    alert(error);
+                }
+                finally {
+                }
+            });
         }
         c_btn_for_user() {
             this.ui.n_Logout.visible = false;
@@ -7614,11 +7741,12 @@
             this.addUIClick(this.ui.n_Logout, this.Logout);
             this.addUIClick(this.ui.n_dengLu, this.gotoLogin);
             this.addUIClick(this.ui.n_zhuCe, this.gotoRegUser);
-            this.addUIClick(this.ui.n_fuli, this.showFuLi2);
+            this.addUIClick(this.ui.n_fuli, this.showFuLiSp7);
             this.addUIClick(this.ui.n_moni_pay_ok, this.start_debug_for_moni_payOk);
         }
         show(showFailWords) {
             super.show();
+            this.loadUserSpOrderForAd();
             this.moneyNode.ui.c1.selectedIndex = 1;
             this.playSecretaryIdle();
             xGame.soundMgr.playMusic("caromhall01", 0);
@@ -7656,10 +7784,6 @@
                 }
                 Laya.timer.once(randTime, this, () => {
                 });
-                Laya.timer.once(1000, this, () => {
-                    console.log('zh: 1秒后  showFuLi1');
-                    this.showFuLi1();
-                });
             }
         }
         checkActive(show) {
@@ -7797,16 +7921,17 @@
             });
         }
         start_debug_for_moni_payOk() {
-            console.log('zh:start_debug_for_moni_payOk 111');
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            console.log('zh:start_debug_for_moni_payOk');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = 'com.vadltq.strike.ball.cue.gem50';
-                JSBridgeUtils.instance.testPay1ForMoNiPayOver(token, ggSpid);
+                JSBridgeUtils.instance.testPay1ForMoNiPayOver(token, ggSpid, 1);
+                alert('模拟支付OK');
                 return;
             }
             else {
-                alert(TIP_MSG_key.pleaseLoginIn);
+                xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
             }
         }
         startGlobal() {
@@ -18950,6 +19075,22 @@
                 }
             });
         }
+        static updateLocalUserDataForSpid17(spid, isBuyOk) {
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+            console.log('zh:updateLocalUserData=' + userInfo);
+            if (userInfo != null) {
+                if (!userInfo.buySpids) {
+                    userInfo.buySpids = { 1: false, 7: false };
+                }
+                else {
+                    console.log('zh:检查    userInfo.buySpidsX[' + spid + '] ' + userInfo.buySpids[spid]);
+                }
+                userInfo.buySpids[spid] = isBuyOk;
+                LocalStorageManager.setItem(keyForLoginInfo, userInfo);
+            }
+            else {
+            }
+        }
     }
     DataMgr.isNewUser = false;
     DataMgr.fristEnter = true;
@@ -23039,6 +23180,7 @@
             this.index = 0;
             this.uiIndex = 0;
             this.ggSpid = "";
+            this.spid = 0;
             this.ui = ui;
             this.index = index;
             this.initData();
@@ -23051,15 +23193,19 @@
             this.ui.n_jiaGe.text = data.spjg + "";
             this.ui.n_zuanShi.text = "X" + data.zssl + "";
             this.ggSpid = data.ggSpid;
+            this.spid = data.spid;
             let baseUrl = "asset/sound/ogg/";
             this.ui.zsImg.url = xGame.common.getGameIconUrl(data.img);
         }
         gotoBuy() {
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = this.ggSpid;
-                JSBridgeUtils.instance.startGgPay(token, ggSpid);
+                let spid = this.spid;
+                console.log('zh:gotoBuy1 ggSpid =' + ggSpid);
+                console.log('zh:gotoBuy1 spid =' + spid);
+                JSBridgeUtils.instance.startGgPay(token, ggSpid, spid);
                 return;
             }
             else {
@@ -23070,7 +23216,7 @@
             xGame.soundMgr.playSound(xGame.common.btnClickStr);
             let djItem = cfgTable.daoJuData[this.index + 1];
             console.log('zh:点击购买 djItem =' + JSON.stringify(djItem));
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo == null) {
                 xGame.uiMgr.Show(UIMsg$1, TIP_MSG_key.pleaseLoginIn);
                 return;
@@ -23638,10 +23784,11 @@
                         let code = res.code;
                         let msg = res.msg;
                         if (code == 200) {
-                            let keyStr = 'userInfo';
+                            let keyStr = keyForLoginInfo;
                             let jsonStr = {
                                 "username": res.username,
-                                "token": res.token
+                                "token": res.token,
+                                "buySpids": { 1: false, 7: false }
                             };
                             LocalStorageManager.setItem(keyStr, jsonStr);
                             xGame.uiMgr.Show(UIMsg$1, msg);
@@ -23762,11 +23909,11 @@
             this.hide();
         }
         gotoBuy() {
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = 'com.vadltq.strike.ball.cue.noads.pack';
-                JSBridgeUtils.instance.startGgPay(token, ggSpid);
+                JSBridgeUtils.instance.startGgPay(token, ggSpid, 1);
                 return;
             }
             else {
@@ -23834,11 +23981,11 @@
             this.hide();
         }
         gotoBuy() {
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = 'com.vadltq.strike.ball.cue.passcard';
-                JSBridgeUtils.instance.startGgPay(token, ggSpid);
+                JSBridgeUtils.instance.startGgPay(token, ggSpid, 7);
                 return;
             }
             else {
@@ -24301,6 +24448,7 @@
             }
             this.c_btn_for_user();
             window['nativeCallJs'] = this.nativeCallJs.bind(this);
+            this.loadUserSpOrderForAd();
         }
         Logout() {
             if (LocalStorageManager.hasJosnKey(keyForLoginInfo)) {
@@ -24315,13 +24463,106 @@
         gotoRegUser() {
             xGame.uiMgr.Show(UIReg$1);
         }
-        showFuLi1() {
+        showFuLiSp1() {
             console.log('zh:福利1');
-            xGame.uiMgr.Show(UIFuli1$1);
+            this.checkForShowFuLi17(1);
+        }
+        showFuLiSp7() {
+            console.log('zh:福利7');
+            this.checkForShowFuLi17(7);
+        }
+        loadUserSpOrderForAd() {
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+            if (userInfo == null) {
+                return;
+            }
+            let reqData = xGame.httpMgr.getReqData();
+            xGame.httpMgr.sendPost2025('order/getOrderListForNoChongFuBuy', reqData, (res) => {
+                try {
+                    console.log('zh:loadUserSpOrderForAd res = ' + JSON.stringify(res));
+                    let code = res.code;
+                    let msg = res.msg;
+                    if (code == 401) {
+                        Laya.LocalStorage.setItem(keyForLoginInfo, null);
+                        xGame.uiMgr.Show(UIMsg$1, TIP_MSG_key.pleaseLoginIn);
+                        return;
+                    }
+                    if (code == 200) {
+                        let data = res.data;
+                        let buy_spid1 = false;
+                        let buy_spid7 = false;
+                        for (let index = 0; index < data.length; index++) {
+                            let element = data[index];
+                            console.log('zh:list  element.spid = ' + element.spid);
+                            if (element.spid == 1) {
+                                buy_spid1 = true;
+                            }
+                            if (element.spid == 7) {
+                                buy_spid7 = true;
+                            }
+                        }
+                        DataMgr.updateLocalUserDataForSpid17(1, buy_spid1);
+                        DataMgr.updateLocalUserDataForSpid17(7, buy_spid7);
+                    }
+                    else {
+                        xGame.uiMgr.Show(UIMsg$1, msg);
+                    }
+                }
+                catch (error) {
+                    console.log('error=' + error);
+                    alert(error);
+                }
+                finally {
+                }
+            });
         }
-        showFuLi2() {
-            console.log('zh:福利2');
-            xGame.uiMgr.Show(UIFuli2$1);
+        checkForShowFuLi17(spid) {
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+            if (userInfo == null) {
+                console.log('zh:没有登录就不显示福利弹框了');
+                return;
+            }
+            console.log('zh:是否需要展示福利 ' + spid + ' 的弹窗');
+            let reqData = xGame.httpMgr.getReqData();
+            let pd = JSON.parse(reqData);
+            pd.productId = spid;
+            reqData = JSON.stringify(pd);
+            xGame.httpMgr.sendPost2025('order/checkBuyFuLi', reqData, (res) => {
+                try {
+                    console.log('zh:checkForShowFuLi17 res = ' + JSON.stringify(res));
+                    let code = res.code;
+                    let msg = res.msg;
+                    if (code == 401) {
+                        Laya.LocalStorage.setItem(keyForLoginInfo, null);
+                        xGame.uiMgr.Show(UIMsg$1, TIP_MSG_key.pleaseLoginIn);
+                        return;
+                    }
+                    if (code == 200) {
+                        let isBuyOk = res.data;
+                        DataMgr.updateLocalUserDataForSpid17(spid, isBuyOk);
+                        if (isBuyOk === false) {
+                            if (spid === 1) {
+                                xGame.uiMgr.Show(UIFuli1$1);
+                            }
+                            if (spid === 7) {
+                                xGame.uiMgr.Show(UIFuli2$1);
+                            }
+                        }
+                        else {
+                            console.log('zh:已经购买了SPID=' + spid + ',不需要再提示用户了');
+                        }
+                    }
+                    else {
+                        xGame.uiMgr.Show(UIMsg$1, msg);
+                    }
+                }
+                catch (error) {
+                    console.log('error=' + error);
+                    alert(error);
+                }
+                finally {
+                }
+            });
         }
         c_btn_for_user() {
             this.ui.n_Logout.visible = false;
@@ -24374,11 +24615,12 @@
             this.addUIClick(this.ui.n_Logout, this.Logout);
             this.addUIClick(this.ui.n_dengLu, this.gotoLogin);
             this.addUIClick(this.ui.n_zhuCe, this.gotoRegUser);
-            this.addUIClick(this.ui.n_fuli, this.showFuLi2);
+            this.addUIClick(this.ui.n_fuli, this.showFuLiSp7);
             this.addUIClick(this.ui.n_moni_pay_ok, this.start_debug_for_moni_payOk);
         }
         show(showFailWords) {
             super.show();
+            this.loadUserSpOrderForAd();
             this.moneyNode.ui.c1.selectedIndex = 1;
             this.playSecretaryIdle();
             xGame.soundMgr.playMusic("caromhall01", 0);
@@ -24416,10 +24658,6 @@
                 }
                 Laya.timer.once(randTime, this, () => {
                 });
-                Laya.timer.once(1000, this, () => {
-                    console.log('zh: 1秒后  showFuLi1');
-                    this.showFuLi1();
-                });
             }
         }
         checkActive(show) {
@@ -24557,16 +24795,17 @@
             });
         }
         start_debug_for_moni_payOk() {
-            console.log('zh:start_debug_for_moni_payOk 111');
-            let userInfo = LocalStorageManager.getItem('userInfo');
+            console.log('zh:start_debug_for_moni_payOk');
+            let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
             if (userInfo != null) {
                 let token = userInfo.token;
                 let ggSpid = 'com.vadltq.strike.ball.cue.gem50';
-                JSBridgeUtils.instance.testPay1ForMoNiPayOver(token, ggSpid);
+                JSBridgeUtils.instance.testPay1ForMoNiPayOver(token, ggSpid, 1);
+                alert('模拟支付OK');
                 return;
             }
             else {
-                alert(TIP_MSG_key.pleaseLoginIn);
+                xGame.uiMgr.Show(UIMsg$1, TIP_MSG_key.pleaseLoginIn);
             }
         }
         startGlobal() {

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
client/laya/bin/js/bundle.js.map


+ 1 - 1
client/laya/src/core/mgrs/HttpMgr.ts

@@ -53,7 +53,7 @@ export class HttpMgr {
 
 
 
-    private isDev: boolean = false;//是否是开发环境
+    private isDev: boolean = true;//是否是开发环境
     public getReqData() {
         let reqData = JSON.stringify({
             gameName: "TQ",

+ 28 - 3
client/laya/src/data/DataMgr.ts

@@ -1,7 +1,7 @@
 import { CHANGE_SECRETARY, COIN_CHANGE, DIAMOND_CHANGE, POWER_CHANGE, keyForLoginInfo, TIP_MSG_key } from "../data/Define";
 import { xGame } from "../xGame";
 import { GameData, ItemData, UserData, Diy2025GameData } from "./Data"
-
+import { LocalStorageManager } from "../utils/LocalStorageManager";
 
 //import { LocalStorageManager } from "../utils/LocalStorageManager";
 
@@ -523,8 +523,8 @@ export default class DataMgr {
             //key 就是球杆的id 就是:123456  v=是否拥有(购买)
             let k = parseInt(key);
             let idx = k - 1;
-            console.log('zh:更新IDX = '+idx)
-            console.log('this.userData.ballRod[idx]==='+this.userData.ballRod[idx])
+            console.log('zh:更新IDX = ' + idx)
+            console.log('this.userData.ballRod[idx]===' + this.userData.ballRod[idx])
             if (this.userData.ballRod[idx] === 0) {
                 console.log('zh: uuuuu  ' + (k - 1))
                 this.userData.ballRod[k - 1] = 1;//标识拥有
@@ -809,4 +809,29 @@ export default class DataMgr {
         });
     }
 
+
+
+
+    /**
+     * 
+     * @param spid  商品ID ,于数据库里的一致
+     * @param isBuyOk  true  标识已经购买
+     */
+    public static updateLocalUserDataForSpid17(spid: number, isBuyOk: boolean) {
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+        console.log('zh:updateLocalUserData=' + userInfo);
+        if (userInfo != null) {
+            if (!userInfo.buySpids) {
+                userInfo.buySpids = { 1: false, 7: false };
+            } else {
+                console.log('zh:检查    userInfo.buySpidsX[' + spid + '] ' + userInfo.buySpids[spid])
+            }
+            userInfo.buySpids[spid] = isBuyOk;
+            LocalStorageManager.setItem(keyForLoginInfo, userInfo);
+        } else {
+            //  xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn)
+        }
+    }
+
+
 }

+ 3 - 2
client/laya/src/ui/UIFuli1.ts

@@ -34,16 +34,17 @@ export default class UIFuli1 extends UIBase {
         this.hide();
     }
     gotoBuy() {
-        let userInfo = LocalStorageManager.getItem('userInfo');
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
         if (userInfo != null) {
             let token = userInfo.token;
             let ggSpid = 'com.vadltq.strike.ball.cue.noads.pack';
-            JSBridgeUtils.instance.startGgPay(token, ggSpid);
+            JSBridgeUtils.instance.startGgPay(token, ggSpid, 1);
             return;
         } else {
             xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn)
         }
     }
+    //废弃
     gotoBuy2() {
         let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
         if (userInfo == null) {

+ 2 - 2
client/laya/src/ui/UIFuli2.ts

@@ -38,11 +38,11 @@ export default class UIFuli2 extends UIBase {
         this.hide();
     }
     gotoBuy() {
-        let userInfo = LocalStorageManager.getItem('userInfo');
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
         if (userInfo != null) {
             let token = userInfo.token;
             let ggSpid = 'com.vadltq.strike.ball.cue.passcard';
-            JSBridgeUtils.instance.startGgPay(token, ggSpid);
+            JSBridgeUtils.instance.startGgPay(token, ggSpid,7);
             return;
         } else {
             xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn)

+ 5 - 2
client/laya/src/ui/UILogin.ts

@@ -1,6 +1,8 @@
 import UIBase from "../fgui/core/UIBase";
 import ui_UILogin from "../fgui/res/game/ui_UILogin";
 import { LocalStorageManager } from "../utils/LocalStorageManager";
+
+import { keyForLoginInfo, TIP_MSG_key } from "../data/Define";
 import { xGame } from "../xGame";
 import UIMsg from "./UIMsg";
 import UIReg from "./UIReg";
@@ -49,10 +51,11 @@ export default class UILogin extends UIBase {
                     let msg = res.msg;
                     if (code == 200) {
                         //console.log('zh:登录成功')
-                        let keyStr = 'userInfo';
+                        let keyStr = keyForLoginInfo;
                         let jsonStr = {
                             "username": res.username,
-                            "token": res.token
+                            "token": res.token,
+                            "buySpids": { 1: false, 7: false }
                         }
                         LocalStorageManager.setItem(keyStr, jsonStr);
                         xGame.uiMgr.Show(UIMsg, msg)

+ 129 - 15
client/laya/src/ui/UIMain.ts

@@ -189,6 +189,15 @@ export default class UIMain extends UIBase {
         this.c_btn_for_user();
 
         window['nativeCallJs'] = this.nativeCallJs.bind(this);
+
+
+        //  console.log('zh: 显示福利')
+        // Laya.timer.once(100, this, () => {
+        //     console.log('zh: 1秒后  showFuLiSp1')
+        //     this.showFuLiSp1();
+        // })
+        this.loadUserSpOrderForAd();
+
     }
 
     Logout() {
@@ -207,14 +216,118 @@ export default class UIMain extends UIBase {
     gotoRegUser() {
         xGame.uiMgr.Show(UIReg);
     }
-    showFuLi1() {
+    showFuLiSp1() {
         console.log('zh:福利1');
-        xGame.uiMgr.Show(UIFuli1);
+        this.checkForShowFuLi17(1);
     }
-    showFuLi2() {
-        console.log('zh:福利2');
-        xGame.uiMgr.Show(UIFuli2);
+    showFuLiSp7() {
+        console.log('zh:福利7');
+        this.checkForShowFuLi17(7);
     }
+    /**
+     * 加载用户广告权利
+     */
+    loadUserSpOrderForAd() {
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+        if (userInfo == null) {
+            return;
+        }
+        let reqData = xGame.httpMgr.getReqData();
+        xGame.httpMgr.sendPost2025('order/getOrderListForNoChongFuBuy', reqData, (res) => {
+            try {
+                console.log('zh:loadUserSpOrderForAd res = ' + JSON.stringify(res))
+                let code = res.code;
+                let msg = res.msg;
+                if (code == 401) {
+                    Laya.LocalStorage.setItem(keyForLoginInfo, null);
+                    xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn)
+                    return;
+                }
+                if (code == 200) {
+                    let data = res.data;
+                    let buy_spid1: boolean = false;
+                    let buy_spid7: boolean = false;
+
+                    for (let index = 0; index < data.length; index++) {
+                        let element = data[index];
+                        console.log('zh:list  element.spid = ' + element.spid);
+                        if (element.spid == 1) {
+                            buy_spid1 = true;
+                        }
+                        if (element.spid == 7) {
+                            buy_spid7 = true;
+                        }
+                    }
+                    DataMgr.updateLocalUserDataForSpid17(1, buy_spid1);
+                    DataMgr.updateLocalUserDataForSpid17(7, buy_spid7);
+                } else {
+                    xGame.uiMgr.Show(UIMsg, msg);
+                }
+            } catch (error) {
+                console.log('error=' + error);
+                alert(error);
+            } finally {
+
+            }
+        });
+    }
+
+
+    /**
+     * 
+     * @param spid  商品ID ,于数据库里的一致
+     * @returns 
+     */
+    checkForShowFuLi17(spid: number) {
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+        if (userInfo == null) {
+            console.log('zh:没有登录就不显示福利弹框了');
+            // xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
+            return;
+        }
+        console.log('zh:是否需要展示福利 ' + spid + ' 的弹窗');
+        let reqData = xGame.httpMgr.getReqData();
+        let pd: any = JSON.parse(reqData);
+        pd.productId = spid;
+        reqData = JSON.stringify(pd);
+        xGame.httpMgr.sendPost2025('order/checkBuyFuLi', reqData, (res) => {
+            try {
+                console.log('zh:checkForShowFuLi17 res = ' + JSON.stringify(res))
+                let code = res.code;
+                let msg = res.msg;
+                if (code == 401) {
+                    Laya.LocalStorage.setItem(keyForLoginInfo, null);
+                    xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn)
+                    return;
+                }
+                if (code == 200) {//{"msg":"Please do not repeat the purchase.","code":200,"data":0}
+                    let isBuyOk = res.data;//true 表示已经购买
+                    DataMgr.updateLocalUserDataForSpid17(spid, isBuyOk);
+                    if (isBuyOk === false) {
+                        if (spid === 1) {
+                            xGame.uiMgr.Show(UIFuli1);
+                        } if (spid === 7) {
+                            xGame.uiMgr.Show(UIFuli2);
+                        }
+                    } else {
+                        console.log('zh:已经购买了SPID=' + spid + ',不需要再提示用户了')
+                    }
+                } else {
+                    xGame.uiMgr.Show(UIMsg, msg);
+                }
+            } catch (error) {
+                console.log('error=' + error);
+                alert(error);
+            } finally {
+
+            }
+        });
+    }
+
+
+
+
+
 
     /**
      * 登录注册退出
@@ -280,7 +393,7 @@ export default class UIMain extends UIBase {
         this.addUIClick(this.ui.n_Logout, this.Logout);
         this.addUIClick(this.ui.n_dengLu, this.gotoLogin);
         this.addUIClick(this.ui.n_zhuCe, this.gotoRegUser);
-        this.addUIClick(this.ui.n_fuli, this.showFuLi2);
+        this.addUIClick(this.ui.n_fuli, this.showFuLiSp7);
 
         //调试专用
         this.addUIClick(this.ui.n_moni_pay_ok, this.start_debug_for_moni_payOk);
@@ -288,6 +401,9 @@ export default class UIMain extends UIBase {
     }
     public show(showFailWords): void {
         super.show();
+
+
+        this.loadUserSpOrderForAd();
         //
         this.moneyNode.ui.c1.selectedIndex = 1;
         this.playSecretaryIdle();
@@ -342,10 +458,7 @@ export default class UIMain extends UIBase {
                 // xGame.common.autoPopUIView();
             })
 
-            Laya.timer.once(1000, this, () => {
-                console.log('zh: 1秒后  showFuLi1')
-                this.showFuLi1();
-            })
+
 
         }
     }
@@ -510,15 +623,17 @@ export default class UIMain extends UIBase {
      * @returns 
      */
     start_debug_for_moni_payOk() {
-        console.log('zh:start_debug_for_moni_payOk 111')
-        let userInfo = LocalStorageManager.getItem('userInfo');
+        console.log('zh:start_debug_for_moni_payOk')
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
         if (userInfo != null) {
             let token = userInfo.token;
             let ggSpid = 'com.vadltq.strike.ball.cue.gem50';
-            JSBridgeUtils.instance.testPay1ForMoNiPayOver(token, ggSpid);
+            JSBridgeUtils.instance.testPay1ForMoNiPayOver(token, ggSpid, 1);
+            alert('模拟支付OK')
+
             return;
         } else {
-            alert(TIP_MSG_key.pleaseLoginIn)
+            xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
         }
     }
 
@@ -566,7 +681,6 @@ export default class UIMain extends UIBase {
                         }
                     }
                 };
-
                 tryFetchConfig();
             });
             return false;

+ 2 - 1
client/laya/src/ui/UITry.ts

@@ -64,7 +64,8 @@ export default class UITry extends UIBase {
                 return;
             }
         }
-
+        
+        
         if (JSBridgeUtils.instance.showRewardAd('qjff_AD_for_uitry')) {
 
         } else {

+ 9 - 4
client/laya/src/ui/item/DaoJuDisplay.ts

@@ -15,6 +15,7 @@ export default class DaoJuDisplay {
     public index: number = 0;
     public uiIndex: number = 0;
     private ggSpid: string = "";
+    private spid: number = 0;
     constructor(ui: ui_daoJuDisplay, index) {
         this.ui = ui;
         this.index = index;
@@ -29,6 +30,7 @@ export default class DaoJuDisplay {
         this.ui.n_zuanShi.text = "X" + data.zssl + "";
 
         this.ggSpid = data.ggSpid;
+        this.spid = data.spid;
 
         let baseUrl = "asset/sound/ogg/";
         this.ui.zsImg.url = xGame.common.getGameIconUrl(data.img);
@@ -37,11 +39,14 @@ export default class DaoJuDisplay {
 
     }
     gotoBuy() {
-        let userInfo = LocalStorageManager.getItem('userInfo');
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
         if (userInfo != null) {
             let token = userInfo.token;
             let ggSpid = this.ggSpid;
-            JSBridgeUtils.instance.startGgPay(token, ggSpid);
+            let spid = this.spid;
+            console.log('zh:gotoBuy1 ggSpid =' + ggSpid);
+            console.log('zh:gotoBuy1 spid =' + spid);
+            JSBridgeUtils.instance.startGgPay(token, ggSpid, spid);
             return;
         } else {
             //com.vadltq.strike.ball.cue.gem50
@@ -53,7 +58,7 @@ export default class DaoJuDisplay {
         xGame.soundMgr.playSound(xGame.common.btnClickStr);
         let djItem = cfgTable.daoJuData[this.index + 1];
         console.log('zh:点击购买 djItem =' + JSON.stringify(djItem));
-        let userInfo = LocalStorageManager.getItem('userInfo');
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
         if (userInfo == null) {
             xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn);
             // JSBridgeUtils.instance.showToast2(TIP_MSG_key.pleaseLoginIn);
@@ -70,7 +75,7 @@ export default class DaoJuDisplay {
                 let msg = res.msg;
                 if (code == 401) {
                     Laya.LocalStorage.setItem(keyForLoginInfo, null);
-                  //  alert(TIP_MSG_key.pleaseLoginIn);
+                    //  alert(TIP_MSG_key.pleaseLoginIn);
                     //import UIMsg from "./UIMsg";
                     xGame.uiMgr.Show(UIMsg, TIP_MSG_key.pleaseLoginIn)
                     return;

+ 45 - 3
client/laya/src/utils/JSBridgeUtils.ts

@@ -9,6 +9,9 @@
  * 
  * 
  */
+
+import { keyForLoginInfo, TIP_MSG_key } from "../data/Define";
+import { LocalStorageManager } from "../utils/LocalStorageManager";
 import GlobalManager from "./GlobalManager";
 export default class JSBridgeUtils {
     private static _instance: JSBridgeUtils;
@@ -76,6 +79,15 @@ export default class JSBridgeUtils {
     }
     //************* */
     public showInternAd(mark): boolean {
+        //spid = 1  免除插页广告和横幅广告
+        let boo1 = this.checkAdForUserOrderForSpid17(1);
+        if (boo1) {
+            console.log('zh: VIP SPID = 1,免除插页AD')
+            return false;
+        }
+
+
+
         console.log('zh:showInternAd start');
         if (!Laya.Browser.onAndroid) {
             console.log('zh:showInternAd 非android dev')
@@ -120,8 +132,35 @@ export default class JSBridgeUtils {
     }
 
 
+    /**
+     * 
+     * @param spid   固定值1  或者7 
+     * @returns 
+     */
+    private checkAdForUserOrderForSpid17(spid: number): boolean  {
+        let userInfo = LocalStorageManager.getItem(keyForLoginInfo);
+        if (userInfo != null) {
+            if (!userInfo.buySpids) {
+                userInfo.buySpids = { 1: false, 7: false };
+            } else {
+                console.log('zh:检查    userInfo.buySpidsX[' + spid + '] ' + userInfo.buySpids[spid])
+            }
+            let boo = userInfo.buySpids[spid];
+            console.log('zh:检查是否免AD   SPID=' + spid + '=  免除AD?=' + boo );
+            return boo;
+        }
+        return false;
+    }
 
     public showRewardAd(mark): boolean {
+        //7 = 完全无AD
+        let boo7 = this.checkAdForUserOrderForSpid17(7);
+        if (boo7) {
+            console.log('zh: VIP SPID = 7,无任何AD')
+            return false;
+        }
+
+
         if (!Laya.Browser.onAndroid) {
             return false;
         }
@@ -264,8 +303,8 @@ export default class JSBridgeUtils {
         }
         this.bridge.call("loginOutForApp");
     }
-  
-    public startGgPay(token: string, ggSpid: string): void {
+
+    public startGgPay(token: string, ggSpid: string, spid: number): void {
         if (!Laya.Browser.onAndroid) {
             return;
         }
@@ -276,6 +315,7 @@ export default class JSBridgeUtils {
         let jsonObj = {
             token: token,
             ggSpid: ggSpid,
+            spid: spid,
             spsl: 1
         };
         let reqData = JSON.stringify(jsonObj);
@@ -288,8 +328,9 @@ export default class JSBridgeUtils {
      * 模拟支付成功
      * @param token 
      * @param ggSpid 
+     * @param spid
      */
-    public testPay1ForMoNiPayOver(token: string, ggSpid: string): void {
+    public testPay1ForMoNiPayOver(token: string, ggSpid: string, spid: number): void {
         if (!Laya.Browser.onAndroid) {
             return;
         }
@@ -300,6 +341,7 @@ export default class JSBridgeUtils {
         let jsonObj = {
             token: token,
             ggSpid: ggSpid,
+            spid: spid,
             spsl: 1
         };
         let reqData = JSON.stringify(jsonObj);

Някои файлове не бяха показани, защото твърде много файлове са промени