...
|
...
|
@@ -8,6 +8,7 @@ |
|
|
|
|
|
const _ = require('lodash');
|
|
|
const logger = global.yoho.logger;
|
|
|
const queryString = require('querystring');
|
|
|
|
|
|
const minToFullMap = {
|
|
|
ag: 'age_level',
|
...
|
...
|
@@ -45,20 +46,25 @@ const transformKey = (params, isFull) => { |
|
|
return params;
|
|
|
}
|
|
|
|
|
|
let obj = {};
|
|
|
let matchParams = {},
|
|
|
extraParams = {};
|
|
|
let map = isFull ? fullToMinMap : minToFullMap;
|
|
|
|
|
|
_.forEach(params, (value, key) => {
|
|
|
let name = map[key];
|
|
|
|
|
|
if (name) {
|
|
|
obj[name] = value;
|
|
|
matchParams[name] = value;
|
|
|
} else {
|
|
|
logger.error(`list parameter [${key}] map value not found`);
|
|
|
extraParams[key] = value;
|
|
|
logger.info(`list parameter [${key}] map value not found`);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return obj;
|
|
|
return {
|
|
|
matchParams,
|
|
|
extraParams
|
|
|
};
|
|
|
};
|
|
|
|
|
|
const minPathToFullParam = (path) => {
|
...
|
...
|
@@ -89,6 +95,7 @@ const minPathToFullParam = (path) => { |
|
|
const fullParamToMinPath = (uri, params, newObj, delObj = {}) => {
|
|
|
let obj = _.assign({}, params, newObj);
|
|
|
let pathArr = [];
|
|
|
let extraQs = '';
|
|
|
|
|
|
Object.assign(delObj, {uid: true});
|
|
|
|
...
|
...
|
@@ -96,13 +103,19 @@ const fullParamToMinPath = (uri, params, newObj, delObj = {}) => { |
|
|
_.has(obj, key) && _.unset(obj, key);
|
|
|
});
|
|
|
|
|
|
_.forEach(transformKey(obj, true), (value, key) => {
|
|
|
let transParams = transformKey(obj, true);
|
|
|
|
|
|
_.forEach(transParams.matchParams, (value, key) => {
|
|
|
if (value) {
|
|
|
pathArr.push(`${key}${_.replace(value, '-', '__')}`); // 替换value中-
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return _.trimEnd(uri, '/') + '/' + _.sortBy(pathArr).join('-');
|
|
|
if (!_.isEmpty(transParams.extraParams)) {
|
|
|
extraQs = '?' + queryString.stringify(transParams.extraParams)
|
|
|
}
|
|
|
|
|
|
return _.trimEnd(uri, '/') + '/' + _.sortBy(pathArr).join('-') + extraQs;
|
|
|
};
|
|
|
|
|
|
|
...
|
...
|
|