Authored by htoooth

Merge remote-tracking branch 'origin/release/1.0' into release/1.0

... ... @@ -8,11 +8,59 @@
const helpModel = require('../models/help');
/**
* 根据id获取文章数据
* @param id
* @returns {*}
*/
/* const getData = (id)=> {
let contentData = helpModel.contentData().content;
for (var i = 0; i < contentData.length; i++) {
if (contentData[i].id === id) {
return contentData[i]
}
}
};*/
/**
* 根据id获取当前所在位置,拼接面包屑
* @param id
*/
const getNav = (id)=> {
let menuData = helpModel.menuData().menuData;
for (let i = 0; i < menuData.length; i++) {
if (menuData[i].subsets) {
for (let j = 0; j < menuData[i].subsets.length; j++) {
if (menuData[i].subsets[j].id === id) {
return [
{
name: menuData[i].text
}, {
name: menuData[i].subsets[j].text
}
];
}
}
} else {
if (menuData[i].id === id) {
return [
{
name: menuData[i].text
}
];
}
}
}
};
/**
* 主界面
*/
const index = (req, res) => {
let id = req.query.id || "11";
helpModel.getHelpDetail("81", 1, 15, "").then(result=> {
const index = (req, res,next) => {
let id = req.query.id || '11';
helpModel.getHelpDetail('81', 1, 15, '').then(result=> {
let content = {content: result.helpdetail_list[0].content};
let data = Object.assign(content, helpModel.menuData());
let nav = [
... ... @@ -24,13 +72,17 @@ const index = (req, res) => {
name: '帮助中心'
}
];
nav = nav.concat(getNav(id));
if (!(typeof (getNav(id)) === "undefined")) {
nav = nav.concat(getNav(id));
}
res.display('detail', {
module: 'help',
page: 'help',
content: Object.assign({nav}, data)
});
});
}).catch(next);
/* let data = Object.assign(getData(id), helpModel.menuData());
let nav = [
{
... ... @@ -49,52 +101,6 @@ const index = (req, res) => {
});*/
};
/**
* 根据id获取文章数据
* @param id
* @returns {*}
*/
const getData = (id)=> {
let contentData = helpModel.contentData().content;
for (var i = 0; i < contentData.length; i++) {
if (contentData[i].id === id) {
return contentData[i]
}
}
};
/**
* 根据id获取当前所在位置,拼接面包屑
* @param id
*/
const getNav = (id)=> {
let menuData = helpModel.menuData().menuData;
for (let i = 0; i < menuData.length; i++) {
if (menuData[i].subsets) {
for (let j = 0; j < menuData[i].subsets.length; j++) {
if (menuData[i].subsets[j].id === id) {
return [
{
name: menuData[i].text
}, {
name: menuData[i].subsets[j].text
}
]
}
}
} else {
if (menuData[i].id === id) {
return [
{
name: menuData[i].text
}
]
}
}
}
};
module.exports = {
index
... ...
... ... @@ -7,6 +7,7 @@
'use strict';
const api = global.yoho.API;
/**
* 分类数据
* @returns {{}}
... ... @@ -15,47 +16,47 @@ const menuData = ()=> {
return {
menuData: [
{
id: "1",
text: "购物指南"
id: '1',
text: '购物指南'
},
{
id: "2",
text: "支付方式"
id: '2',
text: '支付方式'
},
{
id: "3",
text: "配送方式",
id: '3',
text: '配送方式',
subsets: [
{
id: "31",
parendId: "3",
text: "配送时间与范围"
id: '31',
parendId: '3',
text: '配送时间与范围'
},
{
id: "32",
parendId: "3",
text: "商品验收与签收"
id: '32',
parendId: '3',
text: '商品验收与签收'
}
]
},
{
id: "4",
text: "售后服务",
id: '4',
text: '售后服务',
subsets: [
{
id: "41",
parendId: "4",
text: "投诉与建议"
id: '41',
parendId: '4',
text: '投诉与建议'
},
{
id: "42",
parendId: "4",
text: "退换货流程"
id: '42',
parendId: '4',
text: '退换货流程'
},
{
id: "43",
parendId: "4",
text: "退换货政策"
id: '43',
parendId: '4',
text: '退换货政策'
}
]
}
... ... @@ -71,19 +72,19 @@ const contentData = ()=> {
return {
content: [
{
id: "11",
content: "<h1>你好</h1><p>测试11</p>"
id: '11',
content: '<h1>你好</h1><p>测试11</p>'
},
{
id: "12",
content: "<h1>你好</h1><p>测试12</p>"
id: '12',
content: '<h1>你好</h1><p>测试12</p>'
},
{
id: "13",
content: "<h1>你好</h1><p>测试13</p>"
id: '13',
content: '<h1>你好</h1><p>测试13</p>'
}
]
}
};
};
/**
... ...
... ... @@ -15,6 +15,7 @@ const help = require(`${cRoot}/help`);
// 帮助中心
router.get('/', help.index);
// router.get('/search', help.search);
... ...
... ... @@ -2,7 +2,7 @@
{{#each menuData}}
{{#if subsets}}
<li class="big-category cateId-{{id}}">
<li class="big-category cateId-{{id}} subsets">
<div class="plus inline-block"></div>{{text}}</li>
{{#each subsets}}
<li class="smll-category cateId-{{id}} parentId-{{parendId}}">
... ...
... ... @@ -367,7 +367,7 @@ function getfilePath(req, res, next) {
req.filePath = filePath;
req.pipe(uploadStream);
uploadStream.on('finish', function () {
uploadStream.on('finish', function() {
next();
});
}
... ...
/**
* 个人中心-我的订单model
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2016/7/19
*/
'use strict';
const api = global.yoho.API;
... ... @@ -24,6 +30,7 @@ const paymentTypeStr = {
4: '抵消支付'
};
// 订单操作按钮
const btnMap = {
all: [
{
... ... @@ -135,11 +142,17 @@ const _convertUnixTime = src => {
return moment.unix(src).format('YYYY-MM-DD hh:mm:ss');
};
/**
* 获取订单物流信息
* @param { [Object] } addressList
* @param { String } createTime
* @return { [Object] }
*/
const _convertAddress = (addressList, createTime) => {
let addrList = [];
addressList.forEach(addr => {
let address = {
const address = {
time: '',
city: '',
action: ''
... ... @@ -169,7 +182,11 @@ const _convertAddress = (addressList, createTime) => {
return _.reverse(addrList);
};
// 根据订单状态获取当前步骤
/**
* 获取订单状态
* @param { String } st 订单状态
* @return { [Object] }
*/
const _getStepByOrderStatus = st => {
let steps = [
{
... ... @@ -197,6 +214,12 @@ const _getStepByOrderStatus = st => {
return steps;
};
/**
* 获取订单详情
* @param { Number } uid 用户id
* @param { Number } code 订单编码
* @return { Object } Promise 对象
*/
const _getDetail = (uid, code) => {
return api.get('', {
method: 'app.SpaceOrders.detail',
... ... @@ -207,6 +230,13 @@ const _getDetail = (uid, code) => {
});
};
/**
* 获取订单列表
* @param { Number } uid 用户id
* @param { String } type 订单类型
* @param { Number } page 当前页
* @return { Object } Promise 对象
*/
const _getUserOrder = (uid, type, page) => {
return api.get('', {
... ... @@ -302,6 +332,12 @@ const _getUserOrder = (uid, type, page) => {
};
/**
* 删除订单
* @param { Number } uid 用户id
* @param { String } code 订单编码
* @return { Object } Promise 对象
*/
const deleteOrder = (uid, code) => {
return api.get('', {
method: 'app.SpaceOrders.delOrderByCode',
... ... @@ -310,6 +346,12 @@ const deleteOrder = (uid, code) => {
});
};
/**
* 取消订单
* @param { Number } uid 用户id
* @param { Object } data 调用接口所需的数据
* @return { Object } Promise 对象
*/
const cancelOrder = (uid, data) => {
return api.get('', {
method: 'app.SpaceOrders.close',
... ... @@ -320,6 +362,10 @@ const cancelOrder = (uid, data) => {
});
};
/**
* 获取取消订单的理由
* @return { Object } Promise 对象
*/
const getCancelOrderReason = () => {
return api.get('', {
method: 'app.SpaceOrders.closeReasons'
... ... @@ -328,6 +374,12 @@ const getCancelOrderReason = () => {
});
};
/**
* 获取快递信息
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const getExpressInfo = (uid, code) => {
return api.get('', {
method: 'app.express.get',
... ... @@ -338,6 +390,13 @@ const getExpressInfo = (uid, code) => {
});
};
/**
* 获取全部订单
* @param { Number } uid 用户id
* @param { String } type 订单类型
* @param { Number } page 页码
* @return { Object } Promise 对象
*/
const getOrderData = (uid, type, page) => {
const navBar = {
tabs: [
... ... @@ -411,10 +470,16 @@ const getOrderData = (uid, type, page) => {
});
};
/**
* 获取订单详情
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const getOrderDetail = (uid, code) => {
return api.all([_getDetail(uid, code), getExpressInfo(uid, code)]).then(result => {
let detail = result[0] && camelCase(result[0].data);
let express = result[1] && camelCase(result[1].data);
const detail = result[0] && camelCase(result[0].data);
const express = result[1] && camelCase(result[1].data);
const st = parseInt(detail.status, 10);
... ... @@ -460,6 +525,11 @@ const getOrderDetail = (uid, code) => {
});
};
/**
* 编辑订单
* @param { Object } data 调用接口所需的数据
* @return { Object } Promise 对象
*/
const editOrder = data => {
return api.get('', {
method: 'app.SpaceOrders.updateDeliveryAddress',
... ... @@ -474,6 +544,12 @@ const editOrder = data => {
});
};
/**
* 重新购买
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const reAddCart = (uid, code) => {
return api.get('', {
method: 'app.Shopping.readd',
... ... @@ -483,6 +559,12 @@ const reAddCart = (uid, code) => {
});
};
/**
* 确认收货
* @param { Number } uid 用户id
* @param { String } code 订单编号
* @return { Object } Promise 对象
*/
const confirmReceive = (uid, code) => {
return api.get('', {
method: 'app.SpaceOrders.confirm',
... ...
... ... @@ -44,8 +44,7 @@ const Search = {
let finalParams = {
method: 'app.search.li',
limit: 45,
app_type: 1
limit: 45
};
Object.assign(finalParams, _paramHanlde(params));
... ... @@ -55,8 +54,7 @@ const Search = {
queryProductOfBrand(params) {
let finalParams = {
method: 'app.search.li',
limit: 45,
app_type: 1
limit: 45
};
Object.assign(finalParams, _paramHanlde(params));
... ... @@ -66,8 +64,7 @@ const Search = {
queryNewProduct(params) {
let finalParams = {
method: 'app.search.newProduct',
limit: 45,
app_type: 1
limit: 45
};
Object.assign(finalParams, _paramHanlde(params));
... ... @@ -76,8 +73,7 @@ const Search = {
},
queryAllSort(params) {
return api.get('', _.assign({
method: 'web.regular.groupsort',
app_type: 1
method: 'web.regular.groupsort'
}, params), {code: 200});
}
};
... ...
... ... @@ -44,13 +44,15 @@ const Payment = {
beforePay(user, order, method) {
return Promise.all([
OrderData.updateOrderPayment(order.orderCode, method, user.uid),
PayData.savePrePayInfo(order.orderCode, method, user.uid),
PayData.getBankByOrder(order.orderCode)
]).then(result => {
let paymentRecord = result[0];
let bankRecord = result[1];
let prePayResult = result[1];
let bankRecord = result[2];
let bankCode = ''; // 暂时写成'', 参考php代码 Payment.php:564
if (!paymentRecord || paymentRecord.code !== 200) {
if (!paymentRecord || paymentRecord.code !== 200 || !prePayResult || prePayResult.code !== 200) {
let message = paymentRecord && paymentRecord.message ? paymentRecord.message : '系统繁忙,请稍后再试';
return {code: 400, message: message};
... ...
... ... @@ -166,7 +166,7 @@ const submit = (uid, other) => {
Object.assign(theOther, other, {
delivery_time: 2, // 平时和周末都送货
delivery_way: 1, // 普通快递
delivery_way: 2, // blk统一为顺丰
payment_id: 1, // 支付宝
payment_type: 1, // 在线支付
use_yoho_coin: other.use_yoho_coin / 100 // 有货币稀释
... ...
... ... @@ -55,6 +55,15 @@ const sendPayConfirm = (code, payment, uid) => {
});
};
const savePrePayInfo = (code, payment, uid) => {
return api.get('', {
method: 'app.order.savePrePayInfo',
orderCode: code,
payment: payment,
uid: uid
});
};
const sendMessage = (mobile, template, codes) => {
return api.get('', {
method: 'app.message.sendMsg',
... ... @@ -71,5 +80,6 @@ module.exports = {
setOrderPayBank,
updateOrderPayBank,
sendPayConfirm,
savePrePayInfo,
sendMessage
};
... ...
... ... @@ -150,6 +150,21 @@ const updateOrderPayBank = (code, payment, bankCode) => {
};
/**
* 选择支付,校验时间间隔,插入数据
* @param code
* @param payment
* @param uid
*/
const savePrePayInfo = (code, payment, uid) => {
return co(function *() {
let data = yield api.savePrePayInfo(code, payment, uid);
return data;
})();
};
/**
* 支付确认
* @param code
* @param payment
... ... @@ -228,6 +243,7 @@ module.exports = {
updateOrderPayBank,
sendPayConfirm,
procOrderData,
savePrePayInfo,
payments
};
... ...
... ... @@ -61,7 +61,7 @@
"uuid": "^2.0.2",
"winston": "^2.2.0",
"winston-daily-rotate-file": "^1.1.4",
"yoho-node-lib": "0.0.28"
"yoho-node-lib": "0.0.31"
},
"devDependencies": {
"autoprefixer": "^6.3.6",
... ...
... ... @@ -4,36 +4,31 @@
* @date: 2016/07/25
*/
var queryId = location.search.split("=")[1] || "1";
var $cate = $(".cateId-" + queryId);
var queryId = location.search.split('=')[1] || '1';
var $cate = $('.cateId-' + queryId);// 当前分类
var $subsets = $('.subsets');
var parentID = queryId.substr(0, 1);// 一级分类id
/**
* 目录切换
*/
$(document).on("click", ".big-category .plus", function () {
var $parent = $(this).parent();//当前一级分类
var className = $parent.attr("class").split(" ")[1];
var parentId = "parentId-" + className.split("-")[1];
var $child = $parent.parent().find("." + parentId);//当前子分类
$subsets.click(function() {
var $this = $(this);
var className = $this.attr('class').split(' ')[1];
var parentId = 'parentId-' + className.split('-')[1];
var $child = $this.parent().find('.' + parentId);// 当前子分类
if ($parent.hasClass("open")) {
if ($this.hasClass('open')) {
$child.hide();
$parent.removeClass("open");
$(this).css("background-image", "url('../img/help/plus.png')");
$this.removeClass('open').children('.plus').css('background-image', 'url(\'../img/help/plus.png\')');
} else {
$child.show();
$parent.addClass("open");
$(this).css("background-image", "url('../img/help/minus.png')");
$this.addClass('open').children('.plus').css('background-image', 'url(\'../img/help/minus.png\')');
}
});
if (!$cate.hasClass("big-category")) {
var parentId = queryId.substr(0, 1);
$(".parentId-" + parentId).show();
$(".cateId-" + parentId).find(".plus").css("background-image", "url('../img/help/minus.png')");
if (!$cate.hasClass('big-category')) {
$('.parentId-' + parentID).show();
$('.cateId-' + parentID).find('.plus').css('background-image', 'url(\'../img/help/minus.png\')');
}
... ...
... ... @@ -21,6 +21,9 @@ var reg = new RegExp(/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57
require('./me');
require('../plugins/check');
require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
$(function() {
var address = cascadingAddress({el: '#address'});
... ...
... ... @@ -450,6 +450,18 @@ function bindUploadEvent() {
});
}
function bindKeyUpEvent() {
$('.mark-text').on('keyup', function() {
var $this = $(this),
str = $.trim($this.val());
if (str.length > 100) {
str = str.substring(0, 100);
}
$this.val(str);
});
}
$(document).on('ready', function() {
getProductInfo();
bindSelectEvent();
... ... @@ -459,4 +471,5 @@ $(document).on('ready', function() {
initAddr($('#city').data('code'));
bindBlurEvent();
bindUploadEvent();
bindKeyUpEvent();
});
... ...
... ... @@ -59,7 +59,7 @@ function cancelOrder(code, onCancel) {
]
}).show();
} else {
new _alert('<h1>出错了!修改失败!</h1>').show();
new _alert('<h1>' + result.message + '</h1>').show();
}
}).fail(function(err) {
... ...
... ... @@ -11,8 +11,11 @@ module.exports = function(code) {
if (result.code === 200) {
location.href = '/shopping/cart';
} else {
new _alert('出错了,请重试!').show();
new _alert(result.message).show();
}
}).fail(function(err) {
console.log(err);
new _alert('出错了!').show();
});
};
... ...
... ... @@ -50,6 +50,7 @@ var Bll = {
require('./me');
require('../plugins/check');
require('yoho-jquery-placeholder');
// 第一步:身份验证
require('../me/setting/validate');
... ... @@ -57,6 +58,7 @@ require('../me/setting/validate');
// 第二步:操作
require('../me/setting/operate');
$('[placeholder]').placeholder();
// 编辑头像移入移出切换效果
$('.user-icon').hover(function() {
... ...
... ... @@ -41,6 +41,10 @@ var validatePhoneNumLocal = function(phoneNum) {
}
};
require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
/**
* 绑定手机号码部分
*/
... ...
... ... @@ -28,6 +28,10 @@ var disableSMSBtn = function() {
}
};
require('yoho-jquery-placeholder');
$('[placeholder]').placeholder();
// 发送手机验证码
$sms.click(function() {
var mobile = $('#real-mobile').val();
... ...
... ... @@ -13,6 +13,34 @@
text-align: center;
background: #fff;
}
.nav {
li {
cursor: pointer;
padding: 10px 15px;
width: 200px;
font-size: 14px;
.plus {
cursor: pointer;
margin-right: 10px;
height: 14px;
width: 14px;
background-repeat: no-repeat;
background-image: resolve('help/plus.png');
background-size: 14px 14px;
}
.mult {
margin-right: 26px;
height: 14px;
width: 14px;
}
}
.smll-category {
display: none;
}
}
}
.help-main {
... ... @@ -22,5 +50,3 @@
}
}
@import "menu";
... ...
.nav {
li {
padding: 10px 15px;
width: 200px;
font-size: 14px;
}
.smll-category {
display: none;
}
}
.plus {
cursor: pointer;
margin-right: 10px;
height: 14px;
width: 14px;
background-repeat: no-repeat;
background-image: resolve('help/plus.png');
background-size: 14px 14px;
}
.mult {
margin-right: 26px;
height: 14px;
width: 14px;
}
/**
* 商品处理
* @author:
* @date:
*/
'use strict';
const _ = require('lodash');
const camelCase = global.yoho.camelCase;
... ... @@ -114,35 +121,39 @@ exports.processProductList = (list, options) => {
}
if (options.showTags) {
product.tags = {};
product.tags.isNew = options.showNew && product.isNew === 'Y'; // 新品
product.tags.isDiscount = options.showSale && product.isDiscount === 'Y'; // 在售
product.tags.isLimited = product.isLimited === 'Y'; // 限量
product.tags.isYohood = product.isYohood === 'Y'; // YOHOOD
product.tags.midYear = product.midYear === 'Y'; // 年中
product.tags.yearEnd = product.yearEnd === 'Y'; // 年末
product.tags.isAdvance = product.isAdvance === 'Y'; // 再到着
let tags = {};
Object.assign(tags, {
isNew: options.showNew && product.isNew === 'Y', // 新品
isDiscount: options.showSale && product.isDiscount === 'Y', // 在售
isLimited: product.isLimited === 'Y', // 限量
isYohood: product.isYohood === 'Y', // YOHOOD
midYear: product.midYear === 'Y', // 年中
yearEnd: product.yearEnd === 'Y', // 年末
isAdvance: product.isAdvance === 'Y' // 再到着
});
// 打折与即将售完组合显示打折
if (product.isSoonSoldOut && product.tags.isDiscount) {
product.tags.isFew = false;
} else if (product.tags.isDiscount &&
(product.tags.isFew || product.tags.isLimited || product.tags.isYohood || product.tags.isAdvance)) {
if (product.isSoonSoldOut && tags.isDiscount) {
tags.isFew = false;
} else if (tags.isDiscount &&
(tags.isFew || tags.isLimited || tags.isYohood || tags.isAdvance)) {
// 打折与其它组合则隐藏打折
product.tags.isDiscount = false;
} else if (product.tags.isYohood && product.tags.isFew) {
tags.isDiscount = false;
} else if (tags.isYohood && tags.isFew) {
// YOHOOD和新品组合显示YOHOOD
product.tags.isFew = false;
tags.isFew = false;
}
product.tags = tags;
}
pruductList.push(product);
});
return handleGoodsListData(pruductList);
};
/**
* 处理筛选数据
* @param list
... ... @@ -311,34 +322,43 @@ exports.processProduct = (productData, options) => {
result.name = productData.product_name;
result.price = !productData.market_price ? false : productData.market_price;
result.salePrice = productData.sales_price;
if (options.showPoint) {
result.price += '.00';
result.salePrice += '.00';
result.price = parseInt(result.price, 10).toFixed(2);
result.salePrice = parseInt(result.salePrice, 10).toFixed(2);
}
result.is_soon_sold_out = (productData.is_soon_sold_out === 'Y');
result.url = helpers.urlFormat(`/product/pro_${productData.product_id}_${productData.goods_list[0].goods_id}/${productData.cn_alphabet}.html`, null, 'list'); // eslint-disable-line
result.url = helpers.urlFormat(`
/product/pro_${productData.product_id}_${productData.goods_list[0].goods_id}
/${productData.cn_alphabet}.html
`, null, 'list');
if (options.showTags) {
result.tags = {};
result.tags.is_new = options.showNew && productData.is_new && productData.is_new === 'Y'; // 新品
result.tags.is_discount = options.showSale && productData.is_discount && productData.is_discount === 'Y'; // 在售
result.tags.is_limited = productData.is_limited && productData.is_limited === 'Y'; // 限量
result.tags.is_yohood = productData.is_yohood && productData.is_yohood === 'Y'; // YOHOOD
result.tags.midYear = productData['mid-year'] && productData['mid-year'] === 'Y'; // 年中
result.tags.yearEnd = productData['year-end'] && productData['year-end'] === 'Y'; // 年末
result.tags.is_advance = productData.is_advance && productData.is_advance === 'Y'; // 再到着
if (result.is_soon_sold_out && result.tags.is_discount) {
result.tags.is_new = false;// 打折与即将售完组合显示打折
} else if (result.tags.is_discount &&
(result.tags.is_new || result.tags.is_limited || result.tags.is_yohood || result.tags.is_advance)) {
result.tags.is_discount = false;// 打折与其它组合则隐藏打折
} else if (result.tags.is_yohood && result.tags.is_new) {
result.tags.is_new = false;// YOHOOD和新品组合显示YOHOOD
let tags = {};
Object.assign(tags, {
is_new: options.showNew && productData.is_new && productData.is_new === 'Y', // 新品
is_discount: options.showSale && productData.is_discount && productData.is_discount === 'Y', // 在售
is_limited: productData.is_limited && productData.is_limited === 'Y', // 限量
is_yohood: productData.is_yohood && productData.is_yohood === 'Y', // YOHOOD
midYear: productData['mid-year'] && productData['mid-year'] === 'Y', // 年中
yearEnd: productData['year-end'] && productData['year-end'] === 'Y', // 年末
is_advance: productData.is_advance && productData.is_advance === 'Y' // 再到着
});
if (result.is_soon_sold_out && tags.is_discount) {
tags.is_new = false;// 打折与即将售完组合显示打折
} else if (tags.is_discount &&
(tags.is_new || tags.is_limited || tags.is_yohood || tags.is_advance)) {
tags.is_discount = false;// 打折与其它组合则隐藏打折
} else if (tags.is_yohood && tags.is_new) {
tags.is_new = false;// YOHOOD和新品组合显示YOHOOD
}
result.tags = tags;
}
return result;
};
... ...
/**
* 特殊资源位处理
* @author: bikai<bikai@yoho.cn>
* @date: 2016/4/25
*/
'use strict';
const _ = require('lodash');
const camelCase = global.yoho.camelCase;
... ...