cgserver 9.2.7 → 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.
- package/README.md +10 -0
- package/dist/lib/Framework/AI/BehaviorAI.js +6 -6
- package/dist/lib/Framework/AI/TriggerMgr.js +7 -8
- package/dist/lib/Framework/Config/FrameworkConfig.js +2 -2
- package/dist/lib/Framework/Config/IServerConfig.js +3 -3
- package/dist/lib/Framework/Core/ByteTool.js +2 -2
- package/dist/lib/Framework/Core/Core.js +4 -4
- package/dist/lib/Framework/Core/Timer.js +5 -5
- package/dist/lib/Framework/Database/Decorator/DBCache.js +5 -6
- package/dist/lib/Framework/Database/MSSqlManager.js +4 -5
- package/dist/lib/Framework/Database/Mongo/MongoBaseService.js +128 -0
- package/dist/lib/Framework/Database/Mongo/MongoManager.js +509 -0
- package/dist/lib/Framework/Database/Mongo/MongoServiceManager.js +26 -0
- package/dist/lib/Framework/Database/MysqlBaseService.js +24 -26
- package/dist/lib/Framework/Database/MysqlManager.js +7 -10
- package/dist/lib/Framework/Database/RedisManager.js +5 -7
- package/dist/lib/Framework/Decorator/SyncCall.js +3 -3
- package/dist/lib/Framework/Decorator/SyncCallServer.js +11 -12
- package/dist/lib/Framework/Logic/CacheTool.js +2 -3
- package/dist/lib/Framework/Logic/EventTool.js +2 -2
- package/dist/lib/Framework/Logic/HttpTool.js +11 -12
- package/dist/lib/Framework/Logic/Log.js +2 -3
- package/dist/lib/Framework/Logic/SyncQueueTool.js +2 -2
- package/dist/lib/Framework/Service/MongoAccountService.js +17 -19
- package/dist/lib/Framework/Service/MongoCacheService.js +7 -9
- package/dist/lib/Framework/Service/MongoUserService.js +10 -10
- package/dist/lib/Framework/Service/MysqlAccountService.js +4 -6
- package/dist/lib/Framework/SocketServer/IClientWebSocket.js +4 -4
- package/dist/lib/Framework/SocketServer/IRpcClientWebSocket.js +6 -7
- package/dist/lib/Framework/SocketServer/IRpcServerWebSocket.js +6 -7
- package/dist/lib/Framework/SocketServer/IServerWebSocket.js +3 -3
- package/dist/lib/Framework/SocketServer/ISocketServer.js +18 -21
- package/dist/lib/Framework/SocketServer/IWebSocket.js +12 -14
- package/dist/lib/Framework/SocketServer/ProtoFilter/GoogleProtoFilter.js +4 -4
- package/dist/lib/Framework/SocketServer/ProtoFilter/JsonProtoFilter.js +2 -2
- package/dist/lib/Framework/SocketServer/ProtoFilter/ProtoFactory.js +2 -3
- package/dist/lib/Framework/ThirdParty/AlipayTool.js +17 -19
- package/dist/lib/Framework/ThirdParty/Alisms.js +10 -12
- package/dist/lib/Framework/ThirdParty/AppleTool.js +14 -17
- package/dist/lib/Framework/ThirdParty/CgMq.js +3 -3
- package/dist/lib/Framework/ThirdParty/EmailTool.js +12 -14
- package/dist/lib/Framework/ThirdParty/QQTool.js +19 -23
- package/dist/lib/Framework/ThirdParty/QiniuTool.js +9 -11
- package/dist/lib/Framework/ThirdParty/Rpc.js +2 -2
- package/dist/lib/Framework/ThirdParty/WechatTool.js +66 -16
- package/dist/lib/Framework/WebServer/Controller/MongoBaseUserController.js +16 -17
- package/dist/lib/Framework/WebServer/Controller/MysqlBaseUserController.js +12 -13
- package/dist/lib/Framework/WebServer/Engine/ControllerManager.js +2 -3
- package/dist/lib/Framework/WebServer/Engine/Engine.js +17 -18
- package/dist/lib/Framework/WebServer/Engine/RazorJs.js +3 -4
- package/dist/lib/Framework/WebServer/Engine/Request.js +3 -3
- package/dist/lib/Framework/WebServer/Engine/Response.js +2 -2
- package/dist/lib/Framework/WebServer/IWebServer.js +6 -9
- package/dist/lib/Framework/cgserver.js +10 -15
- package/dist/lib/Framework/global.js +56 -0
- package/dist/lib/Framework/index.js +3 -200
- package/dist/lib/Framework/index_export_.js +161 -0
- package/dist/lib/test/test.js +2 -2
- package/dist/types/Framework/AI/TriggerMgr.d.ts +1 -3
- package/dist/types/Framework/Config/DbConfig.d.ts +1 -1
- package/dist/types/Framework/Config/IServerConfig.d.ts +0 -1
- package/dist/types/Framework/Core/ByteTool.d.ts +1 -3
- package/dist/types/Framework/Database/Decorator/DBCache.d.ts +1 -3
- package/dist/types/Framework/Database/MSSqlManager.d.ts +1 -3
- package/dist/types/Framework/Database/Mongo/MongoBaseService.d.ts +105 -0
- package/dist/types/Framework/Database/Mongo/MongoManager.d.ts +193 -0
- package/dist/types/Framework/Database/Mongo/MongoServiceManager.d.ts +13 -0
- package/dist/types/Framework/Database/MysqlManager.d.ts +1 -3
- package/dist/types/Framework/Database/RedisManager.d.ts +0 -1
- package/dist/types/Framework/Logic/CacheTool.d.ts +1 -2
- package/dist/types/Framework/Logic/EventTool.d.ts +1 -3
- package/dist/types/Framework/Logic/HttpTool.d.ts +1 -3
- package/dist/types/Framework/Logic/Log.d.ts +1 -3
- package/dist/types/Framework/Logic/SyncQueueTool.d.ts +1 -2
- package/dist/types/Framework/Service/MongoAccountService.d.ts +2 -2
- package/dist/types/Framework/Service/MongoCacheService.d.ts +3 -5
- package/dist/types/Framework/Service/MongoUserService.d.ts +4 -4
- package/dist/types/Framework/SocketServer/ProtoFilter/ProtoFactory.d.ts +1 -2
- package/dist/types/Framework/ThirdParty/AlipayTool.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/Alisms.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/AppleTool.d.ts +1 -2
- package/dist/types/Framework/ThirdParty/EmailTool.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/QQTool.d.ts +0 -1
- package/dist/types/Framework/ThirdParty/QiniuTool.d.ts +1 -3
- package/dist/types/Framework/ThirdParty/WechatTool.d.ts +10 -1
- package/dist/types/Framework/WebServer/Engine/ControllerManager.d.ts +1 -3
- package/dist/types/Framework/cgserver.d.ts +1 -3
- package/dist/types/Framework/global.d.ts +53 -0
- package/dist/types/Framework/index.d.ts +2 -91
- package/dist/types/Framework/index_export_.d.ts +74 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.BehaviorAI = void 0;
|
|
4
|
-
const Log_1 = require("./../Logic/Log");
|
|
5
4
|
const Core_1 = require("../Core/Core");
|
|
6
5
|
const _ = require("underscore");
|
|
7
6
|
const TriggerMgr_1 = require("./TriggerMgr");
|
|
7
|
+
const global_1 = require("../global");
|
|
8
8
|
class BehaviorAI {
|
|
9
9
|
_obj;
|
|
10
10
|
_targetObjs;
|
|
@@ -27,13 +27,13 @@ class BehaviorAI {
|
|
|
27
27
|
this._targetObjs = [];
|
|
28
28
|
}
|
|
29
29
|
this._triggers = [];
|
|
30
|
-
let code =
|
|
30
|
+
let code = global_1.global.gTriggerMgr.addConditionTriggerEvent(TriggerMgr_1.EConditionType.Die, this.onTriggerDie.bind(this), { code: this._obj.getCode() });
|
|
31
31
|
this._triggers.push({ type: TriggerMgr_1.EConditionType.Die, code: code });
|
|
32
32
|
}
|
|
33
33
|
//启动行为树AI
|
|
34
34
|
start() {
|
|
35
35
|
if (!this._behavior_data) {
|
|
36
|
-
|
|
36
|
+
global_1.global.gLog.info("------------error------------this._behavior_data can not be null!");
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
39
|
this.goto(this._behavior_data.start);
|
|
@@ -41,7 +41,7 @@ class BehaviorAI {
|
|
|
41
41
|
//结束行为树AI
|
|
42
42
|
end() {
|
|
43
43
|
for (let i = 0, length = this._triggers.length; i < length; ++i) {
|
|
44
|
-
|
|
44
|
+
global_1.global.gTriggerMgr.removeConditionTriggerEvent(this._triggers[i].type, this._triggers[i].code);
|
|
45
45
|
}
|
|
46
46
|
this._triggers = [];
|
|
47
47
|
}
|
|
@@ -145,7 +145,7 @@ class BehaviorAI {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
else {
|
|
148
|
-
|
|
148
|
+
global_1.global.gLog.info("---------warning--------_goto->behavior_name=" + behavior_name + ".animaiton not exist!");
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
//检查有没有已经达到的条件,又的话就执行他的相关事件
|
|
@@ -177,7 +177,7 @@ class BehaviorAI {
|
|
|
177
177
|
let targetInfo = this._getNearestTarget();
|
|
178
178
|
if (targetInfo) {
|
|
179
179
|
if (this._behavior_data.name == "sm")
|
|
180
|
-
|
|
180
|
+
global_1.global.gLog.info("distance" + targetInfo.distance);
|
|
181
181
|
this._targetObj = targetInfo.target;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const Log_1 = require("./../Logic/Log");
|
|
3
|
+
exports.TriggerManager = exports.Trigger = exports.EConditionType = exports.ETriggerType = void 0;
|
|
5
4
|
const Core_1 = require("../Core/Core");
|
|
5
|
+
const global_1 = require("../global");
|
|
6
6
|
var ETriggerType;
|
|
7
7
|
(function (ETriggerType) {
|
|
8
8
|
ETriggerType[ETriggerType["Region"] = 0] = "Region";
|
|
@@ -20,7 +20,6 @@ class Trigger {
|
|
|
20
20
|
}
|
|
21
21
|
exports.Trigger = Trigger;
|
|
22
22
|
let _GTriggerCode = 0;
|
|
23
|
-
exports.GTriggerMgr = null;
|
|
24
23
|
class TriggerManager {
|
|
25
24
|
_regionTriggers = null;
|
|
26
25
|
_conditionTriggers = {};
|
|
@@ -86,8 +85,8 @@ class TriggerManager {
|
|
|
86
85
|
if (!pos || typeof region === "undefined") {
|
|
87
86
|
return false;
|
|
88
87
|
}
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
global_1.global.gLog.info("pos.x" + pos.x + " pos.y=" + pos.y);
|
|
89
|
+
global_1.global.gLog.info("region.x" + region.x + " region.y=" + region.y);
|
|
91
90
|
if (pos.x < (region.x - region.width / 2)) {
|
|
92
91
|
return false;
|
|
93
92
|
}
|
|
@@ -145,7 +144,7 @@ class TriggerManager {
|
|
|
145
144
|
if (!this._regionTriggers.aiObj || !this._regionTriggers.aiObj.onTriggerIn) {
|
|
146
145
|
return;
|
|
147
146
|
}
|
|
148
|
-
|
|
147
|
+
global_1.global.gLog.info("some one triggered in");
|
|
149
148
|
this._regionTriggers.aiObj.onTriggerIn(obj, trigger);
|
|
150
149
|
}
|
|
151
150
|
//从里面走出去的时候触发
|
|
@@ -153,7 +152,7 @@ class TriggerManager {
|
|
|
153
152
|
if (!this._regionTriggers.aiObj || !this._regionTriggers.aiObj.onTriggerOut) {
|
|
154
153
|
return;
|
|
155
154
|
}
|
|
156
|
-
|
|
155
|
+
global_1.global.gLog.info("some one triggered out");
|
|
157
156
|
this._regionTriggers.aiObj.onTriggerOut(obj, trigger);
|
|
158
157
|
}
|
|
159
158
|
//////////////////////////////////////条件触发器//////////////////////////////////////////////////
|
|
@@ -198,4 +197,4 @@ class TriggerManager {
|
|
|
198
197
|
}
|
|
199
198
|
}
|
|
200
199
|
}
|
|
201
|
-
exports.
|
|
200
|
+
exports.TriggerManager = TriggerManager;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FrameworkConfig = exports.WebServerConfig = exports.ESessionType = void 0;
|
|
4
|
-
const
|
|
4
|
+
const global_1 = require("../global");
|
|
5
5
|
const Config_1 = require("./Config");
|
|
6
6
|
const DbConfig_1 = require("./DbConfig");
|
|
7
7
|
var ESessionType;
|
|
@@ -186,7 +186,7 @@ class FrameworkConfig extends Config_1.Config {
|
|
|
186
186
|
}
|
|
187
187
|
init() {
|
|
188
188
|
let ret = super.init();
|
|
189
|
-
|
|
189
|
+
global_1.global.gLog.init(this.log, this.console_level || 0);
|
|
190
190
|
return ret;
|
|
191
191
|
}
|
|
192
192
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IServerConfig =
|
|
3
|
+
exports.IServerConfig = void 0;
|
|
4
|
+
const global_1 = require("../global");
|
|
4
5
|
const FrameworkConfig_1 = require("./FrameworkConfig");
|
|
5
|
-
exports.GServerCfg = null;
|
|
6
6
|
class IServerConfig extends FrameworkConfig_1.FrameworkConfig {
|
|
7
7
|
port = -1;
|
|
8
8
|
_server_name = "";
|
|
@@ -19,7 +19,7 @@ class IServerConfig extends FrameworkConfig_1.FrameworkConfig {
|
|
|
19
19
|
if (!ret) {
|
|
20
20
|
return ret;
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
global_1.global.gServerCfg = this;
|
|
23
23
|
return ret;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ByteTool = void 0;
|
|
4
4
|
class ByteTool {
|
|
5
5
|
//构建一个视图,把字节数组写到缓存中,索引从0开始
|
|
6
6
|
getView(bytes) {
|
|
@@ -81,4 +81,4 @@ class ByteTool {
|
|
|
81
81
|
return this.getUint8Array(8, (view) => { view.setFloat64(0, num, littleEndian); });
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
|
-
exports.
|
|
84
|
+
exports.ByteTool = ByteTool;
|
|
@@ -5,10 +5,10 @@ let os = require('os');
|
|
|
5
5
|
let request = require('request');
|
|
6
6
|
const _ = require("underscore");
|
|
7
7
|
const crypto = require("crypto");
|
|
8
|
-
const Log_1 = require("../Logic/Log");
|
|
9
8
|
const CryptoJS = require("crypto-js");
|
|
10
9
|
const ec_key_1 = require("ec-key");
|
|
11
10
|
const uuid_1 = require("uuid");
|
|
11
|
+
const global_1 = require("../global");
|
|
12
12
|
/**
|
|
13
13
|
* 常用的工具函数类
|
|
14
14
|
*/
|
|
@@ -598,13 +598,13 @@ class core {
|
|
|
598
598
|
if (core.isAsyncFunc(func)) {
|
|
599
599
|
if (thisArg) {
|
|
600
600
|
rs = await func.call(thisArg, ...params).catch((reason) => {
|
|
601
|
-
|
|
601
|
+
global_1.global.gLog.error(reason);
|
|
602
602
|
rs = { errcode: { id: 1008611, des: "failed" } };
|
|
603
603
|
});
|
|
604
604
|
}
|
|
605
605
|
else {
|
|
606
606
|
rs = await func(...params).catch((reason) => {
|
|
607
|
-
|
|
607
|
+
global_1.global.gLog.error(reason);
|
|
608
608
|
rs = { errcode: { id: 1008612, des: "failed" } };
|
|
609
609
|
});
|
|
610
610
|
}
|
|
@@ -620,7 +620,7 @@ class core {
|
|
|
620
620
|
return rs;
|
|
621
621
|
}
|
|
622
622
|
catch (e) {
|
|
623
|
-
|
|
623
|
+
global_1.global.gLog.error(e.stack);
|
|
624
624
|
return { errcode: { id: 1008613, des: "failed" } };
|
|
625
625
|
}
|
|
626
626
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Timer = void 0;
|
|
4
|
-
const
|
|
4
|
+
const global_1 = require("../global");
|
|
5
5
|
class Timer {
|
|
6
6
|
_deadline = -1;
|
|
7
7
|
get deadline() {
|
|
@@ -38,10 +38,10 @@ class Timer {
|
|
|
38
38
|
}
|
|
39
39
|
catch (e) {
|
|
40
40
|
if (e && e.stack) {
|
|
41
|
-
|
|
41
|
+
global_1.global.gLog.error(e.stack);
|
|
42
42
|
}
|
|
43
43
|
else {
|
|
44
|
-
|
|
44
|
+
global_1.global.gLog.error(e);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}, timeout, ...args);
|
|
@@ -61,10 +61,10 @@ class Timer {
|
|
|
61
61
|
}
|
|
62
62
|
catch (e) {
|
|
63
63
|
if (e && e.stack) {
|
|
64
|
-
|
|
64
|
+
global_1.global.gLog.error(e.stack);
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
|
-
|
|
67
|
+
global_1.global.gLog.error(e);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
}, timeout, ...args);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const Log_1 = require("./../../Logic/Log");
|
|
3
|
+
exports.DBCache = exports.VersionModel = void 0;
|
|
5
4
|
const fs = require("fs");
|
|
5
|
+
const global_1 = require("../../global");
|
|
6
6
|
class VersionModel {
|
|
7
7
|
table = "";
|
|
8
8
|
version = 0;
|
|
@@ -16,19 +16,18 @@ class VersionModel {
|
|
|
16
16
|
update_time = 0;
|
|
17
17
|
}
|
|
18
18
|
exports.VersionModel = VersionModel;
|
|
19
|
-
exports.GDBCache = null;
|
|
20
19
|
class DBCache {
|
|
21
20
|
_versions = {};
|
|
22
21
|
_path = __dirname + "/tmp_table_version.json";
|
|
23
22
|
async init() {
|
|
24
|
-
|
|
23
|
+
global_1.global.gLog.warn("mysql auto 功能建议只使用在开发环境中,因为会导致数据丢失,数据表重建");
|
|
25
24
|
if (fs.existsSync(this._path)) {
|
|
26
25
|
try {
|
|
27
26
|
let table = fs.readFileSync(this._path);
|
|
28
27
|
this._versions = JSON.parse(table.toString());
|
|
29
28
|
}
|
|
30
29
|
catch (e) {
|
|
31
|
-
|
|
30
|
+
global_1.global.gLog.info("error:" + this._path);
|
|
32
31
|
process.exit();
|
|
33
32
|
}
|
|
34
33
|
}
|
|
@@ -62,4 +61,4 @@ class DBCache {
|
|
|
62
61
|
return vm.version;
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
|
-
exports.
|
|
64
|
+
exports.DBCache = DBCache;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MSSqlManager = exports.MssqlReturn = exports.MSSqlConfig = void 0;
|
|
4
4
|
const mssql = require("mssql");
|
|
5
|
-
const
|
|
5
|
+
const global_1 = require("../global");
|
|
6
6
|
class MSSqlConfig {
|
|
7
7
|
open = false;
|
|
8
8
|
auto = false;
|
|
@@ -20,7 +20,6 @@ class MssqlReturn {
|
|
|
20
20
|
list = null;
|
|
21
21
|
}
|
|
22
22
|
exports.MssqlReturn = MssqlReturn;
|
|
23
|
-
exports.GMSSqlMgr = null;
|
|
24
23
|
class MSSqlManager {
|
|
25
24
|
_init_cbs = [];
|
|
26
25
|
_pool = null;
|
|
@@ -41,7 +40,7 @@ class MSSqlManager {
|
|
|
41
40
|
this._pool = await mssql.connect(cfg);
|
|
42
41
|
console.log("mssql config=" + JSON.stringify(cfg));
|
|
43
42
|
//这个的初始化位置不能变,必须位于cbs前,pool后
|
|
44
|
-
await
|
|
43
|
+
await global_1.global.gDbCache.init();
|
|
45
44
|
for (let i = 0; i < this._init_cbs.length; ++i) {
|
|
46
45
|
this._init_cbs[i]();
|
|
47
46
|
}
|
|
@@ -50,4 +49,4 @@ class MSSqlManager {
|
|
|
50
49
|
this._init_cbs.push(cb);
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
|
-
exports.
|
|
52
|
+
exports.MSSqlManager = MSSqlManager;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MongoBaseService = void 0;
|
|
4
|
+
const global_1 = require("../../global");
|
|
5
|
+
class MongoBaseService {
|
|
6
|
+
_table = "";
|
|
7
|
+
get table() {
|
|
8
|
+
return this._table;
|
|
9
|
+
}
|
|
10
|
+
_inited = false;
|
|
11
|
+
get isInited() {
|
|
12
|
+
return this._inited;
|
|
13
|
+
}
|
|
14
|
+
get mongoDb() {
|
|
15
|
+
return global_1.global.gMongoMgr.getMongo(this._dbname);
|
|
16
|
+
}
|
|
17
|
+
_dbname = "";
|
|
18
|
+
get dbname() {
|
|
19
|
+
if (!this._dbname) {
|
|
20
|
+
this._dbname = global_1.global.gMongoMgr.defdbname;
|
|
21
|
+
}
|
|
22
|
+
return this._dbname;
|
|
23
|
+
}
|
|
24
|
+
_t_type = null;
|
|
25
|
+
constructor(table, type, dbname = "") {
|
|
26
|
+
this._t_type = type;
|
|
27
|
+
this._table = table;
|
|
28
|
+
this._dbname = dbname;
|
|
29
|
+
}
|
|
30
|
+
async getNextId(key = "") {
|
|
31
|
+
if (!key) {
|
|
32
|
+
key = this._table;
|
|
33
|
+
}
|
|
34
|
+
let id = await this.mongoDb.getAutoIds(this._table);
|
|
35
|
+
return id;
|
|
36
|
+
}
|
|
37
|
+
toObjectId(id) {
|
|
38
|
+
return this.mongoDb.toObjectId(id);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* 没有id(非_id)的表不能使用该函数
|
|
42
|
+
* @param id
|
|
43
|
+
*/
|
|
44
|
+
async getById(id) {
|
|
45
|
+
let rs = await this.mongoDb.findOne(this._table, null, { id: id });
|
|
46
|
+
return rs.one;
|
|
47
|
+
}
|
|
48
|
+
async get(where = null, property = null) {
|
|
49
|
+
let rs = await this.mongoDb.findOne(this._table, where, property);
|
|
50
|
+
return rs.one;
|
|
51
|
+
}
|
|
52
|
+
async countDocuments(where = null, options) {
|
|
53
|
+
let rs = await this.mongoDb.countDocuments(this._table, where);
|
|
54
|
+
return rs.count;
|
|
55
|
+
}
|
|
56
|
+
async gets(where = null, property = null, sort = null, skip = 0, limit = 0) {
|
|
57
|
+
let rs = await this.mongoDb.findMany(this._table, where, property, sort, skip, limit);
|
|
58
|
+
return rs.list;
|
|
59
|
+
}
|
|
60
|
+
async getRandoms(num, where, property = null) {
|
|
61
|
+
let rs = await this.mongoDb.simpleAggregate(this._table, where, property, null, num);
|
|
62
|
+
return rs.list;
|
|
63
|
+
}
|
|
64
|
+
async updateOne(where, model, upsert = false) {
|
|
65
|
+
let rs = await this.mongoDb.updateOne(this._table, where, model, upsert);
|
|
66
|
+
return rs;
|
|
67
|
+
}
|
|
68
|
+
async updateMany(where, model = null, upsert = false) {
|
|
69
|
+
let rs = await this.mongoDb.updateMany(this._table, where, model, upsert);
|
|
70
|
+
return rs;
|
|
71
|
+
}
|
|
72
|
+
async insert(model) {
|
|
73
|
+
let rs = await this.mongoDb.insertOne(this._table, model);
|
|
74
|
+
return rs;
|
|
75
|
+
}
|
|
76
|
+
async deleteOne(where) {
|
|
77
|
+
let rs = await this.mongoDb.deleteOne(this._table, where);
|
|
78
|
+
return rs;
|
|
79
|
+
}
|
|
80
|
+
async deleteMany(where) {
|
|
81
|
+
let rs = await this.mongoDb.deleteMany(this._table, where);
|
|
82
|
+
return rs;
|
|
83
|
+
}
|
|
84
|
+
async createIndex(index, options) {
|
|
85
|
+
let rs = await this.mongoDb.createIndex(this._table, index, options);
|
|
86
|
+
return rs;
|
|
87
|
+
}
|
|
88
|
+
aggregate(pipeline, options) {
|
|
89
|
+
let ret = this.mongoDb.aggregate(this._table, pipeline, options);
|
|
90
|
+
return ret;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 仅仅支持一级
|
|
94
|
+
* @param array 数据名称 比如 items
|
|
95
|
+
* @param where 数组内赛选条件 比如 "items.id":1
|
|
96
|
+
* @param pre_match 数组上一级赛选条件 比如 "user_id":1
|
|
97
|
+
*/
|
|
98
|
+
async getsInArray(array, where, pre_match) {
|
|
99
|
+
let agg = this.aggregate();
|
|
100
|
+
if (pre_match) {
|
|
101
|
+
agg = agg.match(pre_match);
|
|
102
|
+
}
|
|
103
|
+
agg = agg.unwind("$" + array);
|
|
104
|
+
if (where) {
|
|
105
|
+
agg = agg.match(where);
|
|
106
|
+
}
|
|
107
|
+
let all = await agg.toArray();
|
|
108
|
+
let items = [];
|
|
109
|
+
for (let i = 0; i < all.length; ++i) {
|
|
110
|
+
items.push(all[i][array]);
|
|
111
|
+
}
|
|
112
|
+
return items;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* 仅仅支持一级
|
|
116
|
+
* @param array 数据名称 比如 items
|
|
117
|
+
* @param where 数组内赛选条件 比如 "items.id":1
|
|
118
|
+
* @param pre_match 数组上一级赛选条件 比如 "user_id":1
|
|
119
|
+
*/
|
|
120
|
+
async getInArray(array, where, pre_match) {
|
|
121
|
+
let items = await this.getsInArray(array, where, pre_match);
|
|
122
|
+
if (items.length <= 0) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return items[0];
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.MongoBaseService = MongoBaseService;
|