q-koa 13.2.1 → 13.2.2
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/core/app.js +3 -1
- package/core/file/plugins/system/service.js +1 -1
- package/core/file/utils/index.js +30 -19
- package/package.json +1 -1
package/core/app.js
CHANGED
|
@@ -2201,7 +2201,9 @@ APP.getConfig = (app) => ({
|
|
|
2201
2201
|
/^(http:\/\/|https:\/\/)?(\d{1,3}\.){3}\d{1,3}:\d{1,5}/
|
|
2202
2202
|
)
|
|
2203
2203
|
})
|
|
2204
|
-
.filter((host) =>
|
|
2204
|
+
.filter((host) =>
|
|
2205
|
+
app.appConfig.ip ? !host.includes(app.appConfig.ip) : false
|
|
2206
|
+
)
|
|
2205
2207
|
|
|
2206
2208
|
Promise.all(
|
|
2207
2209
|
ipHost.map((host) => {
|
package/core/file/utils/index.js
CHANGED
|
@@ -2,6 +2,7 @@ const { lodash } = require('q-koa')
|
|
|
2
2
|
const Sequelize = require('sequelize')
|
|
3
3
|
const md5 = require('md5')
|
|
4
4
|
const moment = require('moment')
|
|
5
|
+
const _ = require('lodash')
|
|
5
6
|
|
|
6
7
|
const findConfig = (type) => (item) =>
|
|
7
8
|
item.key === type ||
|
|
@@ -208,14 +209,19 @@ exports.signResult = (params, salt) => {
|
|
|
208
209
|
return md5(signStr)
|
|
209
210
|
}
|
|
210
211
|
|
|
211
|
-
|
|
212
|
-
const dateRegex =
|
|
212
|
+
const isDateTime = (str) => {
|
|
213
|
+
const dateRegex =
|
|
214
|
+
/^(\d{4}-\d{2}-\d{2})([T\s](\d{2}:\d{2}(:\d{2}(\.\d+)?)?)([+-]\d{2}:\d{2}|Z)?)?$/
|
|
213
215
|
return dateRegex.test(str)
|
|
214
216
|
}
|
|
215
|
-
|
|
216
217
|
const $lt = {
|
|
217
218
|
check: (param) => typeof param === 'string',
|
|
218
219
|
result: (param, key) => {
|
|
220
|
+
if (isDateTime(param[key])) {
|
|
221
|
+
return {
|
|
222
|
+
[key]: param[key],
|
|
223
|
+
}
|
|
224
|
+
}
|
|
219
225
|
return {
|
|
220
226
|
[key]: Sequelize.literal(param[key]),
|
|
221
227
|
}
|
|
@@ -233,6 +239,11 @@ const $between = {
|
|
|
233
239
|
check: (param) =>
|
|
234
240
|
Array.isArray(param) && param.every((p) => typeof param === 'string'),
|
|
235
241
|
result: (param, key) => {
|
|
242
|
+
if (param[key].every((i) => isDateTime(i))) {
|
|
243
|
+
return {
|
|
244
|
+
[key]: param[key],
|
|
245
|
+
}
|
|
246
|
+
}
|
|
236
247
|
return {
|
|
237
248
|
[key]: param[key].map(Sequelize.literal),
|
|
238
249
|
}
|
|
@@ -266,12 +277,11 @@ exports.formatLiteralObj = (target) => {
|
|
|
266
277
|
|
|
267
278
|
exports.filterFunction = (target, data) => {
|
|
268
279
|
if (!target) {
|
|
269
|
-
console.error(`target为null`)
|
|
270
280
|
return false
|
|
271
281
|
}
|
|
272
282
|
return Object.keys(target).every((key) => {
|
|
273
283
|
if (key.includes('.')) {
|
|
274
|
-
return
|
|
284
|
+
return _.get(data, key) === target[key]
|
|
275
285
|
}
|
|
276
286
|
if (typeof target[key] === 'boolean') {
|
|
277
287
|
return Boolean(data[key]) === target[key]
|
|
@@ -279,48 +289,49 @@ exports.filterFunction = (target, data) => {
|
|
|
279
289
|
if (Array.isArray(target[key])) {
|
|
280
290
|
return target[key].includes(data[key])
|
|
281
291
|
}
|
|
282
|
-
if (
|
|
283
|
-
if (
|
|
292
|
+
if (_.isObject(target[key])) {
|
|
293
|
+
if ('$gt' in target[key]) {
|
|
284
294
|
if (key.endsWith('time') || key.endsWith('_at')) {
|
|
285
295
|
return moment(data[key]).diff(moment(target[key].$gt), 'seconds') > 0
|
|
286
296
|
}
|
|
287
297
|
return data[key] > target[key].$gt
|
|
288
|
-
} else if (
|
|
298
|
+
} else if ('$gte' in target[key]) {
|
|
289
299
|
if (key.endsWith('time') || key.endsWith('_at')) {
|
|
290
300
|
return moment(data[key]).diff(moment(target[key].$gt), 'seconds') >= 0
|
|
291
301
|
}
|
|
292
302
|
return data[key] >= target[key].$gte
|
|
293
|
-
} else if (
|
|
303
|
+
} else if ('$lt' in target[key]) {
|
|
294
304
|
if (key.endsWith('time') || key.endsWith('_at')) {
|
|
295
305
|
return moment(target[key].$gt).diff(moment(data[key]), 'seconds') < 0
|
|
296
306
|
}
|
|
297
307
|
return data[key] < target[key].$lt
|
|
298
|
-
} else if (
|
|
308
|
+
} else if ('$lte' in target[key]) {
|
|
299
309
|
if (key.endsWith('time') || key.endsWith('_at')) {
|
|
300
310
|
return moment(target[key].$gt).diff(moment(data[key]), 'seconds') <= 0
|
|
301
311
|
}
|
|
302
312
|
return data[key] <= target[key].$lte
|
|
303
|
-
} else if (
|
|
313
|
+
} else if ('$notIn' in target[key]) {
|
|
304
314
|
return !target[key].$notIn.includes(data[key])
|
|
305
|
-
} else if (
|
|
315
|
+
} else if ('$in' in target[key]) {
|
|
306
316
|
return target[key].$in.includes(data[key])
|
|
307
|
-
} else if (
|
|
308
|
-
Object.prototype.hasOwnProperty.call(target[key], '$between')
|
|
309
|
-
) {
|
|
317
|
+
} else if ('$between' in target[key]) {
|
|
310
318
|
if (
|
|
311
319
|
!Array.isArray(target[key].$between) ||
|
|
312
320
|
target[key].$between.length !== 2
|
|
313
321
|
) {
|
|
314
|
-
throw new Error(
|
|
322
|
+
throw new Error('$between example : [2,5]')
|
|
315
323
|
}
|
|
316
324
|
const min = target[key].$between[0]
|
|
317
325
|
const max = target[key].$between[1]
|
|
318
326
|
return data[key] >= min && data[key] <= max
|
|
319
|
-
} else if (
|
|
327
|
+
} else if ('$ne' in target[key]) {
|
|
320
328
|
return data[key] !== target[key].$ne
|
|
321
|
-
} else if (
|
|
329
|
+
} else if ('$neq' in target[key]) {
|
|
322
330
|
return data[key] !== target[key].$neq
|
|
323
|
-
} else if (
|
|
331
|
+
} else if ('$eq' in target[key]) {
|
|
332
|
+
if (Array.isArray(target[key].$eq)) {
|
|
333
|
+
return JSON.stringify(data[key]) === JSON.stringify(target[key].$eq)
|
|
334
|
+
}
|
|
324
335
|
return data[key] === target[key].$eq
|
|
325
336
|
}
|
|
326
337
|
return data[key] === target[key]
|