diff --git a/app.js b/app.js index ebdacd6..e9b12a7 100644 --- a/app.js +++ b/app.js @@ -73,6 +73,7 @@ app.use((req, res, next) => { try { const user = require('./doraemon/middleware/user'); const subDomain = require('./doraemon/middleware/sub-domain'); + const itemNameHandler = require('./doraemon/middleware/item-name-handler'); const setYohoData = require('./doraemon/middleware/set-yoho-data'); const errorHanlder = require('./doraemon/middleware/error-handler'); const setPageInfo = require('./doraemon/middleware/set-pageinfo'); @@ -81,6 +82,7 @@ try { // YOHO 前置中间件 app.use(subDomain()); + app.use(itemNameHandler); app.use(setYohoData()); app.use(user()); app.use(seo()); diff --git a/apps/activity/models/coupon.js b/apps/activity/models/coupon.js index 818fd53..232fd3b 100644 --- a/apps/activity/models/coupon.js +++ b/apps/activity/models/coupon.js @@ -40,25 +40,28 @@ const getUserStatus = (param) => { var dest = {}; dest.code = param.code; - dest.returnCode = param.data.returnCode; - dest.mobile = param.data.mobile; - if (param.data.returnCode === 0) { - dest.geted = true; - } else if (param.data.returnCode === 1) { - dest.wrongNumb = true; - } else if (param.data.returnCode === 2) { - dest.newUser = true; - } else if (param.data.returnCode === 8) { - dest.oldUserAskCouponOnceMore = true; - } else if (param.data.returnCode === 5) { - dest.vertifyWrong = true; - } else { - dest.ended = true; - } - if (param.data.newUser === 1) { - dest.newUser = true; + dest.returnCode = param && param.data && param.data.returnCode; + dest.mobile = param && param.data && param.data.mobile; + if (param && param.data) { + if (param.data.returnCode === 0) { + dest.geted = true; + } else if (param.data.returnCode === 1) { + dest.wrongNumb = true; + } else if (param.data.returnCode === 2) { + dest.newUser = true; + } else if (param.data.returnCode === 8) { + dest.oldUserAskCouponOnceMore = true; + } else if (param.data.returnCode === 5) { + dest.vertifyWrong = true; + } else { + dest.ended = true; + } + + if (param.data.newUser === 1) { + dest.newUser = true; + } + dest.message = param.data.returnMsg; } - dest.message = param.data.returnMsg; // 清空变量,释放内存 param = {}; diff --git a/apps/activity/views/action/invite/list.hbs b/apps/activity/views/action/invite/list.hbs index 397f63c..8df12c7 100644 --- a/apps/activity/views/action/invite/list.hbs +++ b/apps/activity/views/action/invite/list.hbs @@ -6,7 +6,7 @@ <strong class="fz18">现金券</strong> <p class="fz9 bold">CPOUPON</p> <div class="pirbox absolute"> - <em class="absolute">¥</em>0 + <em class="absolute">¥</em>0 </div> </div>--> <div class="coupon-box chit0"></div> diff --git a/apps/activity/views/action/invite/mycoupons.hbs b/apps/activity/views/action/invite/mycoupons.hbs index 8dbb820..586405e 100644 --- a/apps/activity/views/action/invite/mycoupons.hbs +++ b/apps/activity/views/action/invite/mycoupons.hbs @@ -6,7 +6,7 @@ <strong class="fz18">现金券</strong> <p class="fz9 bold">CPOUPON</p> <div class="pirbox absolute"> - <em class="absolute">¥</em>{{amount}} + <em class="absolute">¥</em>{{amount}} </div> <div class="count-not fz11 absolute"><hr class="fn-left"><hr class="fn-right">已送达您的账户</div> </div> diff --git a/apps/guang/controllers/index.js b/apps/guang/controllers/index.js index 4e6ae03..ba58251 100644 --- a/apps/guang/controllers/index.js +++ b/apps/guang/controllers/index.js @@ -165,16 +165,15 @@ const tag = (req, res, next) => { pageHeader: headerData, module: 'guang', page: 'index-editor', - title: tagTitle + ' | Yoho!Buy有货 | 潮流购物逛不停', - pageFooter: true + title: tagTitle + ' | Yoho!Buy有货 | 潮流购物逛不停' }; let param = { tag: req.query.query, isApp: req.query.app_version || req.query.appVersion || false, - gender: req.query.gender || req.cookies._Channel && channels[req.cookies._Channel] || '1,3', - uid: req.user.uid, - udid: req.user.udid, + gender: req.query.gender || '1,3', + uid: req.user.uid || 0, + udid: req.sessionID, type: req.query.type || 0 }; diff --git a/apps/guang/controllers/info.js b/apps/guang/controllers/info.js index 3ee46ac..216898e 100644 --- a/apps/guang/controllers/info.js +++ b/apps/guang/controllers/info.js @@ -295,7 +295,11 @@ const index = (req, res, next) => { }; // guang双头部的问题 20160601 - data.guang.author.url = helpers.https(`${detail.getAuthor.url}&openby:yohobuy={"action":"go.h5","params":{"param":{"id":"${detail.getAuthor.author_id}"},"share":"","id":${detail.getAuthor.author_id},"type":0,"islogin":"N","url":"${helpers.urlFormat('/author/index', {}, 'guang')}"}}`); + // 正确的URL + data.guang.author.url = helpers.https(`${detail.getAuthor.url}&openby:yohobuy={"action":"go.h5","params":{"param":{},"share":"","id":${detail.getAuthor.author_id},"type":0,"islogin":"N","url":"${detail.getAuthor.url}"}}`); + + // 错误的URL + // data.guang.author.url = helpers.https(`${detail.getAuthor.url}&openby:yohobuy={"action":"go.h5","params":{"param":{"id":"${detail.getAuthor.author_id}"},"share":"","id":${detail.getAuthor.author_id},"type":0,"islogin":"N","url":"${helpers.urlFormat('/author/index', {}, 'guang')}"}}`); } let guang = data.guang; diff --git a/apps/guang/controllers/plustar.js b/apps/guang/controllers/plustar.js index d9a58bc..7838a54 100644 --- a/apps/guang/controllers/plustar.js +++ b/apps/guang/controllers/plustar.js @@ -18,29 +18,59 @@ let channels = { lifestyle: '4' }; +let yhChannel = { + boys: 1, + girl: 2 +}; + const getListData = (req, res, next) => { let gender = req.query.gender || req.cookies._Channel && channels[req.cookies._Channel] || '1,3'; let recom = '4'; let all = '1'; + let type = req.query.type; + let channel = req.cookies._Channel && yhChannel[req.cookies._Channel] || 1; + let isRecommend = '0'; + let starBrand = '2'; + let originalBrand = '3'; - plustarModel.getListData(gender, recom, all).then((result) => { + if (type === '2') { + plustarModel.getBrandsData(gender, starBrand, originalBrand, channel, isRecommend).then((result) => { + res.render('plustar/list', { + module: 'guang', + page: 'plustar-list', + title: '明星原创', + pageHeader: headerModel.setNav({ + navTitle: '明星原创' + }), + pageFooter: true, + ps: { + sName: '明星潮品', + pName: '原创潮牌', + star: result.star, + plus: result.plus + } + }); + }).catch(next); + } else { + plustarModel.getListData(gender, recom, all).then((result) => { - res.render('plustar/list', { - module: 'guang', - page: 'plustar-list', - title: '国际优选', - pageHeader: headerModel.setNav({ - navTitle: '国际优选' - }), - pageFooter: true, - ps: { - sName: '设计师', - pName: '经典潮牌', - star: result.star, - plus: result.plus - } - }); - }).catch(next); + res.render('plustar/list', { + module: 'guang', + page: 'plustar-list', + title: '国际优选', + pageHeader: headerModel.setNav({ + navTitle: '国际优选' + }), + pageFooter: true, + ps: { + sName: '设计师', + pName: '经典潮牌', + star: result.star, + plus: result.plus + } + }); + }).catch(next); + } }; const getDetailData = (req, res, next) => { diff --git a/apps/guang/models/index.js b/apps/guang/models/index.js index 43bc3b7..9a2e343 100644 --- a/apps/guang/models/index.js +++ b/apps/guang/models/index.js @@ -142,10 +142,10 @@ const _article = (param) => { page: param.page || 1, uid: param.uid, udid: param.udid, - sort_id: param.type === '0' ? param.type : '1', + sort_id: 0, tag: param.tag ? param.tag : null, - author_id: param.authorId ? param.authorId : null, - limit: param.limit ? param.limit : null + //author_id: param.authorId ? param.authorId : null, + //limit: param.limit ? param.limit : null }, { cache: true, code: 200 @@ -279,13 +279,14 @@ const getTagEditor = (param) => { } }; - if (result && result[0] && result[0].data && result[0].data.list) { + if (result && result[0] && result[0].data && result[0].data.list && result[0].data.list.artList) { let inf = []; let infoList = result[0].data.list.artList; infoList.forEach(val => { + val.url = helpers.https(`${val.url}&openby:yohobuy={"action":"go.h5","params":{"param":{},"share":"","id":"","type":0,"islogin":"N","url":"${val.url}"}}`); inf.push(guangProcess.formatArticle(val, true, false, true)); }); diff --git a/apps/guang/models/info.js b/apps/guang/models/info.js index eaf1d23..6bcfe70 100644 --- a/apps/guang/models/info.js +++ b/apps/guang/models/info.js @@ -40,7 +40,7 @@ const packageData = (id, isApp) => { cache: true }).then(data => { // 接口要判断一下返回状态是否成功 - if (data.code !== 200) { + if (data === '' && data.code !== 200) { result.code = 400; return result; } @@ -110,28 +110,43 @@ const packageData = (id, isApp) => { } return Promise.all(promises).then(datas => { - let getArticleContent = datas[1].data; + if (datas) { + if (datas[1]) { - if (isApp && datas[4].data) { + let getArticleContent = datas[1].data; - let preCount = 0; - let i; + result.getArticleContent = getArticleContent; - for (i = 0; i < getArticleContent.length; i++) { - if (getArticleContent[i].singleImage || getArticleContent[i].text || getArticleContent[i].smallPic) { - preCount++; + } + + if (isApp && datas[4] && datas[4].data) { + + let preCount = 0; + let i; + + for (i = 0; i < getArticleContent.length; i++) { + if (getArticleContent[i].singleImage || getArticleContent[i].text || getArticleContent[i].smallPic) { + preCount++; + } } + + getArticleContent.splice(preCount, 0, {weixinPublic: datas[4].data}); + } + if (datas[0]) { + result.getAuthor = datas[0].data; } - getArticleContent.splice(preCount, 0, {weixinPublic: datas[4].data}); - } - result.getAuthor = datas[0].data; - result.getArticleContent = getArticleContent; - result.getBrand = datas[2].data; - if (datas.length === 5 && isApp || datas.length === 4 && !isApp) { - result.getOtherArticle = datas[3].data; + if (datas[2]) { + result.getBrand = datas[2].data; + } + if (datas.length === 5 && isApp || datas.length === 4 && !isApp) { + if (datas[3]) { + result.getOtherArticle = datas[3].data; + } + } } + return result; }); }); diff --git a/apps/guang/models/plustar.js b/apps/guang/models/plustar.js index 3d04f47..9ae65fa 100644 --- a/apps/guang/models/plustar.js +++ b/apps/guang/models/plustar.js @@ -8,11 +8,9 @@ const helpers = global.yoho.helpers; const formaData = (data, gender) => { let build = []; - // console.log(data) _.forEach(data, function(val) { // 多张图 if (val.data[1]) { - let imgs = []; _.forEach(val.data, function(list) { @@ -33,7 +31,7 @@ const formaData = (data, gender) => { } // 单张图 - if (val.data[0]) { + if (val.data[0] && !val.data[1]) { _.forEach(val.data, function(list) { build.push({ url: '/guang/plustar/brandinfo?id=' + val.id + '&gender=' + gender, @@ -47,15 +45,19 @@ const formaData = (data, gender) => { return build; }; +const getContentData = (gender, type, channel, isRecommend) => { + let param = { + gender: gender, + brand_type: type, + yh_channel: channel + }; -const getContentData = (gender, type) => { + if (isRecommend) { + param.is_recommend = isRecommend; + } - return serviceAPI.get('guang/api/v3/plustar/getlist', { - gender: gender, - brand_type: type - }).then((result) => { + return serviceAPI.get('guang/api/v3/plustar/getlist', param).then((result) => { if (result && result.code === 200) { - // console.log(result) return formaData(result.data.data.list[0].data, gender); } else { logger.error('列表 list data return code is not 200'); @@ -73,6 +75,15 @@ const getListData = (gender, recom, all) => { }); }; +const getBrandsData = (gender, starBrand, originalBrand, channel, isRecommend) => { + return Promise.all([getContentData(gender, starBrand, isRecommend, channel), getContentData(gender, originalBrand, isRecommend, channel)]).then((result) => { + return { + star: result[0], + plus: result[1] + }; + }); +}; + // 新品到着 const getNewProduct = (brandId, gender, url) => { @@ -96,7 +107,6 @@ const getNewProduct = (brandId, gender, url) => { let obj = {}; let price; - // console.log(list) if (index <= 5) { let tag = []; @@ -280,5 +290,6 @@ module.exports = { getListData, getContentData, getDetailData, - getDetailDataAsync + getDetailDataAsync, + getBrandsData }; diff --git a/apps/guang/views/action/index/list.hbs b/apps/guang/views/action/index/list.hbs index 43d1218..3955e0f 100644 --- a/apps/guang/views/action/index/list.hbs +++ b/apps/guang/views/action/index/list.hbs @@ -22,7 +22,7 @@ <div class="loading status hide"> 正在加载... </div> - <span class="no-more status">没有更多啦</span> + <span class="no-more status hide">没有更多啦</span> </div> {{#if tag}} diff --git a/apps/guang/views/action/index/page.hbs b/apps/guang/views/action/index/page.hbs index 79521f0..a7ad0ff 100644 --- a/apps/guang/views/action/index/page.hbs +++ b/apps/guang/views/action/index/page.hbs @@ -13,7 +13,6 @@ <div class="swiper-pagination"></div> </div> {{/if}} - {{# infos}} {{> index/info}} {{/ infos}} \ No newline at end of file diff --git a/apps/guang/views/action/info/index.hbs b/apps/guang/views/action/info/index.hbs index c317036..f2fc1b0 100644 --- a/apps/guang/views/action/info/index.hbs +++ b/apps/guang/views/action/info/index.hbs @@ -90,9 +90,9 @@ <span class="reco-name">{{name}}</span> </p> <p class="price"> - <span class="sale-price {{^price}}no-price{{/price}}">¥{{salePrice}}</span> + <span class="sale-price {{^price}}no-price{{/price}}">¥{{salePrice}}</span> {{#price}} - <span class="market-price">¥{{.}}</span> + <span class="market-price">¥{{.}}</span> {{/price}} <a class="check-detail" href={{url}}> 查看详情 diff --git a/apps/home/controllers/address.js b/apps/home/controllers/address.js index 6a3bf24..1c36320 100644 --- a/apps/home/controllers/address.js +++ b/apps/home/controllers/address.js @@ -49,7 +49,8 @@ exports.addressAct = (req, res, next) => { module: 'home', page: 'address-act', pageHeader: headerModel.setNav({ - navTitle: result.navTitle + navTitle: result && result.navTitle, + navBtn: false }), title: result.navTitle }; @@ -161,7 +162,8 @@ exports.addressModify = (req, res, next) => { module: 'home', page: 'address-modify', pageHeader: headerModel.setNav({ - navTitle: '选择地址' + navTitle: '选择地址', + navBtn: false }), title: '选择地址', }; @@ -184,6 +186,10 @@ exports.addressModify = (req, res, next) => { * @param next */ exports.locationList = (req, res, next) => { + res.set({ + 'Cache-Control': 'max-age=600' + }); + addressModel.locationList({ uid: req.user.uid }).then(result => { diff --git a/apps/home/controllers/help.js b/apps/home/controllers/help.js index b8ab2ae..99d565e 100644 --- a/apps/home/controllers/help.js +++ b/apps/home/controllers/help.js @@ -9,11 +9,12 @@ exports.index = (req, res, next) => { module: 'home', page: 'help', pageHeader: headerModel.setNav({ - navTitle: '帮助中心' + navTitle: '帮助中心', + navBtn: false }), title: '帮助中心', pageFooter: true, - iHelp: result, + iHelp: result }); }).catch(next); }; @@ -24,7 +25,8 @@ exports.helpDetail = (req, res, next) => { module: 'home', page: 'help-detail', pageHeader: headerModel.setNav({ - navTitle: req.query.name + navTitle: req.query.name, + navBtn: false }), title: req.query.name, pageFooter: true, diff --git a/apps/home/controllers/myCurrency.js b/apps/home/controllers/myCurrency.js index 27e9d0f..bd3f75c 100644 --- a/apps/home/controllers/myCurrency.js +++ b/apps/home/controllers/myCurrency.js @@ -65,7 +65,7 @@ let ajaxCurrencyDetail = (req, res, next) => { res.render('ajax-currency-detail', { layout: false, - coinlist: result.coinlist + coinlist: _.get(result, 'coinlist', []) }); }).catch(next); }; diff --git a/apps/home/models/favorite.js b/apps/home/models/favorite.js index 7d2d090..0e87ec7 100644 --- a/apps/home/models/favorite.js +++ b/apps/home/models/favorite.js @@ -109,7 +109,7 @@ const favProduct = (uid, page, limit) => { return resu; } else { - logger.error('收藏商品 cood 不是 200'); + logger.error('fav goods code no 200'); return { total: 0, }; @@ -192,7 +192,7 @@ const favfavBrand = (uid, page, limit) => { return resu; } else { - logger.error('收藏品牌 cood 不是 200'); + logger.error('fav brand code no 200'); return { total: 0, }; diff --git a/apps/home/models/myCurrency.js b/apps/home/models/myCurrency.js index d2b47be..64ca95f 100644 --- a/apps/home/models/myCurrency.js +++ b/apps/home/models/myCurrency.js @@ -15,7 +15,7 @@ const yohoCoin = (uid) => { if (result && result.code === 200) { return camelCase(result.data); } else { - logger.error('youhocoin cood 不是 200'); + logger.error('youhocoin code no 200'); } }); }; @@ -59,6 +59,12 @@ const currencyDetail = (uid, page, limit) => { if (result && result.code === 200) { let total = parseInt(result.data.page_total, 10) + 1; + _.forEach(_.get(result, 'data.coinlist', []), perCoin => { + if (perCoin.num > 0) { + perCoin.num = '+' + perCoin.num; + } + }); + if (page && page <= total) { return yohoCoin(uid).then(list => { @@ -79,7 +85,7 @@ const currencyDetail = (uid, page, limit) => { } } else { - logger.error('youholist cood 不是 200'); + logger.error('youholist code no 200'); } }); diff --git a/apps/home/models/orderDetail.js b/apps/home/models/orderDetail.js index 8fb3fb8..d4b4a34 100644 --- a/apps/home/models/orderDetail.js +++ b/apps/home/models/orderDetail.js @@ -289,7 +289,7 @@ const orderDetailData = (uid, orderCode) => { // return orderDetail; } else { - logger.error('详情信息 返回不是200'); + logger.error('detail info return no 200'); return {}; } diff --git a/apps/home/models/suggest.js b/apps/home/models/suggest.js index ffb1aad..28642b7 100644 --- a/apps/home/models/suggest.js +++ b/apps/home/models/suggest.js @@ -7,12 +7,9 @@ 'use strict'; const logger = global.yoho.logger; -const api = global.yoho.API; const serviceAPI = global.yoho.ServiceAPI; const camelCase = global.yoho.camelCase; const _ = require('lodash'); -const config = global.yoho.config; -const helpers = global.yoho.helpers; const suggestData = (udid, page, limit) => { @@ -22,10 +19,10 @@ const suggestData = (udid, page, limit) => { limit: limit }).then((result) => { - if (result && result.code === 200) { + if (result && result.code === 200 && result.data) { _.forEach(result.data.list, function(data) { - data = _.assign(data, { + Object.assign(data, { good: data.is_reliable === 1, bad: data.is_reliable === 2, none: data.is_reliable === 0 @@ -33,7 +30,7 @@ const suggestData = (udid, page, limit) => { }); return camelCase(result.data.list); } else { - logger.error('收藏商品 cood 不是 200'); + logger.error('fav goods code no 200'); } }); }; diff --git a/apps/home/router.js b/apps/home/router.js index 060b7fe..9c0d784 100644 --- a/apps/home/router.js +++ b/apps/home/router.js @@ -52,6 +52,7 @@ router.get('/locationList', auth, addressController.locationList); // 异步获� router.get('/orders', auth, orderController.order); // 订单列表 router.get('/getOrders', auth, orderController.getOrders); // 获取订单列表数据 router.get('/orderDetail', auth, orderDetailController.orderDetailData); // 订单详情页 +router.get('/orders/detail', auth, orderDetailController.orderDetailData); // 订单详情页兼容老的 router.get('/delOrder', auth, orderDetailController.delOrder); // 删除订单 router.get('/readd', auth, orderDetailController.readdData); // 再次购买 router.get('/cancelOrder', auth, orderDetailController.cancelOrder); // 取消订单 diff --git a/apps/home/views/action/ajax-currency-detail.hbs b/apps/home/views/action/ajax-currency-detail.hbs index 9b63fe0..47fe501 100644 --- a/apps/home/views/action/ajax-currency-detail.hbs +++ b/apps/home/views/action/ajax-currency-detail.hbs @@ -4,7 +4,7 @@ <p class="title">{{message}}</p> <p class="time">{{date}}</p> <div class="count"> - +{{num}} + {{num}} </div> </div> </li> diff --git a/apps/home/views/action/currency-new.hbs b/apps/home/views/action/currency-new.hbs index b1d09e9..9f38189 100644 --- a/apps/home/views/action/currency-new.hbs +++ b/apps/home/views/action/currency-new.hbs @@ -21,7 +21,7 @@ {{# banner}} {{# data}} <a href="{{url}}"> - <img src="{{image src 640 200 2}}" alt="img"> + <img src="{{image src 640 200}}" alt="img"> </a> {{/ data}} {{/ banner}} diff --git a/apps/home/views/action/favorite/favorite-brand.hbs b/apps/home/views/action/favorite/favorite-brand.hbs index 3f63eb8..478f856 100644 --- a/apps/home/views/action/favorite/favorite-brand.hbs +++ b/apps/home/views/action/favorite/favorite-brand.hbs @@ -23,7 +23,7 @@ {{# productList}} <li class="swiper-slide"> <a href="{{link}}"> - <img class="swiper-lazy" data-src="{{image imgUrl 97 150}}" alt=""/> + <img class="swiper-lazy" data-src="{{image imgUrl 235 314}}" alt=""/> </a> <div class="brand-product"> <div class="{{# discount}}price-discount{{/ discount}}"> diff --git a/apps/home/views/action/help.hbs b/apps/home/views/action/help.hbs index 250ce1d..76be9c5 100644 --- a/apps/home/views/action/help.hbs +++ b/apps/home/views/action/help.hbs @@ -1,4 +1,4 @@ -<div class="iHelp"> +<div class="i-help"> <ul> {{#iHelp}} <li><a href="//m.yohobuy.com/home/helpDetail?code={{code}}&name={{name}}"><span>{{name}}</span><i class="iconfont num"></i></a></li> diff --git a/apps/home/views/action/vip-grade/vip-grade.hbs b/apps/home/views/action/vip-grade/vip-grade.hbs index e5bdfa4..68b64da 100644 --- a/apps/home/views/action/vip-grade/vip-grade.hbs +++ b/apps/home/views/action/vip-grade/vip-grade.hbs @@ -7,11 +7,11 @@ <ul class="cost block"> <li> 年度累计金额: - <span>¥{{costOfThisYear}}</span> + <span>¥{{costOfThisYear}}</span> </li> <li> 历史消费总金额: - <span>¥{{sumCost}}</span> + <span>¥{{sumCost}}</span> </li> </ul> diff --git a/apps/home/views/partial/vip-grade/basic-info.hbs b/apps/home/views/partial/vip-grade/basic-info.hbs index 942a96d..35b62ff 100644 --- a/apps/home/views/partial/vip-grade/basic-info.hbs +++ b/apps/home/views/partial/vip-grade/basic-info.hbs @@ -7,7 +7,7 @@ 您已升级至最高的等级啦! </p> <p class="sum-cost"> - 年度累计金额<span> ¥{{costOfThisYear}}</span> + 年度累计金额<span> ¥{{costOfThisYear}}</span> </p> <div class="progresser"> <div class="outer"></div> @@ -24,11 +24,11 @@ <span class="vip-icon vip-2"></span> </p> <p class="grade-desc"> - 还差<span class="cost-gap">¥{{costGap}}</span>就可以升级为白金会员! + 还差<span class="cost-gap">¥{{costGap}}</span>就可以升级为白金会员! <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span> </p> <p class="sum-cost"> - 年度累计金额<span> ¥{{costOfThisYear}}</span> + 年度累计金额<span> ¥{{costOfThisYear}}</span> </p> <div class="progresser"> <div class="outer"></div> @@ -37,7 +37,7 @@ 金卡会员 </span> <span class="beacon beacon-max">白金卡会员</span> - <span class="cost-limit">¥5000.00</span> + <span class="cost-limit">¥5000.00</span> </div> {{/if}} @@ -47,11 +47,11 @@ <span class="vip-icon vip-1"></span> </p> <p class="grade-desc"> - 还差<span class="cost-gap">¥{{costGap}}</span>就可以升级为金卡会员! + 还差<span class="cost-gap">¥{{costGap}}</span>就可以升级为金卡会员! <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span> </p> <p class="sum-cost"> - 年度累计金额<span> ¥{{costOfThisYear}}</span> + 年度累计金额<span> ¥{{costOfThisYear}}</span> </p> <div class="progresser"> <div class="outer"></div> @@ -60,7 +60,7 @@ 银卡会员 </span> <span class="beacon beacon-max">金卡会员</span> - <span class="cost-limit">¥2000.00</span> + <span class="cost-limit">¥2000.00</span> </div> {{/if}} @@ -70,11 +70,11 @@ <span>普通会员</span> </p> <p class="grade-desc"> - 还差<span class="cost-gap">¥{{costGap}}</span>就可以升级为银卡会员! + 还差<span class="cost-gap">¥{{costGap}}</span>就可以升级为银卡会员! <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span> </p> <p class="sum-cost"> - 年度累计金额<span> ¥{{costOfThisYear}}</span> + 年度累计金额<span> ¥{{costOfThisYear}}</span> </p> <div class="progresser"> <div class="outer"></div> @@ -83,6 +83,6 @@ 普通 </span> <span class="beacon beacon-max">银卡会员</span> - <span class="cost-limit">¥600.00</span> + <span class="cost-limit">¥600.00</span> </div> {{/if}} diff --git a/apps/passport/models/back-api.js b/apps/passport/models/back-api.js index 82733fb..056ec6e 100644 --- a/apps/passport/models/back-api.js +++ b/apps/passport/models/back-api.js @@ -34,7 +34,7 @@ const getAreaDataAsync = () => { return result; } else { - logger.error('获取地区数据返回 code 不是 200'); + logger.error('获取地区数据返回 code no 200'); return []; } }); diff --git a/apps/product/models/consult-comment.js b/apps/product/models/consult-comment.js index 1aa6c58..c0ad419 100644 --- a/apps/product/models/consult-comment.js +++ b/apps/product/models/consult-comment.js @@ -178,7 +178,7 @@ let consults = (params) => { data.consults = result[1].list; } - data.showReadMore = result[1].list.length > 2; + data.showReadMore = _.get(result[1], 'list.length', 0) > 2; return data; }); diff --git a/apps/product/models/detail.js b/apps/product/models/detail.js index 90f49ac..93df5f1 100644 --- a/apps/product/models/detail.js +++ b/apps/product/models/detail.js @@ -1772,7 +1772,7 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => { colors: _.toArray(colorGroup), sizes: sizeGroup }); - + // 限购商品 if (origin.isLimitBuy) { return api.get('', { @@ -1858,6 +1858,52 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => { dest.goodsId = origin.goods_id; return Promise.resolve(dest); } + + return api.get('', { + method: 'app.shop.queryShopsByBrandId', + brand_id: _.toString(brandId) + }, { + cache: true + }).then(shops => { + if (shops && shops.code === 200) { + return _processShopsInfo(shops.data); + } + + return []; + }); +}; + +let _getPromotionInfo = (skn) => { + return api.get('', { + method: 'app.product.promotion', + product_skn: _.toString(skn) + }, { + code: 200, + cache: true + }).then((result) => { + return result && result.data; + }); +}; + +/** + * 获取默认咨询列表 + */ +const _getCommonConsult = () => { + let params = { + method: 'app.consult.common' + }; + + return api.get('', params, { + code: 200 + }).then(result => { + let data = {}; + + if (result.data) { + data = result.data; + } + + return data; + }); }; diff --git a/apps/product/models/list.js b/apps/product/models/list.js index 7f7f3ef..54d37f2 100644 --- a/apps/product/models/list.js +++ b/apps/product/models/list.js @@ -596,8 +596,7 @@ const getBrandIntro = (brandId, uid) => { method: 'app.brand.getBrandIntro', brand_id: brandId }, param), { - code: 200, - cache: true + code: 200 }).then(result => { if (result && result.data) { let list = result.data; diff --git a/apps/product/models/recom.js b/apps/product/models/recom.js index b61d899..60179c9 100644 --- a/apps/product/models/recom.js +++ b/apps/product/models/recom.js @@ -1,6 +1,7 @@ 'use strict'; const api = global.yoho.API; +const logger = global.yoho.logger; const utils = '../../../utils'; const productProcess = require(`${utils}/product-process`); @@ -27,7 +28,8 @@ const mayLike = (uid, page, limit, gender, udid, recPos, channel) => { return false; } } - + } else { + logger.error('mayLike code no 200'); } }); }; @@ -51,6 +53,8 @@ const mayLikeKids = (page, limit, channel) => { return productProcess.processProductList(result.data.product_list); } + } else { + logger.error('mayLikeKids code no 200'); } }); }; diff --git a/apps/product/router.js b/apps/product/router.js index 755d5e7..f6f1750 100644 --- a/apps/product/router.js +++ b/apps/product/router.js @@ -95,6 +95,7 @@ router.get('/search/search', search.search); // 品类 router.get('/index/index', list.category); +router.get('/list/index', list.category); // 兼容 PC 的链接 // 品牌 | 店铺 router.get('/index/brand', list.brand); @@ -113,6 +114,7 @@ router.get('/opt/favoriteBrand', list.favoriteBrand); // 新品到着 router.get('/new', news.newGoods); +router.get('/list/new', news.newGoods); // 兼容 PC 的链接 router.get('/new/selectNewSale', news.selectNewSale); router.get('/new/filter', news.filter); diff --git a/apps/product/views/action/detail/preference.hbs b/apps/product/views/action/detail/preference.hbs index 9bf3ba1..7800472 100644 --- a/apps/product/views/action/detail/preference.hbs +++ b/apps/product/views/action/detail/preference.hbs @@ -9,7 +9,7 @@ </div> <div class="price"> <span class="sale-price {{^price}}no-price{{/price}}">¥{{salePrice}}</span> - {{#price}}<span class="old-price">¥{{.}}</span>{{/price}} + {{#price}}<span class="old-price">¥{{.}}</span>{{/price}} </div> <div class="swiper-lazy-preloader"></div> </a> diff --git a/config/common.js b/config/common.js index 346b707..997b6d8 100644 --- a/config/common.js +++ b/config/common.js @@ -17,10 +17,10 @@ module.exports = { siteUrl: '//m.yohobuy.com', assetUrl: '//localhost:5001', domains: { - api: 'http://api.yoho.cn/', - service: 'http://service.yoho.cn/', - liveApi: 'http://api.live.yoho.cn/', - singleApi: 'http://single.yoho.cn/', + api: 'http://api.yoho.yohoops.org/', + service: 'http://service.yoho.yohoops.org/', + liveApi: 'http://api.live.yoho.cn/', + singleApi: 'http://single.yoho.cn/' // api: 'http://api-test1.yohops.com:9999/', // service: 'http://service-test1.yohops.com:9999/', diff --git a/doraemon/middleware/error-handler.js b/doraemon/middleware/error-handler.js index f0a7d4f..71851ae 100644 --- a/doraemon/middleware/error-handler.js +++ b/doraemon/middleware/error-handler.js @@ -59,6 +59,6 @@ exports.serverError = () => { isErr: true }); } - next(); + next(err); }; }; diff --git a/doraemon/middleware/item-name-handler.js b/doraemon/middleware/item-name-handler.js new file mode 100644 index 0000000..03ebc36 --- /dev/null +++ b/doraemon/middleware/item-name-handler.js @@ -0,0 +1,12 @@ +/** + * 商品详情页部分商品名称重置,防止express内部decodeURIComponent不能解析url出错 + * @author: xuqi<qi.xu@yoho.cn> + * @date: 2016/8/23 + */ + +module.exports = function(req, res, next) { + if (/^\/product\/pro_/.test(req.url)) { + req.url = req.url.replace(/\/pro_([\d]+)_([\d]+)\/(.*)/, '/pro_$1_$2/yoho-replace.html'); + } + next(); +}; diff --git a/doraemon/middleware/set-yoho-data.js b/doraemon/middleware/set-yoho-data.js index a98ad63..757743b 100644 --- a/doraemon/middleware/set-yoho-data.js +++ b/doraemon/middleware/set-yoho-data.js @@ -5,6 +5,7 @@ */ 'use strict'; +const helpers = global.yoho.helpers; module.exports = () => { return (req, res, next) => { @@ -31,6 +32,8 @@ module.exports = () => { res.set('Access-Control-Allow-Origin', '*'); } + res.locals.cartUrl = helpers.urlFormat('/cart/index/index'); + next(); }; }; diff --git a/doraemon/views/partial/common/suspend-cart.hbs b/doraemon/views/partial/common/suspend-cart.hbs index b3082f5..c99a0f0 100644 --- a/doraemon/views/partial/common/suspend-cart.hbs +++ b/doraemon/views/partial/common/suspend-cart.hbs @@ -1,6 +1,6 @@ <div id="suspend-cart" class="suspend-cart"> - <a href={{cartUrl}}> + <a href="{{@root.cartUrl}}"> <span class="iconfont"></span> </a> <span class="cart-count hide">0</span> -</div> \ No newline at end of file +</div> diff --git a/doraemon/views/partial/header.hbs b/doraemon/views/partial/header.hbs index 4e3c15d..6cc6ac6 100644 --- a/doraemon/views/partial/header.hbs +++ b/doraemon/views/partial/header.hbs @@ -14,13 +14,13 @@ <a href="{{url}}" class="nav-sub-right">{{text}}</a> {{/shopPage}} {{#currencyPage}} - <a href="/home/helpDetail?code=20151230-102233&caption=有货币介绍" class="iconfont nav-home"></a> + <a href="/home/helpDetail?code=20151230-102233&caption=有货币介绍&name=有货币介绍" class="iconfont nav-home"></a> {{/currencyPage}} {{#currencyDetailPage}} - <a href="/home/helpDetail?code=20111130-152530&caption=如何使用有货币支付" class="iconfont nav-home"></a> + <a href="/home/helpDetail?code=20111130-152530&caption=如何使用有货币支付&name=如何使用有货币支付" class="iconfont nav-home"></a> {{/currencyDetailPage}} {{#installmentPage}} - <a href="/home/helpDetail?code=20151230-102233&caption=有货分期" class="iconfont nav-home"></a> + <a href="/home/helpDetail?code=20151230-102233&caption=有货分期&name=有货分期" class="iconfont nav-home"></a> {{/installmentPage}} {{#navPhone}} <a href="{{.}}" class="iconfont nav-home"></a> diff --git a/public/js/channel/cate.page.js b/public/js/channel/cate.page.js index 9b62f1a..746efb5 100644 --- a/public/js/channel/cate.page.js +++ b/public/js/channel/cate.page.js @@ -78,6 +78,10 @@ $categoryContainer.on('touchend', function(e) { $subLevel.not('.hide').addClass('hide'); $subLevel.eq(index).removeClass('hide'); } + + if ($this.find('a').attr('href')) { + location.href = $this.find('a').attr('href'); + } }); $categoryContainer.find('.primary-level').on('touchstart touchend touchcancel', 'li', function() { diff --git a/public/js/channel/maybe-like.js b/public/js/channel/maybe-like.js index ec15a85..408fbbb 100644 --- a/public/js/channel/maybe-like.js +++ b/public/js/channel/maybe-like.js @@ -127,12 +127,10 @@ module.exports = function(specificGender) { success: function(data) { var PRDID = []; if (data === ' ' || data === '') { + searching = true; - searching = false; loading.hideLoadingMask(); - $('.maybe-like').hide(); - // 有货币页面不加载底部 if (gender && !specificGender) { gender = gender.substr(0, 3); diff --git a/public/js/common.js b/public/js/common.js index aee13e0..f916dc4 100644 --- a/public/js/common.js +++ b/public/js/common.js @@ -195,7 +195,7 @@ function reMarginFooter(fixedElement) { a.async = 1; a.src = j; m.parentNode.insertBefore(a, m); -})(window, document, 'script', (document.location.protocol === 'https:' ? 'https' : 'http') + '://cdn.yoho.cn/yas-jssdk/1.0.17/yas.js', '_yas'); +}(window, document, 'script', (document.location.protocol === 'https:' ? 'https' : 'http') + '://cdn.yoho.cn/yas-jssdk/1.0.17/yas.js', '_yas')); (function() { var uid = getUid(); diff --git a/public/js/guang/info-common.js b/public/js/guang/info-common.js index fefb3cb..761b21a 100644 --- a/public/js/guang/info-common.js +++ b/public/js/guang/info-common.js @@ -215,7 +215,7 @@ function loadMore($container, opt, url) { success: function(data) { var $newItems; - if (data === ' ') { + if (data === '') { opt.end = true; searching = false; diff --git a/public/js/home/address-act.page.js b/public/js/home/address-act.page.js index fcfd104..1bf19e5 100644 --- a/public/js/home/address-act.page.js +++ b/public/js/home/address-act.page.js @@ -193,6 +193,7 @@ function bindAddressListEvent(html) { if (window.localStorage && window.localStorage.getItem) { chinaAddressList = window.localStorage.getItem('chinaAddressList'); } + if (chinaAddressList) { bindAddressListEvent(chinaAddressList); } else { @@ -201,12 +202,14 @@ if (chinaAddressList) { $.ajax({ method: 'GET', url: '/home/locationList', - timeout: 60000 + timeout: 60000, + cache: true }).then(function(html) { bindAddressListEvent(html); - if (window.localStorage && window.localStorage.setItem) { - window.localStorage.setItem('chinaAddressList', html); - } + + // if (window.localStorage && window.localStorage.setItem) { + // window.localStorage.setItem('chinaAddressList', html); + // } }).fail(function() { tip.show('获取省市区列表失败'); }); diff --git a/public/js/home/currency-detail.page.js b/public/js/home/currency-detail.page.js index f987f40..5dff510 100644 --- a/public/js/home/currency-detail.page.js +++ b/public/js/home/currency-detail.page.js @@ -3,6 +3,8 @@ var $ = require('yoho-jquery'), var page = 1; var flag = true; +require('../common'); + loading.showLoadingMask(); function ajaxCurrencyDetail(curPage) { diff --git a/public/js/home/currency-new.page.js b/public/js/home/currency-new.page.js index 232f7e0..a618c9c 100644 --- a/public/js/home/currency-new.page.js +++ b/public/js/home/currency-new.page.js @@ -13,3 +13,7 @@ function getGender() { } require('../channel/maybe-like')(getGender()); + +if ($('#goods-list').length === 0) { + $('.maybe-like').hide(); +} diff --git a/public/scss/home/_ihelp.css b/public/scss/home/_ihelp.css index 2c9a569..625b3a6 100644 --- a/public/scss/home/_ihelp.css +++ b/public/scss/home/_ihelp.css @@ -1,4 +1,4 @@ -.iHelp { +.i-help { width: 100%; height: auto; overflow: hidden; @@ -29,7 +29,7 @@ } span { - width: 85%; + width: 92%; height: 100%; overflow: hidden; float: left; diff --git a/public/scss/layout/_header.css b/public/scss/layout/_header.css index 305f544..25655a4 100644 --- a/public/scss/layout/_header.css +++ b/public/scss/layout/_header.css @@ -223,7 +223,7 @@ height: auto; color: #fff; line-height: 40px; - font-size: 14px; + font-size: 14PX; } } } diff --git a/public/scss/me/_browse-record.css b/public/scss/me/_browse-record.css index dd12704..380b7a5 100644 --- a/public/scss/me/_browse-record.css +++ b/public/scss/me/_browse-record.css @@ -30,7 +30,7 @@ .price { margin: 0.3rem 0; - font-size: 16px; + font-size: 16PX; } .sale-price { diff --git a/public/scss/me/_fav.css b/public/scss/me/_fav.css index d299ea4..2104dee 100644 --- a/public/scss/me/_fav.css +++ b/public/scss/me/_fav.css @@ -107,7 +107,7 @@ font-size: 24px; border-bottom: 1px solid #e0e0e0; padding-bottom: 20px; - height: 120px; + height: 140px; overflow: hidden; position: relative; @@ -288,7 +288,7 @@ margin: 0 30px; .swiper-slide { - width: 225px; + width: 255px; height: 100%; float: left; padding-right: 30px; diff --git a/public/scss/me/_home.css b/public/scss/me/_home.css index 753f8d2..0fb218f 100644 --- a/public/scss/me/_home.css +++ b/public/scss/me/_home.css @@ -307,6 +307,7 @@ .num { color: #e0e0e0; float: right; + font-size: 16PX; } } } diff --git a/public/scss/me/_suggest.css b/public/scss/me/_suggest.css index f93a036..cf7cbfd 100644 --- a/public/scss/me/_suggest.css +++ b/public/scss/me/_suggest.css @@ -124,14 +124,13 @@ .create-new-suggest { display: block; width: 100%; - height: 88px; + height: 150px; line-height: 88px; text-align: center; font-size: 30px; border-top: 30px solid #f0f0f0; border-bottom: 30px solid #f0f0f0; position: relative; - height: 88px; .list-item { padding: 0 35px;