ming_node 2.3.0 → 2.4.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/beforeTest/BaseMapperTest1.js +24 -0
- package/beforeTest/CollectUtilsTest.js +10 -0
- package/index.js +128 -125
- package/module/BaseMapper.js +38 -1
- package/package.json +1 -1
- package/utils/common/CollectionUtils.js +111 -0
- package/utils/common/DateUtils.js +36 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
Db= M.getMySql({
|
3
|
+
database: "lj_node"
|
4
|
+
})
|
5
|
+
const BaseMapper=require("../module/BaseMapper");
|
6
|
+
//mi_api 是表名
|
7
|
+
file_chat_msgMapper = new BaseMapper("file_chat_msg");
|
8
|
+
async function main(){
|
9
|
+
|
10
|
+
r=await file_chat_msgMapper.selectList({});
|
11
|
+
await BaseMapper.appendListName({
|
12
|
+
tableName:"vip_basic",
|
13
|
+
list:r,
|
14
|
+
list_idkey:"create_user",
|
15
|
+
list_namekey:"create_user_name",
|
16
|
+
db_idkey:"unionid",
|
17
|
+
db_namekey:"name"
|
18
|
+
})
|
19
|
+
console.log(r);
|
20
|
+
}
|
21
|
+
|
22
|
+
main().then(d=>{
|
23
|
+
process.exit()
|
24
|
+
})
|
@@ -0,0 +1,10 @@
|
|
1
|
+
var M=require("../index");
|
2
|
+
|
3
|
+
CollectionUtils= require("../utils/common/CollectionUtils")
|
4
|
+
|
5
|
+
r1= CollectionUtils.u([[{name:"zs"}],[{name:"zws"}]],"name")
|
6
|
+
r2= CollectionUtils.n([[{name:"zs"}],[{name:"zs"}]],"name")
|
7
|
+
console.log(r1)
|
8
|
+
console.log(r2)
|
9
|
+
|
10
|
+
console.log(MIO)
|
package/index.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
/**
|
2
|
-
* File :
|
2
|
+
* File : index.js
|
3
3
|
* By : Minglie
|
4
4
|
* QQ: 934031452
|
5
5
|
* Date :2021.12.01
|
6
|
-
* version :2.
|
6
|
+
* version :2.4.0
|
7
7
|
*/
|
8
8
|
var http = require('http');
|
9
9
|
var https = require('https');
|
@@ -46,14 +46,14 @@
|
|
46
46
|
M._globle_plugin_url_cacheMap={};
|
47
47
|
//全局插件
|
48
48
|
M._globle_plugin=new Set();
|
49
|
-
M._node_lib_path=process.
|
49
|
+
M._node_lib_path=process.cwd()+"/.ming_node_cacke";
|
50
50
|
//远程静态资源路径
|
51
51
|
M.remoteStaticPath = "https://minglie.gitee.io/mingpage/static";
|
52
52
|
M.remoteStaticPathEnable = true;
|
53
53
|
//代理服务器配置
|
54
54
|
M.proxyHost = "http://127.0.0.1:8888"
|
55
55
|
M.proxyHost = "";
|
56
|
-
|
56
|
+
M.IO={}
|
57
57
|
M.setModule=function (key,module){
|
58
58
|
M._moduleMap.set(key,module);
|
59
59
|
}
|
@@ -88,7 +88,7 @@ M.getGloblePlugin=(pluginKey)=>{
|
|
88
88
|
}
|
89
89
|
return Object.assign(obj, c1);
|
90
90
|
}
|
91
|
-
|
91
|
+
|
92
92
|
//将对象追加到url上
|
93
93
|
privateObj.appendDataToUrl = function (url, data) {
|
94
94
|
let getData = "";
|
@@ -104,10 +104,10 @@ M.getGloblePlugin=(pluginKey)=>{
|
|
104
104
|
let r = url + getData;
|
105
105
|
return r;
|
106
106
|
}
|
107
|
-
|
107
|
+
|
108
108
|
M.get = function (url, callback, data, headers) {
|
109
109
|
if (typeof callback == "function") {
|
110
|
-
|
110
|
+
|
111
111
|
} else {
|
112
112
|
headers = data || {};
|
113
113
|
data = callback;
|
@@ -153,7 +153,7 @@ M.get = function (url, callback, data, headers) {
|
|
153
153
|
if (url.startsWith("https")) {
|
154
154
|
reqHttp = https;
|
155
155
|
}
|
156
|
-
|
156
|
+
|
157
157
|
return new Promise((resolve, reject) => {
|
158
158
|
options = M.httpBefore(options);
|
159
159
|
if (options == false) {
|
@@ -186,21 +186,21 @@ M.get = function (url, callback, data, headers) {
|
|
186
186
|
req.on('error', function (err) {
|
187
187
|
reject(err);
|
188
188
|
console.error(err);
|
189
|
-
|
189
|
+
|
190
190
|
});
|
191
191
|
req.end();
|
192
192
|
})
|
193
193
|
}
|
194
194
|
M._request = function (url, callback, data, headers,methed) {
|
195
195
|
if (typeof callback == "function") {
|
196
|
-
|
196
|
+
|
197
197
|
} else {
|
198
198
|
headers = data || {};
|
199
199
|
data = callback;
|
200
200
|
callback = () => {
|
201
201
|
};
|
202
202
|
}
|
203
|
-
|
203
|
+
|
204
204
|
url = privateObj.appendDataToUrl(url, M.reqComQueryparams);
|
205
205
|
var html = '';
|
206
206
|
var urlObj = url_module.parse(url)
|
@@ -238,7 +238,7 @@ M._request = function (url, callback, data, headers,methed) {
|
|
238
238
|
if (url.startsWith("https")) {
|
239
239
|
reqHttp = https;
|
240
240
|
}
|
241
|
-
|
241
|
+
|
242
242
|
return new Promise((resolve, reject) => {
|
243
243
|
var req = reqHttp.request(options, function (res) {
|
244
244
|
options = M.httpBefore(options);
|
@@ -268,9 +268,9 @@ M._request = function (url, callback, data, headers,methed) {
|
|
268
268
|
M.httpEnd(html);
|
269
269
|
resolve(html);
|
270
270
|
});
|
271
|
-
|
271
|
+
|
272
272
|
});
|
273
|
-
|
273
|
+
|
274
274
|
req.on('error', function (err) {
|
275
275
|
console.error(err);
|
276
276
|
});
|
@@ -283,7 +283,7 @@ M.delete=(url, callback, data, headers)=>M._request(url, callback, data, headers
|
|
283
283
|
M.put=(url, callback, data, headers)=>M._request(url, callback, data, headers,"PUT")
|
284
284
|
M.postJson = function (url, callback, data, headers) {
|
285
285
|
if (typeof callback == "function") {
|
286
|
-
|
286
|
+
|
287
287
|
} else {
|
288
288
|
headers = data || {};
|
289
289
|
data = callback;
|
@@ -321,9 +321,9 @@ M.postJson = function (url, callback, data, headers) {
|
|
321
321
|
if (url.startsWith("https")) {
|
322
322
|
reqHttp = https;
|
323
323
|
}
|
324
|
-
|
324
|
+
|
325
325
|
return new Promise((resolve, reject) => {
|
326
|
-
|
326
|
+
|
327
327
|
var req = reqHttp.request(options, function (res) {
|
328
328
|
options = M.httpBefore(options);
|
329
329
|
if (options == false) {
|
@@ -352,9 +352,9 @@ M.postJson = function (url, callback, data, headers) {
|
|
352
352
|
M.httpEnd(html);
|
353
353
|
resolve(html);
|
354
354
|
});
|
355
|
-
|
355
|
+
|
356
356
|
});
|
357
|
-
|
357
|
+
|
358
358
|
req.on('error', function (err) {
|
359
359
|
console.error(err);
|
360
360
|
});
|
@@ -411,7 +411,7 @@ M.request.put=M.put;
|
|
411
411
|
});
|
412
412
|
return promise;
|
413
413
|
}
|
414
|
-
|
414
|
+
|
415
415
|
M.import=async function (url,callback){
|
416
416
|
if(M._globle_lib_cacheMap[url]){
|
417
417
|
return M._globle_lib_cacheMap[url];
|
@@ -426,9 +426,9 @@ M.request.put=M.put;
|
|
426
426
|
M._globle_lib_cacheMap[url]=r;
|
427
427
|
return r
|
428
428
|
}
|
429
|
-
|
429
|
+
|
430
430
|
}
|
431
|
-
|
431
|
+
|
432
432
|
/**
|
433
433
|
*下载图片
|
434
434
|
*/
|
@@ -477,23 +477,23 @@ M.request.put=M.put;
|
|
477
477
|
});
|
478
478
|
req.end();
|
479
479
|
}
|
480
|
-
|
480
|
+
|
481
481
|
/**
|
482
482
|
*打印结果前钩子
|
483
483
|
*/
|
484
484
|
M.beforeLogData = function (res, desc) {
|
485
485
|
console.log("-----" + desc + "-----" + res.req.path + "-------------");
|
486
486
|
}
|
487
|
-
|
488
|
-
|
487
|
+
|
488
|
+
|
489
489
|
/**
|
490
490
|
*打印结果后钩子
|
491
491
|
*/
|
492
492
|
M.afterLogData = function () {
|
493
|
-
|
493
|
+
|
494
494
|
console.log("--END")
|
495
495
|
}
|
496
|
-
|
496
|
+
|
497
497
|
/**
|
498
498
|
*简化get请求
|
499
499
|
*/
|
@@ -516,9 +516,9 @@ M.request.put=M.put;
|
|
516
516
|
}, data
|
517
517
|
);
|
518
518
|
}
|
519
|
-
|
519
|
+
|
520
520
|
}
|
521
|
-
|
521
|
+
|
522
522
|
/**
|
523
523
|
*简化post请求
|
524
524
|
*/
|
@@ -530,7 +530,7 @@ M.request.put=M.put;
|
|
530
530
|
}, data
|
531
531
|
);
|
532
532
|
}
|
533
|
-
|
533
|
+
|
534
534
|
M.postJson0 = function (url, data) {
|
535
535
|
M.postJson(
|
536
536
|
M.host + url,
|
@@ -539,28 +539,28 @@ M.request.put=M.put;
|
|
539
539
|
}, data
|
540
540
|
);
|
541
541
|
}
|
542
|
-
|
542
|
+
|
543
543
|
M.template = function (str) {
|
544
544
|
return eval("`" + str + "`");
|
545
545
|
}
|
546
|
-
|
547
|
-
|
546
|
+
|
547
|
+
|
548
548
|
/**
|
549
549
|
* ----------------------客户端END--------------------------------------------
|
550
550
|
*/
|
551
|
-
|
552
|
-
|
551
|
+
|
552
|
+
|
553
553
|
/**
|
554
554
|
* ----------------------数据持久化读写START--------------------------------------------
|
555
555
|
*/
|
556
|
-
|
556
|
+
|
557
557
|
/**
|
558
558
|
*递归创建文件夹
|
559
559
|
*/
|
560
560
|
M.mkdir = function (dirpath, dirname) {
|
561
561
|
//判断是否是第一次调用
|
562
562
|
if (typeof dirname === "undefined") {
|
563
|
-
|
563
|
+
|
564
564
|
if (dirpath.indexOf(".") > 0) {
|
565
565
|
dirpath = path.dirname(dirpath);
|
566
566
|
}
|
@@ -603,7 +603,7 @@ M.request.put=M.put;
|
|
603
603
|
});
|
604
604
|
});
|
605
605
|
}
|
606
|
-
|
606
|
+
|
607
607
|
privateObj.checkDirectory = function (src, dst, callback) {
|
608
608
|
fs.access(dst, fs.constants.F_OK, (err) => {
|
609
609
|
if (err) {
|
@@ -614,7 +614,7 @@ M.request.put=M.put;
|
|
614
614
|
}
|
615
615
|
});
|
616
616
|
};
|
617
|
-
|
617
|
+
|
618
618
|
M.readFile = function (file) {
|
619
619
|
if (fs.existsSync(file)) {
|
620
620
|
return fs.readFileSync(file, "utf-8");
|
@@ -639,7 +639,7 @@ M.request.put=M.put;
|
|
639
639
|
M.writeObjToFile = function (file, obj) {
|
640
640
|
M.writeFile(file, JSON.stringify(obj));
|
641
641
|
}
|
642
|
-
|
642
|
+
|
643
643
|
M.addObjToFile = function (file, obj) {
|
644
644
|
try {
|
645
645
|
var d = M.getObjByFile(file);
|
@@ -667,7 +667,7 @@ M.request.put=M.put;
|
|
667
667
|
}
|
668
668
|
M.writeObjToFile(file, d);
|
669
669
|
}
|
670
|
-
|
670
|
+
|
671
671
|
M.deleteObjByPropFile = function (file, o) {
|
672
672
|
let o_key = Object.keys(o)[0];
|
673
673
|
let o_val = o[o_key]
|
@@ -683,7 +683,7 @@ M.request.put=M.put;
|
|
683
683
|
M.writeObjToFile(file, d);
|
684
684
|
return d_num;
|
685
685
|
}
|
686
|
-
|
686
|
+
|
687
687
|
M.updateObjByIdFile = function (file, obj) {
|
688
688
|
var d = M.getObjByFile(file);
|
689
689
|
for (let i = 0; i < d.length; i++) {
|
@@ -791,10 +791,10 @@ M.request.put=M.put;
|
|
791
791
|
} catch (e) {
|
792
792
|
preObj = {};
|
793
793
|
}
|
794
|
-
|
794
|
+
|
795
795
|
M.writeObjToFile(M.map_path, Object.assign(preObj, a));
|
796
796
|
}
|
797
|
-
|
797
|
+
|
798
798
|
M.getAttribute = function (k) {
|
799
799
|
return M.getObjByFile(M.map_path)[k];
|
800
800
|
}
|
@@ -825,14 +825,14 @@ M.request.put=M.put;
|
|
825
825
|
});
|
826
826
|
} )
|
827
827
|
}
|
828
|
-
|
829
|
-
|
828
|
+
|
829
|
+
|
830
830
|
M.readCsvLine =async function (file, callback) {
|
831
831
|
return M.readLine(file, function (line) {
|
832
832
|
callback(line.replace("\r", "").split(/(?<!\"[^,]+),(?![^,]+\")/));
|
833
833
|
})
|
834
834
|
}
|
835
|
-
|
835
|
+
|
836
836
|
M.getFileNameByUrl=function (url){
|
837
837
|
let split= url.split("/");
|
838
838
|
return split[split.length-1]
|
@@ -843,7 +843,7 @@ M.getFileList = function (path) {
|
|
843
843
|
function readFile(path, filesList, targetObj) {
|
844
844
|
files = fs.readdirSync(path);//需要用到同步读取
|
845
845
|
files.forEach(walk);
|
846
|
-
|
846
|
+
|
847
847
|
function walk(file) {
|
848
848
|
states = fs.statSync(path + '/' + file);
|
849
849
|
if (states.isDirectory()) {
|
@@ -855,7 +855,7 @@ M.getFileList = function (path) {
|
|
855
855
|
item = {name: file, children: [], value: path + '/' + file};
|
856
856
|
filesList.push(item);
|
857
857
|
}
|
858
|
-
|
858
|
+
|
859
859
|
readFile(path + '/' + file, filesList, item);
|
860
860
|
} else {
|
861
861
|
//创建一个对象保存信息
|
@@ -863,7 +863,7 @@ M.getFileList = function (path) {
|
|
863
863
|
obj.size = states.size;//文件大小,以字节为单位
|
864
864
|
obj.name = file;//文件名
|
865
865
|
obj.path = path + '/' + file; //文件绝对路径
|
866
|
-
|
866
|
+
|
867
867
|
if (targetObj["children"]) {
|
868
868
|
var item = {name: file, value: obj.path}
|
869
869
|
targetObj["children"].push(item);
|
@@ -874,7 +874,7 @@ M.getFileList = function (path) {
|
|
874
874
|
}
|
875
875
|
}
|
876
876
|
}
|
877
|
-
|
877
|
+
|
878
878
|
var filesList = [];
|
879
879
|
var targetObj = {};
|
880
880
|
readFile(path, filesList, targetObj);
|
@@ -953,8 +953,8 @@ M.log = function (...params) {
|
|
953
953
|
if (M.log_file_enable) M.appendFile(M.log_path, r);
|
954
954
|
}
|
955
955
|
}
|
956
|
-
|
957
|
-
|
956
|
+
|
957
|
+
|
958
958
|
M.getSqlite = function (dbName) {
|
959
959
|
if (M.sqlite) {
|
960
960
|
return M.sqlite;
|
@@ -992,7 +992,7 @@ M.log = function (...params) {
|
|
992
992
|
M.sqlite = Db;
|
993
993
|
return Db;
|
994
994
|
}
|
995
|
-
|
995
|
+
|
996
996
|
///////////////////////////////
|
997
997
|
|
998
998
|
|
@@ -1103,12 +1103,12 @@ M.getMongoDB = function (dbConfig) {
|
|
1103
1103
|
var MongoDB=require('mongodb');
|
1104
1104
|
var MongoClient =MongoDB.MongoClient;
|
1105
1105
|
const ObjectID = MongoDB.ObjectID;
|
1106
|
-
|
1106
|
+
|
1107
1107
|
var Config={
|
1108
1108
|
dbUrl: dbConfig.dbUrl|| 'mongodb://localhost:27017/',
|
1109
1109
|
dbName: dbConfig.dbName|| 'miapi'
|
1110
1110
|
};
|
1111
|
-
|
1111
|
+
|
1112
1112
|
class MingMongoClient{
|
1113
1113
|
static connect(){
|
1114
1114
|
return new Promise((resolve,reject)=>{
|
@@ -1127,7 +1127,7 @@ M.getMongoDB = function (dbConfig) {
|
|
1127
1127
|
}
|
1128
1128
|
})
|
1129
1129
|
}
|
1130
|
-
|
1130
|
+
|
1131
1131
|
static find(collectionName,json){
|
1132
1132
|
if(!json){
|
1133
1133
|
json=collectionName
|
@@ -1143,7 +1143,7 @@ M.getMongoDB = function (dbConfig) {
|
|
1143
1143
|
}
|
1144
1144
|
resolve(docs);
|
1145
1145
|
})
|
1146
|
-
|
1146
|
+
|
1147
1147
|
})
|
1148
1148
|
})
|
1149
1149
|
}
|
@@ -1178,14 +1178,14 @@ M.getMongoDB = function (dbConfig) {
|
|
1178
1178
|
if(err){
|
1179
1179
|
reject(err);
|
1180
1180
|
}else{
|
1181
|
-
|
1181
|
+
|
1182
1182
|
resolve(result);
|
1183
1183
|
}
|
1184
1184
|
})
|
1185
1185
|
})
|
1186
1186
|
})
|
1187
1187
|
}
|
1188
|
-
|
1188
|
+
|
1189
1189
|
static insertMany(collectionName,json){
|
1190
1190
|
if(!json){
|
1191
1191
|
json=collectionName
|
@@ -1197,14 +1197,14 @@ M.getMongoDB = function (dbConfig) {
|
|
1197
1197
|
if(err){
|
1198
1198
|
reject(err);
|
1199
1199
|
}else{
|
1200
|
-
|
1200
|
+
|
1201
1201
|
resolve(result);
|
1202
1202
|
}
|
1203
1203
|
})
|
1204
1204
|
})
|
1205
1205
|
})
|
1206
1206
|
}
|
1207
|
-
|
1207
|
+
|
1208
1208
|
static remove(collectionName,json){
|
1209
1209
|
if(!json){
|
1210
1210
|
json=collectionName
|
@@ -1216,14 +1216,14 @@ M.getMongoDB = function (dbConfig) {
|
|
1216
1216
|
if(err){
|
1217
1217
|
reject(err);
|
1218
1218
|
}else{
|
1219
|
-
|
1219
|
+
|
1220
1220
|
resolve(result);
|
1221
1221
|
}
|
1222
1222
|
})
|
1223
1223
|
})
|
1224
1224
|
})
|
1225
1225
|
}
|
1226
|
-
|
1226
|
+
|
1227
1227
|
static getById(collectionName,id){
|
1228
1228
|
if(!id){
|
1229
1229
|
id=collectionName
|
@@ -1244,7 +1244,7 @@ M.getMongoDB = function (dbConfig) {
|
|
1244
1244
|
})
|
1245
1245
|
})
|
1246
1246
|
}
|
1247
|
-
|
1247
|
+
|
1248
1248
|
}
|
1249
1249
|
MingMongoClient.ObjectID=(id)=> new ObjectID(id)
|
1250
1250
|
let Db=MingMongoClient;
|
@@ -1253,9 +1253,9 @@ M.getMongoDB = function (dbConfig) {
|
|
1253
1253
|
M.mongoDb=Db;
|
1254
1254
|
return Db;
|
1255
1255
|
}
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1256
|
+
|
1257
|
+
|
1258
|
+
|
1259
1259
|
/**
|
1260
1260
|
* ----------------------Sql CRUD START-------------------------------------------
|
1261
1261
|
*/
|
@@ -1273,7 +1273,7 @@ M.getMongoDB = function (dbConfig) {
|
|
1273
1273
|
let sql = "insert into " + tableName + fields + " values " + values;
|
1274
1274
|
return sql;
|
1275
1275
|
}
|
1276
|
-
|
1276
|
+
|
1277
1277
|
M.getDeleteObjSql = function (tableName, obj) {
|
1278
1278
|
var fields = [];
|
1279
1279
|
for (let field in obj) {
|
@@ -1283,7 +1283,7 @@ M.getMongoDB = function (dbConfig) {
|
|
1283
1283
|
sql = sql.replace(/,/g, " and ")
|
1284
1284
|
return sql;
|
1285
1285
|
}
|
1286
|
-
|
1286
|
+
|
1287
1287
|
M.getUpdateObjSql = function (tableName, obj, caseObj) {
|
1288
1288
|
var fields = [];
|
1289
1289
|
for (let field in obj) {
|
@@ -1300,11 +1300,11 @@ M.getMongoDB = function (dbConfig) {
|
|
1300
1300
|
}
|
1301
1301
|
sql = `update ${tableName} set ${fields.map(u => u + "='" + obj[u] + "'")} where ${caseObjfields.map(u => u + "='" + caseObj[u] + "'").join(" and ")}`;
|
1302
1302
|
}
|
1303
|
-
|
1303
|
+
|
1304
1304
|
return sql;
|
1305
1305
|
}
|
1306
|
-
|
1307
|
-
|
1306
|
+
|
1307
|
+
|
1308
1308
|
M.getSelectObjSql = function (tableName, obj) {
|
1309
1309
|
var fields = [];
|
1310
1310
|
for (let field in obj) {
|
@@ -1314,17 +1314,17 @@ M.getMongoDB = function (dbConfig) {
|
|
1314
1314
|
sql = sql.replace(/,/g, " and ")
|
1315
1315
|
return sql;
|
1316
1316
|
}
|
1317
|
-
|
1317
|
+
|
1318
1318
|
/**
|
1319
1319
|
* ----------------------Sql CRUD START-------------------------------------------
|
1320
1320
|
*/
|
1321
|
-
|
1322
|
-
|
1321
|
+
|
1322
|
+
|
1323
1323
|
/**
|
1324
1324
|
* ----------------------数据持久化读写END--------------------------------------------
|
1325
1325
|
*/
|
1326
|
-
|
1327
|
-
|
1326
|
+
|
1327
|
+
|
1328
1328
|
/**
|
1329
1329
|
* ----------------------服务器端START--------------------------------------------
|
1330
1330
|
*/
|
@@ -1381,7 +1381,7 @@ M.failResult=(msg,code,d)=>{
|
|
1381
1381
|
}
|
1382
1382
|
return result;
|
1383
1383
|
}
|
1384
|
-
|
1384
|
+
|
1385
1385
|
/**
|
1386
1386
|
*获取驼峰式的对象
|
1387
1387
|
*/
|
@@ -1392,7 +1392,7 @@ M.failResult=(msg,code,d)=>{
|
|
1392
1392
|
}
|
1393
1393
|
return result;
|
1394
1394
|
}
|
1395
|
-
|
1395
|
+
|
1396
1396
|
M.randomStr = function () {
|
1397
1397
|
return (Math.random().toString(36) + new Date().getTime()).slice(2);
|
1398
1398
|
}
|
@@ -1430,7 +1430,7 @@ M.urlParse = function (url) {
|
|
1430
1430
|
}
|
1431
1431
|
return s
|
1432
1432
|
};
|
1433
|
-
|
1433
|
+
|
1434
1434
|
/**
|
1435
1435
|
* 异常处理钩子
|
1436
1436
|
* @param e
|
@@ -1442,9 +1442,9 @@ M.urlParse = function (url) {
|
|
1442
1442
|
}
|
1443
1443
|
return true;
|
1444
1444
|
}
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1445
|
+
|
1446
|
+
|
1447
|
+
|
1448
1448
|
M.server = function () {
|
1449
1449
|
var G = this; /*全局变量,也就是M*/
|
1450
1450
|
//静态资源路径
|
@@ -1495,7 +1495,7 @@ M.urlParse = function (url) {
|
|
1495
1495
|
}
|
1496
1496
|
return isRest;
|
1497
1497
|
}
|
1498
|
-
|
1498
|
+
|
1499
1499
|
req.ip = req.headers['x-forwarded-for'] ||
|
1500
1500
|
req.connection.remoteAddress ||
|
1501
1501
|
req.socket.remoteAddress ||
|
@@ -1571,7 +1571,7 @@ M.urlParse = function (url) {
|
|
1571
1571
|
res.end();
|
1572
1572
|
G._end(req,text);
|
1573
1573
|
}
|
1574
|
-
|
1574
|
+
|
1575
1575
|
res.render = async function (url) {
|
1576
1576
|
res.alreadySend = true;
|
1577
1577
|
let text="";
|
@@ -1719,12 +1719,12 @@ M.urlParse = function (url) {
|
|
1719
1719
|
M["_gloable_exception_handle"](e,req,res);
|
1720
1720
|
}
|
1721
1721
|
}
|
1722
|
-
|
1723
|
-
|
1722
|
+
|
1723
|
+
|
1724
1724
|
app.begin = function (callback) {
|
1725
1725
|
G._begin = callback;
|
1726
1726
|
}
|
1727
|
-
|
1727
|
+
|
1728
1728
|
app.end = function (callback) {
|
1729
1729
|
G._end = callback;
|
1730
1730
|
}
|
@@ -1782,7 +1782,7 @@ M.urlParse = function (url) {
|
|
1782
1782
|
url = url.substr(0, url.indexOf(":"));
|
1783
1783
|
G._rest[url] = realUrl;
|
1784
1784
|
}
|
1785
|
-
|
1785
|
+
|
1786
1786
|
G._get[url] = callback;
|
1787
1787
|
}
|
1788
1788
|
/**
|
@@ -1829,8 +1829,8 @@ M.urlParse = function (url) {
|
|
1829
1829
|
}
|
1830
1830
|
G._mapping[url] = callback;
|
1831
1831
|
}
|
1832
|
-
|
1833
|
-
|
1832
|
+
|
1833
|
+
|
1834
1834
|
M.formatUrl = function (url) {
|
1835
1835
|
if (!url.endsWith('/')) {
|
1836
1836
|
url = url + '/';
|
@@ -1847,7 +1847,7 @@ M.urlParse = function (url) {
|
|
1847
1847
|
req.url = url;
|
1848
1848
|
app(req, res);
|
1849
1849
|
}
|
1850
|
-
|
1850
|
+
|
1851
1851
|
/**
|
1852
1852
|
*重定向
|
1853
1853
|
*/
|
@@ -1855,12 +1855,12 @@ M.urlParse = function (url) {
|
|
1855
1855
|
res.writeHead(302, {'Content-Type': 'text/html; charset=utf-8', 'Location': url});
|
1856
1856
|
res.end();
|
1857
1857
|
}
|
1858
|
-
|
1858
|
+
|
1859
1859
|
app.set = function (k, v) {
|
1860
1860
|
M["_" + k] = v;
|
1861
1861
|
}
|
1862
|
-
|
1863
|
-
|
1862
|
+
|
1863
|
+
|
1864
1864
|
//全局异常钩子
|
1865
1865
|
app.set("gloable_exception_handle",(err,req,res)=>{
|
1866
1866
|
console.error(err.stack)
|
@@ -1869,12 +1869,12 @@ M.urlParse = function (url) {
|
|
1869
1869
|
res.send(M.result(err.message,false,-1));
|
1870
1870
|
}
|
1871
1871
|
})
|
1872
|
-
|
1872
|
+
|
1873
1873
|
//render异常钩子
|
1874
1874
|
app.set("render_exception_handle",(err,req,res)=>{
|
1875
1875
|
console.error(err.stack)
|
1876
1876
|
})
|
1877
|
-
|
1877
|
+
|
1878
1878
|
//没有对应接口时的处理器
|
1879
1879
|
app.set("no_router_handle",(req,res)=>{
|
1880
1880
|
res.end('no router')
|
@@ -1903,19 +1903,19 @@ M.urlParse = function (url) {
|
|
1903
1903
|
res.end();
|
1904
1904
|
})
|
1905
1905
|
|
1906
|
-
|
1907
|
-
|
1908
1906
|
app.listen = function (port) {
|
1909
1907
|
const server= http.createServer(app).listen(port);
|
1910
1908
|
console.log("listen on port:" + port);
|
1911
1909
|
return server;
|
1912
1910
|
}
|
1911
|
+
|
1912
|
+
global.app=app;
|
1913
1913
|
return app;
|
1914
1914
|
}
|
1915
1915
|
M["_gloable_exception_handle"]=(err)=>{
|
1916
1916
|
console.error(err)
|
1917
1917
|
}
|
1918
|
-
|
1918
|
+
|
1919
1919
|
//异常捕获
|
1920
1920
|
process.on('uncaughtException', function (err) {
|
1921
1921
|
M["_gloable_exception_handle"](err,M.req,M.res);
|
@@ -1924,8 +1924,8 @@ M.urlParse = function (url) {
|
|
1924
1924
|
process.on('unhandledRejection',function(err,promise){
|
1925
1925
|
M["_gloable_exception_handle"](err,M.req,M.res);
|
1926
1926
|
});
|
1927
|
-
|
1928
|
-
|
1927
|
+
|
1928
|
+
|
1929
1929
|
/**
|
1930
1930
|
* 代理服务器start
|
1931
1931
|
*/
|
@@ -1956,7 +1956,7 @@ M.urlParse = function (url) {
|
|
1956
1956
|
})
|
1957
1957
|
})
|
1958
1958
|
}
|
1959
|
-
|
1959
|
+
|
1960
1960
|
M.axios = function (axiosConfig) {
|
1961
1961
|
axiosConfig.headers.host = "";
|
1962
1962
|
var urlObj = url_module.parse(axiosConfig.url)
|
@@ -1986,7 +1986,7 @@ M.urlParse = function (url) {
|
|
1986
1986
|
M.httpEnd(html);
|
1987
1987
|
resolve(html);
|
1988
1988
|
});
|
1989
|
-
|
1989
|
+
|
1990
1990
|
});
|
1991
1991
|
req.on('error', function (err) {
|
1992
1992
|
console.error(err);
|
@@ -2020,7 +2020,7 @@ privateObj.dealUseServer = async function (req, res) {
|
|
2020
2020
|
let fileName = pathname.replace("/", "");
|
2021
2021
|
//获取文件的后缀名
|
2022
2022
|
var extname = path.extname(pathname);
|
2023
|
-
|
2023
|
+
|
2024
2024
|
if (fileName.startsWith("__default_")) {
|
2025
2025
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
2026
2026
|
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With");
|
@@ -2035,7 +2035,7 @@ privateObj.dealUseServer = async function (req, res) {
|
|
2035
2035
|
if (!res.alreadySend) await res.renderUrl(M.remoteStaticPath + pathname)
|
2036
2036
|
return;
|
2037
2037
|
}
|
2038
|
-
|
2038
|
+
|
2039
2039
|
if (pathname != '/favicon.ico') { /*过滤请求favicon.ico*/
|
2040
2040
|
//文件操作获取 static下面的index.html
|
2041
2041
|
fs.readFile(staticPath + '/' + pathname, function (err, data) {
|
@@ -2059,7 +2059,7 @@ privateObj.dealUseServer = async function (req, res) {
|
|
2059
2059
|
res.end();
|
2060
2060
|
}
|
2061
2061
|
}
|
2062
|
-
|
2062
|
+
|
2063
2063
|
/*SSE SERVER */
|
2064
2064
|
M.sseServer = function () {
|
2065
2065
|
//sse 心跳
|
@@ -2160,12 +2160,12 @@ privateObj.dealUseServer = async function (req, res) {
|
|
2160
2160
|
}
|
2161
2161
|
return app;
|
2162
2162
|
}
|
2163
|
-
|
2163
|
+
|
2164
2164
|
/**
|
2165
2165
|
* ----------------------服务器端END--------------------------------------------
|
2166
2166
|
*/
|
2167
|
-
|
2168
|
-
|
2167
|
+
|
2168
|
+
|
2169
2169
|
/**
|
2170
2170
|
* ----------------------其他工具函数START--------------------------------------------
|
2171
2171
|
*/
|
@@ -2175,11 +2175,11 @@ privateObj.dealUseServer = async function (req, res) {
|
|
2175
2175
|
if (err || stderr) console.error(err, stderr);
|
2176
2176
|
reslove(stdout);
|
2177
2177
|
});
|
2178
|
-
|
2178
|
+
|
2179
2179
|
})
|
2180
2180
|
return promise;
|
2181
2181
|
}
|
2182
|
-
|
2182
|
+
|
2183
2183
|
M.getMyIp = function () {
|
2184
2184
|
var interfaces = require('os').networkInterfaces();
|
2185
2185
|
for (var devName in interfaces) {
|
@@ -2192,17 +2192,17 @@ privateObj.dealUseServer = async function (req, res) {
|
|
2192
2192
|
}
|
2193
2193
|
}
|
2194
2194
|
}
|
2195
|
-
|
2195
|
+
|
2196
2196
|
/**
|
2197
2197
|
*对象转JSON key不用引号括起来,因兼容性不好,所以去掉
|
2198
2198
|
*/
|
2199
|
-
|
2199
|
+
|
2200
2200
|
/**
|
2201
2201
|
M.JSOM_Stringify=function(obj){
|
2202
2202
|
return JSON.stringify(obj).replace(/"(\w+)"(\s*:\s*)/gis, '$1$2');
|
2203
2203
|
}
|
2204
2204
|
*/
|
2205
|
-
|
2205
|
+
|
2206
2206
|
M.sleep = function (numberMillis) {
|
2207
2207
|
var now = new Date();
|
2208
2208
|
var exitTime = now.getTime() + numberMillis;
|
@@ -2224,7 +2224,7 @@ M.delayMs=async function (ms){
|
|
2224
2224
|
/**
|
2225
2225
|
* ----------------------其他工具函数END--------------------------------------------
|
2226
2226
|
*/
|
2227
|
-
|
2227
|
+
|
2228
2228
|
/**
|
2229
2229
|
* 静态资源对应表
|
2230
2230
|
*/
|
@@ -2742,11 +2742,11 @@ M.delayMs=async function (ms){
|
|
2742
2742
|
".conf": "text/conf",
|
2743
2743
|
".sql": "text/sql"
|
2744
2744
|
}
|
2745
|
-
|
2745
|
+
|
2746
2746
|
M.test = function () {
|
2747
2747
|
console.log(privateObj.staticMime[".jssson"] || "aa")
|
2748
2748
|
}
|
2749
|
-
|
2749
|
+
|
2750
2750
|
M.getRemoteCacheByUrl = async function (url) {
|
2751
2751
|
if (url in M._globle_cacheMap) {
|
2752
2752
|
return M._globle_cacheMap[url];
|
@@ -2761,7 +2761,7 @@ M.delayMs=async function (ms){
|
|
2761
2761
|
M._globle_cacheMap[url] = text;
|
2762
2762
|
return text;
|
2763
2763
|
}
|
2764
|
-
|
2764
|
+
|
2765
2765
|
M.init = function () {
|
2766
2766
|
/***
|
2767
2767
|
* 下划线命名转为驼峰命名
|
@@ -2773,7 +2773,7 @@ M.delayMs=async function (ms){
|
|
2773
2773
|
});
|
2774
2774
|
return str;
|
2775
2775
|
}
|
2776
|
-
|
2776
|
+
|
2777
2777
|
/***
|
2778
2778
|
* 驼峰命名转下划线
|
2779
2779
|
*/
|
@@ -2782,7 +2782,7 @@ M.delayMs=async function (ms){
|
|
2782
2782
|
str = this.replace(/([A-Z])/g, "_$1").toLowerCase();
|
2783
2783
|
return str;
|
2784
2784
|
}
|
2785
|
-
|
2785
|
+
|
2786
2786
|
//首字母变大写
|
2787
2787
|
String.prototype.firstChartoUpper = function () {
|
2788
2788
|
return this.replace(/^([a-z])/g, function (word) {
|
@@ -2816,9 +2816,12 @@ M.delayMs=async function (ms){
|
|
2816
2816
|
}
|
2817
2817
|
return fmt;
|
2818
2818
|
}
|
2819
|
-
|
2820
|
-
|
2819
|
+
|
2820
|
+
|
2821
2821
|
}
|
2822
2822
|
M.init();
|
2823
|
-
|
2823
|
+
|
2824
|
+
global.M=M;
|
2825
|
+
global.MIO=M.IO;
|
2826
|
+
|
2824
2827
|
module.exports = M;
|
package/module/BaseMapper.js
CHANGED
@@ -320,7 +320,44 @@ class BaseMapper {
|
|
320
320
|
return sql;
|
321
321
|
}
|
322
322
|
|
323
|
-
|
323
|
+
/**
|
324
|
+
* 给 list 加name
|
325
|
+
* @param tableName 表名
|
326
|
+
* @param list 列表
|
327
|
+
* @param list_idkey 列表中的idkey
|
328
|
+
* @param list_namekey 列表中的namekey
|
329
|
+
* @param db_idkey 库中的namekey
|
330
|
+
* @param db_namekey 库中的namekey
|
331
|
+
* @returns {Promise<void>}
|
332
|
+
*/
|
333
|
+
static async appendListName(
|
334
|
+
{
|
335
|
+
tableName="t_user",
|
336
|
+
list,
|
337
|
+
list_idkey="create_user",
|
338
|
+
list_namekey="name",
|
339
|
+
db_idkey="create_user",
|
340
|
+
db_namekey="create_user_name",
|
341
|
+
}
|
342
|
+
){
|
343
|
+
if(list==null || list.length==0){
|
344
|
+
return
|
345
|
+
}
|
346
|
+
const idKeyList=list.map(u=>u[list_idkey]);
|
347
|
+
let sql=`select ${db_idkey}, ${db_namekey} from ${tableName} where ${db_idkey} in (?)`
|
348
|
+
let dbDataList=await Db.doSql(sql,[idKeyList]);
|
349
|
+
const userMap = {};
|
350
|
+
for (let i = 0; i < dbDataList.length; i++) {
|
351
|
+
const idkeyV = dbDataList[i][db_idkey];
|
352
|
+
userMap[idkeyV] = dbDataList[i];
|
353
|
+
}
|
354
|
+
for (let i=0;i<list.length;i++){
|
355
|
+
if(userMap[list[i][list_idkey]]){
|
356
|
+
list[i][list_namekey]= userMap[list[i][list_idkey]][db_namekey];
|
357
|
+
}
|
358
|
+
}
|
359
|
+
return;
|
360
|
+
}
|
324
361
|
|
325
362
|
}
|
326
363
|
|
package/package.json
CHANGED
@@ -23,6 +23,117 @@ class CollectionUtils{
|
|
23
23
|
}
|
24
24
|
|
25
25
|
|
26
|
+
static list2Csv({list,titlesKeys,titlesNames}){
|
27
|
+
if(list==null||list.length==0){
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
if(!titlesKeys){
|
31
|
+
titlesKeys=Object.keys(list[0])
|
32
|
+
}
|
33
|
+
if(!titlesNames){
|
34
|
+
titlesNames=titlesKeys
|
35
|
+
}
|
36
|
+
let bodyStr="";
|
37
|
+
list.forEach((items, index) => {
|
38
|
+
for(let key of titlesKeys){
|
39
|
+
items[key]=items[key]+"";
|
40
|
+
bodyStr=bodyStr+`"${!items[key]?'null': ""+items[key].replace(/\s/g,"")}"`+","
|
41
|
+
}
|
42
|
+
// console.log(bodyStr)
|
43
|
+
bodyStr=bodyStr+"\n";
|
44
|
+
})
|
45
|
+
return `\ufeff`+titlesNames+'\n'+bodyStr;
|
46
|
+
}
|
47
|
+
|
48
|
+
static n(arr,key="unionId"){
|
49
|
+
function n1(r1,r2,key){
|
50
|
+
if(r1==null || r2==null ||r1==undefined||r2==undefined || r1.length==0 || r2.length==0){
|
51
|
+
return []
|
52
|
+
}
|
53
|
+
let r2keyList=r2.map(u=>u[key])
|
54
|
+
let result= r1.filter(u=>r2keyList.indexOf(u[key])!==-1)
|
55
|
+
return result;
|
56
|
+
}
|
57
|
+
let allResult=[]
|
58
|
+
try{
|
59
|
+
if(arr==null || arr==undefined || arr.length==0){
|
60
|
+
return []
|
61
|
+
}
|
62
|
+
for (let i=0;i<arr.length;i++){
|
63
|
+
if(arr[i]==null||arr[i]==undefined||arr[i].length==0){
|
64
|
+
return []
|
65
|
+
}
|
66
|
+
}
|
67
|
+
allResult= arr.reduce((r1,r2)=>{
|
68
|
+
let ri= n1(r1,r2,key)
|
69
|
+
if(ri==null||ri==undefined||ri.length==0){
|
70
|
+
throw []
|
71
|
+
}
|
72
|
+
return ri;
|
73
|
+
},arr[0])
|
74
|
+
}catch (e){
|
75
|
+
allResult=e;
|
76
|
+
}
|
77
|
+
return allResult;
|
78
|
+
}
|
79
|
+
|
80
|
+
static u(arr,key="unionId"){
|
81
|
+
function u1(r1,r2,key){
|
82
|
+
if(r1==null && r2==null){
|
83
|
+
return []
|
84
|
+
}
|
85
|
+
let r=[...r1,...r2];
|
86
|
+
return r;
|
87
|
+
}
|
88
|
+
let allResult=[]
|
89
|
+
try{
|
90
|
+
if(arr==null || arr==undefined || arr.length==0){
|
91
|
+
return []
|
92
|
+
}
|
93
|
+
for (let i=0;i<arr.length;i++){
|
94
|
+
if(arr[i]==null||arr[i]==undefined||arr[i].length==0){
|
95
|
+
return []
|
96
|
+
}
|
97
|
+
}
|
98
|
+
allResult= arr.reduce((r1,r2)=>{
|
99
|
+
let ri= u1(r1,r2,key)
|
100
|
+
if(ri==null||ri==undefined||ri.length==0){
|
101
|
+
return [];
|
102
|
+
}
|
103
|
+
return ri;
|
104
|
+
},arr[0])
|
105
|
+
}catch (e){
|
106
|
+
allResult=[];
|
107
|
+
}
|
108
|
+
let allResultKeys=allResult.map(u=>u[key]);
|
109
|
+
let allResult1=[];
|
110
|
+
let allResult1KeyObj={};
|
111
|
+
for (let i=0;i<allResult.length;i++){
|
112
|
+
let allResultObj=allResult[i];
|
113
|
+
let k= allResultObj[key];
|
114
|
+
if(allResult1KeyObj[k]){
|
115
|
+
continue;
|
116
|
+
}else {
|
117
|
+
allResult1.push(allResultObj);
|
118
|
+
allResult1KeyObj[k]=true;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
return allResult1;
|
122
|
+
}
|
123
|
+
|
124
|
+
static dif(arr1,arr2,key="unionId"){
|
125
|
+
if(arr1==null || arr1==null|| arr1.length==0 ){
|
126
|
+
return []
|
127
|
+
}
|
128
|
+
if(arr2==null || arr2==null|| arr2.length==0 ){
|
129
|
+
return arr1;
|
130
|
+
}
|
131
|
+
let r2keyList=arr2.map(u=>u[key])
|
132
|
+
let result= arr1.filter(u=>r2keyList.indexOf(u[key])==-1)
|
133
|
+
return result;
|
134
|
+
|
135
|
+
}
|
136
|
+
|
26
137
|
}
|
27
138
|
|
28
139
|
module.exports = CollectionUtils;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class DateUtils {
|
4
|
+
static difDate(startDate="2021-04-01",endDate="2022-02-10"){
|
5
|
+
let flag = [1, 3, 5, 7, 8, 10, 12, 4, 6, 9, 11, 2];
|
6
|
+
let start = new Date(startDate);
|
7
|
+
let end = new Date(endDate);
|
8
|
+
let year = end.getFullYear() - start.getFullYear();
|
9
|
+
let month = end.getMonth() - start.getMonth();
|
10
|
+
let day = end.getDate() - start.getDate();
|
11
|
+
if (month < 0) {
|
12
|
+
year--;
|
13
|
+
month = end.getMonth() + (12 - start.getMonth());
|
14
|
+
}
|
15
|
+
if (day < 0) {
|
16
|
+
month--;
|
17
|
+
let index = flag.findIndex((temp) => {
|
18
|
+
return temp === start.getMonth() + 1
|
19
|
+
});
|
20
|
+
let monthLength;
|
21
|
+
if (index <= 6) {
|
22
|
+
monthLength = 31;
|
23
|
+
} else if (index > 6 && index <= 10) {
|
24
|
+
monthLength = 30;
|
25
|
+
} else {
|
26
|
+
monthLength = 28;
|
27
|
+
}
|
28
|
+
day = end.getDate() + (monthLength - start.getDate());
|
29
|
+
}
|
30
|
+
return {year,month,day}
|
31
|
+
}
|
32
|
+
|
33
|
+
}
|
34
|
+
|
35
|
+
|
36
|
+
module.exports = DateUtils;
|