cgserver 9.2.6 → 10.0.0

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 (91) hide show
  1. package/README.md +10 -0
  2. package/dist/lib/Framework/AI/BehaviorAI.js +6 -6
  3. package/dist/lib/Framework/AI/TriggerMgr.js +7 -8
  4. package/dist/lib/Framework/Config/FrameworkConfig.js +2 -2
  5. package/dist/lib/Framework/Config/IServerConfig.js +3 -3
  6. package/dist/lib/Framework/Core/ByteTool.js +2 -2
  7. package/dist/lib/Framework/Core/Core.js +4 -4
  8. package/dist/lib/Framework/Core/Timer.js +5 -5
  9. package/dist/lib/Framework/Database/Decorator/DBCache.js +5 -6
  10. package/dist/lib/Framework/Database/MSSqlManager.js +4 -5
  11. package/dist/lib/Framework/Database/Mongo/MongoBaseService.js +128 -0
  12. package/dist/lib/Framework/Database/Mongo/MongoManager.js +509 -0
  13. package/dist/lib/Framework/Database/Mongo/MongoServiceManager.js +26 -0
  14. package/dist/lib/Framework/Database/MysqlBaseService.js +24 -26
  15. package/dist/lib/Framework/Database/MysqlManager.js +7 -10
  16. package/dist/lib/Framework/Database/RedisManager.js +5 -7
  17. package/dist/lib/Framework/Decorator/SyncCall.js +3 -3
  18. package/dist/lib/Framework/Decorator/SyncCallServer.js +11 -12
  19. package/dist/lib/Framework/Logic/CacheTool.js +2 -3
  20. package/dist/lib/Framework/Logic/EventTool.js +2 -2
  21. package/dist/lib/Framework/Logic/HttpTool.js +11 -12
  22. package/dist/lib/Framework/Logic/Log.js +2 -3
  23. package/dist/lib/Framework/Logic/SyncQueueTool.js +2 -2
  24. package/dist/lib/Framework/Service/MongoAccountService.js +17 -19
  25. package/dist/lib/Framework/Service/MongoCacheService.js +7 -9
  26. package/dist/lib/Framework/Service/MongoUserService.js +10 -10
  27. package/dist/lib/Framework/Service/MysqlAccountService.js +4 -6
  28. package/dist/lib/Framework/SocketServer/IClientWebSocket.js +4 -4
  29. package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +6 -7
  30. package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +6 -7
  31. package/dist/lib/Framework/SocketServer/IServerWebSocket.js +3 -3
  32. package/dist/lib/Framework/SocketServer/ISocketServer.js +21 -23
  33. package/dist/lib/Framework/SocketServer/IWebSocket.js +12 -14
  34. package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +4 -4
  35. package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +2 -2
  36. package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +2 -3
  37. package/dist/lib/Framework/ThirdParty/AlipayTool.js +19 -20
  38. package/dist/lib/Framework/ThirdParty/Alisms.js +10 -12
  39. package/dist/lib/Framework/ThirdParty/AppleTool.js +16 -18
  40. package/dist/lib/Framework/ThirdParty/CgMq.js +3 -3
  41. package/dist/lib/Framework/ThirdParty/EmailTool.js +12 -14
  42. package/dist/lib/Framework/ThirdParty/QQTool.js +19 -23
  43. package/dist/lib/Framework/ThirdParty/QiniuTool.js +9 -11
  44. package/dist/lib/Framework/ThirdParty/Rpc.js +2 -2
  45. package/dist/lib/Framework/ThirdParty/WechatTool.js +66 -16
  46. package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +16 -17
  47. package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +12 -13
  48. package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +2 -3
  49. package/dist/lib/Framework/WebServer/Engine/Engine.js +20 -20
  50. package/dist/lib/Framework/WebServer/Engine/RazorJs.js +3 -4
  51. package/dist/lib/Framework/WebServer/Engine/Request.js +3 -3
  52. package/dist/lib/Framework/WebServer/Engine/Response.js +2 -2
  53. package/dist/lib/Framework/WebServer/IWebServer.js +6 -9
  54. package/dist/lib/Framework/cgserver.js +10 -15
  55. package/dist/lib/Framework/global.js +56 -0
  56. package/dist/lib/Framework/index.js +3 -200
  57. package/dist/lib/Framework/index_export_.js +161 -0
  58. package/dist/lib/test/test.js +2 -2
  59. package/dist/types/Framework/AI/TriggerMgr.d.ts +1 -3
  60. package/dist/types/Framework/Config/DbConfig.d.ts +1 -1
  61. package/dist/types/Framework/Config/IServerConfig.d.ts +0 -1
  62. package/dist/types/Framework/Core/ByteTool.d.ts +1 -3
  63. package/dist/types/Framework/Database/Decorator/DBCache.d.ts +1 -3
  64. package/dist/types/Framework/Database/MSSqlManager.d.ts +1 -3
  65. package/dist/types/Framework/Database/Mongo/MongoBaseService.d.ts +105 -0
  66. package/dist/types/Framework/Database/Mongo/MongoManager.d.ts +193 -0
  67. package/dist/types/Framework/Database/Mongo/MongoServiceManager.d.ts +13 -0
  68. package/dist/types/Framework/Database/MysqlManager.d.ts +1 -3
  69. package/dist/types/Framework/Database/RedisManager.d.ts +0 -1
  70. package/dist/types/Framework/Logic/CacheTool.d.ts +1 -2
  71. package/dist/types/Framework/Logic/EventTool.d.ts +1 -3
  72. package/dist/types/Framework/Logic/HttpTool.d.ts +1 -3
  73. package/dist/types/Framework/Logic/Log.d.ts +1 -3
  74. package/dist/types/Framework/Logic/SyncQueueTool.d.ts +1 -2
  75. package/dist/types/Framework/Service/MongoAccountService.d.ts +2 -2
  76. package/dist/types/Framework/Service/MongoCacheService.d.ts +3 -5
  77. package/dist/types/Framework/Service/MongoUserService.d.ts +4 -4
  78. package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +1 -2
  79. package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +1 -3
  80. package/dist/types/Framework/ThirdParty/Alisms.d.ts +1 -3
  81. package/dist/types/Framework/ThirdParty/AppleTool.d.ts +1 -2
  82. package/dist/types/Framework/ThirdParty/EmailTool.d.ts +1 -3
  83. package/dist/types/Framework/ThirdParty/QQTool.d.ts +0 -1
  84. package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +1 -3
  85. package/dist/types/Framework/ThirdParty/WechatTool.d.ts +10 -1
  86. package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +1 -3
  87. package/dist/types/Framework/cgserver.d.ts +1 -3
  88. package/dist/types/Framework/global.d.ts +53 -0
  89. package/dist/types/Framework/index.d.ts +2 -91
  90. package/dist/types/Framework/index_export_.d.ts +74 -0
  91. package/package.json +1 -1
@@ -0,0 +1,509 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoExt = exports.MongoManager = exports.MgReturn = exports.MrResult = exports.MongoBaseModel = exports.MongoConfig = void 0;
4
+ const mongo = require("mongodb");
5
+ const _error_1 = require("../../Config/_error_");
6
+ const Core_1 = require("../../Core/Core");
7
+ const global_1 = require("../../global");
8
+ class MongoConfig {
9
+ open = false;
10
+ host = "127.0.0.1";
11
+ port = 27017;
12
+ options = null;
13
+ database = 'mongodb';
14
+ }
15
+ exports.MongoConfig = MongoConfig;
16
+ class MongoBaseModel {
17
+ _id;
18
+ }
19
+ exports.MongoBaseModel = MongoBaseModel;
20
+ class MrResult {
21
+ /**
22
+ * select 的数据量
23
+ */
24
+ length = 0;
25
+ /**
26
+ * 插入数据的自增id
27
+ */
28
+ insertId = null;
29
+ insertIds = null;
30
+ /**
31
+ * update 更新数据的影响条数
32
+ */
33
+ changedRows = null;
34
+ /**
35
+ * 插入或删除数据的影响条数
36
+ */
37
+ affectedRows = null;
38
+ }
39
+ exports.MrResult = MrResult;
40
+ class MgReturn {
41
+ error = null;
42
+ result = new MrResult();
43
+ list = [];
44
+ }
45
+ exports.MgReturn = MgReturn;
46
+ class MongoManager {
47
+ _dbs = {};
48
+ _defdbname = "";
49
+ get defdbname() {
50
+ return this._defdbname;
51
+ }
52
+ //初始化多个数据库,第一个open数据库为默认数据库
53
+ async init(cfgs) {
54
+ for (let i = 0; i < cfgs.length; ++i) {
55
+ let cfg = cfgs[i];
56
+ let ret = await this.addMongo(cfg);
57
+ if (!ret) {
58
+ return false;
59
+ }
60
+ }
61
+ return true;
62
+ }
63
+ async addMongo(cfg) {
64
+ if (this._dbs[cfg.database]) {
65
+ global_1.global.gLog.error("数据库配置得database不能相同!database=" + cfg.database);
66
+ return false;
67
+ }
68
+ let mongoext = new MongoExt();
69
+ let ret = await mongoext.init(cfg);
70
+ if (!ret) {
71
+ global_1.global.gLog.error("数据库初始化失败!cfg=" + JSON.stringify(cfg));
72
+ return false;
73
+ }
74
+ this._dbs[cfg.database] = mongoext;
75
+ if (!this._defdbname) {
76
+ this._defdbname = cfg.database;
77
+ }
78
+ return true;
79
+ }
80
+ async removeMongo(dbname, force = false) {
81
+ let mongo = this.getMongo(dbname);
82
+ if (!mongo) {
83
+ return false;
84
+ }
85
+ mongo.close(force);
86
+ }
87
+ getMongo(dbname = "") {
88
+ if (!dbname) {
89
+ dbname = this._defdbname;
90
+ }
91
+ return this._dbs[dbname];
92
+ }
93
+ }
94
+ exports.MongoManager = MongoManager;
95
+ class MongoExt {
96
+ _mongocfg = null;
97
+ _init_cbs = [];
98
+ _mongoDb = null;
99
+ get mongoDb() {
100
+ return this._mongoDb;
101
+ }
102
+ _mongoClient = null;
103
+ get mongoClient() {
104
+ return this._mongoClient;
105
+ }
106
+ _mongo_init_succ = false;
107
+ _inited = false;
108
+ get isValid() {
109
+ return this._inited;
110
+ }
111
+ constructor() {
112
+ }
113
+ async init(cfg) {
114
+ if (!cfg || !cfg.open) {
115
+ return false;
116
+ }
117
+ if (this._inited) {
118
+ return false;
119
+ }
120
+ if (this._mongoDb) {
121
+ return true;
122
+ }
123
+ this._mongocfg = cfg;
124
+ this._inited = true;
125
+ global_1.global.gLog.info("mongo config=" + JSON.stringify(this._mongocfg));
126
+ this._mongoClient = new mongo.MongoClient("mongodb://" + this._mongocfg.host + ":" + this._mongocfg.port, this._mongocfg.options);
127
+ await Core_1.core.safeCall(this._mongoClient.connect, this._mongoClient);
128
+ this.onConnect();
129
+ this._mongoDb = this._mongoClient.db(this._mongocfg.database);
130
+ for (let i = 0; i < this._init_cbs.length; ++i) {
131
+ this._init_cbs[i]();
132
+ }
133
+ return true;
134
+ }
135
+ close(force = false) {
136
+ this._mongoClient.close(force);
137
+ }
138
+ registerInitCb(cb) {
139
+ this._init_cbs.push(cb);
140
+ }
141
+ onConnect() {
142
+ this._mongo_init_succ = true;
143
+ global_1.global.gLog.info("mongo has connected!");
144
+ }
145
+ /**
146
+ * 获取自增长id
147
+ * @param key
148
+ * @returns 小于等于0为异常
149
+ */
150
+ async getAutoIds(key) {
151
+ if (!this._mongoDb) {
152
+ return -1;
153
+ }
154
+ let collection = "auto_ids";
155
+ let col = this._mongoDb.collection(collection);
156
+ try {
157
+ let where = this._convertWhere({ _id: key });
158
+ let rs = await Core_1.core.safeCall(col.findOneAndUpdate, col, where, { $inc: { id: 1 } }, { upsert: true });
159
+ if (rs.id) {
160
+ return rs.id + 1;
161
+ }
162
+ return 1;
163
+ }
164
+ catch (e) {
165
+ global_1.global.gLog.error(e.stack);
166
+ }
167
+ return -2;
168
+ }
169
+ _convertWhere(where) {
170
+ if (!where || !where._id) {
171
+ return;
172
+ }
173
+ if (Core_1.core.isString(where._id) && where._id.length == 24) {
174
+ let _id = where._id;
175
+ try {
176
+ where._id = this.toObjectId(_id);
177
+ }
178
+ catch (e) {
179
+ where._id = _id;
180
+ }
181
+ }
182
+ return where;
183
+ }
184
+ toObjectId(id) {
185
+ return new mongo.ObjectId(id);
186
+ }
187
+ /**
188
+ * 获取单条消息
189
+ * @param collection
190
+ */
191
+ async findOne(collection, where = {}, property = {}) {
192
+ this._convertWhere(where);
193
+ let rs = { errcode: null, one: null };
194
+ if (!this._mongoDb) {
195
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
196
+ return rs;
197
+ }
198
+ let one = null;
199
+ try {
200
+ let col = this._mongoDb.collection(collection);
201
+ one = await col.findOne(where, { projection: property });
202
+ }
203
+ catch (e) {
204
+ global_1.global.gLog.error({ collection, property, where });
205
+ global_1.global.gLog.error(e.stack);
206
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
207
+ }
208
+ rs.one = one;
209
+ return rs;
210
+ }
211
+ async findMany(collection, where = {}, property = {}, sort, skip = 0, limit = 0) {
212
+ this._convertWhere(where);
213
+ let rs = { errcode: null, list: null };
214
+ if (!this._mongoDb) {
215
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
216
+ return rs;
217
+ }
218
+ let list = [];
219
+ try {
220
+ let col = this._mongoDb.collection(collection);
221
+ let cursor = col.find(where, { projection: property });
222
+ if (sort) {
223
+ cursor = cursor.sort(sort);
224
+ }
225
+ if (skip) {
226
+ cursor = cursor.skip(skip);
227
+ }
228
+ if (limit) {
229
+ cursor = cursor.limit(limit);
230
+ }
231
+ list = await cursor.toArray();
232
+ }
233
+ catch (e) {
234
+ global_1.global.gLog.error({ collection, property, where, sort, skip, limit });
235
+ global_1.global.gLog.error(e.stack);
236
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
237
+ }
238
+ rs.list = list;
239
+ return rs;
240
+ }
241
+ async countDocuments(collection, where, options) {
242
+ this._convertWhere(where);
243
+ let rs = { errcode: null, count: -1 };
244
+ if (!this._mongoDb) {
245
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
246
+ return rs;
247
+ }
248
+ let count = -1;
249
+ try {
250
+ let col = this._mongoDb.collection(collection);
251
+ count = await col.countDocuments(where || {}, options);
252
+ }
253
+ catch (e) {
254
+ global_1.global.gLog.error({ collection, where });
255
+ global_1.global.gLog.error(e.stack);
256
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
257
+ }
258
+ rs.count = count;
259
+ return rs;
260
+ }
261
+ async deleteOne(collection, where) {
262
+ this._convertWhere(where);
263
+ let rs = { errcode: null, count: -1 };
264
+ if (!this._mongoDb) {
265
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
266
+ return rs;
267
+ }
268
+ let del_rs = null;
269
+ try {
270
+ let col = this._mongoDb.collection(collection);
271
+ del_rs = await col.deleteOne(where || {});
272
+ }
273
+ catch (e) {
274
+ global_1.global.gLog.error({ collection, where });
275
+ global_1.global.gLog.error(e.stack);
276
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
277
+ }
278
+ if (del_rs) {
279
+ rs.count = del_rs.deletedCount;
280
+ }
281
+ return rs;
282
+ }
283
+ async deleteMany(collection, where) {
284
+ this._convertWhere(where);
285
+ let rs = { errcode: null, count: -1 };
286
+ if (!this._mongoDb) {
287
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
288
+ return rs;
289
+ }
290
+ let del_rs = null;
291
+ try {
292
+ let col = this._mongoDb.collection(collection);
293
+ del_rs = await col.deleteMany(where || {});
294
+ }
295
+ catch (e) {
296
+ global_1.global.gLog.error({ collection, where });
297
+ global_1.global.gLog.error(e.stack);
298
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
299
+ }
300
+ if (del_rs) {
301
+ rs.count = del_rs.deletedCount;
302
+ }
303
+ return rs;
304
+ }
305
+ /**
306
+ * 插入数据
307
+ * @param collection
308
+ * @param data
309
+ */
310
+ async insertOne(collection, data) {
311
+ let rs = { errcode: null, rs: null };
312
+ if (!this._mongoDb) {
313
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
314
+ return rs;
315
+ }
316
+ let in_rs = null;
317
+ try {
318
+ let col = this._mongoDb.collection(collection);
319
+ in_rs = await col.insertOne(data);
320
+ }
321
+ catch (e) {
322
+ global_1.global.gLog.error({ collection, data });
323
+ global_1.global.gLog.error(e.stack);
324
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
325
+ }
326
+ rs.rs = in_rs;
327
+ return rs;
328
+ }
329
+ async insertManay(collection, data) {
330
+ let rs = { errcode: null, rs: null };
331
+ if (!this._mongoDb) {
332
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
333
+ return rs;
334
+ }
335
+ let in_rs = null;
336
+ try {
337
+ let col = this._mongoDb.collection(collection);
338
+ in_rs = await col.insertMany(data);
339
+ }
340
+ catch (e) {
341
+ global_1.global.gLog.error({ collection, data });
342
+ global_1.global.gLog.error(e.stack);
343
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
344
+ }
345
+ rs.rs = in_rs;
346
+ return rs;
347
+ }
348
+ async updateOne(collection, where, model, upsert = false) {
349
+ let _id = model["_id"];
350
+ delete model["_id"];
351
+ if (!where && _id) {
352
+ where["_id"] = _id;
353
+ }
354
+ this._convertWhere(where);
355
+ let rs = { errcode: null, rs: null };
356
+ if (!this._mongoDb) {
357
+ if (_id) {
358
+ model["_id"] = _id;
359
+ }
360
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
361
+ return rs;
362
+ }
363
+ let up_rs = null;
364
+ try {
365
+ let updatemodel = null;
366
+ let money = false;
367
+ for (let key in model) {
368
+ if (key.startsWith("$")) {
369
+ money = true;
370
+ }
371
+ }
372
+ if (!money) {
373
+ updatemodel = { "$set": model };
374
+ }
375
+ else {
376
+ updatemodel = model;
377
+ }
378
+ let col = this._mongoDb.collection(collection);
379
+ up_rs = await col.updateOne(where, updatemodel, { upsert: upsert });
380
+ }
381
+ catch (e) {
382
+ global_1.global.gLog.error({ collection, model, where, upsert });
383
+ global_1.global.gLog.error(e.stack);
384
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
385
+ }
386
+ rs.rs = up_rs;
387
+ if (up_rs?.upsertedId || _id) {
388
+ model["_id"] = up_rs?.upsertedId || _id;
389
+ }
390
+ return rs;
391
+ }
392
+ async updateMany(collection, where, model, upsert = false) {
393
+ this._convertWhere(where);
394
+ let rs = { errcode: null, rs: null };
395
+ if (!this._mongoDb) {
396
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
397
+ return rs;
398
+ }
399
+ let up_rs = null;
400
+ try {
401
+ let updateModel = null;
402
+ let firstKey = Object.keys(model)[0];
403
+ if (!firstKey.startsWith("$")) {
404
+ updateModel = { $set: model };
405
+ }
406
+ else {
407
+ updateModel = model;
408
+ }
409
+ let col = this._mongoDb.collection(collection);
410
+ up_rs = await col.updateMany(where, updateModel, { upsert: upsert });
411
+ }
412
+ catch (e) {
413
+ global_1.global.gLog.error({ collection, model, where, upsert });
414
+ global_1.global.gLog.error(e.stack);
415
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
416
+ }
417
+ rs.rs = up_rs;
418
+ return rs;
419
+ }
420
+ async createIndex(collection, index, options) {
421
+ let rs = { errcode: null, rs: null };
422
+ if (!this._mongoDb) {
423
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
424
+ return rs;
425
+ }
426
+ let i_rs = null;
427
+ try {
428
+ let col = this._mongoDb.collection(collection);
429
+ i_rs = await col.createIndex(index, options);
430
+ }
431
+ catch (e) {
432
+ global_1.global.gLog.error({ collection, index });
433
+ global_1.global.gLog.error(e.stack);
434
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
435
+ }
436
+ rs.rs = i_rs;
437
+ return rs;
438
+ }
439
+ async simpleAggregate(collection, where, property, size, random_size) {
440
+ this._convertWhere(where);
441
+ let rs = { errcode: null, list: null };
442
+ if (!this._mongoDb) {
443
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
444
+ return rs;
445
+ }
446
+ let list = [];
447
+ try {
448
+ let col = this._mongoDb.collection(collection);
449
+ let params = [];
450
+ if (where) {
451
+ params.push({ '$match': where });
452
+ }
453
+ if (property) {
454
+ params.push({ '$project': property });
455
+ }
456
+ if (random_size) {
457
+ params.push({ '$sample': { 'size': random_size } });
458
+ }
459
+ let agg = col.aggregate(params);
460
+ if (size) {
461
+ list = await agg.limit(size).toArray();
462
+ }
463
+ else {
464
+ list = await agg.toArray();
465
+ }
466
+ }
467
+ catch (e) {
468
+ global_1.global.gLog.error(e.stack);
469
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
470
+ }
471
+ rs.list = list;
472
+ return rs;
473
+ }
474
+ aggregate(collection, pipeline, options) {
475
+ if (!this._mongoDb) {
476
+ return;
477
+ }
478
+ let col = this._mongoDb.collection(collection);
479
+ let agg = col.aggregate(pipeline, options);
480
+ return agg;
481
+ }
482
+ /**
483
+ * 快速事务
484
+ * @param collection
485
+ * @param cb
486
+ */
487
+ async quickTransaction(cb, options) {
488
+ if (!this._mongoDb) {
489
+ return false;
490
+ }
491
+ let session = this._mongoClient.startSession();
492
+ session.startTransaction(options);
493
+ try {
494
+ let rs = await cb(session);
495
+ await session.commitTransaction();
496
+ session.endSession();
497
+ return rs;
498
+ }
499
+ catch (e) {
500
+ await session.abortTransaction();
501
+ global_1.global.gLog.error(e.stack);
502
+ }
503
+ finally {
504
+ await session.endSession();
505
+ }
506
+ return false;
507
+ }
508
+ }
509
+ exports.MongoExt = MongoExt;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoServiceManager = void 0;
4
+ const MongoBaseService_1 = require("./MongoBaseService");
5
+ class MongoServiceManager {
6
+ _services = {};
7
+ addService(table, type, dbname = "") {
8
+ if (!this._services[dbname]) {
9
+ this._services[dbname] = {};
10
+ }
11
+ if (!this._services[dbname][table]) {
12
+ this._services[dbname][table] = new MongoBaseService_1.MongoBaseService(table, type, dbname);
13
+ }
14
+ return this._services[dbname][table];
15
+ }
16
+ getService(table, dbname = "") {
17
+ if (!this._services[dbname]) {
18
+ this._services[dbname] = {};
19
+ }
20
+ if (!this._services[dbname][table]) {
21
+ return null;
22
+ }
23
+ return this._services[dbname][table];
24
+ }
25
+ }
26
+ exports.MongoServiceManager = MongoServiceManager;
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MysqlBaseService = exports.BaseModel = void 0;
4
+ const global_1 = require("../global");
4
5
  const Property_1 = require("./Decorator/Property");
5
- const MysqlManager_1 = require("./MysqlManager");
6
- const Log_1 = require("../Logic/Log");
7
- const DBCache_1 = require("./Decorator/DBCache");
8
6
  class BaseModel {
9
7
  }
10
8
  exports.BaseModel = BaseModel;
@@ -24,11 +22,11 @@ class MysqlBaseService {
24
22
  _t_type = null;
25
23
  constructor(type) {
26
24
  this._t_type = type;
27
- if (MysqlManager_1.GMysqlMgr.isValid) {
25
+ if (global_1.global.gMysqlMgr.isValid) {
28
26
  this._init();
29
27
  }
30
28
  else {
31
- MysqlManager_1.GMysqlMgr.registerInitCb(this._init.bind(this));
29
+ global_1.global.gMysqlMgr.registerInitCb(this._init.bind(this));
32
30
  }
33
31
  }
34
32
  async _init() {
@@ -41,13 +39,13 @@ class MysqlBaseService {
41
39
  throw new Error("数据表的类必须要具有Table装饰器");
42
40
  }
43
41
  this._table = "`" + table.table + "`";
44
- if (!MysqlManager_1.GMysqlMgr.cfg.auto) {
42
+ if (!global_1.global.gMysqlMgr.cfg.auto) {
45
43
  //未开启自动创建数据表
46
44
  return;
47
45
  }
48
46
  let droped = await this._checkDropTable(table.version);
49
47
  if (!droped) {
50
- Log_1.GLog.info("table(" + this._table + ")无需升级...");
48
+ global_1.global.gLog.info("table(" + this._table + ")无需升级...");
51
49
  //既然版本号没变,就快速返回
52
50
  return;
53
51
  }
@@ -92,14 +90,14 @@ class MysqlBaseService {
92
90
  if (table.comment) {
93
91
  sql += " comment=\'" + table.comment + "\';";
94
92
  }
95
- let sr = await MysqlManager_1.GMysqlMgr.query(sql);
93
+ let sr = await global_1.global.gMysqlMgr.query(sql);
96
94
  if (sr.error) {
97
- Log_1.GLog.error(sr.error);
95
+ global_1.global.gLog.error(sr.error);
98
96
  throw Error("table(" + this._table + ")创建失败...");
99
97
  }
100
98
  else {
101
- DBCache_1.GDBCache.setVersion(this.table, table.version);
102
- Log_1.GLog.info("table(" + this._table + ")初始化成功...");
99
+ global_1.global.gDbCache.setVersion(this.table, table.version);
100
+ global_1.global.gLog.info("table(" + this._table + ")初始化成功...");
103
101
  await this._onReCreated();
104
102
  }
105
103
  }
@@ -108,18 +106,18 @@ class MysqlBaseService {
108
106
  async _onDroped() {
109
107
  }
110
108
  async _checkDropTable(cur_version) {
111
- let local_version = DBCache_1.GDBCache.getVersion(this._table);
109
+ let local_version = global_1.global.gDbCache.getVersion(this._table);
112
110
  if (local_version == cur_version) {
113
111
  return false;
114
112
  }
115
113
  let sql = "drop table if exists " + this._table;
116
- let sr = await MysqlManager_1.GMysqlMgr.query(sql);
114
+ let sr = await global_1.global.gMysqlMgr.query(sql);
117
115
  if (sr.error) {
118
- Log_1.GLog.error(sr.error);
116
+ global_1.global.gLog.error(sr.error);
119
117
  throw Error(sr.error);
120
118
  }
121
119
  else {
122
- Log_1.GLog.info("table(" + this._table + ")删除成功...");
120
+ global_1.global.gLog.info("table(" + this._table + ")删除成功...");
123
121
  await this._onDroped();
124
122
  }
125
123
  return true;
@@ -130,7 +128,7 @@ class MysqlBaseService {
130
128
  */
131
129
  async getById(id) {
132
130
  let tm = null;
133
- let sr = await MysqlManager_1.GMysqlMgr.query("select * from " + this._table + " where id=? limit 1", [id]);
131
+ let sr = await global_1.global.gMysqlMgr.query("select * from " + this._table + " where id=? limit 1", [id]);
134
132
  if (sr.error || sr.queryResult.length <= 0) {
135
133
  return tm;
136
134
  }
@@ -146,7 +144,7 @@ class MysqlBaseService {
146
144
  }
147
145
  sql += " limit 1";
148
146
  let tm = null;
149
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
147
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
150
148
  if (sr.queryResult && sr.queryResult.length > 0) {
151
149
  tm = sr.queryResult[0];
152
150
  }
@@ -160,7 +158,7 @@ class MysqlBaseService {
160
158
  sql += " where " + where;
161
159
  }
162
160
  let total = 0;
163
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
161
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
164
162
  if (sr.queryResult && sr.queryResult.length > 0) {
165
163
  total = sr.queryResult[0].num || 0;
166
164
  }
@@ -174,7 +172,7 @@ class MysqlBaseService {
174
172
  sql += " where " + where;
175
173
  }
176
174
  let tms = null;
177
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
175
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
178
176
  tms = sr.queryResult;
179
177
  return tms;
180
178
  }
@@ -183,7 +181,7 @@ class MysqlBaseService {
183
181
  if (where) {
184
182
  sql += " where " + where;
185
183
  }
186
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
184
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
187
185
  if (sr.error || sr.queryResult.length <= 0) {
188
186
  return 0;
189
187
  }
@@ -201,7 +199,7 @@ class MysqlBaseService {
201
199
  args = args || [];
202
200
  args.push(num);
203
201
  let tms = null;
204
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
202
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
205
203
  tms = sr.queryResult;
206
204
  return tms;
207
205
  }
@@ -219,7 +217,7 @@ class MysqlBaseService {
219
217
  if (limit) {
220
218
  sql += " limit " + limit;
221
219
  }
222
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
220
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
223
221
  return sr;
224
222
  }
225
223
  async update(model, where, args, limit) {
@@ -240,7 +238,7 @@ class MysqlBaseService {
240
238
  if (limit) {
241
239
  sql += " limit " + limit;
242
240
  }
243
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
241
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
244
242
  if (id) {
245
243
  model["id"] = id;
246
244
  }
@@ -263,17 +261,17 @@ class MysqlBaseService {
263
261
  let sql = "insert into " + this._table + " set ?";
264
262
  //这步的做法是为了去掉model种的TableProperty.key(___table___)
265
263
  model = JSON.parse(JSON.stringify(model));
266
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, [model]);
264
+ let sr = await global_1.global.gMysqlMgr.query(sql, [model]);
267
265
  return sr;
268
266
  }
269
267
  async removeById(id) {
270
268
  let sql = "delete from " + this._table + " where id=?";
271
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, [id]);
269
+ let sr = await global_1.global.gMysqlMgr.query(sql, [id]);
272
270
  return sr;
273
271
  }
274
272
  async remove(where, args) {
275
273
  let sql = "delete from " + this._table + " where " + where;
276
- let sr = await MysqlManager_1.GMysqlMgr.query(sql, args);
274
+ let sr = await global_1.global.gMysqlMgr.query(sql, args);
277
275
  return sr;
278
276
  }
279
277
  }