Browse Source

Merge branch 'master' of http://git.mokasz.com/zouyong/tower_sanguo

zhengniehua 5 years ago
parent
commit
598ab2ff09
26 changed files with 2572 additions and 489 deletions
  1. BIN
      tower_sanguo/assets/resources/data/1.bin
  2. 2 1
      tower_sanguo/assets/resources/data/db_data.json
  3. 202 101
      tower_sanguo/assets/resources/data/mission_data.json
  4. 7 13
      tower_sanguo/assets/resources/data/openfun_data.json
  5. 5 4
      tower_sanguo/assets/resources/data/serverConfig_data.json
  6. 4 4
      tower_sanguo/assets/resources/data/turntable_data.json
  7. 10 10
      tower_sanguo/assets/resources/module/fight/fight.prefab
  8. 122 110
      tower_sanguo/assets/resources/module/getLiangCao/get_liangcao.prefab
  9. 1024 180
      tower_sanguo/assets/resources/module/main/main.prefab
  10. 1 5
      tower_sanguo/assets/scripts/GameController.ts
  11. 7 2
      tower_sanguo/assets/scripts/data/GameData.ts
  12. 2 0
      tower_sanguo/assets/scripts/data/GameDefinition.ts
  13. 2 0
      tower_sanguo/assets/scripts/manager/XXConst.ts
  14. 1 1
      tower_sanguo/assets/scripts/module/checkpointRedBag/CheckpointRedBagBtn.ts
  15. 1 1
      tower_sanguo/assets/scripts/module/checkpointRedBag/CheckpointRedBagItem.ts
  16. 5 3
      tower_sanguo/assets/scripts/module/fight/FightUI.ts
  17. 111 6
      tower_sanguo/assets/scripts/module/getLiangCao/GetLiangCaoModel.ts
  18. 33 6
      tower_sanguo/assets/scripts/module/getLiangCao/GetLiangCaoUI.ts
  19. 8 7
      tower_sanguo/assets/scripts/module/invest/investModel.ts
  20. 49 20
      tower_sanguo/assets/scripts/module/main/MainUI.ts
  21. 7 11
      tower_sanguo/assets/scripts/module/turntable/turntableModel.ts
  22. 58 1
      tower_sanguo/assets/scripts/net/HttpCommand.ts
  23. 1 1
      tower_sanguo/assets/scripts/net/servertest/ServerManager.ts
  24. 2 0
      tower_sanguo/assets/scripts/vo/MissionVO.ts
  25. 2 2
      tower_sanguo/assets/scripts/vo/PlayerVO.ts
  26. 906 0
      tower_sanguo/塔防接口.md

BIN
tower_sanguo/assets/resources/data/1.bin


+ 2 - 1
tower_sanguo/assets/resources/data/db_data.json

@@ -7,7 +7,8 @@
         "barrack": 15,
         "mission_arrive": 41,
         "mission_passed": 0,
-        "prestige": 10000
+        "prestige": 10000,
+        "useserver":0
     },
     "generals": [
         {

File diff suppressed because it is too large
+ 202 - 101
tower_sanguo/assets/resources/data/mission_data.json


+ 7 - 13
tower_sanguo/assets/resources/data/openfun_data.json

@@ -2,7 +2,7 @@
 	"1": {
 		"id": 1,
 		"name": "统帅台",
-		"openmission": 3,
+		"openmission": 5,
 		"btn_src": "btn_marshalstage",
 		"uiID": 1,
 		"ui_src": "marshalStageUI"
@@ -10,7 +10,7 @@
 	"2": {
 		"id": 2,
 		"name": "兵营",
-		"openmission": 5,
+		"openmission": 1,
 		"btn_src": "btn_barracks",
 		"uiID": 2,
 		"ui_src": "barracksUI"
@@ -18,14 +18,15 @@
 	"3": {
 		"id": 3,
 		"name": "武将",
-		"openmission": 7,
+		"openmission": 2,
 		"btn_src": "btn_general",
-		"uiID": 3
+		"uiID": 3,
+		"ui_src": "GeneralUI"
 	},
 	"4": {
 		"id": 4,
 		"name": "日常任务",
-		"openmission": 9,
+		"openmission": 3,
 		"btn_src": "btn_task",
 		"uiID": 4,
 		"ui_src": "TaskUI"
@@ -33,16 +34,9 @@
 	"5": {
 		"id": 5,
 		"name": "点将台",
-		"openmission": 7,
+		"openmission": 4,
 		"btn_src": "btn_getgeneral",
 		"uiID": 5,
 		"ui_src": "GetGeneralUI"
-	},
-	"6": {
-		"id": 6,
-		"name": "转盘",
-		"openmission": 8,
-		"uiID": 6,
-		"ui_src": "GetGeneralUI"
 	}
 }

+ 5 - 4
tower_sanguo/assets/resources/data/serverConfig_data.json

@@ -7,10 +7,10 @@
 	"initHero": "111001,111002,111003,111004,112005,112006,112007,112008,113009,113010,113011,113012,113013,113014,113015,114016,121001,121002,122003,122004,122005,122006,123007,123008,123009,123010,123011,123012,123013,124014,131001,131002,131003,132004,132005,132006,132007,133008,133009,133010,133011,133012,133013,134014,141001,141002,141003,141004,142005,142006,142007,142008,142009,142010,143011,143012,143013,143014,143015,144016",
 	"criMul": 1.5,
 	"heroStar": 7,
-	"food": 100000,
-	"yb": 100000,
+	"food": 10000,
+	"yb": 1000,
 	"redbag": 0,
-	"prestige": 100000,
+	"prestige": 0,
 	"invite_cost": 2000,
 	"invite_discount": 0.9,
 	"invite_wish_quality": "2,3,4",
@@ -30,5 +30,6 @@
 	"turntable_payTime": 8,
 	"turntable_recover": "12,18,24",
 	"dailyDropLimit": 20,
-	"saveLimit": 20
+	"saveLimit": 20,
+	"videofoodtime": 10
 }

+ 4 - 4
tower_sanguo/assets/resources/data/turntable_data.json

@@ -4,7 +4,7 @@
 		"item": 1,
 		"type": 0,
 		"num": 500,
-		"des": "少量粮草",
+		"des": "粮草",
 		"weight": 35,
 		"upRewardInfo": "1,1000;5,1500;9,2000",
 		"icon": 3
@@ -14,7 +14,7 @@
 		"item": 1,
 		"type": 0,
 		"num": 1000,
-		"des": "大量粮草",
+		"des": "粮草",
 		"weight": 20,
 		"upRewardInfo": "3,1500;7,2500",
 		"icon": 4
@@ -24,7 +24,7 @@
 		"item": 2,
 		"type": 0,
 		"num": 300,
-		"des": "少量元宝",
+		"des": "元宝",
 		"weight": 15,
 		"icon": 6
 	},
@@ -51,7 +51,7 @@
 		"item": 2,
 		"type": 0,
 		"num": 1000,
-		"des": "大量元宝",
+		"des": "元宝",
 		"weight": 10,
 		"icon": 7
 	}

+ 10 - 10
tower_sanguo/assets/resources/module/fight/fight.prefab

@@ -1249,7 +1249,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "b72RsHExBBLIWK1vL6sLfj",
+    "fileId": "e3b3Mdvp1E7Imwex2krdgL",
     "sync": false
   },
   {
@@ -1379,7 +1379,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "c0/7e5XtpFV4Fq+hV0nyA4",
+    "fileId": "728deWHAxAboPugG09iEk6",
     "sync": false
   },
   {
@@ -1975,7 +1975,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "89bK/z5i5IV7QEi+3rH9p5",
+    "fileId": "27X3pEhm9NlLOUBiBazl2a",
     "sync": false
   },
   {
@@ -2105,7 +2105,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "55puqxQyhDkquY1V5Cw6es",
+    "fileId": "a1aU7FP4VKYJ0jpf7Z74q0",
     "sync": false
   },
   {
@@ -2701,7 +2701,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "c0MhZiLV1Etpz/E2vjWKuA",
+    "fileId": "3doWVkDulLx7Z6NZf5hDUK",
     "sync": false
   },
   {
@@ -2831,7 +2831,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "3464WCcKNN05gI0BSQ2zVa",
+    "fileId": "a2WDofGIRN76jbYAAuH79H",
     "sync": false
   },
   {
@@ -3427,7 +3427,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "a0u0Bq3dZFjpCftN+PH8Ji",
+    "fileId": "1d7dKbOgFGvp1blxL94A4r",
     "sync": false
   },
   {
@@ -3557,7 +3557,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "caQYXwEslKeoY5z942xXpw",
+    "fileId": "5aHhJJBWlA4qYGthVYRiu8",
     "sync": false
   },
   {
@@ -4153,7 +4153,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "c1sKoFpwxMKoftsT+l8HL7",
+    "fileId": "51xrkET4pJjZ9IM+rFwqmG",
     "sync": false
   },
   {
@@ -4283,7 +4283,7 @@
     "asset": {
       "__uuid__": "42451b9d-0b8f-43df-bba7-24efa7828d8c"
     },
-    "fileId": "4bo1LXXvxL/5+qTa7lvG7n",
+    "fileId": "55BTOVpDZNJYnCte1PqJx6",
     "sync": false
   },
   {

+ 122 - 110
tower_sanguo/assets/resources/module/getLiangCao/get_liangcao.prefab

@@ -684,13 +684,13 @@
         "__id__": 47
       },
       {
-        "__id__": 49
+        "__id__": 61
       },
       {
-        "__id__": 63
+        "__id__": 65
       },
       {
-        "__id__": 67
+        "__id__": 69
       }
     ],
     "_active": true,
@@ -1544,7 +1544,7 @@
   },
   {
     "__type__": "cc.Node",
-    "_name": "lbl_lc_count",
+    "_name": "lbl_lc_times",
     "_objFlags": 0,
     "_parent": {
       "__id__": 35
@@ -1805,77 +1805,6 @@
   },
   {
     "__type__": "cc.Node",
-    "_name": "New Node",
-    "_objFlags": 0,
-    "_parent": {
-      "__id__": 16
-    },
-    "_children": [],
-    "_active": true,
-    "_components": [],
-    "_prefab": {
-      "__id__": 48
-    },
-    "_opacity": 255,
-    "_color": {
-      "__type__": "cc.Color",
-      "r": 255,
-      "g": 255,
-      "b": 255,
-      "a": 255
-    },
-    "_contentSize": {
-      "__type__": "cc.Size",
-      "width": 600,
-      "height": 350
-    },
-    "_anchorPoint": {
-      "__type__": "cc.Vec2",
-      "x": 0.5,
-      "y": 0.5
-    },
-    "_trs": {
-      "__type__": "TypedArray",
-      "ctor": "Float64Array",
-      "array": [
-        0,
-        -144.081,
-        0,
-        0,
-        0,
-        0,
-        1,
-        1,
-        1,
-        1
-      ]
-    },
-    "_eulerAngles": {
-      "__type__": "cc.Vec3",
-      "x": 0,
-      "y": 0,
-      "z": 0
-    },
-    "_skewX": 0,
-    "_skewY": 0,
-    "_is3DNode": false,
-    "_groupIndex": 0,
-    "groupIndex": 0,
-    "_id": ""
-  },
-  {
-    "__type__": "cc.PrefabInfo",
-    "root": {
-      "__id__": 1
-    },
-    "asset": {
-      "__uuid__": "94ac848f-6478-4b7f-8c5e-66aa9f6c3147"
-    },
-    "fileId": "987b1FCrJGpbljTWKWQ6sw",
-    "sync": false
-  },
-  {
-    "__type__": "cc.Node",
     "_name": "btn_get_lv",
     "_objFlags": 0,
     "_parent": {
@@ -1883,20 +1812,20 @@
     },
     "_children": [
       {
-        "__id__": 50
+        "__id__": 48
       }
     ],
     "_active": true,
     "_components": [
       {
-        "__id__": 60
+        "__id__": 58
       },
       {
-        "__id__": 61
+        "__id__": 59
       }
     ],
     "_prefab": {
-      "__id__": 62
+      "__id__": 60
     },
     "_opacity": 255,
     "_color": {
@@ -1950,24 +1879,24 @@
     "_name": "Layout",
     "_objFlags": 0,
     "_parent": {
-      "__id__": 49
+      "__id__": 47
     },
     "_children": [
       {
-        "__id__": 51
+        "__id__": 49
       },
       {
-        "__id__": 54
+        "__id__": 52
       }
     ],
     "_active": true,
     "_components": [
       {
-        "__id__": 58
+        "__id__": 56
       }
     ],
     "_prefab": {
-      "__id__": 59
+      "__id__": 57
     },
     "_opacity": 255,
     "_color": {
@@ -2021,17 +1950,17 @@
     "_name": "node_tv",
     "_objFlags": 0,
     "_parent": {
-      "__id__": 50
+      "__id__": 48
     },
     "_children": [],
     "_active": true,
     "_components": [
       {
-        "__id__": 52
+        "__id__": 50
       }
     ],
     "_prefab": {
-      "__id__": 53
+      "__id__": 51
     },
     "_opacity": 255,
     "_color": {
@@ -2085,7 +2014,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 51
+      "__id__": 49
     },
     "_enabled": true,
     "_materials": [
@@ -2128,20 +2057,20 @@
     "_name": "lbl_btn_desc",
     "_objFlags": 0,
     "_parent": {
-      "__id__": 50
+      "__id__": 48
     },
     "_children": [],
     "_active": true,
     "_components": [
       {
-        "__id__": 55
+        "__id__": 53
       },
       {
-        "__id__": 56
+        "__id__": 54
       }
     ],
     "_prefab": {
-      "__id__": 57
+      "__id__": 55
     },
     "_opacity": 255,
     "_color": {
@@ -2195,7 +2124,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 54
+      "__id__": 52
     },
     "_enabled": true,
     "_materials": [
@@ -2204,8 +2133,8 @@
       }
     ],
     "_useOriginalSize": false,
-    "_string": "双倍领取",
-    "_N$string": "双倍领取",
+    "_string": "领取粮草",
+    "_N$string": "领取粮草",
     "_fontSize": 44,
     "_lineHeight": 40,
     "_enableWrapText": true,
@@ -2229,7 +2158,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 54
+      "__id__": 52
     },
     "_enabled": true,
     "_color": {
@@ -2258,7 +2187,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 50
+      "__id__": 48
     },
     "_enabled": true,
     "_layoutSize": {
@@ -2301,7 +2230,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 49
+      "__id__": 47
     },
     "_enabled": true,
     "_materials": [
@@ -2333,7 +2262,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 49
+      "__id__": 47
     },
     "_enabled": true,
     "_normalMaterial": {
@@ -2420,14 +2349,14 @@
     "_active": true,
     "_components": [
       {
-        "__id__": 64
+        "__id__": 62
       },
       {
-        "__id__": 65
+        "__id__": 63
       }
     ],
     "_prefab": {
-      "__id__": 66
+      "__id__": 64
     },
     "_opacity": 255,
     "_color": {
@@ -2481,7 +2410,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 63
+      "__id__": 61
     },
     "_enabled": true,
     "_materials": [
@@ -2515,7 +2444,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 63
+      "__id__": 61
     },
     "_enabled": true,
     "_color": {
@@ -2541,7 +2470,7 @@
   },
   {
     "__type__": "cc.Node",
-    "_name": "lbl_desc",
+    "_name": "lbl_rest_times",
     "_objFlags": 0,
     "_parent": {
       "__id__": 16
@@ -2550,14 +2479,14 @@
     "_active": true,
     "_components": [
       {
-        "__id__": 68
+        "__id__": 66
       },
       {
-        "__id__": 69
+        "__id__": 67
       }
     ],
     "_prefab": {
-      "__id__": 70
+      "__id__": 68
     },
     "_opacity": 255,
     "_color": {
@@ -2611,7 +2540,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 67
+      "__id__": 65
     },
     "_enabled": true,
     "_materials": [
@@ -2645,7 +2574,7 @@
     "_name": "",
     "_objFlags": 0,
     "node": {
-      "__id__": 67
+      "__id__": 65
     },
     "_enabled": true,
     "_color": {
@@ -2670,6 +2599,77 @@
     "sync": false
   },
   {
+    "__type__": "cc.Node",
+    "_name": "node_video",
+    "_objFlags": 0,
+    "_parent": {
+      "__id__": 16
+    },
+    "_children": [],
+    "_active": true,
+    "_components": [],
+    "_prefab": {
+      "__id__": 70
+    },
+    "_opacity": 255,
+    "_color": {
+      "__type__": "cc.Color",
+      "r": 255,
+      "g": 255,
+      "b": 255,
+      "a": 255
+    },
+    "_contentSize": {
+      "__type__": "cc.Size",
+      "width": 600,
+      "height": 350
+    },
+    "_anchorPoint": {
+      "__type__": "cc.Vec2",
+      "x": 0.5,
+      "y": 0.5
+    },
+    "_trs": {
+      "__type__": "TypedArray",
+      "ctor": "Float64Array",
+      "array": [
+        0,
+        -160.295,
+        0,
+        0,
+        0,
+        0,
+        1,
+        1,
+        1,
+        1
+      ]
+    },
+    "_eulerAngles": {
+      "__type__": "cc.Vec3",
+      "x": 0,
+      "y": 0,
+      "z": 0
+    },
+    "_skewX": 0,
+    "_skewY": 0,
+    "_is3DNode": false,
+    "_groupIndex": 0,
+    "groupIndex": 0,
+    "_id": ""
+  },
+  {
+    "__type__": "cc.PrefabInfo",
+    "root": {
+      "__id__": 1
+    },
+    "asset": {
+      "__uuid__": "94ac848f-6478-4b7f-8c5e-66aa9f6c3147"
+    },
+    "fileId": "987b1FCrJGpbljTWKWQ6sw",
+    "sync": false
+  },
+  {
     "__type__": "cc.Widget",
     "_name": "",
     "_objFlags": 0,
@@ -2978,6 +2978,18 @@
     "open_effect": 1,
     "close_effect": 1,
     "close_toPoint": "",
+    "btn_receive": {
+      "__id__": 59
+    },
+    "lbl_can_up": {
+      "__id__": 40
+    },
+    "lbl_rest_times": {
+      "__id__": 66
+    },
+    "lbl_lc_count": {
+      "__id__": 30
+    },
     "_id": ""
   },
   {

File diff suppressed because it is too large
+ 1024 - 180
tower_sanguo/assets/resources/module/main/main.prefab


+ 1 - 5
tower_sanguo/assets/scripts/GameController.ts

@@ -39,7 +39,7 @@ class GameController {
     private loadui: LoadingUI;
     mainui: MainUI;
 
-    useLocalServer: boolean = true;
+    useLocalServer: boolean = false;
     //是否测试服
     testServer: boolean = true;
 
@@ -49,10 +49,6 @@ class GameController {
     init() {
         this.initErrorHandler();
 
-        if (this.useLocalServer) {
-            this.servertest = new ServerManager();
-        }
-
         this.resM = new ResManager();
         this.errorM = new ErrorManager();
         this.uiM = new UIManager();

+ 7 - 2
tower_sanguo/assets/scripts/data/GameData.ts

@@ -2,6 +2,7 @@ import LogUtil from "../../MOKA/util/LogUtil";
 import GameController from "../GameController";
 import CheckpointRedBagModle from "../module/checkpointRedBag/CheckpointRedBagModle";
 import FightData from "../module/fight/FightData";
+import GetLiangCaoModel from "../module/getLiangCao/GetLiangCaoModel";
 import TaskModel from "../module/task/TaskModel";
 import turntableModel from "../module/turntable/turntableModel";
 import HttpCommand, { MsgAddGeneralExp, UpdatePlayerProps } from "../net/HttpCommand";
@@ -11,6 +12,7 @@ import GeneralProp from "../net/msg/GeneralProp";
 import PlayerProp from "../net/msg/PlayerProp";
 import PlayerResponse from "../net/msg/PlayerResponse";
 import PlayerUpdateResponse from "../net/msg/PlayerUpdateResponse";
+import ServerManager from "../net/servertest/ServerManager";
 import { Dictionary } from "../utils/Dictionary";
 import BarrackVO from "../vo/BarrackVO";
 import BuffVO from "../vo/BuffVO";
@@ -73,7 +75,7 @@ export default class GameData {
         'star', 'help', 'turntable', 'taskActive', 'task', 'commanderskill', 'openfun'];
 
     /** 是否使用本地资源,不使用oss资源 */
-    private useLocal: boolean = true;
+    private useLocal: boolean = false;
 
     async initLocalConfigs() {
         console.log('initLocalConfigs');
@@ -121,9 +123,10 @@ export default class GameData {
     }
 
     private initJsonData() {
+        GameController.useLocalServer = this.db_data.playerInfo.useserver != 1;
         LogUtil.logAndroid('initJsonData...' + GameController.useLocalServer);
         if (GameController.useLocalServer) {
-            GameController.servertest.init();
+            GameController.servertest = new ServerManager();
         }
 
         this.fullskillId = [];
@@ -195,6 +198,7 @@ export default class GameData {
             vo.cd = o.cd;
             vo.foodRecover = o.recover;
             vo.foodMax = o.maxCapacity;
+            vo.videofood = o.videofood;
             vo.initRounds(o.monsterData);
             this.mission_data[i] = vo;
         }
@@ -567,6 +571,7 @@ export default class GameData {
         if (!task_list || !task_list.length) TaskModel.resetTaskData();// 无数据则重置
         // TaskModel.resetTaskData();// 测试专用
         // GameController.http.getUserIsNewDay();
+        GetLiangCaoModel.initData();
         GameController.loadMain();
     }
 

+ 2 - 0
tower_sanguo/assets/scripts/data/GameDefinition.ts

@@ -57,6 +57,8 @@ export enum PLAYERPROP {
 
     /**剩余红包兑换元宝次数*/
     USER_EXCHANGE_TIMES = 34,
+    /** 领取粮草模块数据 */
+    GET_FOOD_DATA = 35,
 }
 
 export enum ITEMTYPE {

+ 2 - 0
tower_sanguo/assets/scripts/manager/XXConst.ts

@@ -12,6 +12,8 @@ export class XXConst {
     public EventGetReward = 'event-get-reward';
     /** 是新的一天 */
     public EventIsNewDay = 'event-is-new-day';
+    /** 新的一波开始了 */
+    public EventNewMissionStart = 'event-new-mission-start';
 };
 declare global {
     const XXConst: XXConst;

+ 1 - 1
tower_sanguo/assets/scripts/module/checkpointRedBag/CheckpointRedBagBtn.ts

@@ -23,7 +23,7 @@ export default class CheckpointRedBagBtn extends cc.Component {
         XXEvent.addClickEvent(this.btn_chPo_RedBag, this.onClickChPoRedBag, this);
         XXEvent.on('event-get-checkpoint-redbag', this.onAddRedBag, this);
         XXEvent.on('event-monster-died', this.onMonsterDied, this);
-        XXEvent.on('event-new-mission-start', this.onNewMissionStart, this)// 新的一波开始了
+        XXEvent.on(XXConst.EventNewMissionStart, this.onNewMissionStart, this)// 新的一波开始了
     }
 
     start() {

+ 1 - 1
tower_sanguo/assets/scripts/module/checkpointRedBag/CheckpointRedBagItem.ts

@@ -23,7 +23,7 @@ export default class CheckpointRedBagItem extends cc.Component {
     /** 主页组件 */
     private comp_main: MainUI = null!;
     onLoad() {
-        XXEvent.on('event-new-mission-start', this.onNewMissionStart, this)// 新的一波开始了
+        XXEvent.on(XXConst.EventNewMissionStart, this.onNewMissionStart, this)// 新的一波开始了
         this.comp_btn = this.node.getComponent(cc.Button);
         XXEvent.addClickEvent(this.comp_btn, this.flyNode, this);
         // this.scheduleOnce(this.flyNode, this.life_time);

+ 5 - 3
tower_sanguo/assets/scripts/module/fight/FightUI.ts

@@ -26,6 +26,7 @@ import { ViewZorder } from "../../../MOKA/data/ViewZOrder";
 import GeneralUIModel from "../general/GeneralUIModel";
 import GameUtil from "../../../MOKA/util/GameUtil";
 import { MsgAddGeneralExp } from "../../net/HttpCommand";
+import GetLiangCaoModel from "../getLiangCao/GetLiangCaoModel";
 
 const { ccclass, property } = cc._decorator;
 
@@ -494,9 +495,10 @@ export default class FightUI extends BaseUI {
         // GameUtil.shake(this.lbl_mission.node.parent, 20, 2)// 此处Bug:后面的抖动无效
         // GameUtil.shake(this.lbl_mission.node.parent.getChildByName('lbl_di'), 20, 2)
         // GameUtil.shake(this.lbl_mission.node.parent.getChildByName('lbl_guan'), 20, 2)
-        // this.mission_start.stop();
-        // this.mission_start.play();
-        XXEvent.emit('event-new-mission-start')// 新的一波开始了
+        this.mission_start.stop();
+        this.mission_start.play();
+        XXEvent.emit(XXConst.EventNewMissionStart, mission)// 新的一波开始了
+        GetLiangCaoModel.updateFoodCount(mission);
     }
     private playMissionEndEffect(win: boolean, rewards: string) {
         if (win) {

+ 111 - 6
tower_sanguo/assets/scripts/module/getLiangCao/GetLiangCaoModel.ts

@@ -1,11 +1,116 @@
+import { PLAYERPROP } from "../../data/GameDefinition";
+import GameController from "../../GameController";
+import MainUI from "../main/MainUI";
+
 /**
  *  获取粮草界面逻辑
  */
 export default class GetLiangCaoModel {
-    /** 当前粮草值 */
-    public static cur_lc_value: number = 0;
-    /** 需要的粮草值 */
-    public static need_lc_value: number = 1;
-    /** x秒后可训练 */
-    public static need_after_time: number = 0;
+    /** 粮草界面数据 */
+    public static model_data = {
+        /** 今日剩余视频次数 
+         * - 跨天重置
+        */
+        rest_vedio_times: 0,
+    }
+    /** 可以获得的粮草数量 */
+    public static food_count: number = 0
+    /** 今日最多可看视频次数 
+     * - 走配置,需要配置
+    */
+    public static max_vedio_times: number = 0;
+    /** 保存数据 */
+    public static saveData() {
+        let temp_str_model_data = JSON.stringify(this.model_data);
+        GameController.gameData.updatePropNoCheck(PLAYERPROP.GET_FOOD_DATA, temp_str_model_data);
+    }
+    /** 重置数据 */
+    public static resetData() {
+        this.model_data.rest_vedio_times = this.max_vedio_times;
+        this.saveData();
+    }
+    /** 初始化数据 */
+    public static initData() {
+        if (!this.max_vedio_times) this.max_vedio_times = GameController.gameData.serverConfig_data.videofoodtime || 0;
+
+        let list_data = GameController.gameData.player.getProp(PLAYERPROP.GET_FOOD_DATA);
+        if (list_data) {
+            let temp_str_list_data = JSON.parse(list_data)
+            if (temp_str_list_data) this.model_data = temp_str_list_data;
+        } else {
+            // 没有数据
+            this.resetData();
+        }
+    }
+    /** 更新可以获得的粮草数量 
+     * 每关刷新
+    */
+    public static updateFoodCount(mission_id) {
+        this.food_count = GameController.gameData.getMissionByID(mission_id).videofood;
+    }
+    /** 预计可训练次数 
+     * - 实时计算得到
+     * - 向下取整
+     * - 次数 = 数量 / 每次消耗
+    */
+    public static canExpUpTimes(): number {
+        let can_expUp_times = 0;
+
+        let cur_food = this.food_count;
+        let consume_food = GameController.gameData.player.getProp(PLAYERPROP.FOODCONSUME);
+        can_expUp_times = Math.floor(cur_food / consume_food);
+        return can_expUp_times;
+    }
+    /** 预计多少秒后可训练
+     * - 实时计算得到
+     * - 向上取整
+     * - 时间 = 缺少的粮草数量 / 每秒获得
+     */
+    public static needAfterTime() {
+        let need_after_time = 0;
+        // 粮草每秒获得数量
+        let food_recover = GameController.gameData.player.getProp(PLAYERPROP.FOODRECOVER);
+        // 下级消耗
+        let consume_food = GameController.gameData.player.getProp(PLAYERPROP.FOODCONSUME);
+        // 当前粮草数量
+        let cur_food = GameController.gameData.player.getProp(PLAYERPROP.FOOD);
+        // 缺少的粮草数量
+        let need_food = consume_food - cur_food;
+        need_after_time = Math.ceil(need_food / food_recover);
+        return need_after_time;
+    }
+    /** 看视频领取粮草的逻辑 */
+    public static receiveTVFood() {
+        if (this.model_data.rest_vedio_times <= 0) {
+            GameController.uiM.showToast('剩余次数不足');
+        } else {
+            this.model_data.rest_vedio_times--;
+            this.saveData();
+            GameController.gameData.player.setProp(PLAYERPROP.FOOD, this.food_count, true);
+            this.flyRedBagToMain();
+        }
+    }
+    /** 主界面组件,动画用 */
+    private static comp_main: MainUI = null!;
+    /** 飞粮草效果 */
+    private static flyRedBagToMain() {
+        if (!this.comp_main) this.comp_main = GameController.uiM.getUI(MainUI);
+        let start_world_pos = this.comp_main.btn_3.node.parent.convertToWorldSpaceAR(this.comp_main.btn_3.node.getPosition());
+        start_world_pos.y += this.comp_main.btn_3.node.height;
+        let start_node_pos = this.comp_main.node.convertToNodeSpaceAR(start_world_pos);
+
+        let end_world_pos = this.comp_main.node_lc.node.parent.convertToWorldSpaceAR(this.comp_main.node_lc.node.getPosition());
+        let end_node_pos = this.comp_main.node.convertToNodeSpaceAR(end_world_pos);
+        let fly_data = {
+            node_p: this.comp_main.node,
+            item_count: 10,
+            item_scale: [1, 2],
+            item_sf: this.comp_main.node_lc.spriteFrame,
+            start_pos: start_node_pos,
+            end_pos: end_node_pos,
+            complete_call: null,
+        }
+        // 发起飞item事件
+        this.comp_main.node.emit('ui-fly-node', fly_data);
+    }
 }

+ 33 - 6
tower_sanguo/assets/scripts/module/getLiangCao/GetLiangCaoUI.ts

@@ -1,6 +1,8 @@
 
 import BaseUI from "../../../MOKA/component/BaseUI";
-const {ccclass, property} = cc._decorator;
+import GameController from "../../GameController";
+import GetLiangCaoModel from "./GetLiangCaoModel";
+const { ccclass, property } = cc._decorator;
 
 @ccclass
 export default class GetLiangCaoUI extends BaseUI {
@@ -8,13 +10,38 @@ export default class GetLiangCaoUI extends BaseUI {
     protected static prefabUrl = "module/getLiangCao/get_liangcao";
     protected static className = "GetLiangCaoUI";
 
-    onLoad () {
-
+    @property({ type: cc.Button, displayName: '领取按钮' })
+    private btn_receive: cc.Button = null!;
+    @property({ type: cc.Label, displayName: '预计训练次数' })
+    private lbl_can_up: cc.Label = null!;
+    @property({ type: cc.Label, displayName: '今日剩余次数' })
+    private lbl_rest_times: cc.Label = null!;
+    @property({ type: cc.Label, displayName: '粮草数量' })
+    private lbl_lc_count: cc.Label = null!;
+
+    onLoad() {
+        XXEvent.addClickEvent(this.btn_receive, this.onClickReceive, this);
+        XXEvent.on(XXConst.EventNewMissionStart, this.onUpdateFoodCount, this);
     }
 
-    start () {
-
+    start() {
+        this.initStyle();
+    }
+    private initStyle() {
+        this.lbl_can_up.string = GetLiangCaoModel.canExpUpTimes() + '';
+        this.lbl_rest_times.string = GetLiangCaoModel.model_data.rest_vedio_times + '次';
+        this.lbl_lc_count.string = 'x' + GetLiangCaoModel.food_count;
+    }
+    private onClickReceive() {
+        // 看视频回调
+        // 领取粮草逻辑
+        GetLiangCaoModel.receiveTVFood();
+        this.initStyle();
+        this.close();
+    }
+    private onUpdateFoodCount(mission_id) {
+        GetLiangCaoModel.updateFoodCount(mission_id);
+        this.initStyle();
     }
-
     // update (dt) {}
 }

+ 8 - 7
tower_sanguo/assets/scripts/module/invest/investModel.ts

@@ -1,6 +1,7 @@
 import { PLAYERPROP } from "../../data/GameDefinition"
 import GameController from "../../GameController"
 import { HTTPTYPE } from "../../net/HttpCommand"
+import MainUI from "../main/MainUI"
 import investItem from "./investItem"
 import investUI from "./investUI"
 
@@ -32,7 +33,8 @@ export default class investModel {
 
     getInvestInfo() {
         let data = {}
-        GameController.http.sendRequest(HTTPTYPE.getInvestInfo, 'POST', JSON.stringify(data), investModel.Instance.getInvestInfoBack.bind(this))
+        // GameController.http.sendRequest(HTTPTYPE.getInvestInfo, 'POST', JSON.stringify(data), investModel.Instance.getInvestInfoBack.bind(this))
+        GameController.http.sendData(HTTPTYPE.getInvestInfo, data, investModel.Instance.getInvestInfoBack.bind(this))
     }
 
     getInvestInfoBack(data) {
@@ -40,7 +42,7 @@ export default class investModel {
         this.SurplusTimes = data.SurplusTimes;
         GameController.commonData.gameTime = data.timestamp * 1000
 
-        this.freshRed();
+        this.checkRed();
 
         let investui = GameController.uiM.getUI(investUI);
         if (investui) {
@@ -66,8 +68,7 @@ export default class investModel {
         this.investData = data.investModel
         this.SurplusTimes = data.SurplusTimes
         GameController.commonData.gameTime = data.timestamp * 1000
-
-        this.freshRed()
+        this.checkRed();
 
         let investui = GameController.uiM.getUI(investUI);
         if (param.investMentType == 0) {
@@ -125,8 +126,8 @@ export default class investModel {
     }
 
     /** 刷新红点 */
-    freshRed() {
-        // let state = this.SurplusTimes > 0 ? true : false
-        // UiM.Instance.hallNode.getComponent(Main).setInvestRed(state)
+    checkRed() {
+        let state = this.SurplusTimes > 0 ? true : false
+        GameController.uiM.getUI(MainUI).invest_red.active = state
     }
 }

+ 49 - 20
tower_sanguo/assets/scripts/module/main/MainUI.ts

@@ -24,6 +24,8 @@ import PiggyBankModel from "../piggyBank/PiggyBankModel";
 import CheckpointRedBagModle from "../checkpointRedBag/CheckpointRedBagModle";
 import GetLiangCaoUI from "../getLiangCao/GetLiangCaoUI";
 import GetLiangCaoModel from "../getLiangCao/GetLiangCaoModel";
+import investUI from "../invest/investUI";
+import investModel from "../invest/investModel";
 
 const { ccclass, property } = cc._decorator;
 
@@ -77,6 +79,10 @@ export default class MainUI extends BaseUI {
     barracks_red: cc.Node = null;
     @property({ type: cc.Node, displayName: "任务红点" })
     task_red: cc.Node = null;
+    @property({ type: cc.Node, displayName: "转盘红点" })
+    turntable_red: cc.Node = null;
+    @property({ type: cc.Node, displayName: "投资红点" })
+    invest_red: cc.Node = null;
 
 
     @property({ type: cc.Node, displayName: "气泡_统帅" })
@@ -133,6 +139,9 @@ export default class MainUI extends BaseUI {
         GameController.gameData.player.addComponent(this, PLAYERPROP.TURNTABLE_LUCK_TIMES);
         GameController.gameData.player.addComponent(this, PLAYERPROP.USE_SKILLS_TIMES);
         GameController.gameData.player.addComponent(this, PLAYERPROP.LOOK_VIDEO_TIMES);
+        //转盘每日次数
+        GameController.gameData.player.addComponent(this, PLAYERPROP.TURNTABLE_LEFTTIMES);
+        GameController.gameData.player.addComponent(this, PLAYERPROP.TURNTABLE_CARD);
 
         this.mission = this.ui.missions.getComponent(MenuMission) as MenuMission;
 
@@ -140,12 +149,16 @@ export default class MainUI extends BaseUI {
 
         this.barracks_red.active = barracksModel.getInstance().checkRed();
         turntableModel.Instance.updateResetTurntable();
+        this.turntable_red.active = turntableModel.Instance.checkRed();
+
+        investModel.Instance.getInvestInfo();
+
         this.task_red.active = TaskModel.checkMainRed();
 
         this.initScheduler();
 
         this.updateOpenUI();
-        this.LcLackUI();
+        this.lcLackUI();
 
         XXEvent.on("MainUIUpdateQiPaoMarshal", this.updateQiPaoMarshal, this);
         XXEvent.on("open-guide", this.openGuideUI, this);
@@ -163,6 +176,8 @@ export default class MainUI extends BaseUI {
                 let vo: MissionVO = GameController.gameData.getMissionByID(GameController.gameData.player.current_mission);
                 GameController.gameData.updateProp(PLAYERPROP.FOOD, Math.floor(vo.foodRecover * 5), true);
             }
+            // 每秒更新
+            this.showBtnExpUpOrLcBtn();
         }, 1);
     }
 
@@ -173,7 +188,7 @@ export default class MainUI extends BaseUI {
         });
     }
     private checkOpenUI(data: FunData) {
-
+        this[data.btn_src].node.active = GameController.gameData.player.max_mission >= data.openmission;
     }
 
     updateProp(type: PLAYERPROP, value: number) {
@@ -192,6 +207,7 @@ export default class MainUI extends BaseUI {
                 break;
             case PLAYERPROP.FOODRECOVER:
                 this.lbl_foodAdd.string = value + "/s";
+                this.showBtnExpUpOrLcBtn();
                 break;
             case PLAYERPROP.FOODCONSUME:
                 this.lbl_food.string = value + "";
@@ -212,6 +228,11 @@ export default class MainUI extends BaseUI {
                 this.task_red.active = TaskModel.checkMainRed();
                 // cc.log('类型' + type + ':%o', value)
                 break;
+
+            case PLAYERPROP.TURNTABLE_LEFTTIMES:
+            case PLAYERPROP.TURNTABLE_CARD:
+                this.turntable_red.active = turntableModel.Instance.checkRed();
+                break
         }
     }
 
@@ -277,11 +298,11 @@ export default class MainUI extends BaseUI {
     }
 
     clickCashOut() {
-
+        
     }
 
     clickAddFood() {
-
+        
     }
 
     clickOpenCommanderUI() {
@@ -318,8 +339,7 @@ export default class MainUI extends BaseUI {
     }
 
     clickOpenGetGeneralUI() {
-        //test
-        this.clickTurntableUI();
+
     }
 
     clickTurntableUI() {
@@ -327,6 +347,11 @@ export default class MainUI extends BaseUI {
         GameController.uiM.openUI(turntableUI, null, ViewZorder.UI);
     }
 
+    clickInvestUi() {
+        GameController.audioM.playEffect(AUDIO_TYPE.button);
+        GameController.uiM.openUI(investUI, null, ViewZorder.UI);
+    }
+
     clickOpenGeneralUI() {
         GameController.audioM.playEffect(AUDIO_TYPE.button);
         GameController.uiM.openUI(GeneralUI, null, ViewZorder.UI, null, null, { tab_type: 0 });
@@ -390,25 +415,28 @@ export default class MainUI extends BaseUI {
         GameController.uiM.openUI(GuideUI, null, ViewZorder.UI, null, null, g_data);
     }
     /** 训练按钮 - 粮草不足时的ui显示 */
-    private LcLackUI() {
-        let fillRange = GetLiangCaoModel.cur_lc_value / GetLiangCaoModel.need_lc_value;
+    private lcLackUI() {
+        let cur_food = GameController.gameData.player.getProp(PLAYERPROP.FOOD);
+        let need_food = GameController.gameData.player.getProp(PLAYERPROP.FOODCONSUME);
+        let fillRange = cur_food / need_food;
         this.lc_img_bar.fillRange = fillRange;
-        this.lbl_bar_desc.string = `${fillRange * 100}` + '%'
-        this.lbl_time.string = GetLiangCaoModel.need_after_time + 's';
+        this.lbl_bar_desc.string = `${fillRange * 100}` + '%';
+        this.lbl_time.string = GetLiangCaoModel.needAfterTime() + 's';
     }
     /** 检查粮草数量,显示训练按钮 or 粮草按钮 */
     private showBtnExpUpOrLcBtn() {
         let cur_food = GameController.gameData.player.getProp(PLAYERPROP.FOOD);
-        let need_food = GameController.gameData.player.getProp(PLAYERPROP.FOODCONSUME)
-        // if (cur_food >= need_food) {
-        //     // 满足下一次训练
-        //     this.btn3.node.active = true;
-        //     this.btn3_1.node.active = false;
-        // } else {
-        //     // 不满足下次训练,显示粮草按钮
-        //     this.btn3.node.active = false;
-        //     this.btn3_1.node.active = true;
-        // }
+        let need_food = GameController.gameData.player.getProp(PLAYERPROP.FOODCONSUME);
+        if (cur_food >= need_food) {
+            // 满足下一次训练
+            this.btn3.node.active = true;
+            this.btn3_1.node.active = false;
+        } else {
+            // 不满足下次训练,显示粮草按钮
+            this.btn3.node.active = false;
+            this.btn3_1.node.active = true;
+            this.lcLackUI();
+        }
     }
     /** 新的一天 
      * - 检测到当前是新的一天,刷新数据
@@ -417,6 +445,7 @@ export default class MainUI extends BaseUI {
         // 任务数据刷新
         TaskModel.resetTaskData();
         CheckpointRedBagModle.resetTaskData();
+        GetLiangCaoModel.resetData();
     }
 
     onDestroy() {

+ 7 - 11
tower_sanguo/assets/scripts/module/turntable/turntableModel.ts

@@ -125,9 +125,6 @@ export default class turntableModel {
         this.turntableTimes--
         GameController.gameData.player.setProp(PLAYERPROP.TURNTABLE_LEFTTIMES, this.turntableTimes);
         GameController.gameData.updateProp(PLAYERPROP.TURNTABLE_LEFTTIMES, this.turntableTimes);
-
-        this.setRed();
-
         // GameM.commonData.addDailyFinishTimesDataByType(2)
     }
 
@@ -148,16 +145,15 @@ export default class turntableModel {
         GameController.gameData.updateProp(PLAYERPROP.TURNTABLE_CARD, this.turntableCard);
         GameController.gameData.updateProp(PLAYERPROP.TURNTABLE_USECARDTIMES, this.turntableUseCardTimes);
 
-        this.setRed();
         // GameM.commonData.addDailyFinishTimesDataByType(2)
     }
 
-    setRed() {
-        // if (TurntableData.Instance.turntableTimes > 0 || GameM.commonData.roleData.turntableCard > 0) {
-        //     RedPointM.instance.ActiveRedPoint(RedPointType.Turnplate, true)
-        // }
-        // else {
-        //     RedPointM.instance.ActiveRedPoint(RedPointType.Turnplate, false)
-        // }
+    checkRed() {
+        if (this.turntableTimes > 0 || this.turntableCard > 0) {
+            return true;
+        }
+        else {
+            return false;
+        }
     }
 }

+ 58 - 1
tower_sanguo/assets/scripts/net/HttpCommand.ts

@@ -32,7 +32,7 @@ export default class HttpCommand {
     isTry = '';
 
     /** 服务器地址类型 0测试服 1测试服 2其他 */
-    static serverType: number = 1;
+    static serverType: number = 0;
 
     /**
      * 第一次握手
@@ -341,8 +341,61 @@ export default class HttpCommand {
         msg.num = num;
         let str = JSON.stringify(msg);
         this.httpM.sendRequest(HTTPTYPE.addItem, 'POST', str, callback);
+        // let data = {
+
+        // };
+        // this.sendData(HTTPTYPE.addItem,data,callback);
+    }
+
+    /**
+     * 提取存钱罐
+     */
+     getPiggyBox() {
+        let data = {
+
+        };
+        this.sendData(HTTPTYPE.getPiggyBox, data, (data) => {
+            XXEvent.emit(HTTPTYPE.getPiggyBox,data)
+        });
+    }
+
+    /**
+     * 存钱罐进账
+     */
+     savePiggyBox() {
+        let data = {
+
+        };
+        this.sendData(HTTPTYPE.savePiggyBox, data, (data) => {
+            XXEvent.emit(HTTPTYPE.savePiggyBox,data)
+        });
     }
 
+    /**
+     * 领取通关红包
+     */
+     getStageReward() {
+        let data = {
+
+        };
+        this.sendData(HTTPTYPE.getStageReward, data, (data) => {
+            XXEvent.emit(HTTPTYPE.getStageReward,data)
+        });
+    }
+
+    /**
+     * 掉落通关红包
+     */
+     saveStageReward() {
+        let data = {
+
+        };
+        this.sendData(HTTPTYPE.saveStageReward, data, (data) => {
+            XXEvent.emit(HTTPTYPE.saveStageReward,data)
+        });
+    }
+
+
     //--------------------------ZNH------------------------
 
     /** 武将许愿
@@ -487,6 +540,10 @@ export enum HTTPTYPE {
     reduceTimeInvestProject = 'invest/reduceTimeInvestProject',
 
     updateADLog = 'updateADLog',
+    getPiggyBox = 'piggyBox/getPiggyBox',//提取存钱罐
+    savePiggyBox = 'piggyBox/savePiggyBox',//存钱罐进账
+    getStageReward = 'stage/getStageReward',//领取通关红包
+    saveStageReward = 'stage/saveStageReward',//掉落通关红包
     //-------ZNH
     /** 武将许愿*/
     prayGeneral = 'general/prayGeneral',

+ 1 - 1
tower_sanguo/assets/scripts/net/servertest/ServerManager.ts

@@ -24,7 +24,7 @@ import TaskResponse from "../msg/TaskResponse";
 
 export default class ServerManager {
     constructor() {
-
+        this.init();
     }
 
     init() {

+ 2 - 0
tower_sanguo/assets/scripts/vo/MissionVO.ts

@@ -17,6 +17,8 @@ export default class MissionVO {
     foodMax:number;
 
     rounds:RoundVO[];
+    /** 当前关卡看视频可获得的粮草 */
+    videofood: number;
 
 
     //怪物id:移速(px),怪物数量,刷新间隔(s);......

+ 2 - 2
tower_sanguo/assets/scripts/vo/PlayerVO.ts

@@ -111,8 +111,8 @@ export default class PlayerVO {
     task_list_data: Array<TASKITEM> = [];
     /** 玩家属性值是对象而非数字,解析服务端数据不转num的集合 */
     isObjByPLAYERPROP(id): boolean {
-        let arr = [PLAYERPROP.USER_DAILY_TASK_INFO, PLAYERPROP.USER_DAILY_ACTIVE_INFO, PLAYERPROP.CHECKPOINT_REGBAG_DATA];
-        let bool =  arr.includes(id);
+        let arr = [PLAYERPROP.USER_DAILY_TASK_INFO, PLAYERPROP.USER_DAILY_ACTIVE_INFO, PLAYERPROP.CHECKPOINT_REGBAG_DATA, PLAYERPROP.GET_FOOD_DATA];
+        let bool = arr.includes(id);
         return bool;
     }
 

+ 906 - 0
tower_sanguo/塔防接口.md

@@ -0,0 +1,906 @@
+用户相关: 
+	updatePlayerProp:更新用户属性
+	入参:
+		{
+		  "appVersion": "string",
+		  "playPropList": [
+			{
+			  "add": 0, (0当前值  1增加值)
+			  "propType": 0, (属性类型)
+			  "propValue": 0 (属性值)
+			}
+		  ],
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"playPropBackList": [
+			  {
+				"propType": 1, (属性类型)
+				"propValue": 222333, (当前值)
+				"addValue": 111 (增加值)
+			  }
+			]
+		  }
+		}
+		
+
+	getInfoCrypt: 获取用户属性
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "1.0"
+		}
+	返回:(encryp加密)
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": "{"lastTime":1621824357,
+		  "loginDays":3,
+		  "versioncfg":"1.0",
+		  "food":222333,
+		  "prestige":100,
+		  "yb":451,
+		  "redBag":0,
+		  "turntableCard":null,
+		  "turntableLeftTimes":null,
+		  "turntableRefreshTimes":null,
+		  "turntableUseCardTimes":null,
+		  "turntableTotal":null,
+		  "barrack":30,
+		  "foodMax":100,
+		  "foodConsume":null,
+		  "foodRecover":1,
+		  "mission_arrive":50,
+		  "mission_passed":1,
+		  "generalpack":[{
+			"id":111001,
+			"status":1,
+			"pos":0,
+			"exp":0,
+			"lv":1,
+			"star":2,
+			"fragment":186,
+			"receiveTimes":0,
+			"rewardFirstOpen":null
+			},{
+			"id":113011,
+			"status":0,
+			"pos":-1,
+			"exp":0,
+			"lv":30,
+			star":1,
+			"fragment":444,
+			"receiveTimes":0,
+			"rewardFirstOpen":null
+			},{
+			"id":111002,
+			"status":1,
+			"pos":1,
+			"exp":0,
+			"lv":30,
+			"star":3,
+			"fragment":62,
+			"receiveTimes":0,
+			"rewardFirstOpen":null}],
+			"useskill_time":0,
+			"dailyClearTimes":3,
+			"taskRedBag":0,
+			"dailyTask":{
+				"activeVideoTimes":0,
+				"activeToday":0,
+				"dailyTaskReceives":[],
+				"updateActiveTime":1621590851},
+			"gameUserData":{
+				"14":"0",
+				"12":"10",
+				"31":"[{
+					"id":1,
+					"state":3,
+					"task_stage":1,
+					"cur_bar":5,
+					"description":"武将训练{0}次",
+					"count1":5,
+					"count2":20,
+					"activevalue1":5,
+					"activevalue2":15
+					},{
+					"id":2,
+					"state":2,
+					"task_stage":1,
+					"cur_bar":0,
+					"description":"投资{0}次",
+					"count1":2,
+					"count2":4,
+					"activevalue1":5,
+					"activevalue2":10
+					},{
+					"id":3,
+					"state":2,
+					"task_stage":1,
+					"cur_bar":0,
+					"description":"抽取武将{0}次",
+					"count1":5,
+					"count2":10,
+					"activevalue1":5,
+					"activevalue2":15
+					},{
+					"id":4,
+					"state":2,
+					"task_stage":1,
+					"cur_bar":0,
+					"description":"转盘抽奖{0}次",
+					"count1":5,
+					"count2":10,
+					"activevalue1":5,
+					"activevalue2":15
+					},{
+					"id":5,
+					"state":2,
+					"task_stage":1,
+					"cur_bar":0,
+					"description":"使用统帅技能{0}次",
+					"count1":1,
+					"count2":3,
+					"activevalue1":5,
+					"activevalue2":15
+					},{
+					"id":6,
+					"state":2,
+					"task_stage":1,
+					"cur_bar":0,
+					"description":"观看视频广告{0}次",
+					"count1":15,
+					"count2":30,
+					"activevalue1":5,
+					"activevalue2":20
+					}
+				]",
+				"13":"1",
+				"33":"{
+					"cur_count":20,
+					"cumulative_count":20,
+					"limit_count":20
+					}",
+				"32":"[{
+					"id":1,
+					"icon":1,
+					"activevalue":20,
+					"isdouble":1,
+					"videotimes":0,
+					"task_box_state":2,
+					"tv_box_state":2,
+					"can_receive_tv_box":0
+					},{
+					"id":2,
+					"icon":1,
+					"activevalue":40,
+					"isdouble":0,
+					"videotimes":0,
+					"task_box_state":2,
+					"tv_box_state":2,
+					"can_receive_tv_box":0
+					},{
+					"id":3,
+					"icon":2,
+					"activevalue":60,
+					"isdouble":0,
+					"videotimes":0,
+					"task_box_state":2,
+					"tv_box_state":2,
+					"can_receive_tv_box":0
+					},{
+					"id":4,
+					"icon":1,
+					"activevalue":80,
+					"isdouble":0,
+					"videotimes":0,
+					"task_box_state":2,
+					"tv_box_state":2,
+					"can_receive_tv_box":0
+					},{
+					"id":5,
+					"icon":2,
+					"activevalue":100,
+					"isdouble":1,
+					"videotimes":0,
+					"task_box_state":2,
+					"tv_box_state":2,
+					"can_receive_tv_box":0
+				}]"},
+			"drawCardTimes1":null,
+			"drawCardTimes10":null,
+			"userExchangeTimes":3,
+			"qualityMissedTimes":null,
+			"turntableTimes":0,
+			"isNewDay":0,
+			"piggyBox":{
+				"piggyBox":0,
+				"piggyBoxYesterday":0,
+				"piggyBoxLastTime":1621818739,
+				"piggyBoxFull":0
+				},
+			"turntableAlreadyTotalTimes":0,
+			"restore":null
+		}"
+		}
+		
+	savePlayerProp: 更新用户的单个属性(极简风)
+	入参:
+		{
+		  "key": "string",
+		  "value": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"12": "10",
+			"13": "1",
+			"14": "0",
+			"31": "[{"id":1,"state":3,"task_stage":1,"cur_bar":5,"description":"武将训练{0}次","count1":5,"count2":20,"activevalue1":5,"activevalue2":15},{"id":2,"state":2,"task_stage":1,"cur_bar":0,"description":"投资{0}次","count1":2,"count2":4,"activevalue1":5,"activevalue2":10},{"id":3,"state":2,"task_stage":1,"cur_bar":0,"description":"抽取武将{0}次","count1":5,"count2":10,"activevalue1":5,"activevalue2":15},{"id":4,"state":2,"task_stage":1,"cur_bar":0,"description":"转盘抽奖{0}次","count1":5,"count2":10,"activevalue1":5,"activevalue2":15},{"id":5,"state":2,"task_stage":1,"cur_bar":0,"description":"使用统帅技能{0}次","count1":1,"count2":3,"activevalue1":5,"activevalue2":15},{"id":6,"state":2,"task_stage":1,"cur_bar":0,"description":"观看视频广告{0}次","count1":15,"count2":30,"activevalue1":5,"activevalue2":20}]",
+			"32": "[{"id":1,"icon":1,"activevalue":20,"isdouble":1,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":2,"icon":1,"activevalue":40,"isdouble":0,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":3,"icon":2,"activevalue":60,"isdouble":0,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":4,"icon":1,"activevalue":80,"isdouble":0,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":5,"icon":2,"activevalue":100,"isdouble":1,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0}]",
+			"33": "{"cur_count":20,"cumulative_count":20,"limit_count":20}",
+			"1998": "2021"
+		  }
+		}
+		
+	saveAllPlayerProp: 更新用户所有的属性(极简风)
+	入参:	
+		{
+		  "needProp": {"1998":"2021","1990":"2010"}
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"12": "10",
+			"13": "1",
+			"14": "0",
+			"31": "[{"id":1,"state":3,"task_stage":1,"cur_bar":5,"description":"武将训练{0}次","count1":5,"count2":20,"activevalue1":5,"activevalue2":15},{"id":2,"state":2,"task_stage":1,"cur_bar":0,"description":"投资{0}次","count1":2,"count2":4,"activevalue1":5,"activevalue2":10},{"id":3,"state":2,"task_stage":1,"cur_bar":0,"description":"抽取武将{0}次","count1":5,"count2":10,"activevalue1":5,"activevalue2":15},{"id":4,"state":2,"task_stage":1,"cur_bar":0,"description":"转盘抽奖{0}次","count1":5,"count2":10,"activevalue1":5,"activevalue2":15},{"id":5,"state":2,"task_stage":1,"cur_bar":0,"description":"使用统帅技能{0}次","count1":1,"count2":3,"activevalue1":5,"activevalue2":15},{"id":6,"state":2,"task_stage":1,"cur_bar":0,"description":"观看视频广告{0}次","count1":15,"count2":30,"activevalue1":5,"activevalue2":20}]",
+			"32": "[{"id":1,"icon":1,"activevalue":20,"isdouble":1,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":2,"icon":1,"activevalue":40,"isdouble":0,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":3,"icon":2,"activevalue":60,"isdouble":0,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":4,"icon":1,"activevalue":80,"isdouble":0,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0},{"id":5,"icon":2,"activevalue":100,"isdouble":1,"videotimes":0,"task_box_state":2,"tv_box_state":2,"can_receive_tv_box":0}]",
+			"33": "{"cur_count":20,"cumulative_count":20,"limit_count":20}",
+			"1990": "2010",
+			"1998": "2021"
+		  }
+		}
+		
+	getUserIsNewDay: 登录时获取是否新一天
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"isNewDay": 1 (0.不是 1.是)
+		  }
+		}
+
+
+​		
+武将相关: /general
+​	updateKeyValueDemo: 更新数据demo
+​	入参:
+​		{
+​		  "key": "string",
+​		  "value": "string"
+​		}
+​	返回:
+​		{
+​		  "errcode": 0,
+​		  "errmsg": "ok",
+​		  "data": {
+​			"code": 1,
+​			"msg": "操作成功"
+​		  }
+​		}
+​		
+	getInitGeneralDemo: 获取初始武将用于测试
+	入参:
+		{
+		  "appVersion": "string",
+		  "id": 0,
+		  "num": 0,
+		  "tfChannel": 0,
+		  "type": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"GeneralProp": [
+			{
+				"id": Integer (武将Id)
+				"status": Integer (武将状态 是否激活)
+				"pos": Integer (位置 0-4表示在阵上 -1表示不在阵上)
+				"exp": BigDecimal (当前等级的经验)
+				"lv": Integer (当前等级)
+				"star": Integer (当前星级)
+				"fragment": Integer (当前碎片数)
+				"receiveTimes": Integer (领取次数)
+				"rewardFirstOpen": [ (首次开启时的奖励)
+					{
+						"type": Integer (道具类型)
+						"num": Integer (奖励数量)
+					}
+					]
+			}
+			]
+		  }
+		}
+		
+	changeEmbattle: 更换布阵
+	入参:
+		{
+		  "appVersion": "string",
+		  "changeEmbattles": [
+			{
+			  "gid": 0,
+			  "pos": 0
+			}
+		  ],
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功"
+		  }
+		}
+		
+	composeGeneral: 武将合成、升星
+	入参:
+		{
+		  "appVersion": "string",
+		  "id": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"GeneralProp":
+				{
+				"id": Integer (武将Id)
+				"status": Integer (武将状态 是否激活)
+				"pos": Integer (位置 0-4表示在阵上 -1表示不在阵上)
+				"exp": BigDecimal (当前等级的经验)
+				"lv": Integer (当前等级)
+				"star": Integer (当前星级)
+				"fragment": Integer (当前碎片数)
+				"receiveTimes": Integer (领取次数)
+				"rewardFirstOpen": [ (首次开启时的奖励)
+					{
+						"type": Integer (道具类型)
+						"num": Integer (奖励数量)
+					}
+					]
+				}
+		  }
+		}
+		
+	generalExpUp: 升级武将
+	入参:
+		{
+		  "appVersion": "string",
+		  "generalExpUps": [
+			{
+			  "exp": 0,
+			  "gui": 0,
+			  "lv": 0
+			}
+		  ],
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功"
+		  }
+		}
+		
+	barracksLvUp: 升级兵营
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"prestige": 
+			"barrack": 
+			"generalpack": [
+			{
+				"id": Integer (武将Id)
+				"status": Integer (武将状态 是否激活)
+				"pos": Integer (位置 0-4表示在阵上 -1表示不在阵上)
+				"exp": BigDecimal (当前等级的经验)
+				"lv": Integer (当前等级)
+				"star": Integer (当前星级)
+				"fragment": Integer (当前碎片数)
+				"receiveTimes": Integer (领取次数)
+				"rewardFirstOpen": [ (首次开启时的奖励)
+					{
+						"type": Integer (道具类型)
+						"num": Integer (奖励数量)
+					}
+					]
+			}
+			]
+		  }
+		}
+		
+	getInitGeneral: 获取初始武将
+	入参:
+		{
+		  "appVersion": "string",
+		  "id": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "初始成功",
+			"GeneralProp": 
+			{
+				"id": Integer (武将Id)
+				"status": Integer (武将状态 是否激活)
+				"pos": Integer (位置 0-4表示在阵上 -1表示不在阵上)
+				"exp": BigDecimal (当前等级的经验)
+				"lv": Integer (当前等级)
+				"star": Integer (当前星级)
+				"fragment": Integer (当前碎片数)
+				"receiveTimes": Integer (领取次数)
+				"rewardFirstOpen": [ (首次开启时的奖励)
+					{
+						"type": Integer (道具类型)
+						"num": Integer (奖励数量)
+					}
+					]
+			}
+		  }
+		}
+		
+	updateMission: 过关校验
+	入参:
+		{
+		  "appVersion": "string",
+		  "last": [
+			0
+		  ],
+		  "max": [
+			0
+		  ],
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"sward": 1 (奖励id1:数量;奖励id2:数量;...)
+		  }
+		}
+		
+	drawCard: 武将抽卡
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "type": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"Yb": 1111,
+			"GeneralProp": [
+			{
+				"id": Integer (武将Id)
+				"status": Integer (武将状态 是否激活)
+				"pos": Integer (位置 0-4表示在阵上 -1表示不在阵上)
+				"exp": BigDecimal (当前等级的经验)
+				"lv": Integer (当前等级)
+				"star": Integer (当前星级)
+				"fragment": Integer (当前碎片数)
+				"receiveTimes": Integer (领取次数)
+				"rewardFirstOpen": [ (首次开启时的奖励)
+					{
+						"type": Integer (道具类型)
+						"num": Integer (奖励数量)
+					}
+					]
+			}
+			]
+		  }
+		}
+		
+	openGeneralReward: 开启武将奖励
+	入参:
+		{
+		  "appVersion": "string",
+		  "id": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"GeneralReward": [
+			{
+				"id": Integer (武将Id)
+				"status": Integer (武将状态 是否激活)
+				"pos": Integer (位置 0-4表示在阵上 -1表示不在阵上)
+				"exp": BigDecimal (当前等级的经验)
+				"lv": Integer (当前等级)
+				"star": Integer (当前星级)
+				"fragment": Integer (当前碎片数)
+				"receiveTimes": Integer (领取次数)
+				"rewardFirstOpen": [ (首次开启时的奖励)
+					{
+						"type": Integer (道具类型)
+						"num": Integer (奖励数量)
+					}
+					]
+			}
+			]
+		  }
+		}
+		
+	receiveReward: 领取武将奖励
+	入参:
+		{
+		  "appVersion": "string",
+		  "id": 0,
+		  "isDouble": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功"
+		  }
+		}
+		
+	prayGeneral: 武将许愿
+	入参:
+		{
+		  "appVersion": "string",
+		  "generalId": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "ok!",
+			"data": {
+				id: Integer, (许愿武将ID)
+				weight: Integer, (权重)
+				achieveChance: double (提升后的倍数)
+			}
+		  }
+		}
+		
+	removePrayGeneral: 武将移除许愿池
+	入参:
+		{
+		  "appVersion": "string",
+		  "generalId": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "ok!"
+		  }
+		}
+		
+	redBagToYb: 兑换元宝
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "ok!",
+			"data": {
+				"RedBag": Integer, (当前红包币)
+				"Yb": Integer, (当前元宝)
+				"UserExchangeTimes": Integer (当前剩余兑换次数)
+			}
+		  }
+		}
+
+
+​		
+每日任务:	/dailytask
+​	openTreasureChest: 开启宝箱
+​	入参:
+​		{
+​		  "appVersion": "string",
+​		  "taskId": 0,
+​		  "tfChannel": 0,
+​		  "versioncfg": "string"
+​		}
+​	返回:
+​		{
+​		  "errcode": 0,
+​		  "errmsg": "ok",
+​		  "data": {
+​			"code": 1,
+​			"msg": "操作成功",
+​			"dailyTaskReward": {
+​				"rewardType": Integer, (奖励类型 1粮草 3红包币)
+​				"reward": Integer (奖励)
+​			}
+​		  }
+​		}
+​		
+	exchangeTreasureChest: 领取宝箱
+	入参:
+		{
+		  "appVersion": "string",
+		  "isDouble": 0,
+		  "taskId": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"dailyTaskReward": {
+				"rewardType": Integer, (奖励类型 1粮草 3红包币)
+				"reward": Integer (奖励)
+			}
+		  }
+		}
+		
+	saveActiveToday: 存活跃值
+	入参:
+		{
+		  "addActiveToday": 0,
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"dailyTask": {
+				"activeVideoTimes": 1, (今日视频数)
+				"activeToday": 100, (今日活跃)
+				"dailyTaskReceives": { 
+					"exchangeIds": 1, (已兑换Id)
+					"receiveTimes": 1 (领取次数)
+				},
+				"updateActiveTime": 1655533334 (活跃度更新时间)
+			}
+		  }
+		}
+		
+	saveYesterDayRedBag:  领取昨日任务红包币
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功"
+		  }
+		}
+
+
+​		
+存钱罐:  /piggyBox
+​	savePiggyBox:  存钱罐进账
+​	入参:
+​		{
+​		  "appVersion": "string",
+​		  "tfChannel": 0,
+​		  "versioncfg": "string"
+​		}
+​	返回:
+​		{
+​		  "errcode": 0,
+​		  "errmsg": "ok",
+​		  "data": {
+​			"code": 1,
+​			"msg": "操作成功",
+​			"data": {
+​				"piggyBox": Integer,
+​				"piggyBoxYesterday": Integer,
+​				"piggyBoxLastTime": Long,
+​				"piggyBoxFull": Integer  (0.未满 1.已满)
+​			}
+​		  }
+​		}
+​	
+	getPiggyBox:  提取存钱罐
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"data": {
+				"piggyBox": Integer, (用户存钱罐金额)
+				"piggyBoxYesterday": Integer, (用户昨日存钱罐金额)
+				"piggyBoxLastTime": Long, (用户存钱罐最后修改时间)
+				"piggyBoxFull": Integer  (用户存钱罐是否已满 0.未满 1.已满)
+			}
+		  }
+		}
+
+
+​	
+通关红包: /stage
+​	getStageReward: 领取通关红包
+​	入参:
+​		{
+​		  "appVersion": "string",
+​		  "tfChannel": 0,
+​		  "versioncfg": "string"
+​		}
+​	返回:
+​		{
+​		  "errcode": 0,
+​		  "errmsg": "ok",
+​		  "data": {
+​			"code": 1,
+​			"msg": "操作成功",
+​			"data": {
+​				"stageRewardNum": Integer, (用户通关红包剩余数量)
+​				"stageRewardRedBag": Integer, (用户当前通关红包币数量)
+​				"stageRewardDrop": Integer, (用户当天红包掉落次数)
+​				"stageRewardLastTime": Long, (用户最后更新通关红包的时间)
+​				"stageRewardVideoTime": Integer (用户通关红包视频次数)
+​			}
+​		  }
+​		}
+​		
+	saveStageReward: 掉落通关红包
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"data": {
+				"stageRewardNum": Integer, (用户通关红包剩余数量)
+				"stageRewardRedBag": Integer, (用户当前通关红包币数量)
+				"stageRewardDrop": Integer, (用户当天红包掉落次数)
+				"stageRewardLastTime": Long, (用户最后更新通关红包的时间)
+				"stageRewardVideoTime": Integer (用户通关红包视频次数)
+			}
+		  }
+		}
+
+打开转盘: /
+	getInitTurntable:  打开转盘
+	入参:
+		{
+		  "appVersion": "string",
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功"
+		  }
+		}
+		
+	updateTurntable:  更新转盘
+	入参:
+		{
+		  "appVersion": "string",
+		  "index": 0,
+		  "tfChannel": 0,
+		  "versioncfg": "string"
+		}
+	返回:
+		{
+		  "errcode": 0,
+		  "errmsg": "ok",
+		  "data": {
+			"code": 1,
+			"msg": "操作成功",
+			"RedBag":  (获得红包币)
+		  }
+		}

Some files were not shown because too many files changed in this diff