cgserver 6.0.7 → 6.0.8

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 (137) hide show
  1. package/dist/cgserver.js +336 -336
  2. package/dist/lib/AI/AiObject.js +10 -0
  3. package/dist/lib/AI/Astar.js +133 -0
  4. package/dist/lib/AI/BehaviorAI.js +307 -0
  5. package/dist/lib/AI/Entity.js +33 -0
  6. package/dist/lib/AI/Point.js +68 -0
  7. package/dist/lib/AI/TriggerMgr.js +201 -0
  8. package/dist/lib/Config/Config.js +37 -0
  9. package/dist/lib/Config/FrameworkConfig.js +234 -0
  10. package/dist/lib/Config/ServerConfig.js +18 -0
  11. package/dist/lib/Config/_error_.js +35 -0
  12. package/dist/lib/Core/Core.js +561 -0
  13. package/dist/lib/Core/Timer.js +116 -0
  14. package/dist/lib/Database/BaseMongoService.js +79 -0
  15. package/dist/lib/Database/BaseService.js +281 -0
  16. package/dist/lib/Database/Decorator/AutoIncrement.js +11 -0
  17. package/dist/lib/Database/Decorator/DBCache.js +64 -0
  18. package/dist/lib/Database/Decorator/NotNull.js +11 -0
  19. package/dist/lib/Database/Decorator/PrimaryKey.js +11 -0
  20. package/dist/lib/Database/Decorator/Property.js +61 -0
  21. package/dist/lib/Database/Decorator/Table.js +15 -0
  22. package/dist/lib/Database/Decorator/Type.js +20 -0
  23. package/dist/lib/Database/MSSqlManager.js +43 -0
  24. package/dist/lib/Database/MongoManager.js +401 -0
  25. package/dist/lib/Database/MysqlManager.js +180 -0
  26. package/dist/lib/Database/RedisManager.js +408 -0
  27. package/dist/lib/Logic/CacheTool.js +73 -0
  28. package/dist/lib/Logic/HttpTool.js +58 -0
  29. package/dist/lib/Logic/Log.js +77 -0
  30. package/dist/lib/Service/AccountService.js +473 -0
  31. package/dist/lib/Service/MongoAccountService.js +396 -0
  32. package/dist/lib/Service/MongoCacheService.js +27 -0
  33. package/dist/lib/Service/MongoUserService.js +93 -0
  34. package/dist/lib/Service/UserService.js +184 -0
  35. package/dist/lib/Service/ini.js +35 -0
  36. package/dist/lib/SocketServer/IClientWebSocket.js +71 -0
  37. package/dist/lib/SocketServer/IServerWebSocket.js +41 -0
  38. package/dist/lib/SocketServer/ISocketServer.js +190 -0
  39. package/dist/lib/SocketServer/IWebSocket.js +223 -0
  40. package/dist/lib/SocketServer/ProtoFilter/GoogleProtoFilter.js +57 -0
  41. package/dist/lib/SocketServer/ProtoFilter/IProtoFilter.js +8 -0
  42. package/dist/lib/SocketServer/ProtoFilter/JsonProtoFilter.js +29 -0
  43. package/dist/lib/SocketServer/ProtoFilter/ProtoFactory.js +31 -0
  44. package/dist/lib/ThirdParty/AlipayTool.js +122 -0
  45. package/dist/lib/ThirdParty/Alisms.js +46 -0
  46. package/dist/lib/ThirdParty/AppleTool.js +234 -0
  47. package/dist/lib/ThirdParty/EmailTool.js +33 -0
  48. package/dist/lib/ThirdParty/OpenSocial.js +32 -0
  49. package/dist/lib/ThirdParty/QQTool.js +115 -0
  50. package/dist/lib/ThirdParty/QiniuTool.js +21 -0
  51. package/dist/lib/ThirdParty/WechatOATool.js +61 -0
  52. package/dist/lib/ThirdParty/WechatTool.js +74 -0
  53. package/dist/lib/WebServer/Controller/BaseController.js +112 -0
  54. package/dist/lib/WebServer/Controller/BaseUserController.js +168 -0
  55. package/dist/lib/WebServer/Controller/MongoBaseUserController.js +168 -0
  56. package/dist/lib/WebServer/Decorator/AdminValidate.js +19 -0
  57. package/dist/lib/WebServer/Decorator/AuthorityValidate.js +22 -0
  58. package/dist/lib/WebServer/Decorator/CreatorValidate.js +19 -0
  59. package/dist/lib/WebServer/Decorator/JsonAdminValidate.js +15 -0
  60. package/dist/lib/WebServer/Decorator/JsonAuthorityValidate.js +20 -0
  61. package/dist/lib/WebServer/Decorator/JsonCreatorValidate.js +19 -0
  62. package/dist/lib/WebServer/Engine/ControllerManager.js +112 -0
  63. package/dist/lib/WebServer/Engine/Engine.js +135 -0
  64. package/dist/lib/WebServer/Engine/RazorJs.js +544 -0
  65. package/dist/lib/WebServer/Engine/Request.js +214 -0
  66. package/dist/lib/WebServer/Engine/Response.js +94 -0
  67. package/dist/lib/WebServer/IWebServer.js +49 -0
  68. package/dist/lib/cgserver.js +153 -0
  69. package/dist/{AI → types/AI}/AiObject.d.ts +0 -0
  70. package/dist/{AI → types/AI}/Astar.d.ts +0 -0
  71. package/dist/{AI → types/AI}/BehaviorAI.d.ts +0 -0
  72. package/dist/{AI → types/AI}/Entity.d.ts +0 -0
  73. package/dist/{AI → types/AI}/Point.d.ts +0 -0
  74. package/dist/{AI → types/AI}/TriggerMgr.d.ts +0 -0
  75. package/dist/{Config → types/Config}/Config.d.ts +0 -0
  76. package/dist/{Config → types/Config}/FrameworkConfig.d.ts +0 -0
  77. package/dist/{Config → types/Config}/ServerConfig.d.ts +0 -0
  78. package/dist/{Config → types/Config}/_error_.d.ts +0 -0
  79. package/dist/{Core → types/Core}/Core.d.ts +0 -0
  80. package/dist/{Core → types/Core}/Timer.d.ts +0 -0
  81. package/dist/{Database → types/Database}/BaseMongoService.d.ts +0 -0
  82. package/dist/{Database → types/Database}/BaseService.d.ts +0 -0
  83. package/dist/{Database → types/Database}/Decorator/AutoIncrement.d.ts +0 -0
  84. package/dist/{Database → types/Database}/Decorator/DBCache.d.ts +0 -0
  85. package/dist/{Database → types/Database}/Decorator/NotNull.d.ts +0 -0
  86. package/dist/{Database → types/Database}/Decorator/PrimaryKey.d.ts +0 -0
  87. package/dist/{Database → types/Database}/Decorator/Property.d.ts +0 -0
  88. package/dist/{Database → types/Database}/Decorator/Table.d.ts +0 -0
  89. package/dist/{Database → types/Database}/Decorator/Type.d.ts +0 -0
  90. package/dist/{Database → types/Database}/MSSqlManager.d.ts +0 -0
  91. package/dist/{Database → types/Database}/MongoManager.d.ts +0 -0
  92. package/dist/{Database → types/Database}/MysqlManager.d.ts +0 -0
  93. package/dist/{Database → types/Database}/RedisManager.d.ts +0 -0
  94. package/dist/{Logic → types/Logic}/CacheTool.d.ts +0 -0
  95. package/dist/{Logic → types/Logic}/HttpTool.d.ts +0 -0
  96. package/dist/{Logic → types/Logic}/Log.d.ts +0 -0
  97. package/dist/{Service → types/Service}/AccountService.d.ts +0 -0
  98. package/dist/{Service → types/Service}/MongoAccountService.d.ts +0 -0
  99. package/dist/{Service → types/Service}/MongoCacheService.d.ts +0 -0
  100. package/dist/{Service → types/Service}/MongoUserService.d.ts +0 -0
  101. package/dist/{Service → types/Service}/UserService.d.ts +0 -0
  102. package/dist/{Service → types/Service}/ini.d.ts +0 -0
  103. package/dist/{SocketServer → types/SocketServer}/IClientWebSocket.d.ts +0 -0
  104. package/dist/{SocketServer → types/SocketServer}/IServerWebSocket.d.ts +0 -0
  105. package/dist/{SocketServer → types/SocketServer}/ISocketServer.d.ts +0 -0
  106. package/dist/{SocketServer → types/SocketServer}/IWebSocket.d.ts +0 -0
  107. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/GoogleProtoFilter.d.ts +0 -0
  108. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/IProtoFilter.d.ts +0 -0
  109. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/JsonProtoFilter.d.ts +0 -0
  110. package/dist/{SocketServer → types/SocketServer}/ProtoFilter/ProtoFactory.d.ts +0 -0
  111. package/dist/{ThirdParty → types/ThirdParty}/AlipayTool.d.ts +0 -0
  112. package/dist/{ThirdParty → types/ThirdParty}/Alisms.d.ts +0 -0
  113. package/dist/{ThirdParty → types/ThirdParty}/AppleTool.d.ts +0 -0
  114. package/dist/{ThirdParty → types/ThirdParty}/EmailTool.d.ts +0 -0
  115. package/dist/{ThirdParty → types/ThirdParty}/OpenSocial.d.ts +0 -0
  116. package/dist/{ThirdParty → types/ThirdParty}/QQTool.d.ts +0 -0
  117. package/dist/{ThirdParty → types/ThirdParty}/QiniuTool.d.ts +0 -0
  118. package/dist/{ThirdParty → types/ThirdParty}/WechatOATool.d.ts +0 -0
  119. package/dist/{ThirdParty → types/ThirdParty}/WechatTool.d.ts +0 -0
  120. package/dist/{WebServer → types/WebServer}/Controller/BaseController.d.ts +0 -0
  121. package/dist/{WebServer → types/WebServer}/Controller/BaseUserController.d.ts +0 -0
  122. package/dist/{WebServer → types/WebServer}/Controller/MongoBaseUserController.d.ts +0 -0
  123. package/dist/{WebServer → types/WebServer}/Decorator/AdminValidate.d.ts +0 -0
  124. package/dist/{WebServer → types/WebServer}/Decorator/AuthorityValidate.d.ts +0 -0
  125. package/dist/{WebServer → types/WebServer}/Decorator/CreatorValidate.d.ts +0 -0
  126. package/dist/{WebServer → types/WebServer}/Decorator/JsonAdminValidate.d.ts +0 -0
  127. package/dist/{WebServer → types/WebServer}/Decorator/JsonAuthorityValidate.d.ts +0 -0
  128. package/dist/{WebServer → types/WebServer}/Decorator/JsonCreatorValidate.d.ts +0 -0
  129. package/dist/{WebServer → types/WebServer}/Engine/ControllerManager.d.ts +0 -0
  130. package/dist/{WebServer → types/WebServer}/Engine/Engine.d.ts +0 -0
  131. package/dist/{WebServer → types/WebServer}/Engine/RazorJs.d.ts +0 -0
  132. package/dist/{WebServer → types/WebServer}/Engine/Request.d.ts +0 -0
  133. package/dist/{WebServer → types/WebServer}/Engine/Response.d.ts +0 -0
  134. package/dist/{WebServer → types/WebServer}/IWebServer.d.ts +0 -0
  135. package/dist/{cgserver.d.ts → types/cgserver.d.ts} +0 -0
  136. package/package.json +2 -2
  137. package/dist/Index.d.ts +0 -73
@@ -0,0 +1,401 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GMongoMgr = exports.MgReturn = exports.MrResult = exports.MongoBaseModel = void 0;
4
+ const FrameworkConfig_1 = require("../Config/FrameworkConfig");
5
+ const Log_1 = require("../Logic/Log");
6
+ const mongo = require("mongodb");
7
+ const _error_1 = require("../Config/_error_");
8
+ const Core_1 = require("../Core/Core");
9
+ class MongoBaseModel {
10
+ _id;
11
+ }
12
+ exports.MongoBaseModel = MongoBaseModel;
13
+ class MrResult {
14
+ /**
15
+ * select 的数据量
16
+ */
17
+ length = 0;
18
+ /**
19
+ * 插入数据的自增id
20
+ */
21
+ insertId = null;
22
+ insertIds = null;
23
+ /**
24
+ * update 更新数据的影响条数
25
+ */
26
+ changedRows = null;
27
+ /**
28
+ * 插入或删除数据的影响条数
29
+ */
30
+ affectedRows = null;
31
+ }
32
+ exports.MrResult = MrResult;
33
+ class MgReturn {
34
+ error = null;
35
+ result = new MrResult();
36
+ list = [];
37
+ }
38
+ exports.MgReturn = MgReturn;
39
+ exports.GMongoMgr = null;
40
+ class MongoManager {
41
+ _init_cbs = [];
42
+ _mongo = null;
43
+ get mongo() {
44
+ return this._mongo;
45
+ }
46
+ _mongo_init_succ = false;
47
+ _inited = false;
48
+ get isValid() {
49
+ return this._inited;
50
+ }
51
+ constructor() {
52
+ }
53
+ async init() {
54
+ if (this._inited) {
55
+ return false;
56
+ }
57
+ if (this._mongo) {
58
+ return true;
59
+ }
60
+ if (!FrameworkConfig_1.GFCfg.db.mongo || !FrameworkConfig_1.GFCfg.db.mongo.open) {
61
+ return true;
62
+ }
63
+ this._inited = true;
64
+ Log_1.GLog.info("mongo config=" + JSON.stringify(FrameworkConfig_1.GFCfg.db.mongo), true);
65
+ let client = new mongo.MongoClient("mongodb://" + FrameworkConfig_1.GFCfg.db.mongo.host + ":" + FrameworkConfig_1.GFCfg.db.mongo.port, FrameworkConfig_1.GFCfg.db.mongo.options);
66
+ await client.connect();
67
+ this.onConnect();
68
+ this._mongo = client.db(FrameworkConfig_1.GFCfg.db.mongo.database);
69
+ for (let i = 0; i < this._init_cbs.length; ++i) {
70
+ this._init_cbs[i]();
71
+ }
72
+ return true;
73
+ }
74
+ registerInitCb(cb) {
75
+ this._init_cbs.push(cb);
76
+ }
77
+ onConnect() {
78
+ this._mongo_init_succ = true;
79
+ Log_1.GLog.info("mogo has connected!");
80
+ }
81
+ onEnd() {
82
+ this._mongo_init_succ = false;
83
+ Log_1.GLog.info("mogo has ended!");
84
+ }
85
+ onError(err) {
86
+ Log_1.GLog.info("Error " + err);
87
+ }
88
+ async getAutoIds(key) {
89
+ if (!this._mongo) {
90
+ return -1;
91
+ }
92
+ let collection = "auto_ids";
93
+ let col = this._mongo.collection(collection);
94
+ try {
95
+ let where = this._convertWhere({ _id: key });
96
+ let rs = await col.findOneAndUpdate(where, { $inc: { id: 1 } }, { upsert: true });
97
+ if (rs.ok) {
98
+ return rs.value.id + 1;
99
+ }
100
+ return 0 + 1;
101
+ }
102
+ catch (e) {
103
+ Log_1.GLog.error(e);
104
+ }
105
+ return -1;
106
+ }
107
+ _convertWhere(where) {
108
+ if (!where || !where._id) {
109
+ return;
110
+ }
111
+ if (Core_1.core.isString(where._id) && where._id.length == 24) {
112
+ let _id = where._id;
113
+ try {
114
+ where._id = new mongo.ObjectId(_id);
115
+ }
116
+ catch (e) {
117
+ where._id = _id;
118
+ }
119
+ }
120
+ return where;
121
+ }
122
+ /**
123
+ * 获取单条消息
124
+ * @param collection
125
+ */
126
+ async findOne(collection, property = {}, where = {}, sort) {
127
+ this._convertWhere(where);
128
+ let rs = { errcode: null, one: null };
129
+ if (!this._mongo) {
130
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
131
+ return rs;
132
+ }
133
+ let one = null;
134
+ try {
135
+ let col = this._mongo.collection(collection);
136
+ if (!sort) {
137
+ one = await col.findOne(where, property);
138
+ }
139
+ else {
140
+ one = await (col.find(where, property).sort(sort).limit(1).next());
141
+ }
142
+ }
143
+ catch (e) {
144
+ Log_1.GLog.error(e);
145
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
146
+ }
147
+ rs.one = one;
148
+ return rs;
149
+ }
150
+ async findMany(collection, property = {}, where = {}, sort, skip = 0, limit = 0) {
151
+ this._convertWhere(where);
152
+ let rs = { errcode: null, list: null };
153
+ if (!this._mongo) {
154
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
155
+ return rs;
156
+ }
157
+ let list = [];
158
+ try {
159
+ let col = this._mongo.collection(collection);
160
+ let cursor = col.find(where, property);
161
+ if (sort) {
162
+ cursor = cursor.sort(sort);
163
+ }
164
+ if (skip) {
165
+ cursor = cursor.skip(skip);
166
+ }
167
+ if (limit) {
168
+ cursor = cursor.limit(limit);
169
+ }
170
+ list = await cursor.toArray();
171
+ }
172
+ catch (e) {
173
+ Log_1.GLog.error(e);
174
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
175
+ }
176
+ rs.list = list;
177
+ return rs;
178
+ }
179
+ async findCount(collection, property, where) {
180
+ this._convertWhere(where);
181
+ let rs = { errcode: null, count: -1 };
182
+ if (!this._mongo) {
183
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
184
+ return rs;
185
+ }
186
+ let count = -1;
187
+ try {
188
+ let col = this._mongo.collection(collection);
189
+ count = await col.countDocuments(where || {}, property);
190
+ }
191
+ catch (e) {
192
+ Log_1.GLog.error(e);
193
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
194
+ }
195
+ rs.count = count;
196
+ return rs;
197
+ }
198
+ async deleteOne(collection, where) {
199
+ this._convertWhere(where);
200
+ let rs = { errcode: null, count: -1 };
201
+ if (!this._mongo) {
202
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
203
+ return rs;
204
+ }
205
+ let del_rs = null;
206
+ try {
207
+ let col = this._mongo.collection(collection);
208
+ del_rs = await col.deleteOne(where || {});
209
+ }
210
+ catch (e) {
211
+ Log_1.GLog.error(e);
212
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
213
+ }
214
+ if (del_rs) {
215
+ rs.count = del_rs.deletedCount;
216
+ }
217
+ return rs;
218
+ }
219
+ async deleteMany(collection, where) {
220
+ this._convertWhere(where);
221
+ let rs = { errcode: null, count: -1 };
222
+ if (!this._mongo) {
223
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
224
+ return rs;
225
+ }
226
+ let del_rs = null;
227
+ try {
228
+ let col = this._mongo.collection(collection);
229
+ del_rs = await col.deleteMany(where || {});
230
+ }
231
+ catch (e) {
232
+ Log_1.GLog.error(e);
233
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
234
+ }
235
+ if (del_rs) {
236
+ rs.count = del_rs.deletedCount;
237
+ }
238
+ return rs;
239
+ }
240
+ /**
241
+ * 插入数据
242
+ * @param collection
243
+ * @param data
244
+ */
245
+ async insertOne(collection, data) {
246
+ let rs = { errcode: null, rs: null };
247
+ if (!this._mongo) {
248
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
249
+ return rs;
250
+ }
251
+ let in_rs = null;
252
+ try {
253
+ let col = this._mongo.collection(collection);
254
+ in_rs = await col.insertOne(data);
255
+ }
256
+ catch (e) {
257
+ Log_1.GLog.error(e);
258
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
259
+ }
260
+ rs.rs = in_rs;
261
+ return rs;
262
+ }
263
+ async insertManay(collection, data) {
264
+ let rs = { errcode: null, rs: null };
265
+ if (!this._mongo) {
266
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
267
+ return rs;
268
+ }
269
+ let in_rs = null;
270
+ try {
271
+ let col = this._mongo.collection(collection);
272
+ in_rs = await col.insertMany(data);
273
+ }
274
+ catch (e) {
275
+ Log_1.GLog.error(e);
276
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
277
+ }
278
+ rs.rs = in_rs;
279
+ return rs;
280
+ }
281
+ async updateOne(collection, model, where, upsert = false) {
282
+ let _id = model["_id"];
283
+ delete model["_id"];
284
+ this._convertWhere(where);
285
+ let rs = { errcode: null, rs: null };
286
+ if (!this._mongo) {
287
+ if (_id) {
288
+ model["_id"] = _id;
289
+ }
290
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
291
+ return rs;
292
+ }
293
+ let up_rs = null;
294
+ try {
295
+ let updateModel = null;
296
+ let firstKey = Object.keys(model)[0];
297
+ if (!firstKey.startsWith("$")) {
298
+ updateModel = { $set: model };
299
+ }
300
+ else {
301
+ updateModel = model;
302
+ }
303
+ let col = this._mongo.collection(collection);
304
+ up_rs = await col.updateOne(where, updateModel, { upsert: upsert });
305
+ }
306
+ catch (e) {
307
+ Log_1.GLog.error(e);
308
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
309
+ }
310
+ rs.rs = up_rs;
311
+ if (up_rs?.upsertedId || _id) {
312
+ model["_id"] = up_rs?.upsertedId || _id;
313
+ }
314
+ return rs;
315
+ }
316
+ async updateMany(collection, model, where, upsert = false) {
317
+ this._convertWhere(where);
318
+ let rs = { errcode: null, rs: null };
319
+ if (!this._mongo) {
320
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
321
+ return rs;
322
+ }
323
+ let up_rs = null;
324
+ try {
325
+ let updateModel = null;
326
+ let firstKey = Object.keys(model)[0];
327
+ if (!firstKey.startsWith("$")) {
328
+ updateModel = { $set: model };
329
+ }
330
+ else {
331
+ updateModel = model;
332
+ }
333
+ let col = this._mongo.collection(collection);
334
+ up_rs = await col.updateMany(where, updateModel, { upsert: upsert });
335
+ }
336
+ catch (e) {
337
+ Log_1.GLog.error(e);
338
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
339
+ }
340
+ rs.rs = up_rs;
341
+ return rs;
342
+ }
343
+ async createIndex(collection, index, callback) {
344
+ let rs = { errcode: null, rs: null };
345
+ if (!this._mongo) {
346
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
347
+ return rs;
348
+ }
349
+ let i_rs = null;
350
+ try {
351
+ let col = this._mongo.collection(collection);
352
+ i_rs = await col.createIndex(index, callback);
353
+ }
354
+ catch (e) {
355
+ Log_1.GLog.error(e);
356
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
357
+ }
358
+ rs.rs = i_rs;
359
+ return rs;
360
+ }
361
+ async simpleAggregate(collection, property = {}, where = {}, size, random_size) {
362
+ this._convertWhere(where);
363
+ let rs = { errcode: null, list: null };
364
+ if (!this._mongo) {
365
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
366
+ return rs;
367
+ }
368
+ let list = [];
369
+ try {
370
+ let col = this._mongo.collection(collection);
371
+ let params = [];
372
+ params.push({ '$match': where || {} });
373
+ params.push({ '$project': property || {} });
374
+ if (random_size) {
375
+ params.push({ '$sample': { 'size': random_size } });
376
+ }
377
+ let agg = col.aggregate(params);
378
+ if (size) {
379
+ list = await agg.limit(size).toArray();
380
+ }
381
+ else {
382
+ list = await agg.toArray();
383
+ }
384
+ }
385
+ catch (e) {
386
+ Log_1.GLog.error(e);
387
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
388
+ }
389
+ rs.list = list;
390
+ return rs;
391
+ }
392
+ aggregate(collection, pipeline, options) {
393
+ if (!this._mongo) {
394
+ return;
395
+ }
396
+ let col = this._mongo.collection(collection);
397
+ let agg = col.aggregate(pipeline, options);
398
+ return agg;
399
+ }
400
+ }
401
+ exports.GMongoMgr = new MongoManager();
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GMysqlMgr = exports.SqlReturns = exports.SqlReturn = exports.SqlResult = void 0;
4
+ const _error_1 = require("./../Config/_error_");
5
+ const Log_1 = require("../Logic/Log");
6
+ const FrameworkConfig_1 = require("../Config/FrameworkConfig");
7
+ const mysql = require("mysql");
8
+ class SqlResult {
9
+ /**
10
+ * select 的数据量
11
+ */
12
+ length = 0;
13
+ /**
14
+ * 插入数据的自增id
15
+ */
16
+ insertId = null;
17
+ /**
18
+ * update 更新数据的影响条数
19
+ */
20
+ changedRows = null;
21
+ /**
22
+ * 插入或删除数据的影响条数
23
+ */
24
+ affectedRows = null;
25
+ }
26
+ exports.SqlResult = SqlResult;
27
+ class SqlReturn {
28
+ error = null;
29
+ results = null;
30
+ fields = null;
31
+ list = null;
32
+ }
33
+ exports.SqlReturn = SqlReturn;
34
+ class SqlReturns {
35
+ error = null;
36
+ srs = [];
37
+ }
38
+ exports.SqlReturns = SqlReturns;
39
+ exports.GMysqlMgr = null;
40
+ class MysqlManager {
41
+ _init_cbs = [];
42
+ _pool = null;
43
+ get isValid() {
44
+ return !!this._pool;
45
+ }
46
+ constructor() {
47
+ }
48
+ async init() {
49
+ return new Promise(async (resolve) => {
50
+ if (this._pool
51
+ || !FrameworkConfig_1.GFCfg.db.mysql
52
+ || !FrameworkConfig_1.GFCfg.db.mysql.open) {
53
+ resolve(null);
54
+ return;
55
+ }
56
+ this._pool = mysql.createPool({
57
+ connectionLimit: 100,
58
+ host: FrameworkConfig_1.GFCfg.db.mysql.host,
59
+ port: FrameworkConfig_1.GFCfg.db.mysql.port,
60
+ user: FrameworkConfig_1.GFCfg.db.mysql.user,
61
+ password: FrameworkConfig_1.GFCfg.db.mysql.password,
62
+ database: FrameworkConfig_1.GFCfg.db.mysql.database,
63
+ supportBigNumbers: true,
64
+ charset: "utf8mb4"
65
+ });
66
+ console.log("mysql config=" + JSON.stringify(FrameworkConfig_1.GFCfg.db.mysql));
67
+ //这个的初始化位置不能变,必须位于cbs前,pool后
68
+ await DBCache_1.GDBCache.init();
69
+ resolve(null);
70
+ for (let i = 0; i < this._init_cbs.length; ++i) {
71
+ this._init_cbs[i]();
72
+ }
73
+ });
74
+ }
75
+ registerInitCb(cb) {
76
+ this._init_cbs.push(cb);
77
+ }
78
+ query(sqlStr, values, no_err_log) {
79
+ return new Promise((resolve, reject) => {
80
+ let sr = new SqlReturn();
81
+ if (!this._pool) {
82
+ //表示没有开通数据库,不用记录错误日志
83
+ sr.error = _error_1.EErrorCode.No_Mysql;
84
+ Log_1.GLog.error(sr.error);
85
+ resolve(sr);
86
+ return;
87
+ }
88
+ this._pool.getConnection((err, conn) => {
89
+ if (err) {
90
+ sr.error = err;
91
+ Log_1.GLog.error(err);
92
+ resolve(sr);
93
+ return;
94
+ }
95
+ conn.query(sqlStr, values, (error, results, fields) => {
96
+ sr.error = error;
97
+ sr.results = results;
98
+ if (sr.results && sr.results.length > 0) {
99
+ sr.list = [];
100
+ for (let i = 0; i < sr.results.length; ++i) {
101
+ sr.list.push(sr.results[i]);
102
+ }
103
+ }
104
+ sr.fields = fields;
105
+ conn.release();
106
+ if (error && !no_err_log) {
107
+ Log_1.GLog.error(error);
108
+ }
109
+ resolve(sr);
110
+ });
111
+ });
112
+ });
113
+ }
114
+ transaction(sqls) {
115
+ return new Promise((resolve, reject) => {
116
+ let srs = new SqlReturns();
117
+ this._pool.getConnection((err, conn) => {
118
+ if (err) {
119
+ srs.error = err;
120
+ Log_1.GLog.error(err);
121
+ resolve(srs);
122
+ return;
123
+ }
124
+ conn.beginTransaction((err) => {
125
+ if (err) {
126
+ srs.error = err;
127
+ Log_1.GLog.error(err);
128
+ conn.release();
129
+ resolve(srs);
130
+ return;
131
+ }
132
+ let funcs = [];
133
+ for (let i = 0; i < sqls.length; ++i) {
134
+ let sql = sqls[i];
135
+ funcs.push(() => {
136
+ conn.query(sql.sql, sql.values, (error, results, fields) => {
137
+ srs.srs.push(results);
138
+ if (error) {
139
+ return conn.rollback(() => {
140
+ Log_1.GLog.error(error);
141
+ srs.error = error;
142
+ conn.release();
143
+ resolve(srs);
144
+ });
145
+ }
146
+ else {
147
+ if (funcs.length > 0) {
148
+ let f = funcs.shift();
149
+ f();
150
+ }
151
+ else {
152
+ conn.commit((error) => {
153
+ if (error) {
154
+ return conn.rollback(() => {
155
+ srs.error = error;
156
+ Log_1.GLog.error(error);
157
+ conn.release();
158
+ resolve(srs);
159
+ });
160
+ }
161
+ else {
162
+ conn.release();
163
+ resolve(srs);
164
+ }
165
+ });
166
+ }
167
+ }
168
+ });
169
+ });
170
+ }
171
+ let f = funcs.shift();
172
+ f();
173
+ });
174
+ });
175
+ });
176
+ }
177
+ }
178
+ exports.GMysqlMgr = new MysqlManager();
179
+ //该import必须放在GMysqlMgr实例化之后,否则version基类找不到GMysqlMgr
180
+ const DBCache_1 = require("./Decorator/DBCache");