cgserver 8.9.3 → 8.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +2 -0
  2. package/dist/lib/Framework/AI/AiObject.js +10 -10
  3. package/dist/lib/Framework/AI/Astar.js +133 -133
  4. package/dist/lib/Framework/AI/BehaviorAI.js +307 -307
  5. package/dist/lib/Framework/AI/Entity.js +33 -33
  6. package/dist/lib/Framework/AI/Point.js +68 -68
  7. package/dist/lib/Framework/AI/TriggerMgr.js +201 -201
  8. package/dist/lib/Framework/Config/Config.js +53 -53
  9. package/dist/lib/Framework/Config/DbConfig.js +14 -14
  10. package/dist/lib/Framework/Config/FrameworkConfig.js +207 -207
  11. package/dist/lib/Framework/Config/IServerConfig.js +26 -26
  12. package/dist/lib/Framework/Config/_error_.js +35 -35
  13. package/dist/lib/Framework/Core/Core.js +665 -639
  14. package/dist/lib/Framework/Core/Timer.js +116 -116
  15. package/dist/lib/Framework/Database/Decorator/AutoIncrement.js +11 -11
  16. package/dist/lib/Framework/Database/Decorator/DBCache.js +64 -64
  17. package/dist/lib/Framework/Database/Decorator/NotNull.js +11 -11
  18. package/dist/lib/Framework/Database/Decorator/PrimaryKey.js +11 -11
  19. package/dist/lib/Framework/Database/Decorator/Property.js +61 -61
  20. package/dist/lib/Framework/Database/Decorator/Table.js +15 -15
  21. package/dist/lib/Framework/Database/Decorator/Type.js +20 -20
  22. package/dist/lib/Framework/Database/MSSqlManager.js +53 -53
  23. package/dist/lib/Framework/Database/MongoBaseService.js +117 -117
  24. package/dist/lib/Framework/Database/MongoManager.js +467 -467
  25. package/dist/lib/Framework/Database/MysqlBaseService.js +281 -281
  26. package/dist/lib/Framework/Database/MysqlManager.js +179 -179
  27. package/dist/lib/Framework/Database/RedisManager.js +61 -61
  28. package/dist/lib/Framework/Decorator/AdminValidate.js +19 -19
  29. package/dist/lib/Framework/Decorator/AuthorityValidate.js +22 -22
  30. package/dist/lib/Framework/Decorator/CreatorValidate.js +19 -19
  31. package/dist/lib/Framework/Decorator/JsonAdminValidate.js +15 -15
  32. package/dist/lib/Framework/Decorator/JsonAuthorityValidate.js +20 -20
  33. package/dist/lib/Framework/Decorator/JsonCreatorValidate.js +19 -19
  34. package/dist/lib/Framework/Decorator/SyncCall.js +42 -42
  35. package/dist/lib/Framework/Decorator/SyncCallServer.js +77 -77
  36. package/dist/lib/Framework/Logic/CacheTool.js +73 -73
  37. package/dist/lib/Framework/Logic/EventTool.js +27 -27
  38. package/dist/lib/Framework/Logic/HttpTool.js +75 -75
  39. package/dist/lib/Framework/Logic/Log.js +140 -140
  40. package/dist/lib/Framework/Logic/SyncQueueTool.js +43 -43
  41. package/dist/lib/Framework/Service/MongoAccountService.js +367 -367
  42. package/dist/lib/Framework/Service/MongoCacheService.js +42 -42
  43. package/dist/lib/Framework/Service/MongoUserService.js +100 -100
  44. package/dist/lib/Framework/Service/MysqlAccountService.js +441 -441
  45. package/dist/lib/Framework/Service/MysqlUserService.js +171 -171
  46. package/dist/lib/Framework/Service/ini.js +36 -36
  47. package/dist/lib/Framework/SocketServer/IClientWebSocket.js +44 -44
  48. package/dist/lib/Framework/SocketServer/IRpc.js +12 -12
  49. package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +63 -63
  50. package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +63 -63
  51. package/dist/lib/Framework/SocketServer/IServerWebSocket.js +75 -75
  52. package/dist/lib/Framework/SocketServer/ISocketServer.js +205 -205
  53. package/dist/lib/Framework/SocketServer/IWebSocket.js +195 -195
  54. package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +57 -57
  55. package/dist/lib/Framework/SocketServer/ProtoFilter/IProtoFilter.js +8 -8
  56. package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +29 -29
  57. package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +31 -31
  58. package/dist/lib/Framework/ThirdParty/AlipayTool.js +203 -203
  59. package/dist/lib/Framework/ThirdParty/Alisms.js +46 -46
  60. package/dist/lib/Framework/ThirdParty/AppleTool.js +234 -234
  61. package/dist/lib/Framework/ThirdParty/CgMq.js +132 -132
  62. package/dist/lib/Framework/ThirdParty/EmailTool.js +33 -33
  63. package/dist/lib/Framework/ThirdParty/OpenSocial.js +32 -32
  64. package/dist/lib/Framework/ThirdParty/QQTool.js +118 -118
  65. package/dist/lib/Framework/ThirdParty/QiniuTool.js +21 -21
  66. package/dist/lib/Framework/ThirdParty/Rpc.js +63 -63
  67. package/dist/lib/Framework/ThirdParty/WechatOATool.js +61 -61
  68. package/dist/lib/Framework/ThirdParty/WechatTool.js +74 -74
  69. package/dist/lib/Framework/WebServer/Controller/BaseController.js +112 -112
  70. package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +169 -169
  71. package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +169 -169
  72. package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +112 -112
  73. package/dist/lib/Framework/WebServer/Engine/Engine.js +152 -152
  74. package/dist/lib/Framework/WebServer/Engine/RazorJs.js +544 -544
  75. package/dist/lib/Framework/WebServer/Engine/Request.js +237 -237
  76. package/dist/lib/Framework/WebServer/Engine/Response.js +100 -100
  77. package/dist/lib/Framework/WebServer/IWebServer.js +59 -59
  78. package/dist/lib/Framework/cgserver.js +121 -121
  79. package/dist/lib/Framework/index.js +202 -202
  80. package/dist/lib/test/test.js +21 -21
  81. package/dist/types/Framework/AI/AiObject.d.ts +5 -5
  82. package/dist/types/Framework/AI/Astar.d.ts +38 -38
  83. package/dist/types/Framework/AI/BehaviorAI.d.ts +24 -24
  84. package/dist/types/Framework/AI/Entity.d.ts +12 -12
  85. package/dist/types/Framework/AI/Point.d.ts +17 -17
  86. package/dist/types/Framework/AI/TriggerMgr.d.ts +52 -52
  87. package/dist/types/Framework/Config/Config.d.ts +12 -12
  88. package/dist/types/Framework/Config/DbConfig.d.ts +10 -10
  89. package/dist/types/Framework/Config/FrameworkConfig.d.ts +203 -203
  90. package/dist/types/Framework/Config/IServerConfig.d.ts +9 -9
  91. package/dist/types/Framework/Config/_error_.d.ts +99 -99
  92. package/dist/types/Framework/Core/Core.d.ts +111 -108
  93. package/dist/types/Framework/Core/Timer.d.ts +16 -16
  94. package/dist/types/Framework/Database/Decorator/AutoIncrement.d.ts +1 -1
  95. package/dist/types/Framework/Database/Decorator/DBCache.d.ts +23 -23
  96. package/dist/types/Framework/Database/Decorator/NotNull.d.ts +1 -1
  97. package/dist/types/Framework/Database/Decorator/PrimaryKey.d.ts +1 -1
  98. package/dist/types/Framework/Database/Decorator/Property.d.ts +57 -57
  99. package/dist/types/Framework/Database/Decorator/Table.d.ts +1 -1
  100. package/dist/types/Framework/Database/Decorator/Type.d.ts +1 -1
  101. package/dist/types/Framework/Database/MSSqlManager.d.ts +27 -27
  102. package/dist/types/Framework/Database/MongoBaseService.d.ts +81 -81
  103. package/dist/types/Framework/Database/MongoManager.d.ts +155 -155
  104. package/dist/types/Framework/Database/MysqlBaseService.d.ts +34 -34
  105. package/dist/types/Framework/Database/MysqlManager.d.ts +53 -53
  106. package/dist/types/Framework/Database/RedisManager.d.ts +24 -24
  107. package/dist/types/Framework/Decorator/AdminValidate.d.ts +1 -1
  108. package/dist/types/Framework/Decorator/AuthorityValidate.d.ts +2 -2
  109. package/dist/types/Framework/Decorator/CreatorValidate.d.ts +1 -1
  110. package/dist/types/Framework/Decorator/JsonAdminValidate.d.ts +1 -1
  111. package/dist/types/Framework/Decorator/JsonAuthorityValidate.d.ts +2 -2
  112. package/dist/types/Framework/Decorator/JsonCreatorValidate.d.ts +1 -1
  113. package/dist/types/Framework/Decorator/SyncCall.d.ts +12 -12
  114. package/dist/types/Framework/Decorator/SyncCallServer.d.ts +14 -14
  115. package/dist/types/Framework/Logic/CacheTool.d.ts +27 -27
  116. package/dist/types/Framework/Logic/EventTool.d.ts +13 -13
  117. package/dist/types/Framework/Logic/HttpTool.d.ts +15 -15
  118. package/dist/types/Framework/Logic/Log.d.ts +25 -25
  119. package/dist/types/Framework/Logic/SyncQueueTool.d.ts +21 -21
  120. package/dist/types/Framework/Service/MongoAccountService.d.ts +69 -69
  121. package/dist/types/Framework/Service/MongoCacheService.d.ts +14 -14
  122. package/dist/types/Framework/Service/MongoUserService.d.ts +35 -35
  123. package/dist/types/Framework/Service/MysqlAccountService.d.ts +74 -74
  124. package/dist/types/Framework/Service/MysqlUserService.d.ts +33 -33
  125. package/dist/types/Framework/Service/ini.d.ts +29 -29
  126. package/dist/types/Framework/SocketServer/IClientWebSocket.d.ts +17 -17
  127. package/dist/types/Framework/SocketServer/IRpc.d.ts +8 -8
  128. package/dist/types/Framework/SocketServer/IRpcClientWebSocket.d.ts +16 -16
  129. package/dist/types/Framework/SocketServer/IRpcServerWebSocket.d.ts +16 -16
  130. package/dist/types/Framework/SocketServer/IServerWebSocket.d.ts +28 -28
  131. package/dist/types/Framework/SocketServer/ISocketServer.d.ts +45 -45
  132. package/dist/types/Framework/SocketServer/IWebSocket.d.ts +60 -60
  133. package/dist/types/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.d.ts +9 -9
  134. package/dist/types/Framework/SocketServer/ProtoFilter/IProtoFilter.d.ts +9 -9
  135. package/dist/types/Framework/SocketServer/ProtoFilter/JsonProtoFilter.d.ts +6 -6
  136. package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +8 -8
  137. package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +109 -109
  138. package/dist/types/Framework/ThirdParty/Alisms.d.ts +14 -14
  139. package/dist/types/Framework/ThirdParty/AppleTool.d.ts +131 -131
  140. package/dist/types/Framework/ThirdParty/CgMq.d.ts +51 -51
  141. package/dist/types/Framework/ThirdParty/EmailTool.d.ts +5 -5
  142. package/dist/types/Framework/ThirdParty/OpenSocial.d.ts +7 -7
  143. package/dist/types/Framework/ThirdParty/QQTool.d.ts +41 -41
  144. package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +6 -6
  145. package/dist/types/Framework/ThirdParty/Rpc.d.ts +20 -20
  146. package/dist/types/Framework/ThirdParty/WechatOATool.d.ts +13 -13
  147. package/dist/types/Framework/ThirdParty/WechatTool.d.ts +20 -20
  148. package/dist/types/Framework/WebServer/Controller/BaseController.d.ts +33 -33
  149. package/dist/types/Framework/WebServer/Controller/MongoBaseUserController.d.ts +27 -27
  150. package/dist/types/Framework/WebServer/Controller/MysqlBaseUserController.d.ts +27 -27
  151. package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +35 -35
  152. package/dist/types/Framework/WebServer/Engine/Engine.d.ts +22 -21
  153. package/dist/types/Framework/WebServer/Engine/RazorJs.d.ts +21 -21
  154. package/dist/types/Framework/WebServer/Engine/Request.d.ts +36 -35
  155. package/dist/types/Framework/WebServer/Engine/Response.d.ts +30 -30
  156. package/dist/types/Framework/WebServer/IWebServer.d.ts +20 -20
  157. package/dist/types/Framework/cgserver.d.ts +27 -27
  158. package/dist/types/Framework/index.d.ts +91 -91
  159. package/dist/types/test/test.d.ts +1 -1
  160. package/package.json +1 -1
  161. package/dist/lib/Framework/WebServer/Decorator/AdminValidate.js +0 -19
  162. package/dist/lib/Framework/WebServer/Decorator/AuthorityValidate.js +0 -22
  163. package/dist/lib/Framework/WebServer/Decorator/CreatorValidate.js +0 -19
  164. package/dist/lib/Framework/WebServer/Decorator/JsonAdminValidate.js +0 -15
  165. package/dist/lib/Framework/WebServer/Decorator/JsonAuthorityValidate.js +0 -20
  166. package/dist/lib/Framework/WebServer/Decorator/JsonCreatorValidate.js +0 -19
  167. package/dist/lib/Framework/WebServer/Decorator/SyncCall.js +0 -41
  168. package/dist/lib/Framework/WebServer/Decorator/SyncCallServer.js +0 -77
  169. package/dist/types/Framework/WebServer/Decorator/AdminValidate.d.ts +0 -1
  170. package/dist/types/Framework/WebServer/Decorator/AuthorityValidate.d.ts +0 -2
  171. package/dist/types/Framework/WebServer/Decorator/CreatorValidate.d.ts +0 -1
  172. package/dist/types/Framework/WebServer/Decorator/JsonAdminValidate.d.ts +0 -1
  173. package/dist/types/Framework/WebServer/Decorator/JsonAuthorityValidate.d.ts +0 -2
  174. package/dist/types/Framework/WebServer/Decorator/JsonCreatorValidate.d.ts +0 -1
  175. package/dist/types/Framework/WebServer/Decorator/SyncCall.d.ts +0 -12
  176. package/dist/types/Framework/WebServer/Decorator/SyncCallServer.d.ts +0 -14
@@ -1,639 +1,665 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.core = void 0;
4
- let os = require('os');
5
- let request = require('request');
6
- const _ = require("underscore");
7
- const crypto = require("crypto");
8
- const Log_1 = require("../Logic/Log");
9
- const CryptoJS = require("crypto-js");
10
- /**
11
- * 常用的工具函数类
12
- */
13
- class core {
14
- /**
15
- * 判断变量是不是对象
16
- * @param param 需要检查的变量
17
- * @returns true为对象
18
- */
19
- static isObject(param) {
20
- return typeof (param) === "object";
21
- }
22
- static isArray(param) {
23
- return param instanceof Array;
24
- }
25
- static isNumber(param) {
26
- return typeof (param) === "number";
27
- }
28
- static isNaN(param) {
29
- return isNaN(param);
30
- }
31
- static isFunction(param) {
32
- return typeof (param) === "function";
33
- }
34
- static isString(param) {
35
- return typeof (param) === "string";
36
- }
37
- static isAsyncFunc(fun) {
38
- if (!this.isFunction(fun)) {
39
- return;
40
- }
41
- return fun[Symbol.toStringTag] === "AsyncFunction";
42
- }
43
- /**
44
- * 深度拷贝
45
- * @param obj
46
- * @returns
47
- */
48
- static clone(obj) {
49
- if (!obj) {
50
- return obj;
51
- }
52
- if (core.isArray(obj)) {
53
- let newArray = new Array();
54
- for (let i = 0, length = obj.length; i < length; ++i) {
55
- newArray[i] = this.clone(obj[i]);
56
- }
57
- return newArray;
58
- }
59
- if (core.isObject(obj)) {
60
- let newObj = new Object();
61
- for (let i in obj) {
62
- newObj[i] = this.clone(obj[i]);
63
- }
64
- return newObj;
65
- }
66
- return obj;
67
- }
68
- //合并但是不改变dest
69
- static merge(dest, src) {
70
- let t = core.clone(dest);
71
- if (!src) {
72
- return t;
73
- }
74
- if (core.isArray(src)) {
75
- t = t || [];
76
- let tlen = t.length;
77
- for (let i = 0, len = src.length; i < len; ++i) {
78
- let value = src[i];
79
- if (core.isFunction(value)) {
80
- continue;
81
- }
82
- if (core.isArray(value) || core.isObject(value)) {
83
- if (i < tlen) {
84
- t[i] = core.merge(null, value);
85
- }
86
- else {
87
- t.push(core.merge(null, value));
88
- }
89
- }
90
- else {
91
- if (i < tlen) {
92
- t[i] = value;
93
- }
94
- else {
95
- t.push(value);
96
- }
97
- }
98
- }
99
- }
100
- else if (core.isObject(src)) {
101
- t = t || {};
102
- for (let key in src) {
103
- let value = src[key];
104
- if (core.isFunction(value)) {
105
- continue;
106
- }
107
- if (core.isArray(value) || core.isObject(value)) {
108
- t[key] = core.merge(null, value);
109
- }
110
- else {
111
- t[key] = value;
112
- }
113
- }
114
- }
115
- else {
116
- t = src;
117
- }
118
- return t;
119
- }
120
- //只是取出template里面已经有的部分
121
- static getExit(template, src) {
122
- if (!src || !template) {
123
- return {};
124
- }
125
- let t = {};
126
- for (let key in src) {
127
- if (template[key] === undefined) {
128
- continue;
129
- }
130
- let value = src[key];
131
- if (core.isFunction(value)) {
132
- continue;
133
- }
134
- if (core.isArray(value) || core.isObject(value)) {
135
- t[key] = core.getExit(template[key], value);
136
- }
137
- else {
138
- t[key] = value;
139
- }
140
- }
141
- return t;
142
- }
143
- static toArray(table) {
144
- let array = [];
145
- for (let key in table) {
146
- if (core.isFunction(table[key])) {
147
- continue;
148
- }
149
- array.push(key);
150
- array.push(table[key]);
151
- }
152
- return array;
153
- }
154
- static foreach(items, callback) {
155
- if (!items || !callback) {
156
- return;
157
- }
158
- if (core.isNumber(items)) {
159
- for (let i = 0; i < items; ++i) {
160
- let ret = callback(i);
161
- if (ret) {
162
- return;
163
- }
164
- }
165
- }
166
- else if (core.isString(items)) {
167
- for (let i = 0, length = items.length; i < length; i++) {
168
- let ret = callback(i, items.charAt(i));
169
- if (ret) {
170
- return;
171
- }
172
- }
173
- }
174
- else if (core.isArray(items)) {
175
- for (let i = 0, length = items.length; i < length; ++i) {
176
- let ret = callback(i, items[i]);
177
- if (ret) {
178
- return;
179
- }
180
- }
181
- }
182
- else if (core.isObject(items)) {
183
- for (let key in items) {
184
- let ret = callback(key, items[key]);
185
- if (ret) {
186
- return;
187
- }
188
- }
189
- }
190
- return;
191
- }
192
- static getLength(items) {
193
- if (core.isArray(items)) {
194
- return items.length;
195
- }
196
- if (core.isObject(items)) {
197
- let len = 0;
198
- core.foreach(items, () => {
199
- ++len;
200
- });
201
- return len;
202
- }
203
- return 0;
204
- }
205
- static char2buf(str) {
206
- let out = new ArrayBuffer(str.length * 2);
207
- let u16a = new Uint16Array(out);
208
- let strs = str.split("");
209
- for (let i = 0; i < strs.length; i++) {
210
- u16a[i] = strs[i].charCodeAt();
211
- }
212
- return out;
213
- }
214
- static array2arraybuffer(array) {
215
- let b = new ArrayBuffer(array.length);
216
- let v = new DataView(b, 0);
217
- for (let i = 0; i < array.length; i++) {
218
- v.setUint8(i, array[i]);
219
- }
220
- return b;
221
- }
222
- static arraybuffer2array(buffer) {
223
- let v = new DataView(buffer, 0);
224
- let a = new Uint8Array(v.byteLength);
225
- for (let i = 0; i < v.byteLength; i++) {
226
- a[i] = v.getUint8(i);
227
- }
228
- return a;
229
- }
230
- static firstCharUpCase(str) {
231
- let reg = /\b(\w)|\s(\w)/g;
232
- str = str.toLowerCase();
233
- return str.replace(reg, function (m) { return m.toUpperCase(); });
234
- }
235
- static convertIntToUInt8Array(num) {
236
- let c2 = num % 256;
237
- let c1 = Math.floor(num / 256);
238
- let arr = new Uint8Array(2);
239
- arr[0] = c1;
240
- arr[1] = c2;
241
- return arr;
242
- }
243
- static convertUInt8ArrayToInt(array) {
244
- if (array.length != 2) {
245
- return 0;
246
- }
247
- return array[0] * 256 + array[1];
248
- }
249
- //从一个数组里面按照下标和长度的方式去获取另一个数组,至少返回空数组
250
- //包含start
251
- static getArrayFromArray(data, start, l) {
252
- let len = data.length;
253
- start = start || 0; //默认最开始
254
- l = l || len; //默认到最后
255
- if (start >= len) {
256
- return new Uint8Array();
257
- }
258
- let arr = new Uint8Array(l);
259
- for (let i = start; i < start + l && i < len; ++i) {
260
- arr[i] = data[i];
261
- }
262
- return arr;
263
- }
264
- static blobToArrayBuffer(data, callback) {
265
- let fileReader = new FileReader();
266
- fileReader.onload = function (progressEvent) {
267
- if (callback) {
268
- callback(this.result);
269
- }
270
- };
271
- fileReader.readAsArrayBuffer(data);
272
- }
273
- static format = function (src, formatStr) {
274
- if (core.isString(src)) {
275
- let args = Array.prototype.slice.call(arguments, 1);
276
- return src.replace(/\{(\d+)\}/g, function (m, i) {
277
- return args[i];
278
- });
279
- }
280
- else {
281
- if (this.isNumber(src)) {
282
- src = new Date(src);
283
- }
284
- let str = formatStr;
285
- let Week = ['日', '一', '二', '三', '四', '五', '六'];
286
- let month = src.getMonth() + 1;
287
- let year = src.getFullYear();
288
- let date = src.getDate();
289
- let hour = src.getHours();
290
- let min = src.getMinutes();
291
- let sec = src.getSeconds();
292
- let day = src.getDay();
293
- str = str.replace(/yyyy|YYYY/, year);
294
- str = str.replace(/yy|YY/, (year % 100) > 9 ? (year % 100).toString() : '0' + (year % 100));
295
- str = str.replace(/MM/, month > 9 ? month.toString() : '0' + month);
296
- str = str.replace(/M/g, month);
297
- str = str.replace(/w|W/g, Week[day]);
298
- str = str.replace(/dd|DD/, date > 9 ? date.toString() : '0' + date);
299
- str = str.replace(/d|D/g, date);
300
- str = str.replace(/hh|HH/, hour > 9 ? hour.toString() : '0' + hour);
301
- str = str.replace(/h|H/g, hour);
302
- str = str.replace(/mm/, min > 9 ? min.toString() : '0' + min);
303
- str = str.replace(/m/g, min);
304
- str = str.replace(/ss|SS/, sec > 9 ? sec.toString() : '0' + sec);
305
- str = str.replace(/s|S/g, sec);
306
- return str;
307
- }
308
- };
309
- /**
310
- * 字符串中间保密
311
- * @param str
312
- */
313
- static fuzzy(str) {
314
- if (!str) {
315
- return str;
316
- }
317
- if (str.length <= 1) {
318
- return str;
319
- }
320
- if (str.length == 2) {
321
- return str[0] + "*";
322
- }
323
- let first = str[0];
324
- let last = str[str.length - 1];
325
- let newStr = first;
326
- for (let i = 0; i < str.length - 2; ++i) {
327
- newStr += "*";
328
- }
329
- newStr += last;
330
- return newStr;
331
- }
332
- static md5(str) {
333
- let md5_str = crypto.createHash('md5').update(str).digest('hex');
334
- return md5_str;
335
- }
336
- static sha1(str) {
337
- let sha1_str = crypto.createHash('sha1').update(str).digest('hex');
338
- return sha1_str;
339
- }
340
- static getLocalIP = function () {
341
- let iptable = {};
342
- let ifaces = os.networkInterfaces();
343
- for (let dev in ifaces) {
344
- ifaces[dev].forEach(function (details, alias) {
345
- if ((details.family == 'IPv4') && (details.internal == false)) {
346
- iptable['localIP'] = details.address;
347
- }
348
- });
349
- }
350
- return iptable['localIP'];
351
- };
352
- static getIP = async function () {
353
- return new Promise((resolve, reject) => {
354
- request('http://ip.chinaz.com/getip.aspx', function (error, response, body) {
355
- if (!error && response.statusCode == 200) {
356
- body = eval('(' + body + ')');
357
- resolve(body.ip);
358
- }
359
- else {
360
- console.error("can not get correct ip!");
361
- resolve(null);
362
- }
363
- });
364
- });
365
- };
366
- /**
367
- * 判断是否是手机号
368
- * @param phone 手机号
369
- */
370
- static isPhoneNo(phone) {
371
- let reg = /^1[3-9]\d{9}$/; //验证规则
372
- let flag = reg.test(phone); //true
373
- return flag;
374
- }
375
- /**
376
- * 判断是否是email
377
- * @param email
378
- */
379
- static isEmail(email) {
380
- if (!email) {
381
- return false;
382
- }
383
- var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int|name|asia)$";
384
- var re = new RegExp(regu);
385
- if (email.search(re) == -1) {
386
- return false;
387
- }
388
- return true;
389
- }
390
- /**
391
- * 根据概率分布获取概率分布的下标
392
- * @param probabilitys 概率分布列表
393
- * @param totalProbability 总概率
394
- */
395
- static getRandomIndex(probabilitys, totalProbability) {
396
- let result = 0;
397
- let random = 0;
398
- totalProbability = totalProbability || -1;
399
- if (totalProbability < 0) {
400
- totalProbability = eval(probabilitys.join("+"));
401
- }
402
- if (totalProbability > 1) {
403
- random = _.random(totalProbability);
404
- }
405
- else {
406
- random = Math.random();
407
- }
408
- let value = 0;
409
- for (let index = 0; index < probabilitys.length; ++index) {
410
- value += probabilitys[index];
411
- if (random < value) {
412
- result = index;
413
- break;
414
- }
415
- }
416
- return result;
417
- }
418
- /**
419
- * 检查是否是闰年
420
- * @param year
421
- */
422
- static checkLeap(year) {
423
- if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
424
- return true;
425
- }
426
- else {
427
- return false;
428
- }
429
- }
430
- /**
431
- * 获取几月一共有多少天
432
- * @param year
433
- * @param month
434
- */
435
- static getMonthDays(year, month) {
436
- let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
437
- if (this.checkLeap(year)) {
438
- months[1] = 29;
439
- }
440
- return months[month - 1];
441
- }
442
- /**
443
- * 获取今日开始的时间
444
- */
445
- static getTodayStartTime() {
446
- let now = new Date();
447
- let time = now.getTime();
448
- time = time - (now.getHours() * 60 * 60 * 1000 + now.getMinutes() * 60 * 1000 + now.getSeconds() * 1000 + now.getMilliseconds());
449
- return time;
450
- }
451
- /**
452
- * 获取某个时间的开始时间
453
- * @param time 时间戳
454
- * @returns
455
- */
456
- static getStartTime(time) {
457
- let now = null;
458
- if (time) {
459
- now = new Date(time);
460
- }
461
- else {
462
- now = new Date();
463
- }
464
- time = now.getTime();
465
- time = time - (now.getHours() * 60 * 60 * 1000 + now.getMinutes() * 60 * 1000 + now.getSeconds() * 1000 + now.getMilliseconds());
466
- return time;
467
- }
468
- static getLastMonthStartTime() {
469
- let now = new Date();
470
- let time = null;
471
- if (now.getMonth() != 0) {
472
- time = new Date(now.getFullYear(), now.getMonth() - 1);
473
- }
474
- else {
475
- time = new Date(now.getFullYear() - 1, 12);
476
- }
477
- return time.getTime();
478
- }
479
- static getCurMonthStartTime() {
480
- let now = new Date();
481
- let time = new Date(now.getFullYear(), now.getMonth());
482
- return time.getTime();
483
- }
484
- static getLastWeekStartTime() {
485
- let one_day = 24 * 60 * 60 * 1000;
486
- let time = this.getTodayStartTime();
487
- let day = new Date().getDay();
488
- return time - (day + 7) * one_day;
489
- }
490
- static getCurWeekStartTime() {
491
- let one_day = 24 * 60 * 60 * 1000;
492
- let time = this.getTodayStartTime();
493
- let day = new Date().getDay();
494
- return time - day * one_day;
495
- }
496
- static isSameMonth(src_time, target_time) {
497
- let src_date = new Date(src_time);
498
- let target_date = new Date(target_time);
499
- if (src_date.getFullYear() != target_date.getFullYear()) {
500
- return false;
501
- }
502
- return src_date.getMonth() == target_date.getMonth();
503
- }
504
- static isSameDay(src_time, target_time) {
505
- let oneDayTime = 1000 * 60 * 60 * 24;
506
- let eight_time = 1000 * 60 * 60 * 8;
507
- let old_count = Math.floor((src_time + eight_time) / oneDayTime);
508
- let now_other = Math.floor((target_time + eight_time) / oneDayTime);
509
- return old_count == now_other;
510
- }
511
- /**
512
- * 两个日期是否是同一周
513
- * 思路: 因为1970年1月1 是周4 所以(天数+4)/7 取整 就是周数 如果相同就是同一周反之就不是
514
- * @param old
515
- * @param now
516
- */
517
- static isSameWeek(src_time, target_time) {
518
- let oneDayTime = 1000 * 60 * 60 * 24;
519
- let eight_time = 1000 * 60 * 60 * 8;
520
- let old_count = Math.floor((src_time + eight_time) / oneDayTime);
521
- let now_other = Math.floor((target_time + eight_time) / oneDayTime);
522
- return Math.floor((old_count + 4) / 7) == Math.floor((now_other + 4) / 7);
523
- }
524
- static sum(datas) {
525
- let total = 0;
526
- for (let v of datas) {
527
- total += v;
528
- }
529
- return total;
530
- }
531
- /**
532
- * 转球为全球数字格式,三位数一个逗号
533
- * @param num
534
- */
535
- static convertToGlobalStr(num) {
536
- if (!num) {
537
- return num + "";
538
- }
539
- if (num < 1000) {
540
- return num + "";
541
- }
542
- let str = "";
543
- while (true) {
544
- let n = num % 1000;
545
- if (n > 99) {
546
- str = "," + n + str;
547
- }
548
- else if (n > 9) {
549
- str = ",0" + n + str;
550
- }
551
- else {
552
- str = ",00" + n + str;
553
- }
554
- num = Math.floor(num / 1000);
555
- if (num < 1000) {
556
- str = num + str;
557
- break;
558
- }
559
- }
560
- return str;
561
- }
562
- static sleep(milliseconds) {
563
- return new Promise((resolve) => {
564
- setTimeout(() => {
565
- resolve(null);
566
- }, milliseconds);
567
- });
568
- }
569
- static async safeCall(func, thisArg = null, ...params) {
570
- if (!func || !core.isFunction(func)) {
571
- return;
572
- }
573
- try {
574
- let rs = undefined;
575
- if (core.isAsyncFunc(func)) {
576
- if (thisArg) {
577
- rs = await func.call(thisArg, ...params).catch((reason) => {
578
- Log_1.GLog.error(reason);
579
- rs = { errcode: { id: 1008611, des: "failed" } };
580
- });
581
- }
582
- else {
583
- rs = await func(...params).catch((reason) => {
584
- Log_1.GLog.error(reason);
585
- rs = { errcode: { id: 1008612, des: "failed" } };
586
- });
587
- }
588
- }
589
- else {
590
- if (thisArg) {
591
- rs = func.call(thisArg, ...params);
592
- }
593
- else {
594
- rs = func(...params);
595
- }
596
- }
597
- return rs;
598
- }
599
- catch (e) {
600
- Log_1.GLog.error(e.stack);
601
- return { errcode: { id: 1008613, des: "failed" } };
602
- }
603
- }
604
- //判断当前日期为当年第几周
605
- static getYearWeek(time) {
606
- //date1是当前日期
607
- //date2是当年第一天
608
- //d是当前日期是今年第多少天
609
- //用d + 当前年的第一天的周差距的和在除以7就是本年第几周
610
- let tar = new Date(time);
611
- let start = new Date(tar.getFullYear(), 0, 1);
612
- let days = Math.round((tar.valueOf() - start.valueOf()) / 86400000);
613
- return Math.ceil((days + ((start.getDay() + 1) - 1)) / 7);
614
- }
615
- static toBase64(content) {
616
- var wordArray = CryptoJS.enc.Hex.parse(content);
617
- var base64Str = CryptoJS.enc.Base64.stringify(wordArray);
618
- return base64Str;
619
- }
620
- static aesEncode(content, key, iv) {
621
- let _iv = CryptoJS.enc.Utf8.parse(iv);
622
- let etext = CryptoJS.AES.encrypt(content, key, {
623
- iv: _iv,
624
- mode: CryptoJS.mode.CBC,
625
- padding: CryptoJS.pad.Pkcs7
626
- }).toString();
627
- return etext;
628
- }
629
- static aesDecode(base64_str, key, iv) {
630
- let _iv = CryptoJS.enc.Utf8.parse(iv);
631
- let dtext = CryptoJS.AES.decrypt(base64_str, key, {
632
- iv: _iv,
633
- mode: CryptoJS.mode.CBC,
634
- padding: CryptoJS.pad.Pkcs7
635
- }).toString(CryptoJS.enc.Utf8);
636
- return dtext;
637
- }
638
- }
639
- exports.core = core;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.core = void 0;
4
+ let os = require('os');
5
+ let request = require('request');
6
+ const _ = require("underscore");
7
+ const crypto = require("crypto");
8
+ const Log_1 = require("../Logic/Log");
9
+ const CryptoJS = require("crypto-js");
10
+ const ec_key_1 = require("ec-key");
11
+ const uuid_1 = require("uuid");
12
+ /**
13
+ * 常用的工具函数类
14
+ */
15
+ class core {
16
+ /**
17
+ * 判断变量是不是对象
18
+ * @param param 需要检查的变量
19
+ * @returns true为对象
20
+ */
21
+ static isObject(param) {
22
+ return typeof (param) === "object";
23
+ }
24
+ static isArray(param) {
25
+ return param instanceof Array;
26
+ }
27
+ static isNumber(param) {
28
+ return typeof (param) === "number";
29
+ }
30
+ static isNaN(param) {
31
+ return isNaN(param);
32
+ }
33
+ static isFunction(param) {
34
+ return typeof (param) === "function";
35
+ }
36
+ static isString(param) {
37
+ return typeof (param) === "string";
38
+ }
39
+ static isAsyncFunc(fun) {
40
+ if (!this.isFunction(fun)) {
41
+ return;
42
+ }
43
+ return fun[Symbol.toStringTag] === "AsyncFunction";
44
+ }
45
+ /**
46
+ * 深度拷贝
47
+ * @param obj
48
+ * @returns
49
+ */
50
+ static clone(obj) {
51
+ if (!obj) {
52
+ return obj;
53
+ }
54
+ if (core.isArray(obj)) {
55
+ let newArray = new Array();
56
+ for (let i = 0, length = obj.length; i < length; ++i) {
57
+ newArray[i] = this.clone(obj[i]);
58
+ }
59
+ return newArray;
60
+ }
61
+ if (core.isObject(obj)) {
62
+ let newObj = new Object();
63
+ for (let i in obj) {
64
+ newObj[i] = this.clone(obj[i]);
65
+ }
66
+ return newObj;
67
+ }
68
+ return obj;
69
+ }
70
+ //合并但是不改变dest
71
+ static merge(dest, src) {
72
+ let t = core.clone(dest);
73
+ if (!src) {
74
+ return t;
75
+ }
76
+ if (core.isArray(src)) {
77
+ t = t || [];
78
+ let tlen = t.length;
79
+ for (let i = 0, len = src.length; i < len; ++i) {
80
+ let value = src[i];
81
+ if (core.isFunction(value)) {
82
+ continue;
83
+ }
84
+ if (core.isArray(value) || core.isObject(value)) {
85
+ if (i < tlen) {
86
+ t[i] = core.merge(null, value);
87
+ }
88
+ else {
89
+ t.push(core.merge(null, value));
90
+ }
91
+ }
92
+ else {
93
+ if (i < tlen) {
94
+ t[i] = value;
95
+ }
96
+ else {
97
+ t.push(value);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ else if (core.isObject(src)) {
103
+ t = t || {};
104
+ for (let key in src) {
105
+ let value = src[key];
106
+ if (core.isFunction(value)) {
107
+ continue;
108
+ }
109
+ if (core.isArray(value) || core.isObject(value)) {
110
+ t[key] = core.merge(null, value);
111
+ }
112
+ else {
113
+ t[key] = value;
114
+ }
115
+ }
116
+ }
117
+ else {
118
+ t = src;
119
+ }
120
+ return t;
121
+ }
122
+ //只是取出template里面已经有的部分
123
+ static getExit(template, src) {
124
+ if (!src || !template) {
125
+ return {};
126
+ }
127
+ let t = {};
128
+ for (let key in src) {
129
+ if (template[key] === undefined) {
130
+ continue;
131
+ }
132
+ let value = src[key];
133
+ if (core.isFunction(value)) {
134
+ continue;
135
+ }
136
+ if (core.isArray(value) || core.isObject(value)) {
137
+ t[key] = core.getExit(template[key], value);
138
+ }
139
+ else {
140
+ t[key] = value;
141
+ }
142
+ }
143
+ return t;
144
+ }
145
+ static toArray(table) {
146
+ let array = [];
147
+ for (let key in table) {
148
+ if (core.isFunction(table[key])) {
149
+ continue;
150
+ }
151
+ array.push(key);
152
+ array.push(table[key]);
153
+ }
154
+ return array;
155
+ }
156
+ static foreach(items, callback) {
157
+ if (!items || !callback) {
158
+ return;
159
+ }
160
+ if (core.isNumber(items)) {
161
+ for (let i = 0; i < items; ++i) {
162
+ let ret = callback(i);
163
+ if (ret) {
164
+ return;
165
+ }
166
+ }
167
+ }
168
+ else if (core.isString(items)) {
169
+ for (let i = 0, length = items.length; i < length; i++) {
170
+ let ret = callback(i, items.charAt(i));
171
+ if (ret) {
172
+ return;
173
+ }
174
+ }
175
+ }
176
+ else if (core.isArray(items)) {
177
+ for (let i = 0, length = items.length; i < length; ++i) {
178
+ let ret = callback(i, items[i]);
179
+ if (ret) {
180
+ return;
181
+ }
182
+ }
183
+ }
184
+ else if (core.isObject(items)) {
185
+ for (let key in items) {
186
+ let ret = callback(key, items[key]);
187
+ if (ret) {
188
+ return;
189
+ }
190
+ }
191
+ }
192
+ return;
193
+ }
194
+ static getLength(items) {
195
+ if (core.isArray(items)) {
196
+ return items.length;
197
+ }
198
+ if (core.isObject(items)) {
199
+ let len = 0;
200
+ core.foreach(items, () => {
201
+ ++len;
202
+ });
203
+ return len;
204
+ }
205
+ return 0;
206
+ }
207
+ static char2buf(str) {
208
+ let out = new ArrayBuffer(str.length * 2);
209
+ let u16a = new Uint16Array(out);
210
+ let strs = str.split("");
211
+ for (let i = 0; i < strs.length; i++) {
212
+ u16a[i] = strs[i].charCodeAt();
213
+ }
214
+ return out;
215
+ }
216
+ static array2arraybuffer(array) {
217
+ let b = new ArrayBuffer(array.length);
218
+ let v = new DataView(b, 0);
219
+ for (let i = 0; i < array.length; i++) {
220
+ v.setUint8(i, array[i]);
221
+ }
222
+ return b;
223
+ }
224
+ static arraybuffer2array(buffer) {
225
+ let v = new DataView(buffer, 0);
226
+ let a = new Uint8Array(v.byteLength);
227
+ for (let i = 0; i < v.byteLength; i++) {
228
+ a[i] = v.getUint8(i);
229
+ }
230
+ return a;
231
+ }
232
+ static firstCharUpCase(str) {
233
+ let reg = /\b(\w)|\s(\w)/g;
234
+ str = str.toLowerCase();
235
+ return str.replace(reg, function (m) { return m.toUpperCase(); });
236
+ }
237
+ static convertIntToUInt8Array(num) {
238
+ let c2 = num % 256;
239
+ let c1 = Math.floor(num / 256);
240
+ let arr = new Uint8Array(2);
241
+ arr[0] = c1;
242
+ arr[1] = c2;
243
+ return arr;
244
+ }
245
+ static convertUInt8ArrayToInt(array) {
246
+ if (array.length != 2) {
247
+ return 0;
248
+ }
249
+ return array[0] * 256 + array[1];
250
+ }
251
+ //从一个数组里面按照下标和长度的方式去获取另一个数组,至少返回空数组
252
+ //包含start
253
+ static getArrayFromArray(data, start, l) {
254
+ let len = data.length;
255
+ start = start || 0; //默认最开始
256
+ l = l || len; //默认到最后
257
+ if (start >= len) {
258
+ return new Uint8Array();
259
+ }
260
+ let arr = new Uint8Array(l);
261
+ for (let i = start; i < start + l && i < len; ++i) {
262
+ arr[i] = data[i];
263
+ }
264
+ return arr;
265
+ }
266
+ static blobToArrayBuffer(data, callback) {
267
+ let fileReader = new FileReader();
268
+ fileReader.onload = function (progressEvent) {
269
+ if (callback) {
270
+ callback(this.result);
271
+ }
272
+ };
273
+ fileReader.readAsArrayBuffer(data);
274
+ }
275
+ static format = function (src, formatStr) {
276
+ if (core.isString(src)) {
277
+ let args = Array.prototype.slice.call(arguments, 1);
278
+ return src.replace(/\{(\d+)\}/g, function (m, i) {
279
+ return args[i];
280
+ });
281
+ }
282
+ else {
283
+ if (this.isNumber(src)) {
284
+ src = new Date(src);
285
+ }
286
+ let str = formatStr;
287
+ let Week = ['日', '一', '二', '三', '四', '五', '六'];
288
+ let month = src.getMonth() + 1;
289
+ let year = src.getFullYear();
290
+ let date = src.getDate();
291
+ let hour = src.getHours();
292
+ let min = src.getMinutes();
293
+ let sec = src.getSeconds();
294
+ let day = src.getDay();
295
+ str = str.replace(/yyyy|YYYY/, year);
296
+ str = str.replace(/yy|YY/, (year % 100) > 9 ? (year % 100).toString() : '0' + (year % 100));
297
+ str = str.replace(/MM/, month > 9 ? month.toString() : '0' + month);
298
+ str = str.replace(/M/g, month);
299
+ str = str.replace(/w|W/g, Week[day]);
300
+ str = str.replace(/dd|DD/, date > 9 ? date.toString() : '0' + date);
301
+ str = str.replace(/d|D/g, date);
302
+ str = str.replace(/hh|HH/, hour > 9 ? hour.toString() : '0' + hour);
303
+ str = str.replace(/h|H/g, hour);
304
+ str = str.replace(/mm/, min > 9 ? min.toString() : '0' + min);
305
+ str = str.replace(/m/g, min);
306
+ str = str.replace(/ss|SS/, sec > 9 ? sec.toString() : '0' + sec);
307
+ str = str.replace(/s|S/g, sec);
308
+ return str;
309
+ }
310
+ };
311
+ /**
312
+ * 字符串中间保密
313
+ * @param str
314
+ */
315
+ static fuzzy(str) {
316
+ if (!str) {
317
+ return str;
318
+ }
319
+ if (str.length <= 1) {
320
+ return str;
321
+ }
322
+ if (str.length == 2) {
323
+ return str[0] + "*";
324
+ }
325
+ let first = str[0];
326
+ let last = str[str.length - 1];
327
+ let newStr = first;
328
+ for (let i = 0; i < str.length - 2; ++i) {
329
+ newStr += "*";
330
+ }
331
+ newStr += last;
332
+ return newStr;
333
+ }
334
+ static md5(str) {
335
+ let md5_str = crypto.createHash('md5').update(str).digest('hex');
336
+ return md5_str;
337
+ }
338
+ static sha1(str) {
339
+ let sha1_str = crypto.createHash('sha1').update(str).digest('hex');
340
+ return sha1_str;
341
+ }
342
+ static getLocalIP = function () {
343
+ let iptable = {};
344
+ let ifaces = os.networkInterfaces();
345
+ for (let dev in ifaces) {
346
+ ifaces[dev].forEach(function (details, alias) {
347
+ if ((details.family == 'IPv4') && (details.internal == false)) {
348
+ iptable['localIP'] = details.address;
349
+ }
350
+ });
351
+ }
352
+ return iptable['localIP'];
353
+ };
354
+ static getIP = async function () {
355
+ return new Promise((resolve, reject) => {
356
+ request('http://ip.chinaz.com/getip.aspx', function (error, response, body) {
357
+ if (!error && response.statusCode == 200) {
358
+ body = eval('(' + body + ')');
359
+ resolve(body.ip);
360
+ }
361
+ else {
362
+ console.error("can not get correct ip!");
363
+ resolve(null);
364
+ }
365
+ });
366
+ });
367
+ };
368
+ /**
369
+ * 判断是否是手机号
370
+ * @param phone 手机号
371
+ */
372
+ static isPhoneNo(phone) {
373
+ let reg = /^1[3-9]\d{9}$/; //验证规则
374
+ let flag = reg.test(phone); //true
375
+ return flag;
376
+ }
377
+ /**
378
+ * 判断是否是email
379
+ * @param email
380
+ */
381
+ static isEmail(email) {
382
+ if (!email) {
383
+ return false;
384
+ }
385
+ var regu = "^(([0-9a-zA-Z]+)|([0-9a-zA-Z]+[_.0-9a-zA-Z-]*))@([a-zA-Z0-9-]+[.])+([a-zA-Z]{2}|net|com|gov|mil|org|edu|int|name|asia)$";
386
+ var re = new RegExp(regu);
387
+ if (email.search(re) == -1) {
388
+ return false;
389
+ }
390
+ return true;
391
+ }
392
+ /**
393
+ * 根据概率分布获取概率分布的下标
394
+ * @param probabilitys 概率分布列表
395
+ * @param totalProbability 总概率
396
+ */
397
+ static getRandomIndex(probabilitys, totalProbability) {
398
+ let result = 0;
399
+ let random = 0;
400
+ totalProbability = totalProbability || -1;
401
+ if (totalProbability < 0) {
402
+ totalProbability = eval(probabilitys.join("+"));
403
+ }
404
+ if (totalProbability > 1) {
405
+ random = _.random(totalProbability);
406
+ }
407
+ else {
408
+ random = Math.random();
409
+ }
410
+ let value = 0;
411
+ for (let index = 0; index < probabilitys.length; ++index) {
412
+ value += probabilitys[index];
413
+ if (random < value) {
414
+ result = index;
415
+ break;
416
+ }
417
+ }
418
+ return result;
419
+ }
420
+ /**
421
+ * 检查是否是闰年
422
+ * @param year
423
+ */
424
+ static checkLeap(year) {
425
+ if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
426
+ return true;
427
+ }
428
+ else {
429
+ return false;
430
+ }
431
+ }
432
+ /**
433
+ * 获取几月一共有多少天
434
+ * @param year
435
+ * @param month
436
+ */
437
+ static getMonthDays(year, month) {
438
+ let months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
439
+ if (this.checkLeap(year)) {
440
+ months[1] = 29;
441
+ }
442
+ return months[month - 1];
443
+ }
444
+ /**
445
+ * 获取今日开始的时间
446
+ */
447
+ static getTodayStartTime() {
448
+ let now = new Date();
449
+ let time = now.getTime();
450
+ time = time - (now.getHours() * 60 * 60 * 1000 + now.getMinutes() * 60 * 1000 + now.getSeconds() * 1000 + now.getMilliseconds());
451
+ return time;
452
+ }
453
+ /**
454
+ * 获取某个时间的开始时间
455
+ * @param time 时间戳
456
+ * @returns
457
+ */
458
+ static getStartTime(time) {
459
+ let now = null;
460
+ if (time) {
461
+ now = new Date(time);
462
+ }
463
+ else {
464
+ now = new Date();
465
+ }
466
+ time = now.getTime();
467
+ time = time - (now.getHours() * 60 * 60 * 1000 + now.getMinutes() * 60 * 1000 + now.getSeconds() * 1000 + now.getMilliseconds());
468
+ return time;
469
+ }
470
+ static getLastMonthStartTime() {
471
+ let now = new Date();
472
+ let time = null;
473
+ if (now.getMonth() != 0) {
474
+ time = new Date(now.getFullYear(), now.getMonth() - 1);
475
+ }
476
+ else {
477
+ time = new Date(now.getFullYear() - 1, 12);
478
+ }
479
+ return time.getTime();
480
+ }
481
+ static getCurMonthStartTime() {
482
+ let now = new Date();
483
+ let time = new Date(now.getFullYear(), now.getMonth());
484
+ return time.getTime();
485
+ }
486
+ static getLastWeekStartTime() {
487
+ let one_day = 24 * 60 * 60 * 1000;
488
+ let time = this.getTodayStartTime();
489
+ let day = new Date().getDay();
490
+ return time - (day + 7) * one_day;
491
+ }
492
+ static getCurWeekStartTime() {
493
+ let one_day = 24 * 60 * 60 * 1000;
494
+ let time = this.getTodayStartTime();
495
+ let day = new Date().getDay();
496
+ return time - day * one_day;
497
+ }
498
+ static isSameMonth(src_time, target_time) {
499
+ let src_date = new Date(src_time);
500
+ let target_date = new Date(target_time);
501
+ if (src_date.getFullYear() != target_date.getFullYear()) {
502
+ return false;
503
+ }
504
+ return src_date.getMonth() == target_date.getMonth();
505
+ }
506
+ static isSameDay(src_time, target_time) {
507
+ let oneDayTime = 1000 * 60 * 60 * 24;
508
+ let eight_time = 1000 * 60 * 60 * 8;
509
+ let old_count = Math.floor((src_time + eight_time) / oneDayTime);
510
+ let now_other = Math.floor((target_time + eight_time) / oneDayTime);
511
+ return old_count == now_other;
512
+ }
513
+ /**
514
+ * 两个日期是否是同一周
515
+ * 思路: 因为1970年1月1 是周4 所以(天数+4)/7 取整 就是周数 如果相同就是同一周反之就不是
516
+ * @param old
517
+ * @param now
518
+ */
519
+ static isSameWeek(src_time, target_time) {
520
+ let oneDayTime = 1000 * 60 * 60 * 24;
521
+ let eight_time = 1000 * 60 * 60 * 8;
522
+ let old_count = Math.floor((src_time + eight_time) / oneDayTime);
523
+ let now_other = Math.floor((target_time + eight_time) / oneDayTime);
524
+ return Math.floor((old_count + 4) / 7) == Math.floor((now_other + 4) / 7);
525
+ }
526
+ static sum(datas) {
527
+ let total = 0;
528
+ for (let v of datas) {
529
+ total += v;
530
+ }
531
+ return total;
532
+ }
533
+ /**
534
+ * 转球为全球数字格式,三位数一个逗号
535
+ * @param num
536
+ */
537
+ static convertToGlobalStr(num) {
538
+ if (!num) {
539
+ return num + "";
540
+ }
541
+ if (num < 1000) {
542
+ return num + "";
543
+ }
544
+ let str = "";
545
+ while (true) {
546
+ let n = num % 1000;
547
+ if (n > 99) {
548
+ str = "," + n + str;
549
+ }
550
+ else if (n > 9) {
551
+ str = ",0" + n + str;
552
+ }
553
+ else {
554
+ str = ",00" + n + str;
555
+ }
556
+ num = Math.floor(num / 1000);
557
+ if (num < 1000) {
558
+ str = num + str;
559
+ break;
560
+ }
561
+ }
562
+ return str;
563
+ }
564
+ static sleep(milliseconds) {
565
+ return new Promise((resolve) => {
566
+ setTimeout(() => {
567
+ resolve(null);
568
+ }, milliseconds);
569
+ });
570
+ }
571
+ static async safeCall(func, thisArg = null, ...params) {
572
+ if (!func || !core.isFunction(func)) {
573
+ return;
574
+ }
575
+ try {
576
+ let rs = undefined;
577
+ if (core.isAsyncFunc(func)) {
578
+ if (thisArg) {
579
+ rs = await func.call(thisArg, ...params).catch((reason) => {
580
+ Log_1.GLog.error(reason);
581
+ rs = { errcode: { id: 1008611, des: "failed" } };
582
+ });
583
+ }
584
+ else {
585
+ rs = await func(...params).catch((reason) => {
586
+ Log_1.GLog.error(reason);
587
+ rs = { errcode: { id: 1008612, des: "failed" } };
588
+ });
589
+ }
590
+ }
591
+ else {
592
+ if (thisArg) {
593
+ rs = func.call(thisArg, ...params);
594
+ }
595
+ else {
596
+ rs = func(...params);
597
+ }
598
+ }
599
+ return rs;
600
+ }
601
+ catch (e) {
602
+ Log_1.GLog.error(e.stack);
603
+ return { errcode: { id: 1008613, des: "failed" } };
604
+ }
605
+ }
606
+ //判断当前日期为当年第几周
607
+ static getYearWeek(time) {
608
+ //date1是当前日期
609
+ //date2是当年第一天
610
+ //d是当前日期是今年第多少天
611
+ //用d + 当前年的第一天的周差距的和在除以7就是本年第几周
612
+ let tar = new Date(time);
613
+ let start = new Date(tar.getFullYear(), 0, 1);
614
+ let days = Math.round((tar.valueOf() - start.valueOf()) / 86400000);
615
+ return Math.ceil((days + ((start.getDay() + 1) - 1)) / 7);
616
+ }
617
+ static toBase64(content) {
618
+ var wordArray = CryptoJS.enc.Hex.parse(content);
619
+ var base64Str = CryptoJS.enc.Base64.stringify(wordArray);
620
+ return base64Str;
621
+ }
622
+ static aesEncode(content, key, iv) {
623
+ let _iv = CryptoJS.enc.Utf8.parse(iv);
624
+ let etext = CryptoJS.AES.encrypt(content, key, {
625
+ iv: _iv,
626
+ mode: CryptoJS.mode.CBC,
627
+ padding: CryptoJS.pad.Pkcs7
628
+ }).toString();
629
+ return etext;
630
+ }
631
+ static aesDecode(base64_str, key, iv) {
632
+ let _iv = CryptoJS.enc.Utf8.parse(iv);
633
+ let dtext = CryptoJS.AES.decrypt(base64_str, key, {
634
+ iv: _iv,
635
+ mode: CryptoJS.mode.CBC,
636
+ padding: CryptoJS.pad.Pkcs7
637
+ }).toString(CryptoJS.enc.Utf8);
638
+ return dtext;
639
+ }
640
+ static getUuid() {
641
+ let id = new uuid_1.v4();
642
+ return id;
643
+ }
644
+ static signatureBase64(private_key, rsa_name, payload) {
645
+ // Create an Elliptic Curve Digital Signature Algorithm (ECDSA) object using the private key.
646
+ const key = new ec_key_1.default(private_key, 'pem');
647
+ // Set up the cryptographic format used to sign the key with the SHA-256 hashing algorithm.
648
+ const cryptoSign = key.createSign(rsa_name);
649
+ // Add the payload string to sign.
650
+ cryptoSign.update(payload);
651
+ /*
652
+ The Node.js crypto library creates a DER-formatted binary value signature,
653
+ and then base-64 encodes it to create the string that you will use in StoreKit.
654
+ */
655
+ const signature = cryptoSign.sign('base64');
656
+ return signature;
657
+ }
658
+ static signatureVerifyBase64(signature, private_key, rsa_name, payload) {
659
+ // Create an Elliptic Curve Digital Signature Algorithm (ECDSA) object using the private key.
660
+ let key = new ec_key_1.default(private_key, 'pem');
661
+ let verificationResult = key.createVerify(rsa_name).update(payload).verify(signature, 'base64');
662
+ return verificationResult;
663
+ }
664
+ }
665
+ exports.core = core;