Authored by htoooth

refactor

'use strict';
const headerModel = require('../../../doraemon/models/header');
const msgModel = require('../models/message');
const helpers = global.yoho.helpers;
const _ = require('lodash');
const homeNav = (req) => {
return [
{
title: '交易管理',
subNav: [
{name: '我的订单', href: '/home/orders', catchs: ['/home/orders', '/home/index', '/home/orders/detail']},
{name: '我的收藏', href: '/home/favorite', catchs: ['/home/favorite/reduction']},
{name: '我的有货币', href: '/home/currency'},
{name: '我的红包', href: '/home/redenvelopes'},
{name: '我的优惠券', href: '/home/coupons'},
{name: '我的VIP', href: '/home/vip'}
]
},
{
title: '服务中心',
subNav: [
{name: '我的退/换货', href: '/home/returns'},
{name: '我的咨询', href: '/home/consult'},
{name: '我的评论', href: '/home/comment'},
// {name: '我的投诉', href: '/home/complaints'},
{name: '我的信息', href: '/home/message', count: 0},
{
name: '在线客服',
href: _.get(req.app.locals.pc, 'clientService.new', false) ?
'/service/client' : 'http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=620092&configID=149091&jid=8732423409',
isBlank: true
}
]
},
{
title: '个人信息管理',
subNav: [
{name: '编辑个人资料', href: '/home/user'},
{name: '账号安全', href: '/home/account', catchs: [
'/home/account/userpwd',
'/home/account/email',
'/home/account/mobile',
'/home/account/checkverifycode',
'/home/account/checkpassword',
'/home/account/verifypassword',
'/home/account/modifypwd',
'/home/account/sendemail',
'/home/account/checkemail',
'/home/account/modifyemail',
'/home/account/sendemailsuccess',
'/home/account/mailresult',
'/home/account/checkmobile',
'/home/account/checkmobilemsg',
'/home/account/sendmobilemsg',
'/home/account/modifymobile'
]},
{name: '地址管理', href: '/home/address'},
{name: '兑换礼品卡', href: '/home/gift'}
]
}
];
};
const getActiveNav = (req, count)=>{
let mHomeNav = _.cloneDeep(homeNav(req));
let activeNav = null;
mHomeNav = mHomeNav.map((item) => {
item.subNav = item.subNav.map((nav) => {
let curMatchPath = req.originalUrl;
if (!nav.matchQuery && curMatchPath.indexOf('?') >= 0) { // 严格的路径匹配,包含后面的参数
curMatchPath = curMatchPath.substr(0, curMatchPath.indexOf('?'));
}
if (curMatchPath === nav.href) {
nav.active = true;
}
if (nav.name === '我的信息') {
nav.count = +count;
}
if (nav.catchs) {
let index = nav.catchs.indexOf(curMatchPath);
if (index > -1) {
nav.active = true;
nav.curHref = nav.catchs[index];
}
}
if (nav.active) {
activeNav = nav;
}
nav.href = nav.href.indexOf('http://') > -1 ? nav.href : helpers.urlFormat(nav.href);
return nav;
});
return item;
});
return {
homeNav: mHomeNav,
activeNav: activeNav
};
};
const getHomeNav = (req, res, next) => {
msgModel.unreadTotal(req.user.uid).then(result => {
let navs = getActiveNav(req, _.get(result, 'data.total', 0));
let activeNav = navs.activeNav;
let bread = [{href: helpers.urlFormat('/'), name: 'YOHO!BUY 有货首页'}];
if (activeNav) {
bread.push({
name: '个人中心',
href: helpers.urlFormat('/home')
});
bread.push({
name: activeNav.name
});
// 订单详情
if (activeNav.curHref === '/home/orders/detail') {
Object.assign(_.last(bread), {
href: helpers.urlFormat('/home/orders')
});
bread.push({
name: '订单详情'
});
}
} else {
bread.push({
name: '个人中心'
});
}
res.locals.path = bread; // [{href: helpers.urlFormat('/'), name: 'YOHO!BUY 有货首页'}, {name: '个人中心'}];
res.locals.homeNav = navs.homeNav;
res.locals.userThumb = '//img10.static.yhbimg.com/headimg/' +
'2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
next();
});
};
const headerService = require('../models/general-tabs-service');
const getCommonHeader = (req, res, next) => {
let channel = req.query.channel ? req.query.channel : 'boys';
let channel = req.query.channel;
let uid = req.user.uid;
let clientService = _.get(req.app.locals.pc, 'clientService.new', false);
headerModel.requestHeaderData(channel).then((result)=>{
headerService.getHomeNav(uid, channel, req.originalUrl, clientService).then((result)=>{
_.merge(res.locals, result);
next();
});
};
module.exports = {
homeNav,
getActiveNav,
getHomeNav,
getCommonHeader
};
... ...
'use strict';
const _ = require('lodash');
const userApi = require('./user-api');
const headerModel = require('../../../doraemon/models/header');
const msgModel = require('./message');
const helpers = global.yoho.helpers;
const defaultAvatar = '//img10.static.yhbimg.com/headimg/' +
'2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
const _homeNav = (switcher) => {
return [
{
title: '交易管理',
subNav: [
{name: '我的订单', href: '/home/orders', catchs: ['/home/orders', '/home/index', '/home/orders/detail']},
{name: '我的收藏', href: '/home/favorite', catchs: ['/home/favorite/reduction']},
{name: '我的有货币', href: '/home/currency'},
{name: '我的红包', href: '/home/redenvelopes'},
{name: '我的优惠券', href: '/home/coupons'},
{name: '我的VIP', href: '/home/vip'}
]
},
{
title: '服务中心',
subNav: [
{name: '我的退/换货', href: '/home/returns'},
{name: '我的咨询', href: '/home/consult'},
{name: '我的评论', href: '/home/comment'},
// {name: '我的投诉', href: '/home/complaints'},
{name: '我的信息', href: '/home/message', count: 0},
{
name: '在线客服',
href: switcher ?
'/service/client' : 'http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=620092&configID=149091&jid=8732423409',
isBlank: true
}
]
},
{
title: '个人信息管理',
subNav: [
{name: '编辑个人资料', href: '/home/user'},
{name: '账号安全', href: '/home/account', catchs: [
'/home/account/userpwd',
'/home/account/email',
'/home/account/mobile',
'/home/account/checkverifycode',
'/home/account/checkpassword',
'/home/account/verifypassword',
'/home/account/modifypwd',
'/home/account/sendemail',
'/home/account/checkemail',
'/home/account/modifyemail',
'/home/account/sendemailsuccess',
'/home/account/mailresult',
'/home/account/checkmobile',
'/home/account/checkmobilemsg',
'/home/account/sendmobilemsg',
'/home/account/modifymobile'
]},
{name: '地址管理', href: '/home/address'},
{name: '兑换礼品卡', href: '/home/gift'}
]
}
];
};
const _getActiveNav = (url, switcher, count) =>{
let mHomeNav = _.cloneDeep(_homeNav(switcher));
let activeNav = null;
mHomeNav = mHomeNav.map((item) => {
item.subNav = item.subNav.map((nav) => {
let curMatchPath = url;
if (!nav.matchQuery && curMatchPath.indexOf('?') >= 0) { // 严格的路径匹配,包含后面的参数
curMatchPath = curMatchPath.substr(0, curMatchPath.indexOf('?'));
}
if (curMatchPath === nav.href) {
nav.active = true;
}
if (nav.name === '我的信息') {
nav.count = +count;
}
if (nav.catchs) {
let index = nav.catchs.indexOf(curMatchPath);
if (index > -1) {
nav.active = true;
nav.curHref = nav.catchs[index];
}
}
if (nav.active) {
activeNav = nav;
}
nav.href = nav.href.indexOf('http://') > -1 ? nav.href : helpers.urlFormat(nav.href);
return nav;
});
return item;
});
return {
homeNav: mHomeNav,
activeNav: activeNav
};
};
const _getAvatar = (uid) => {
return userApi.getUserInfo(uid).then((result) => {
return _.get(result, 'data.head_ico', '') || defaultAvatar;
});
};
const _msgCount = (uid) => {
return msgModel.unreadTotal(uid).then(result => _.get(result, 'data.total', 0));
};
const _getTabsData = (uid, channel) => {
return Promise.props({
msg: _msgCount(uid),
header: headerModel.requestHeaderData(channel),
avatar: _getAvatar(uid)
});
};
const getHomeNav = (uid, channel, url, clientSwitcher) => {
return _getTabsData(uid, channel).then((result) => {
let navs = _getActiveNav(url, clientSwitcher, result.msg);
let activeNav = navs.activeNav;
let bread = [{href: helpers.urlFormat('/'), name: 'YOHO!BUY 有货首页'}];
if (activeNav) {
bread.push({
name: '个人中心',
href: helpers.urlFormat('/home')
});
bread.push({
name: activeNav.name
});
// 订单详情
if (activeNav.curHref === '/home/orders/detail') {
Object.assign(_.last(bread), {
href: helpers.urlFormat('/home/orders')
});
bread.push({
name: '订单详情'
});
}
} else {
bread.push({
name: '个人中心'
});
}
return Object.assign({
path: bread,
homeNav: navs.homeNav,
userThumb: result.avatar
}, result.header);
});
};
module.exports = {
getHomeNav
};
... ...
... ... @@ -43,24 +43,20 @@ const giftController = require(`${cRoot}/gift`);
// 首页
router.get(['/index', '/'],
[tabsMiddleware.getHomeNav, tabsMiddleware.getCommonHeader], indexController.index);
router.get(['/index', '/'], tabsMiddleware.getCommonHeader, indexController.index);
// 查看二维码
router.get('/QRcode', [tabsMiddleware.getHomeNav, tabsMiddleware.getCommonHeader], personalController.QRcode);
router.get('/QRcode', tabsMiddleware.getCommonHeader, personalController.QRcode);
// 我的评论
router.get('/comment',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], commentController.index);
router.get('/comment', tabsMiddleware.getCommonHeader, commentController.index);
router.post('/comment/saveComment', commentController.saveComment);
router.get('/comment/order',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], commentController.commentList4Order);
router.get('/comment/order', tabsMiddleware.getCommonHeader, commentController.commentList4Order);
// 我的咨询
router.get('/consult',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], consultController.index);
router.get('/consult', tabsMiddleware.getCommonHeader, consultController.index);
// 我的投诉
// router.get('/complaints', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], complaintsController.index);
... ... @@ -68,11 +64,9 @@ router.get('/consult',
// router.post('/complaints/cancel', complaintsController.cancel);
// 我的消息
router.get('/message',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], messageController.index);
router.get('/message', tabsMiddleware.getCommonHeader, messageController.index);
router.get('/message/detail',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], messageController.detail);
router.get('/message/detail', tabsMiddleware.getCommonHeader, messageController.detail);
router.get('/message/del', messageController.delMsg);
router.get('/message/read', messageController.readMsg);
... ... @@ -89,30 +83,26 @@ router.get('/message/pickCoupon', messageController.pickCoupon);
// router.get('/index', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], IndexController.index);
/* 我的YOHO币 */
router.get('/currency',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], currencyController.index);
router.get('/currency', tabsMiddleware.getCommonHeader, currencyController.index);
/* 我的红包 */
router.get('/redenvelopes',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], redenvelopesController.index);
router.get('/redenvelopes', tabsMiddleware.getCommonHeader, redenvelopesController.index);
/* 我的VIP */
router.get('/vip',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], vipController.index);
router.get('/vip', tabsMiddleware.getCommonHeader, vipController.index);
/* 我的优惠卷 */
router.get('/coupons', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], couponsController.index);
router.get('/coupons', tabsMiddleware.getCommonHeader, couponsController.index);
/** ******************************* 我的收藏开始 *****************************************/
// 我的收藏
router.get('/favorite', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], favoriteController.index);
router.get('/favorite', tabsMiddleware.getCommonHeader, favoriteController.index);
// 品牌页新品到着
router.get('/favorite/newproduct', favoriteController.newProduct);
// 降价提醒
router.get('/favorite/reduction',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], favoriteController.reduction);
router.get('/favorite/reduction', tabsMiddleware.getCommonHeader, favoriteController.reduction);
// 设置降价提醒
router.get('/favorite/notice', favoriteController.notice);
... ... @@ -126,7 +116,7 @@ router.get('/favorite/cancel', favoriteController.cancel);
/** ******************************* 我的收藏结束 *****************************************/
/** ******************************* 我的订单开始 *****************************************/
router.get('/orders', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], ordersController.index);
router.get('/orders', tabsMiddleware.getCommonHeader, ordersController.index);
// 重新加入购物车
router.post('/orders/readd', ordersController.reBuy);
... ... @@ -144,8 +134,7 @@ router.post('/orders/confirmOrder', ordersController.confirm);
router.post('/orders/cancelOrder', ordersController.cancel);
// 订单详情
router.get('/orders/detail',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], ordersController.detail);
router.get('/orders/detail',tabsMiddleware.getCommonHeader, ordersController.detail);
// 物流信息
router.get('/orders/express', ordersController.express);
... ... @@ -160,8 +149,7 @@ router.get('/orders/refundreason', ordersController.refundReason);
// router.get('/coupons', CouponsController.index);
router.get('/user', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], UserController.index);
router.get('/user', tabsMiddleware.getCommonHeader, UserController.index);
router.post('/user/edituserinfo', UserController.editUserInfo);
... ... @@ -205,42 +193,32 @@ router.get('/bind/renren/callback', bindController.renren.callback);
router.post('/cancelbind/:type', bindController.cancelBind);
// 账号安全
router.get('/account',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.index);
router.get('/account', tabsMiddleware.getCommonHeader, AccountController.index);
router.get('/account/userpwd',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.userPwd);
router.get('/account/userpwd', tabsMiddleware.getCommonHeader, AccountController.userPwd);
router.get('/account/email', [tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.userEmail);
router.get('/account/email', tabsMiddleware.getCommonHeader, AccountController.userEmail);
router.get('/account/mobile',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.userMobile);
router.get('/account/mobile', tabsMiddleware.getCommonHeader, AccountController.userMobile);
router.post('/account/checkverifycode',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.checkVerifyCode);
router.post('/account/checkverifycode', tabsMiddleware.getCommonHeader, AccountController.checkVerifyCode);
router.post('/account/checkpassword',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.checkPassword);
router.post('/account/checkpassword', tabsMiddleware.getCommonHeader, AccountController.checkPassword);
router.post('/account/verifypassword',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.verifyPassword);
router.post('/account/verifypassword', tabsMiddleware.getCommonHeader, AccountController.verifyPassword);
router.post('/account/modifypwd',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.modifyPwd);
router.post('/account/modifypwd', tabsMiddleware.getCommonHeader, AccountController.modifyPwd);
router.post('/account/sendemail', AccountController.sendEmail);
router.post('/account/checkemail',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.checkEmail);
router.post('/account/checkemail', tabsMiddleware.getCommonHeader, AccountController.checkEmail);
router.post('/account/modifyemail',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.modifyEmail);
tabsMiddleware.getCommonHeader, AccountController.modifyEmail);
router.get('/account/sendemailsuccess',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.sendEmailSuccess);
router.get('/account/sendemailsuccess', tabsMiddleware.getCommonHeader, AccountController.sendEmailSuccess);
router.get('/account/mailresult',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AccountController.mailResult);
router.get('/account/mailresult', tabsMiddleware.getCommonHeader, AccountController.mailResult);
router.post('/account/checkmobile', AccountController.checkMobile);
... ... @@ -252,8 +230,7 @@ router.post('/account/modifymobile', AccountController.modifyMobile);
// 地址管理
router.get('/address',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], AddressController.index);
router.get('/address', tabsMiddleware.getCommonHeader, AddressController.index);
router.get('/address/area', UserController.getProviceList);
... ... @@ -267,8 +244,7 @@ router.get('/address/defaultAddress', AddressController.defaultAddress);
// 兑换礼品卡
router.get('/gift',
[tabsMiddleware.getCommonHeader, tabsMiddleware.getHomeNav], giftController.index);
router.get('/gift', tabsMiddleware.getCommonHeader, giftController.index);
router.post('/gift/exchange', giftController.exchange);
... ...
... ... @@ -17,14 +17,14 @@ module.exports = {
cookieDomain: '.yohobuy.com',
domains: {
// test3
singleApi: 'http://api-test3.yohops.com:9999/',
api: 'http://api-test3.yohops.com:9999/',
service: 'http://service-test3.yohops.com:9999/',
//singleApi: 'http://api-test3.yohops.com:9999/',
//api: 'http://api-test3.yohops.com:9999/',
//service: 'http://service-test3.yohops.com:9999/',
// prod
// singleApi: 'http://single.yoho.cn/',
// api: 'http://api.yoho.cn/',
// service: 'http://service.yoho.cn/',
singleApi: 'http://single.yoho.cn/',
api: 'http://api.yoho.cn/',
service: 'http://service.yoho.cn/',
// gray
// singleApi: 'http://single.gray.yohops.com/',
... ...