cgserver 8.9.2 → 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 -466
  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 -201
  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 -156
  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,466 +1,467 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GMongoMgr = exports.MgReturn = exports.MrResult = exports.MongoBaseModel = exports.MongoConfig = void 0;
4
- const Log_1 = require("../Logic/Log");
5
- const mongo = require("mongodb");
6
- const _error_1 = require("../Config/_error_");
7
- const Core_1 = require("../Core/Core");
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
- exports.GMongoMgr = null;
47
- class MongoManager {
48
- _mongocfg = null;
49
- _init_cbs = [];
50
- _mongoDb = null;
51
- get mongoDb() {
52
- return this._mongoDb;
53
- }
54
- _mongoClient = null;
55
- get mongoClient() {
56
- return this._mongoClient;
57
- }
58
- _mongo_init_succ = false;
59
- _inited = false;
60
- get isValid() {
61
- return this._inited;
62
- }
63
- constructor() {
64
- }
65
- async init(cfg) {
66
- if (!cfg || !cfg.open) {
67
- return false;
68
- }
69
- if (this._inited) {
70
- return false;
71
- }
72
- if (this._mongoDb) {
73
- return true;
74
- }
75
- this._mongocfg = cfg;
76
- this._inited = true;
77
- Log_1.GLog.info("mongo config=" + JSON.stringify(this._mongocfg));
78
- let client = new mongo.MongoClient("mongodb://" + this._mongocfg.host + ":" + this._mongocfg.port, this._mongocfg.options);
79
- await Core_1.core.safeCall(client.connect, client);
80
- this.onConnect();
81
- this._mongoDb = client.db(this._mongocfg.database);
82
- for (let i = 0; i < this._init_cbs.length; ++i) {
83
- this._init_cbs[i]();
84
- }
85
- return true;
86
- }
87
- registerInitCb(cb) {
88
- this._init_cbs.push(cb);
89
- }
90
- onConnect() {
91
- this._mongo_init_succ = true;
92
- Log_1.GLog.info("mongo has connected!");
93
- }
94
- onEnd() {
95
- this._mongo_init_succ = false;
96
- Log_1.GLog.error("mongo has ended!");
97
- Log_1.GLog.info("mongo try reconnect");
98
- this.init(this._mongocfg);
99
- }
100
- onError(err) {
101
- Log_1.GLog.error("Error " + err);
102
- Log_1.GLog.info("mongo try reconnect");
103
- this.init(this._mongocfg);
104
- }
105
- /**
106
- * 获取自增长id
107
- * @param key
108
- * @returns 小于等于0为异常
109
- */
110
- async getAutoIds(key) {
111
- if (!this._mongoDb) {
112
- return -1;
113
- }
114
- let collection = "auto_ids";
115
- let col = this._mongoDb.collection(collection);
116
- try {
117
- let where = this._convertWhere({ _id: key });
118
- let rs = await Core_1.core.safeCall(col.findOneAndUpdate, col, where, { $inc: { id: 1 } }, { upsert: true });
119
- if (rs.id) {
120
- return rs.id + 1;
121
- }
122
- return 1;
123
- }
124
- catch (e) {
125
- Log_1.GLog.error(e.stack);
126
- }
127
- return -2;
128
- }
129
- _convertWhere(where) {
130
- if (!where || !where._id) {
131
- return;
132
- }
133
- if (Core_1.core.isString(where._id) && where._id.length == 24) {
134
- let _id = where._id;
135
- try {
136
- where._id = new mongo.ObjectId(_id);
137
- }
138
- catch (e) {
139
- where._id = _id;
140
- }
141
- }
142
- return where;
143
- }
144
- /**
145
- * 获取单条消息
146
- * @param collection
147
- */
148
- async findOne(collection, property = {}, where = {}) {
149
- this._convertWhere(where);
150
- let rs = { errcode: null, one: null };
151
- if (!this._mongoDb) {
152
- rs.errcode = _error_1.EErrorCode.No_Mongo;
153
- return rs;
154
- }
155
- let one = null;
156
- try {
157
- let col = this._mongoDb.collection(collection);
158
- one = await col.findOne(where, { projection: property });
159
- }
160
- catch (e) {
161
- Log_1.GLog.error({ collection, property, where });
162
- Log_1.GLog.error(e.stack);
163
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
164
- }
165
- rs.one = one;
166
- return rs;
167
- }
168
- async findMany(collection, property = {}, where = {}, sort, skip = 0, limit = 0) {
169
- this._convertWhere(where);
170
- let rs = { errcode: null, list: null };
171
- if (!this._mongoDb) {
172
- rs.errcode = _error_1.EErrorCode.No_Mongo;
173
- return rs;
174
- }
175
- let list = [];
176
- try {
177
- let col = this._mongoDb.collection(collection);
178
- let cursor = col.find(where, { projection: property });
179
- if (sort) {
180
- cursor = cursor.sort(sort);
181
- }
182
- if (skip) {
183
- cursor = cursor.skip(skip);
184
- }
185
- if (limit) {
186
- cursor = cursor.limit(limit);
187
- }
188
- list = await cursor.toArray();
189
- }
190
- catch (e) {
191
- Log_1.GLog.error({ collection, property, where, sort, skip, limit });
192
- Log_1.GLog.error(e.stack);
193
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
194
- }
195
- rs.list = list;
196
- return rs;
197
- }
198
- async countDocuments(collection, where, options) {
199
- this._convertWhere(where);
200
- let rs = { errcode: null, count: -1 };
201
- if (!this._mongoDb) {
202
- rs.errcode = _error_1.EErrorCode.No_Mongo;
203
- return rs;
204
- }
205
- let count = -1;
206
- try {
207
- let col = this._mongoDb.collection(collection);
208
- count = await col.countDocuments(where || {}, options);
209
- }
210
- catch (e) {
211
- Log_1.GLog.error({ collection, where });
212
- Log_1.GLog.error(e.stack);
213
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
214
- }
215
- rs.count = count;
216
- return rs;
217
- }
218
- async deleteOne(collection, where) {
219
- this._convertWhere(where);
220
- let rs = { errcode: null, count: -1 };
221
- if (!this._mongoDb) {
222
- rs.errcode = _error_1.EErrorCode.No_Mongo;
223
- return rs;
224
- }
225
- let del_rs = null;
226
- try {
227
- let col = this._mongoDb.collection(collection);
228
- del_rs = await col.deleteOne(where || {});
229
- }
230
- catch (e) {
231
- Log_1.GLog.error({ collection, where });
232
- Log_1.GLog.error(e.stack);
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
- async deleteMany(collection, where) {
241
- this._convertWhere(where);
242
- let rs = { errcode: null, count: -1 };
243
- if (!this._mongoDb) {
244
- rs.errcode = _error_1.EErrorCode.No_Mongo;
245
- return rs;
246
- }
247
- let del_rs = null;
248
- try {
249
- let col = this._mongoDb.collection(collection);
250
- del_rs = await col.deleteMany(where || {});
251
- }
252
- catch (e) {
253
- Log_1.GLog.error({ collection, where });
254
- Log_1.GLog.error(e.stack);
255
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
256
- }
257
- if (del_rs) {
258
- rs.count = del_rs.deletedCount;
259
- }
260
- return rs;
261
- }
262
- /**
263
- * 插入数据
264
- * @param collection
265
- * @param data
266
- */
267
- async insertOne(collection, data) {
268
- let rs = { errcode: null, rs: null };
269
- if (!this._mongoDb) {
270
- rs.errcode = _error_1.EErrorCode.No_Mongo;
271
- return rs;
272
- }
273
- let in_rs = null;
274
- try {
275
- let col = this._mongoDb.collection(collection);
276
- in_rs = await col.insertOne(data);
277
- }
278
- catch (e) {
279
- Log_1.GLog.error({ collection, data });
280
- Log_1.GLog.error(e.stack);
281
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
282
- }
283
- rs.rs = in_rs;
284
- return rs;
285
- }
286
- async insertManay(collection, data) {
287
- let rs = { errcode: null, rs: null };
288
- if (!this._mongoDb) {
289
- rs.errcode = _error_1.EErrorCode.No_Mongo;
290
- return rs;
291
- }
292
- let in_rs = null;
293
- try {
294
- let col = this._mongoDb.collection(collection);
295
- in_rs = await col.insertMany(data);
296
- }
297
- catch (e) {
298
- Log_1.GLog.error({ collection, data });
299
- Log_1.GLog.error(e.stack);
300
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
301
- }
302
- rs.rs = in_rs;
303
- return rs;
304
- }
305
- async updateOne(collection, model, where, upsert = false) {
306
- let _id = model["_id"];
307
- delete model["_id"];
308
- if (!where && _id) {
309
- where["_id"] = _id;
310
- }
311
- this._convertWhere(where);
312
- let rs = { errcode: null, rs: null };
313
- if (!this._mongoDb) {
314
- if (_id) {
315
- model["_id"] = _id;
316
- }
317
- rs.errcode = _error_1.EErrorCode.No_Mongo;
318
- return rs;
319
- }
320
- let up_rs = null;
321
- try {
322
- let updatemodel = null;
323
- let money = false;
324
- for (let key in model) {
325
- if (key.startsWith("$")) {
326
- money = true;
327
- }
328
- }
329
- if (!money) {
330
- updatemodel = { "$set": model };
331
- }
332
- else {
333
- updatemodel = model;
334
- }
335
- let col = this._mongoDb.collection(collection);
336
- up_rs = await col.updateOne(where, updatemodel, { upsert: upsert });
337
- }
338
- catch (e) {
339
- Log_1.GLog.error({ collection, model, where, upsert });
340
- Log_1.GLog.error(e.stack);
341
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
342
- }
343
- rs.rs = up_rs;
344
- if (up_rs?.upsertedId || _id) {
345
- model["_id"] = up_rs?.upsertedId || _id;
346
- }
347
- return rs;
348
- }
349
- async updateMany(collection, model, where, upsert = false) {
350
- this._convertWhere(where);
351
- let rs = { errcode: null, rs: null };
352
- if (!this._mongoDb) {
353
- rs.errcode = _error_1.EErrorCode.No_Mongo;
354
- return rs;
355
- }
356
- let up_rs = null;
357
- try {
358
- let updateModel = null;
359
- let firstKey = Object.keys(model)[0];
360
- if (!firstKey.startsWith("$")) {
361
- updateModel = { $set: model };
362
- }
363
- else {
364
- updateModel = model;
365
- }
366
- let col = this._mongoDb.collection(collection);
367
- up_rs = await col.updateMany(where, updateModel, { upsert: upsert });
368
- }
369
- catch (e) {
370
- Log_1.GLog.error({ collection, model, where, upsert });
371
- Log_1.GLog.error(e.stack);
372
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
373
- }
374
- rs.rs = up_rs;
375
- return rs;
376
- }
377
- async createIndex(collection, index, options) {
378
- let rs = { errcode: null, rs: null };
379
- if (!this._mongoDb) {
380
- rs.errcode = _error_1.EErrorCode.No_Mongo;
381
- return rs;
382
- }
383
- let i_rs = null;
384
- try {
385
- let col = this._mongoDb.collection(collection);
386
- i_rs = await col.createIndex(index, options);
387
- }
388
- catch (e) {
389
- Log_1.GLog.error({ collection, index });
390
- Log_1.GLog.error(e.stack);
391
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
392
- }
393
- rs.rs = i_rs;
394
- return rs;
395
- }
396
- async simpleAggregate(collection, property, where, size, random_size) {
397
- this._convertWhere(where);
398
- let rs = { errcode: null, list: null };
399
- if (!this._mongoDb) {
400
- rs.errcode = _error_1.EErrorCode.No_Mongo;
401
- return rs;
402
- }
403
- let list = [];
404
- try {
405
- let col = this._mongoDb.collection(collection);
406
- let params = [];
407
- if (where) {
408
- params.push({ '$match': where });
409
- }
410
- if (property) {
411
- params.push({ '$project': property });
412
- }
413
- if (random_size) {
414
- params.push({ '$sample': { 'size': random_size } });
415
- }
416
- let agg = col.aggregate(params);
417
- if (size) {
418
- list = await agg.limit(size).toArray();
419
- }
420
- else {
421
- list = await agg.toArray();
422
- }
423
- }
424
- catch (e) {
425
- Log_1.GLog.error(e.stack);
426
- rs.errcode = _error_1.EErrorCode.Mongo_Error;
427
- }
428
- rs.list = list;
429
- return rs;
430
- }
431
- aggregate(collection, pipeline, options) {
432
- if (!this._mongoDb) {
433
- return;
434
- }
435
- let col = this._mongoDb.collection(collection);
436
- let agg = col.aggregate(pipeline, options);
437
- return agg;
438
- }
439
- /**
440
- * 快速事务
441
- * @param collection
442
- * @param cb
443
- */
444
- async quickTransaction(cb, options) {
445
- if (!this._mongoDb) {
446
- return false;
447
- }
448
- let session = this._mongoClient.startSession();
449
- session.startTransaction(options);
450
- try {
451
- let rs = await cb(session);
452
- await session.commitTransaction();
453
- session.endSession();
454
- return rs;
455
- }
456
- catch (e) {
457
- await session.abortTransaction();
458
- Log_1.GLog.error(e.stack);
459
- }
460
- finally {
461
- await session.endSession();
462
- }
463
- return false;
464
- }
465
- }
466
- exports.GMongoMgr = new MongoManager();
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MongoManager = exports.GMongoMgr = exports.MgReturn = exports.MrResult = exports.MongoBaseModel = exports.MongoConfig = void 0;
4
+ const Log_1 = require("../Logic/Log");
5
+ const mongo = require("mongodb");
6
+ const _error_1 = require("../Config/_error_");
7
+ const Core_1 = require("../Core/Core");
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
+ exports.GMongoMgr = null;
47
+ class MongoManager {
48
+ _mongocfg = null;
49
+ _init_cbs = [];
50
+ _mongoDb = null;
51
+ get mongoDb() {
52
+ return this._mongoDb;
53
+ }
54
+ _mongoClient = null;
55
+ get mongoClient() {
56
+ return this._mongoClient;
57
+ }
58
+ _mongo_init_succ = false;
59
+ _inited = false;
60
+ get isValid() {
61
+ return this._inited;
62
+ }
63
+ constructor() {
64
+ }
65
+ async init(cfg) {
66
+ if (!cfg || !cfg.open) {
67
+ return false;
68
+ }
69
+ if (this._inited) {
70
+ return false;
71
+ }
72
+ if (this._mongoDb) {
73
+ return true;
74
+ }
75
+ this._mongocfg = cfg;
76
+ this._inited = true;
77
+ Log_1.GLog.info("mongo config=" + JSON.stringify(this._mongocfg));
78
+ let client = new mongo.MongoClient("mongodb://" + this._mongocfg.host + ":" + this._mongocfg.port, this._mongocfg.options);
79
+ await Core_1.core.safeCall(client.connect, client);
80
+ this.onConnect();
81
+ this._mongoDb = client.db(this._mongocfg.database);
82
+ for (let i = 0; i < this._init_cbs.length; ++i) {
83
+ this._init_cbs[i]();
84
+ }
85
+ return true;
86
+ }
87
+ registerInitCb(cb) {
88
+ this._init_cbs.push(cb);
89
+ }
90
+ onConnect() {
91
+ this._mongo_init_succ = true;
92
+ Log_1.GLog.info("mongo has connected!");
93
+ }
94
+ onEnd() {
95
+ this._mongo_init_succ = false;
96
+ Log_1.GLog.error("mongo has ended!");
97
+ Log_1.GLog.info("mongo try reconnect");
98
+ this.init(this._mongocfg);
99
+ }
100
+ onError(err) {
101
+ Log_1.GLog.error("Error " + err);
102
+ Log_1.GLog.info("mongo try reconnect");
103
+ this.init(this._mongocfg);
104
+ }
105
+ /**
106
+ * 获取自增长id
107
+ * @param key
108
+ * @returns 小于等于0为异常
109
+ */
110
+ async getAutoIds(key) {
111
+ if (!this._mongoDb) {
112
+ return -1;
113
+ }
114
+ let collection = "auto_ids";
115
+ let col = this._mongoDb.collection(collection);
116
+ try {
117
+ let where = this._convertWhere({ _id: key });
118
+ let rs = await Core_1.core.safeCall(col.findOneAndUpdate, col, where, { $inc: { id: 1 } }, { upsert: true });
119
+ if (rs.id) {
120
+ return rs.id + 1;
121
+ }
122
+ return 1;
123
+ }
124
+ catch (e) {
125
+ Log_1.GLog.error(e.stack);
126
+ }
127
+ return -2;
128
+ }
129
+ _convertWhere(where) {
130
+ if (!where || !where._id) {
131
+ return;
132
+ }
133
+ if (Core_1.core.isString(where._id) && where._id.length == 24) {
134
+ let _id = where._id;
135
+ try {
136
+ where._id = new mongo.ObjectId(_id);
137
+ }
138
+ catch (e) {
139
+ where._id = _id;
140
+ }
141
+ }
142
+ return where;
143
+ }
144
+ /**
145
+ * 获取单条消息
146
+ * @param collection
147
+ */
148
+ async findOne(collection, property = {}, where = {}) {
149
+ this._convertWhere(where);
150
+ let rs = { errcode: null, one: null };
151
+ if (!this._mongoDb) {
152
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
153
+ return rs;
154
+ }
155
+ let one = null;
156
+ try {
157
+ let col = this._mongoDb.collection(collection);
158
+ one = await col.findOne(where, { projection: property });
159
+ }
160
+ catch (e) {
161
+ Log_1.GLog.error({ collection, property, where });
162
+ Log_1.GLog.error(e.stack);
163
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
164
+ }
165
+ rs.one = one;
166
+ return rs;
167
+ }
168
+ async findMany(collection, property = {}, where = {}, sort, skip = 0, limit = 0) {
169
+ this._convertWhere(where);
170
+ let rs = { errcode: null, list: null };
171
+ if (!this._mongoDb) {
172
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
173
+ return rs;
174
+ }
175
+ let list = [];
176
+ try {
177
+ let col = this._mongoDb.collection(collection);
178
+ let cursor = col.find(where, { projection: property });
179
+ if (sort) {
180
+ cursor = cursor.sort(sort);
181
+ }
182
+ if (skip) {
183
+ cursor = cursor.skip(skip);
184
+ }
185
+ if (limit) {
186
+ cursor = cursor.limit(limit);
187
+ }
188
+ list = await cursor.toArray();
189
+ }
190
+ catch (e) {
191
+ Log_1.GLog.error({ collection, property, where, sort, skip, limit });
192
+ Log_1.GLog.error(e.stack);
193
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
194
+ }
195
+ rs.list = list;
196
+ return rs;
197
+ }
198
+ async countDocuments(collection, where, options) {
199
+ this._convertWhere(where);
200
+ let rs = { errcode: null, count: -1 };
201
+ if (!this._mongoDb) {
202
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
203
+ return rs;
204
+ }
205
+ let count = -1;
206
+ try {
207
+ let col = this._mongoDb.collection(collection);
208
+ count = await col.countDocuments(where || {}, options);
209
+ }
210
+ catch (e) {
211
+ Log_1.GLog.error({ collection, where });
212
+ Log_1.GLog.error(e.stack);
213
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
214
+ }
215
+ rs.count = count;
216
+ return rs;
217
+ }
218
+ async deleteOne(collection, where) {
219
+ this._convertWhere(where);
220
+ let rs = { errcode: null, count: -1 };
221
+ if (!this._mongoDb) {
222
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
223
+ return rs;
224
+ }
225
+ let del_rs = null;
226
+ try {
227
+ let col = this._mongoDb.collection(collection);
228
+ del_rs = await col.deleteOne(where || {});
229
+ }
230
+ catch (e) {
231
+ Log_1.GLog.error({ collection, where });
232
+ Log_1.GLog.error(e.stack);
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
+ async deleteMany(collection, where) {
241
+ this._convertWhere(where);
242
+ let rs = { errcode: null, count: -1 };
243
+ if (!this._mongoDb) {
244
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
245
+ return rs;
246
+ }
247
+ let del_rs = null;
248
+ try {
249
+ let col = this._mongoDb.collection(collection);
250
+ del_rs = await col.deleteMany(where || {});
251
+ }
252
+ catch (e) {
253
+ Log_1.GLog.error({ collection, where });
254
+ Log_1.GLog.error(e.stack);
255
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
256
+ }
257
+ if (del_rs) {
258
+ rs.count = del_rs.deletedCount;
259
+ }
260
+ return rs;
261
+ }
262
+ /**
263
+ * 插入数据
264
+ * @param collection
265
+ * @param data
266
+ */
267
+ async insertOne(collection, data) {
268
+ let rs = { errcode: null, rs: null };
269
+ if (!this._mongoDb) {
270
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
271
+ return rs;
272
+ }
273
+ let in_rs = null;
274
+ try {
275
+ let col = this._mongoDb.collection(collection);
276
+ in_rs = await col.insertOne(data);
277
+ }
278
+ catch (e) {
279
+ Log_1.GLog.error({ collection, data });
280
+ Log_1.GLog.error(e.stack);
281
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
282
+ }
283
+ rs.rs = in_rs;
284
+ return rs;
285
+ }
286
+ async insertManay(collection, data) {
287
+ let rs = { errcode: null, rs: null };
288
+ if (!this._mongoDb) {
289
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
290
+ return rs;
291
+ }
292
+ let in_rs = null;
293
+ try {
294
+ let col = this._mongoDb.collection(collection);
295
+ in_rs = await col.insertMany(data);
296
+ }
297
+ catch (e) {
298
+ Log_1.GLog.error({ collection, data });
299
+ Log_1.GLog.error(e.stack);
300
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
301
+ }
302
+ rs.rs = in_rs;
303
+ return rs;
304
+ }
305
+ async updateOne(collection, model, where, upsert = false) {
306
+ let _id = model["_id"];
307
+ delete model["_id"];
308
+ if (!where && _id) {
309
+ where["_id"] = _id;
310
+ }
311
+ this._convertWhere(where);
312
+ let rs = { errcode: null, rs: null };
313
+ if (!this._mongoDb) {
314
+ if (_id) {
315
+ model["_id"] = _id;
316
+ }
317
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
318
+ return rs;
319
+ }
320
+ let up_rs = null;
321
+ try {
322
+ let updatemodel = null;
323
+ let money = false;
324
+ for (let key in model) {
325
+ if (key.startsWith("$")) {
326
+ money = true;
327
+ }
328
+ }
329
+ if (!money) {
330
+ updatemodel = { "$set": model };
331
+ }
332
+ else {
333
+ updatemodel = model;
334
+ }
335
+ let col = this._mongoDb.collection(collection);
336
+ up_rs = await col.updateOne(where, updatemodel, { upsert: upsert });
337
+ }
338
+ catch (e) {
339
+ Log_1.GLog.error({ collection, model, where, upsert });
340
+ Log_1.GLog.error(e.stack);
341
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
342
+ }
343
+ rs.rs = up_rs;
344
+ if (up_rs?.upsertedId || _id) {
345
+ model["_id"] = up_rs?.upsertedId || _id;
346
+ }
347
+ return rs;
348
+ }
349
+ async updateMany(collection, model, where, upsert = false) {
350
+ this._convertWhere(where);
351
+ let rs = { errcode: null, rs: null };
352
+ if (!this._mongoDb) {
353
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
354
+ return rs;
355
+ }
356
+ let up_rs = null;
357
+ try {
358
+ let updateModel = null;
359
+ let firstKey = Object.keys(model)[0];
360
+ if (!firstKey.startsWith("$")) {
361
+ updateModel = { $set: model };
362
+ }
363
+ else {
364
+ updateModel = model;
365
+ }
366
+ let col = this._mongoDb.collection(collection);
367
+ up_rs = await col.updateMany(where, updateModel, { upsert: upsert });
368
+ }
369
+ catch (e) {
370
+ Log_1.GLog.error({ collection, model, where, upsert });
371
+ Log_1.GLog.error(e.stack);
372
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
373
+ }
374
+ rs.rs = up_rs;
375
+ return rs;
376
+ }
377
+ async createIndex(collection, index, options) {
378
+ let rs = { errcode: null, rs: null };
379
+ if (!this._mongoDb) {
380
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
381
+ return rs;
382
+ }
383
+ let i_rs = null;
384
+ try {
385
+ let col = this._mongoDb.collection(collection);
386
+ i_rs = await col.createIndex(index, options);
387
+ }
388
+ catch (e) {
389
+ Log_1.GLog.error({ collection, index });
390
+ Log_1.GLog.error(e.stack);
391
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
392
+ }
393
+ rs.rs = i_rs;
394
+ return rs;
395
+ }
396
+ async simpleAggregate(collection, property, where, size, random_size) {
397
+ this._convertWhere(where);
398
+ let rs = { errcode: null, list: null };
399
+ if (!this._mongoDb) {
400
+ rs.errcode = _error_1.EErrorCode.No_Mongo;
401
+ return rs;
402
+ }
403
+ let list = [];
404
+ try {
405
+ let col = this._mongoDb.collection(collection);
406
+ let params = [];
407
+ if (where) {
408
+ params.push({ '$match': where });
409
+ }
410
+ if (property) {
411
+ params.push({ '$project': property });
412
+ }
413
+ if (random_size) {
414
+ params.push({ '$sample': { 'size': random_size } });
415
+ }
416
+ let agg = col.aggregate(params);
417
+ if (size) {
418
+ list = await agg.limit(size).toArray();
419
+ }
420
+ else {
421
+ list = await agg.toArray();
422
+ }
423
+ }
424
+ catch (e) {
425
+ Log_1.GLog.error(e.stack);
426
+ rs.errcode = _error_1.EErrorCode.Mongo_Error;
427
+ }
428
+ rs.list = list;
429
+ return rs;
430
+ }
431
+ aggregate(collection, pipeline, options) {
432
+ if (!this._mongoDb) {
433
+ return;
434
+ }
435
+ let col = this._mongoDb.collection(collection);
436
+ let agg = col.aggregate(pipeline, options);
437
+ return agg;
438
+ }
439
+ /**
440
+ * 快速事务
441
+ * @param collection
442
+ * @param cb
443
+ */
444
+ async quickTransaction(cb, options) {
445
+ if (!this._mongoDb) {
446
+ return false;
447
+ }
448
+ let session = this._mongoClient.startSession();
449
+ session.startTransaction(options);
450
+ try {
451
+ let rs = await cb(session);
452
+ await session.commitTransaction();
453
+ session.endSession();
454
+ return rs;
455
+ }
456
+ catch (e) {
457
+ await session.abortTransaction();
458
+ Log_1.GLog.error(e.stack);
459
+ }
460
+ finally {
461
+ await session.endSession();
462
+ }
463
+ return false;
464
+ }
465
+ }
466
+ exports.MongoManager = MongoManager;
467
+ exports.GMongoMgr = new MongoManager();