|
@@ -383,10 +383,17 @@ module.exports = {
|
|
|
|
|
|
const path1 = str1.split(symbol);
|
|
|
const path2 = str2.split(symbol);
|
|
|
+ const reg = /^[0-9]*$/;
|
|
|
for (let i = 0, iLen = Math.min(path1.length, path2.length); i < iLen; i++) {
|
|
|
- if (path1 < path2) {
|
|
|
+ if (reg.test(path1[i]) && reg.test(path2[i])) {
|
|
|
+ const num1 = parseInt(path1[i]);
|
|
|
+ const num2 = parseInt(path2[i]);
|
|
|
+ if (num1 !== num2) {
|
|
|
+ return num1 - num2;
|
|
|
+ }
|
|
|
+ } else if (path1[i] < path2[i]) {
|
|
|
return -1;
|
|
|
- } else if (path1 > path2) {
|
|
|
+ } else if (path1[i] > path2[i]) {
|
|
|
return 1;
|
|
|
}
|
|
|
}
|
|
@@ -695,5 +702,33 @@ module.exports = {
|
|
|
result = result + this.ctx.app.mysql.escape(a);
|
|
|
}
|
|
|
return result;
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 合并相关数据
|
|
|
+ * @param {Array} main - 主数据
|
|
|
+ * @param {Array[]}rela - 相关数据 {data, fields, prefix, relaId}
|
|
|
+ */
|
|
|
+ assignRelaData(main, rela) {
|
|
|
+ const index = {}, indexPre = 'id_';
|
|
|
+ const loadFields = function (datas, fields, prefix, relaId) {
|
|
|
+ for (const d of datas) {
|
|
|
+ const key = indexPre + d[relaId];
|
|
|
+ const m = index[key];
|
|
|
+ if (m) {
|
|
|
+ for (const f of fields) {
|
|
|
+ if (d[f] !== undefined) {
|
|
|
+ m[prefix + f] = d[f];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ for (const m of main) {
|
|
|
+ index[indexPre + m.id] = m;
|
|
|
+ }
|
|
|
+ for (const r of rela) {
|
|
|
+ loadFields(r.data, r.fields, r.prefix, r.relaId);
|
|
|
+ }
|
|
|
}
|
|
|
};
|