chengjie 5 月之前
父节点
当前提交
1ecd7ebbc5
共有 7 个文件被更改,包括 369 次插入65 次删除
  1. 136 38
      package-lock.json
  2. 3 2
      package.json
  3. 3 3
      src/api/mps/mpsScoreController.js
  4. 4 0
      src/api/web/routes.js
  5. 167 1
      src/api/web/webController.js
  6. 21 0
      src/app.js
  7. 35 21
      src/kill-port.js

+ 136 - 38
package-lock.json

@@ -379,6 +379,11 @@
379 379
         }
380 380
       }
381 381
     },
382
+    "base64-js": {
383
+      "version": "1.5.1",
384
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
385
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
386
+    },
382 387
     "bcrypt-pbkdf": {
383 388
       "version": "1.0.2",
384 389
       "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@@ -403,6 +408,15 @@
403 408
         "update-browserslist-db": "^1.1.3"
404 409
       }
405 410
     },
411
+    "buffer": {
412
+      "version": "5.7.1",
413
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
414
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
415
+      "requires": {
416
+        "base64-js": "^1.3.1",
417
+        "ieee754": "^1.1.13"
418
+      }
419
+    },
406 420
     "buffer-from": {
407 421
       "version": "1.1.2",
408 422
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -463,6 +477,11 @@
463 477
       "resolved": "https://registry.npmjs.org/child_process/-/child_process-1.0.2.tgz",
464 478
       "integrity": "sha512-Wmza/JzL0SiWz7kl6MhIKT5ceIlnFPJX+lwUGj7Clhy5MMldsSoJR0+uvRzOS5Kv45Mq7t1PoE8TsOA9bzvb6g=="
465 479
     },
480
+    "co": {
481
+      "version": "4.6.0",
482
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
483
+      "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ=="
484
+    },
466 485
     "co-body": {
467 486
       "version": "6.2.0",
468 487
       "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.2.0.tgz",
@@ -549,9 +568,9 @@
549 568
       "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
550 569
     },
551 570
     "cookies": {
552
-      "version": "0.9.1",
553
-      "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz",
554
-      "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==",
571
+      "version": "0.8.0",
572
+      "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz",
573
+      "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==",
555 574
       "requires": {
556 575
         "depd": "~2.0.0",
557 576
         "keygrip": "~1.1.0"
@@ -630,6 +649,14 @@
630 649
         }
631 650
       }
632 651
     },
652
+    "crc": {
653
+      "version": "3.8.0",
654
+      "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
655
+      "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
656
+      "requires": {
657
+        "buffer": "^5.1.0"
658
+      }
659
+    },
633 660
     "cross-env": {
634 661
       "version": "7.0.3",
635 662
       "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
@@ -741,9 +768,9 @@
741 768
       "integrity": "sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA=="
742 769
     },
743 770
     "encodeurl": {
744
-      "version": "2.0.0",
745
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
746
-      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="
771
+      "version": "1.0.2",
772
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
773
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
747 774
     },
748 775
     "env-paths": {
749 776
       "version": "2.2.1",
@@ -1022,6 +1049,11 @@
1022 1049
         "safer-buffer": ">= 2.1.2 < 3"
1023 1050
       }
1024 1051
     },
1052
+    "ieee754": {
1053
+      "version": "1.2.1",
1054
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
1055
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
1056
+    },
1025 1057
     "inflation": {
1026 1058
       "version": "2.1.0",
1027 1059
       "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz",
@@ -1032,6 +1064,17 @@
1032 1064
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1033 1065
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1034 1066
     },
1067
+    "is-generator-function": {
1068
+      "version": "1.1.0",
1069
+      "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz",
1070
+      "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==",
1071
+      "requires": {
1072
+        "call-bound": "^1.0.3",
1073
+        "get-proto": "^1.0.0",
1074
+        "has-tostringtag": "^1.0.2",
1075
+        "safe-regex-test": "^1.1.0"
1076
+      }
1077
+    },
1035 1078
     "is-obj": {
1036 1079
       "version": "2.0.0",
1037 1080
       "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
@@ -1042,6 +1085,22 @@
1042 1085
       "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
1043 1086
       "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="
1044 1087
     },
1088
+    "is-regex": {
1089
+      "version": "1.2.1",
1090
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
1091
+      "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
1092
+      "requires": {
1093
+        "call-bound": "^1.0.2",
1094
+        "gopd": "^1.2.0",
1095
+        "has-tostringtag": "^1.0.2",
1096
+        "hasown": "^2.0.2"
1097
+      }
1098
+    },
1099
+    "is-type-of": {
1100
+      "version": "2.2.0",
1101
+      "resolved": "https://registry.npmjs.org/is-type-of/-/is-type-of-2.2.0.tgz",
1102
+      "integrity": "sha512-72axShMJMnMy5HSU/jLGNOonZD5rWM0MwJSCYpKCTQCbggQZBJO/CLMMVP5HgS8kPSYFBkTysJexsD6NMvGKDQ=="
1103
+    },
1045 1104
     "is-typedarray": {
1046 1105
       "version": "1.0.0",
1047 1106
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -1117,58 +1176,58 @@
1117 1176
       }
1118 1177
     },
1119 1178
     "koa": {
1120
-      "version": "3.0.0",
1121
-      "resolved": "https://registry.npmjs.org/koa/-/koa-3.0.0.tgz",
1122
-      "integrity": "sha512-Usyqf1o+XN618R3Jzq4S4YWbKsRtPcGpgyHXD4APdGYQQyqQ59X+Oyc7fXHS2429stzLsBiDjj6zqqYe8kknfw==",
1179
+      "version": "2.13.4",
1180
+      "resolved": "https://registry.npmjs.org/koa/-/koa-2.13.4.tgz",
1181
+      "integrity": "sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==",
1123 1182
       "requires": {
1124 1183
         "accepts": "^1.3.5",
1125 1184
         "cache-content-type": "^1.0.0",
1126 1185
         "content-disposition": "~0.5.2",
1127 1186
         "content-type": "^1.0.4",
1128
-        "cookies": "~0.9.1",
1187
+        "cookies": "~0.8.0",
1129 1188
         "debug": "^4.3.2",
1130 1189
         "delegates": "^1.0.0",
1190
+        "depd": "^2.0.0",
1131 1191
         "destroy": "^1.0.4",
1132
-        "encodeurl": "^2.0.0",
1192
+        "encodeurl": "^1.0.2",
1133 1193
         "escape-html": "^1.0.3",
1134 1194
         "fresh": "~0.5.2",
1135 1195
         "http-assert": "^1.3.0",
1136
-        "http-errors": "^2.0.0",
1196
+        "http-errors": "^1.6.3",
1197
+        "is-generator-function": "^1.0.7",
1137 1198
         "koa-compose": "^4.1.0",
1199
+        "koa-convert": "^2.0.0",
1138 1200
         "on-finished": "^2.3.0",
1201
+        "only": "~0.0.2",
1139 1202
         "parseurl": "^1.3.2",
1140
-        "statuses": "^2.0.1",
1141
-        "type-is": "^2.0.1",
1203
+        "statuses": "^1.5.0",
1204
+        "type-is": "^1.6.16",
1142 1205
         "vary": "^1.1.2"
1143 1206
       },
1144 1207
       "dependencies": {
1145
-        "media-typer": {
1146
-          "version": "1.1.0",
1147
-          "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
1148
-          "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="
1149
-        },
1150
-        "mime-db": {
1151
-          "version": "1.54.0",
1152
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
1153
-          "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="
1154
-        },
1155
-        "mime-types": {
1156
-          "version": "3.0.1",
1157
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz",
1158
-          "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==",
1208
+        "http-errors": {
1209
+          "version": "1.8.1",
1210
+          "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
1211
+          "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
1159 1212
           "requires": {
1160
-            "mime-db": "^1.54.0"
1213
+            "depd": "~1.1.2",
1214
+            "inherits": "2.0.4",
1215
+            "setprototypeof": "1.2.0",
1216
+            "statuses": ">= 1.5.0 < 2",
1217
+            "toidentifier": "1.0.1"
1218
+          },
1219
+          "dependencies": {
1220
+            "depd": {
1221
+              "version": "1.1.2",
1222
+              "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
1223
+              "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
1224
+            }
1161 1225
           }
1162 1226
         },
1163
-        "type-is": {
1164
-          "version": "2.0.1",
1165
-          "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
1166
-          "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
1167
-          "requires": {
1168
-            "content-type": "^1.0.5",
1169
-            "media-typer": "^1.1.0",
1170
-            "mime-types": "^3.0.0"
1171
-          }
1227
+        "statuses": {
1228
+          "version": "1.5.0",
1229
+          "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1230
+          "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
1172 1231
         }
1173 1232
       }
1174 1233
     },
@@ -1187,6 +1246,15 @@
1187 1246
       "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz",
1188 1247
       "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw=="
1189 1248
     },
1249
+    "koa-convert": {
1250
+      "version": "2.0.0",
1251
+      "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz",
1252
+      "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==",
1253
+      "requires": {
1254
+        "co": "^4.6.0",
1255
+        "koa-compose": "^4.1.0"
1256
+      }
1257
+    },
1190 1258
     "koa-router": {
1191 1259
       "version": "13.0.1",
1192 1260
       "resolved": "https://registry.npmjs.org/koa-router/-/koa-router-13.0.1.tgz",
@@ -1238,6 +1306,16 @@
1238 1306
         }
1239 1307
       }
1240 1308
     },
1309
+    "koa-session": {
1310
+      "version": "7.0.2",
1311
+      "resolved": "https://registry.npmjs.org/koa-session/-/koa-session-7.0.2.tgz",
1312
+      "integrity": "sha512-nMWJndLmIuKQMTYPr5NokGQOGD2Aqal5GVi1xAhrQjrrzKq1ASy1WTFVkZ/xhwhtC4KpWi5KdqNYewZo7KJb4w==",
1313
+      "requires": {
1314
+        "crc": "^3.8.0",
1315
+        "is-type-of": "^2.2.0",
1316
+        "zod": "^3.24.1"
1317
+      }
1318
+    },
1241 1319
     "koa-static": {
1242 1320
       "version": "5.0.0",
1243 1321
       "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz",
@@ -1448,6 +1526,11 @@
1448 1526
         }
1449 1527
       }
1450 1528
     },
1529
+    "only": {
1530
+      "version": "0.0.2",
1531
+      "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz",
1532
+      "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ=="
1533
+    },
1451 1534
     "p-limit": {
1452 1535
       "version": "2.3.0",
1453 1536
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -1656,6 +1739,16 @@
1656 1739
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1657 1740
       "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1658 1741
     },
1742
+    "safe-regex-test": {
1743
+      "version": "1.1.0",
1744
+      "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
1745
+      "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
1746
+      "requires": {
1747
+        "call-bound": "^1.0.2",
1748
+        "es-errors": "^1.3.0",
1749
+        "is-regex": "^1.2.1"
1750
+      }
1751
+    },
1659 1752
     "safer-buffer": {
1660 1753
       "version": "2.1.2",
1661 1754
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
@@ -1913,6 +2006,11 @@
1913 2006
       "version": "1.4.0",
1914 2007
       "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz",
1915 2008
       "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA=="
2009
+    },
2010
+    "zod": {
2011
+      "version": "3.25.62",
2012
+      "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.62.tgz",
2013
+      "integrity": "sha512-YCxsr4DmhPcrKPC9R1oBHQNlQzlJEyPAId//qTau/vBee9uO8K6prmRq4eMkOyxvBfH4wDPIPdLx9HVMWIY3xA=="
1916 2014
     }
1917 2015
   }
1918 2016
 }

+ 3 - 2
package.json

@@ -29,9 +29,10 @@
29 29
     "child_process": "^1.0.2",
30 30
     "cos-nodejs-sdk-v5": "^2.16.0-beta.3",
31 31
     "gm": "^1.25.1",
32
-    "koa": "^3.0.0",
32
+    "koa": "^2.13.4",
33 33
     "koa-bodyparser": "^4.4.1",
34 34
     "koa-router": "^13.0.1",
35
+    "koa-session": "^7.0.2",
35 36
     "koa-static": "^5.0.0",
36 37
     "lodash": "^4.17.21",
37 38
     "moment": "^2.30.1",
@@ -42,4 +43,4 @@
42 43
   "devDependencies": {
43 44
     "cross-env": "^7.0.3"
44 45
   }
45
-}
46
+}

+ 3 - 3
src/api/mps/mpsScoreController.js

@@ -68,8 +68,8 @@ export async function GetMPSDistrictPersonNum(ctx) {
68 68
         Year: ctx.query.Year || ArrYear[0].Name,
69 69
     };
70 70
 
71
-    if (param.DistrictID==16 )
72
-        param.Year=ArrYear[1].Name;
71
+    // if (param.DistrictID==16 )
72
+    //     param.Year=ArrYear[1].Name;
73 73
 
74 74
     let info=null;
75 75
     if (param.DistrictID!="NaN"){
@@ -129,7 +129,7 @@ export async function GetMPSDistrictPersonNum(ctx) {
129 129
 // 获取城市招生人数
130 130
 export async function GetMPSCityPersonNum(ctx) {
131 131
     const param = {
132
-        Year: ctx.query.Year || ArrYear[1].Name,
132
+        Year: ctx.query.Year || ArrYear[0].Name,
133 133
     };
134 134
 
135 135
     const url = "GetMPSCityPersonNum";

+ 4 - 0
src/api/web/routes.js

@@ -5,6 +5,10 @@ import * as webController from './webController.js';
5 5
 const router = new Router();
6 6
 
7 7
 // 页面路由
8
+router.get('/miaoguo',webController.WebLogin);
9
+router.get('/miaoguo/',webController.WebLogin);
10
+router.get('/miaoguologin',webController.WebLoginDo);
11
+
8 12
 router.get('/kylx365_db_admin',webController.Kylx365DBAdmin);
9 13
 router.get('/api/GetKylx365Tables',webController.GetKylx365Tables);
10 14
 router.get('/api/GetKylx365TableColumnByTable',webController.GetKylx365TableColumnByTable);

+ 167 - 1
src/api/web/webController.js

@@ -7,8 +7,174 @@ import _ from 'lodash';
7 7
 import axios from 'axios';
8 8
 import commonModel from '../../model/commonModel.js';
9 9
 
10
+//网站登录
11
+export async function WebLogin (ctx){
12
+    const data1 = fs.readFileSync("./public/index.html");
13
+    ctx.body = data1.toString();
14
+};
15
+
16
+//秒过网站登录
17
+export async function  WebLoginDo (ctx){
18
+
19
+    const param = {
20
+        Code: ctx.query.code,
21
+        State: ctx.query.state,
22
+        UserID: ctx.query.UserID,
23
+        Param: ctx.query.param,
24
+    };
25
+
26
+    let result = {};
27
+    //网站跨用户跳转
28
+    if (param.Param){
29
+
30
+        console.log("param.Param:"+param.Param);
31
+        param.Param=stringUtils.ReplaceAllString(param.Param,"@@@","+");
32
+        param.Param2= Crypto.Decrypt(param.Param, config.urlSecrets.aes_key, config.urlSecrets.aes_iv);
33
+        console.log("param.Param2:"+param.Param2);
34
+
35
+        const arrTemp=param.Param2.split("&");
36
+        if (arrTemp.length>=2) {
37
+            param.UserID = arrTemp[0].substr(7);
38
+            param.Time = arrTemp[1].substr(5);
39
+            const current = new Date().getTime();
40
+            if ((current - Number(param.Time)) < 60000*60*4) {
41
+                result = {errcode: 102};//证明在有效时间内登录
42
+            }
43
+            else
44
+                result = {errcode: 101};
45
+        }
46
+            result = {errcode: 101};
47
+    }
48
+    else {
49
+
50
+        const code = param.Code;
51
+        //console.log("code:"+code);
52
+        const url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + config.wx.web_appid + '&secret=' + config.wx.web_appsecret + '&code=' + code + '&grant_type=authorization_code';
53
+
54
+        //console.log("url:"+url);
55
+        try {
56
+            const response = await axios.get(url);
57
+            const json = response.data;
58
+            //console.log("json1:"+htmlString);
59
+            if (json && json.openid) {
60
+                param.OpenID = json.openid;
61
+                if (json.unionid)
62
+                    param.UnionID = json.unionid;
63
+                if (json.refresh_token)
64
+                    param.refresh_token = json.refresh_token;
65
+                //console.log("UnionID:"+param.UnionID);
66
+
67
+                if (param.UnionID == "oY_7p0ZSAQhfJc3Yg1Q8p4pAY-ns"
68
+                    || param.UnionID == "oY_7p0eMgy8NjIFnpbSpAtXamYRg"
69
+                    || param.UnionID == "oY_7p0ZqeajxewE0PSmP6X20AOtc"
70
+                    || process.env.NODE_ENV == "development") {
71
+
72
+                    const userid = Crypto.Encrypt(param.UnionID, config.urlSecrets.aes_key, config.urlSecrets.aes_iv);
73
+                    ctx.cookies.set('test', userid, {maxAge: 365 * 24 * 60 * 60 * 1000});
74
+                    //console.log("UnionID2:"+userid);
75
+
76
+                }
77
+
78
+                result = {errcode: 10000};
79
+            }
80
+            else {
81
+                result = {errcode: 101};
82
+            }
83
+        } catch (err) {
84
+            result = {errcode: 101, errStr: err};
85
+        }
86
+    }
87
+
88
+    //console.log(result);
89
+    if (result.errcode!=10000){
90
+
91
+        const cookie=ctx.cookies.get("test");
92
+        //console.log(cookie);
93
+        if (cookie=="+yqoClZSJfwPPQwow7K12IboznGF059HmGsK1lpS+4Y="
94
+            || cookie=="ckQpqDsukHN49UgwpRdoYRC7uH1hTfXvhJ71hPzgyfM="
95
+            || cookie=="IAdzqqCJ9ixjFGemUoqrJABRsF3EpvPgnIgGYFCWOhg="
96
+            || process.env.NODE_ENV=="development") {
97
+
98
+            //console.log("ctx.session.OpenID:"+ctx.session.OpenID);
99
+            //测试用
100
+            if (param.UserID) {
101
+                // const userList = await miaoguo.GetUsersInfoByUserID(param);
102
+                // if (userList.length > 0) {
103
+                //     param.OpenID = userList[0].OpenID;
104
+                //     param.UnionID = userList[0].UnionID;
105
+                //     result.errcode = 10000;
106
+                // }
107
+            }
108
+        }
109
+        else if (result.errcode==102){
110
+            if (param.UserID) {
111
+                const userList = await miaoguo.GetUsersInfoByUserID(param);
112
+                if (userList.length > 0) {
113
+                    param.OpenID = userList[0].OpenID;
114
+                    param.UnionID = userList[0].UnionID;
115
+                    result.errcode = 10000;
116
+                }
117
+            }
118
+        }
119
+        else if (ctx.session.OpenID) {
120
+            param.OpenID = ctx.session.OpenID;
121
+            param.UnionID = ctx.session.UnionID;
122
+            result.errcode = 10000;
123
+        }
124
+    }
125
+
126
+
127
+    if (result.errcode==10000) {
128
+        ctx.session.OpenID = param.OpenID;
129
+        ctx.session.UnionID = param.UnionID;
130
+
131
+        let userList = await miaoguo.GetUsersInfoByUnionID(param);
132
+
133
+        //绑定用户则显示主帐号数据
134
+        if (userList.length > 0 && userList[0].ParentUserID>0) {
135
+            param.UserID=userList[0].ParentUserID;
136
+            userList = await miaoguo.GetUsersInfoByUserID(param);
137
+        }
138
+
139
+        if (userList.length > 0) {
140
+
141
+            const time3 = moment().format('YYYYMMDD');
142
+            const time4 = moment(userList[0].ProductServiceTime).format('YYYYMMDD');
143
+
144
+            let isVisit=true;
145
+            if (time3 > time4) {
146
+                isVisit=false;
147
+            }
148
+            if ((userList[0].IsTryOut==1 || userList[0].IsMember==1) && isVisit) {
149
+
150
+                const data1 = fs.readFileSync("./public/mg/main.html");
151
+                
152
+                
153
+                ctx.body = data1.toString();
154
+            }
155
+            else{
156
+                ctx.body ="您尚且不是“秒过学习”会员或者会员有效期已经过期,请到小程序中去申请或续费。";
157
+            }
158
+        }
159
+        else{
160
+            ctx.body ="您尚且不是“秒过学习”用户,请先到微信小程序中登录授权。";
161
+        }
162
+    }
163
+    else
164
+        ctx.body ="<html><body>请重新<a href='https://www.kylx365.com/miaoguo'>登录</a></body></html>";
165
+
166
+}
167
+
168
+//网站登出
169
+export async function WebLogout(ctx) {
170
+    var param={};
171
+    ctx.session.OpenID = null;
172
+    ctx.session.UnionID = null;
173
+    ctx.body = {"errcode": 10000};
174
+};
175
+
10 176
 /**
11
- * 分数线网页首页
177
+ * 数据库管理
12 178
  * @generator
13 179
  * @yields {Object} 返回渲染后的HTML页面内容
14 180
  * @description 读取并返回public目录下的mpsDefault.html文件内容作为响应体

+ 21 - 0
src/app.js

@@ -1,6 +1,7 @@
1 1
 import Koa from 'koa';
2 2
 import bodyParser from 'koa-bodyparser';
3 3
 import serve from 'koa-static';
4
+import session from 'koa-session';
4 5
 import path from 'path';
5 6
 import { fileURLToPath } from 'url';
6 7
 import config from './config/index.js';
@@ -39,7 +40,27 @@ app.use(async (ctx, next) => {
39 40
     }
40 41
 });
41 42
 
43
+// 设置签名密钥
44
+app.keys = ['some secret hurr'];
42 45
 
46
+const SessionConfig = {
47
+    key: 'koa.sess', // cookie密钥
48
+    maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days)
49
+    autoCommit: true, // 自动提交头部
50
+    overwrite: true, // 是否允许重写
51
+    httpOnly: true, // 是否允许js访问cookie
52
+    signed: true, // 签名默认true
53
+    rolling: true, // 每次请求强制设置cookie,重置cookie过期时间(默认:false)
54
+    renew: true, // 当session快过期时更新session,以避免用户在操作时session过期
55
+    secure: process.env.NODE_ENV === 'production', // 仅在HTTPS下发送cookie
56
+    sameSite: 'lax', // 跨站点cookie设置,'strict'|'lax'|'none'
57
+};
58
+
59
+// 使用session中间件
60
+app.use(session(SessionConfig, app));
61
+
62
+
63
+//中间件
43 64
 app.use(decryptUrlMiddle());
44 65
 
45 66
 // 注册路由

+ 35 - 21
src/kill-port.js

@@ -1,38 +1,52 @@
1
+import { exec as execCallback } from 'child_process';
2
+import { promisify } from 'util';
1 3
 
2
-const { exec } = require('child_process');
4
+const exec = promisify(execCallback);
3 5
 const port = 3000; // 可修改为需要监听的端口
4 6
 
5
-function killPort(port) {
6
-  const cmd = process.platform === 'win32' 
7
+const getCommand = (port) => {
8
+  return process.platform === 'win32'
7 9
     ? `netstat -ano | findstr ${port}`
8 10
     : `lsof -i :${port}`;
11
+};
9 12
 
10
-  exec(cmd, (err, stdout) => {
11
-    if (err || !stdout.trim()) {
13
+const getKillCommand = (pid) => {
14
+  return process.platform === 'win32'
15
+    ? `taskkill /f /pid ${pid}`
16
+    : `kill -9 ${pid}`;
17
+};
18
+
19
+const killPort = async (port) => {
20
+  try {
21
+    const cmd = getCommand(port);
22
+    const { stdout } = await exec(cmd);
23
+
24
+    if (!stdout.trim()) {
12 25
       console.log(`端口 ${port} 未被占用`);
13 26
       return;
14 27
     }
15 28
 
16 29
     const lines = stdout.trim().split('\n');
17
-    lines.forEach(line => {
30
+    const killPromises = lines.map(async (line) => {
18 31
       const parts = line.trim().split(/\s+/);
19 32
       const pid = process.platform === 'win32' ? parts[4] : parts[1];
20
-      
33
+
21 34
       if (pid && !isNaN(pid)) {
22
-        const killCmd = process.platform === 'win32'
23
-          ? `taskkill /f /pid ${pid}`
24
-          : `kill -9 ${pid}`;
25
-        
26
-        exec(killCmd, (killErr) => {
27
-          if (killErr) {
28
-            console.error(`终止进程 ${pid} 失败:`, killErr);
29
-          } else {
30
-            console.log(`成功终止占用端口 ${port} 的进程: ${pid}`);
31
-          }
32
-        });
35
+        try {
36
+          const killCmd = getKillCommand(pid);
37
+          await exec(killCmd);
38
+          console.log(`成功终止占用端口 ${port} 的进程: ${pid}`);
39
+        } catch (killErr) {
40
+          console.error(`终止进程 ${pid} 失败:`, killErr);
41
+        }
33 42
       }
34 43
     });
35
-  });
36
-}
37 44
 
38
-killPort(port);
45
+    await Promise.all(killPromises);
46
+  } catch (err) {
47
+    console.error('执行命令时出错:', err);
48
+  }
49
+};
50
+
51
+// 执行函数
52
+killPort(port);