Authored by ccbikai(👎🏻🍜)

Merge branch 'master' into qCloud

Showing 53 changed files with 297 additions and 144 deletions
@@ -73,6 +73,7 @@ app.use((req, res, next) => { @@ -73,6 +73,7 @@ app.use((req, res, next) => {
73 try { 73 try {
74 const user = require('./doraemon/middleware/user'); 74 const user = require('./doraemon/middleware/user');
75 const subDomain = require('./doraemon/middleware/sub-domain'); 75 const subDomain = require('./doraemon/middleware/sub-domain');
  76 + const itemNameHandler = require('./doraemon/middleware/item-name-handler');
76 const setYohoData = require('./doraemon/middleware/set-yoho-data'); 77 const setYohoData = require('./doraemon/middleware/set-yoho-data');
77 const errorHanlder = require('./doraemon/middleware/error-handler'); 78 const errorHanlder = require('./doraemon/middleware/error-handler');
78 const setPageInfo = require('./doraemon/middleware/set-pageinfo'); 79 const setPageInfo = require('./doraemon/middleware/set-pageinfo');
@@ -81,6 +82,7 @@ try { @@ -81,6 +82,7 @@ try {
81 82
82 // YOHO 前置中间件 83 // YOHO 前置中间件
83 app.use(subDomain()); 84 app.use(subDomain());
  85 + app.use(itemNameHandler);
84 app.use(setYohoData()); 86 app.use(setYohoData());
85 app.use(user()); 87 app.use(user());
86 app.use(seo()); 88 app.use(seo());
@@ -40,25 +40,28 @@ const getUserStatus = (param) => { @@ -40,25 +40,28 @@ const getUserStatus = (param) => {
40 var dest = {}; 40 var dest = {};
41 41
42 dest.code = param.code; 42 dest.code = param.code;
43 - dest.returnCode = param.data.returnCode;  
44 - dest.mobile = param.data.mobile;  
45 - if (param.data.returnCode === 0) {  
46 - dest.geted = true;  
47 - } else if (param.data.returnCode === 1) {  
48 - dest.wrongNumb = true;  
49 - } else if (param.data.returnCode === 2) {  
50 - dest.newUser = true;  
51 - } else if (param.data.returnCode === 8) {  
52 - dest.oldUserAskCouponOnceMore = true;  
53 - } else if (param.data.returnCode === 5) {  
54 - dest.vertifyWrong = true;  
55 - } else {  
56 - dest.ended = true;  
57 - }  
58 - if (param.data.newUser === 1) {  
59 - dest.newUser = true; 43 + dest.returnCode = param && param.data && param.data.returnCode;
  44 + dest.mobile = param && param.data && param.data.mobile;
  45 + if (param && param.data) {
  46 + if (param.data.returnCode === 0) {
  47 + dest.geted = true;
  48 + } else if (param.data.returnCode === 1) {
  49 + dest.wrongNumb = true;
  50 + } else if (param.data.returnCode === 2) {
  51 + dest.newUser = true;
  52 + } else if (param.data.returnCode === 8) {
  53 + dest.oldUserAskCouponOnceMore = true;
  54 + } else if (param.data.returnCode === 5) {
  55 + dest.vertifyWrong = true;
  56 + } else {
  57 + dest.ended = true;
  58 + }
  59 +
  60 + if (param.data.newUser === 1) {
  61 + dest.newUser = true;
  62 + }
  63 + dest.message = param.data.returnMsg;
60 } 64 }
61 - dest.message = param.data.returnMsg;  
62 65
63 // 清空变量,释放内存 66 // 清空变量,释放内存
64 param = {}; 67 param = {};
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 <strong class="fz18">现金券</strong> 6 <strong class="fz18">现金券</strong>
7 <p class="fz9 bold">CPOUPON</p> 7 <p class="fz9 bold">CPOUPON</p>
8 <div class="pirbox absolute"> 8 <div class="pirbox absolute">
9 - <em class="absolute"></em>0 9 + <em class="absolute">&yen;</em>0
10 </div> 10 </div>
11 </div>--> 11 </div>-->
12 <div class="coupon-box chit0"></div> 12 <div class="coupon-box chit0"></div>
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 <strong class="fz18">现金券</strong> 6 <strong class="fz18">现金券</strong>
7 <p class="fz9 bold">CPOUPON</p> 7 <p class="fz9 bold">CPOUPON</p>
8 <div class="pirbox absolute"> 8 <div class="pirbox absolute">
9 - <em class="absolute"></em>{{amount}} 9 + <em class="absolute">&yen;</em>{{amount}}
10 </div> 10 </div>
11 <div class="count-not fz11 absolute"><hr class="fn-left"><hr class="fn-right">已送达您的账户</div> 11 <div class="count-not fz11 absolute"><hr class="fn-left"><hr class="fn-right">已送达您的账户</div>
12 </div> 12 </div>
@@ -165,16 +165,15 @@ const tag = (req, res, next) => { @@ -165,16 +165,15 @@ const tag = (req, res, next) => {
165 pageHeader: headerData, 165 pageHeader: headerData,
166 module: 'guang', 166 module: 'guang',
167 page: 'index-editor', 167 page: 'index-editor',
168 - title: tagTitle + ' | Yoho!Buy有货 | 潮流购物逛不停',  
169 - pageFooter: true 168 + title: tagTitle + ' | Yoho!Buy有货 | 潮流购物逛不停'
170 }; 169 };
171 170
172 let param = { 171 let param = {
173 tag: req.query.query, 172 tag: req.query.query,
174 isApp: req.query.app_version || req.query.appVersion || false, 173 isApp: req.query.app_version || req.query.appVersion || false,
175 - gender: req.query.gender || req.cookies._Channel && channels[req.cookies._Channel] || '1,3',  
176 - uid: req.user.uid,  
177 - udid: req.user.udid, 174 + gender: req.query.gender || '1,3',
  175 + uid: req.user.uid || 0,
  176 + udid: req.sessionID,
178 type: req.query.type || 0 177 type: req.query.type || 0
179 178
180 }; 179 };
@@ -295,7 +295,11 @@ const index = (req, res, next) => { @@ -295,7 +295,11 @@ const index = (req, res, next) => {
295 }; 295 };
296 296
297 // guang双头部的问题 20160601 297 // guang双头部的问题 20160601
298 - 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')}"}}`); 298 + // 正确的URL
  299 + 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}"}}`);
  300 +
  301 + // 错误的URL
  302 + // 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')}"}}`);
299 } 303 }
300 let guang = data.guang; 304 let guang = data.guang;
301 305
@@ -18,29 +18,59 @@ let channels = { @@ -18,29 +18,59 @@ let channels = {
18 lifestyle: '4' 18 lifestyle: '4'
19 }; 19 };
20 20
  21 +let yhChannel = {
  22 + boys: 1,
  23 + girl: 2
  24 +};
  25 +
21 const getListData = (req, res, next) => { 26 const getListData = (req, res, next) => {
22 let gender = req.query.gender || req.cookies._Channel && channels[req.cookies._Channel] || '1,3'; 27 let gender = req.query.gender || req.cookies._Channel && channels[req.cookies._Channel] || '1,3';
23 let recom = '4'; 28 let recom = '4';
24 let all = '1'; 29 let all = '1';
  30 + let type = req.query.type;
  31 + let channel = req.cookies._Channel && yhChannel[req.cookies._Channel] || 1;
  32 + let isRecommend = '0';
  33 + let starBrand = '2';
  34 + let originalBrand = '3';
25 35
26 - plustarModel.getListData(gender, recom, all).then((result) => { 36 + if (type === '2') {
  37 + plustarModel.getBrandsData(gender, starBrand, originalBrand, channel, isRecommend).then((result) => {
  38 + res.render('plustar/list', {
  39 + module: 'guang',
  40 + page: 'plustar-list',
  41 + title: '明星原创',
  42 + pageHeader: headerModel.setNav({
  43 + navTitle: '明星原创'
  44 + }),
  45 + pageFooter: true,
  46 + ps: {
  47 + sName: '明星潮品',
  48 + pName: '原创潮牌',
  49 + star: result.star,
  50 + plus: result.plus
  51 + }
  52 + });
  53 + }).catch(next);
  54 + } else {
  55 + plustarModel.getListData(gender, recom, all).then((result) => {
27 56
28 - res.render('plustar/list', {  
29 - module: 'guang',  
30 - page: 'plustar-list',  
31 - title: '国际优选',  
32 - pageHeader: headerModel.setNav({  
33 - navTitle: '国际优选'  
34 - }),  
35 - pageFooter: true,  
36 - ps: {  
37 - sName: '设计师',  
38 - pName: '经典潮牌',  
39 - star: result.star,  
40 - plus: result.plus  
41 - }  
42 - });  
43 - }).catch(next); 57 + res.render('plustar/list', {
  58 + module: 'guang',
  59 + page: 'plustar-list',
  60 + title: '国际优选',
  61 + pageHeader: headerModel.setNav({
  62 + navTitle: '国际优选'
  63 + }),
  64 + pageFooter: true,
  65 + ps: {
  66 + sName: '设计师',
  67 + pName: '经典潮牌',
  68 + star: result.star,
  69 + plus: result.plus
  70 + }
  71 + });
  72 + }).catch(next);
  73 + }
44 }; 74 };
45 75
46 const getDetailData = (req, res, next) => { 76 const getDetailData = (req, res, next) => {
@@ -142,10 +142,10 @@ const _article = (param) => { @@ -142,10 +142,10 @@ const _article = (param) => {
142 page: param.page || 1, 142 page: param.page || 1,
143 uid: param.uid, 143 uid: param.uid,
144 udid: param.udid, 144 udid: param.udid,
145 - sort_id: param.type === '0' ? param.type : '1', 145 + sort_id: 0,
146 tag: param.tag ? param.tag : null, 146 tag: param.tag ? param.tag : null,
147 - author_id: param.authorId ? param.authorId : null,  
148 - limit: param.limit ? param.limit : null 147 + //author_id: param.authorId ? param.authorId : null,
  148 + //limit: param.limit ? param.limit : null
149 }, { 149 }, {
150 cache: true, 150 cache: true,
151 code: 200 151 code: 200
@@ -279,13 +279,14 @@ const getTagEditor = (param) => { @@ -279,13 +279,14 @@ const getTagEditor = (param) => {
279 } 279 }
280 }; 280 };
281 281
282 - if (result && result[0] && result[0].data && result[0].data.list) { 282 + if (result && result[0] && result[0].data && result[0].data.list && result[0].data.list.artList) {
283 283
284 let inf = []; 284 let inf = [];
285 285
286 let infoList = result[0].data.list.artList; 286 let infoList = result[0].data.list.artList;
287 287
288 infoList.forEach(val => { 288 infoList.forEach(val => {
  289 + val.url = helpers.https(`${val.url}&openby:yohobuy={"action":"go.h5","params":{"param":{},"share":"","id":"","type":0,"islogin":"N","url":"${val.url}"}}`);
289 inf.push(guangProcess.formatArticle(val, true, false, true)); 290 inf.push(guangProcess.formatArticle(val, true, false, true));
290 }); 291 });
291 292
@@ -40,7 +40,7 @@ const packageData = (id, isApp) => { @@ -40,7 +40,7 @@ const packageData = (id, isApp) => {
40 cache: true 40 cache: true
41 }).then(data => { 41 }).then(data => {
42 // 接口要判断一下返回状态是否成功 42 // 接口要判断一下返回状态是否成功
43 - if (data.code !== 200) { 43 + if (data === '' && data.code !== 200) {
44 result.code = 400; 44 result.code = 400;
45 return result; 45 return result;
46 } 46 }
@@ -110,28 +110,43 @@ const packageData = (id, isApp) => { @@ -110,28 +110,43 @@ const packageData = (id, isApp) => {
110 } 110 }
111 111
112 return Promise.all(promises).then(datas => { 112 return Promise.all(promises).then(datas => {
113 - let getArticleContent = datas[1].data; 113 + if (datas) {
  114 + if (datas[1]) {
114 115
115 - if (isApp && datas[4].data) { 116 + let getArticleContent = datas[1].data;
116 117
117 - let preCount = 0;  
118 - let i; 118 + result.getArticleContent = getArticleContent;
119 119
120 - for (i = 0; i < getArticleContent.length; i++) {  
121 - if (getArticleContent[i].singleImage || getArticleContent[i].text || getArticleContent[i].smallPic) {  
122 - preCount++; 120 + }
  121 +
  122 + if (isApp && datas[4] && datas[4].data) {
  123 +
  124 + let preCount = 0;
  125 + let i;
  126 +
  127 + for (i = 0; i < getArticleContent.length; i++) {
  128 + if (getArticleContent[i].singleImage || getArticleContent[i].text || getArticleContent[i].smallPic) {
  129 + preCount++;
  130 + }
123 } 131 }
  132 +
  133 + getArticleContent.splice(preCount, 0, {weixinPublic: datas[4].data});
  134 + }
  135 + if (datas[0]) {
  136 + result.getAuthor = datas[0].data;
124 } 137 }
125 138
126 - getArticleContent.splice(preCount, 0, {weixinPublic: datas[4].data});  
127 - }  
128 139
129 - result.getAuthor = datas[0].data;  
130 - result.getArticleContent = getArticleContent;  
131 - result.getBrand = datas[2].data;  
132 - if (datas.length === 5 && isApp || datas.length === 4 && !isApp) {  
133 - result.getOtherArticle = datas[3].data; 140 + if (datas[2]) {
  141 + result.getBrand = datas[2].data;
  142 + }
  143 + if (datas.length === 5 && isApp || datas.length === 4 && !isApp) {
  144 + if (datas[3]) {
  145 + result.getOtherArticle = datas[3].data;
  146 + }
  147 + }
134 } 148 }
  149 +
135 return result; 150 return result;
136 }); 151 });
137 }); 152 });
@@ -8,11 +8,9 @@ const helpers = global.yoho.helpers; @@ -8,11 +8,9 @@ const helpers = global.yoho.helpers;
8 const formaData = (data, gender) => { 8 const formaData = (data, gender) => {
9 let build = []; 9 let build = [];
10 10
11 - // console.log(data)  
12 _.forEach(data, function(val) { 11 _.forEach(data, function(val) {
13 // 多张图 12 // 多张图
14 if (val.data[1]) { 13 if (val.data[1]) {
15 -  
16 let imgs = []; 14 let imgs = [];
17 15
18 _.forEach(val.data, function(list) { 16 _.forEach(val.data, function(list) {
@@ -33,7 +31,7 @@ const formaData = (data, gender) => { @@ -33,7 +31,7 @@ const formaData = (data, gender) => {
33 } 31 }
34 32
35 // 单张图 33 // 单张图
36 - if (val.data[0]) { 34 + if (val.data[0] && !val.data[1]) {
37 _.forEach(val.data, function(list) { 35 _.forEach(val.data, function(list) {
38 build.push({ 36 build.push({
39 url: '/guang/plustar/brandinfo?id=' + val.id + '&gender=' + gender, 37 url: '/guang/plustar/brandinfo?id=' + val.id + '&gender=' + gender,
@@ -47,15 +45,19 @@ const formaData = (data, gender) => { @@ -47,15 +45,19 @@ const formaData = (data, gender) => {
47 return build; 45 return build;
48 }; 46 };
49 47
  48 +const getContentData = (gender, type, channel, isRecommend) => {
  49 + let param = {
  50 + gender: gender,
  51 + brand_type: type,
  52 + yh_channel: channel
  53 + };
50 54
51 -const getContentData = (gender, type) => { 55 + if (isRecommend) {
  56 + param.is_recommend = isRecommend;
  57 + }
52 58
53 - return serviceAPI.get('guang/api/v3/plustar/getlist', {  
54 - gender: gender,  
55 - brand_type: type  
56 - }).then((result) => { 59 + return serviceAPI.get('guang/api/v3/plustar/getlist', param).then((result) => {
57 if (result && result.code === 200) { 60 if (result && result.code === 200) {
58 - // console.log(result)  
59 return formaData(result.data.data.list[0].data, gender); 61 return formaData(result.data.data.list[0].data, gender);
60 } else { 62 } else {
61 logger.error('列表 list data return code is not 200'); 63 logger.error('列表 list data return code is not 200');
@@ -73,6 +75,15 @@ const getListData = (gender, recom, all) => { @@ -73,6 +75,15 @@ const getListData = (gender, recom, all) => {
73 }); 75 });
74 }; 76 };
75 77
  78 +const getBrandsData = (gender, starBrand, originalBrand, channel, isRecommend) => {
  79 + return Promise.all([getContentData(gender, starBrand, isRecommend, channel), getContentData(gender, originalBrand, isRecommend, channel)]).then((result) => {
  80 + return {
  81 + star: result[0],
  82 + plus: result[1]
  83 + };
  84 + });
  85 +};
  86 +
76 // 新品到着 87 // 新品到着
77 const getNewProduct = (brandId, gender, url) => { 88 const getNewProduct = (brandId, gender, url) => {
78 89
@@ -96,7 +107,6 @@ const getNewProduct = (brandId, gender, url) => { @@ -96,7 +107,6 @@ const getNewProduct = (brandId, gender, url) => {
96 let obj = {}; 107 let obj = {};
97 let price; 108 let price;
98 109
99 - // console.log(list)  
100 if (index <= 5) { 110 if (index <= 5) {
101 let tag = []; 111 let tag = [];
102 112
@@ -280,5 +290,6 @@ module.exports = { @@ -280,5 +290,6 @@ module.exports = {
280 getListData, 290 getListData,
281 getContentData, 291 getContentData,
282 getDetailData, 292 getDetailData,
283 - getDetailDataAsync 293 + getDetailDataAsync,
  294 + getBrandsData
284 }; 295 };
@@ -22,7 +22,7 @@ @@ -22,7 +22,7 @@
22 <div class="loading status hide"> 22 <div class="loading status hide">
23 正在加载... 23 正在加载...
24 </div> 24 </div>
25 - <span class="no-more status">没有更多啦</span> 25 + <span class="no-more status hide">没有更多啦</span>
26 </div> 26 </div>
27 27
28 {{#if tag}} 28 {{#if tag}}
@@ -13,7 +13,6 @@ @@ -13,7 +13,6 @@
13 <div class="swiper-pagination"></div> 13 <div class="swiper-pagination"></div>
14 </div> 14 </div>
15 {{/if}} 15 {{/if}}
16 -  
17 {{# infos}} 16 {{# infos}}
18 {{> index/info}} 17 {{> index/info}}
19 {{/ infos}} 18 {{/ infos}}
@@ -90,9 +90,9 @@ @@ -90,9 +90,9 @@
90 <span class="reco-name">{{name}}</span> 90 <span class="reco-name">{{name}}</span>
91 </p> 91 </p>
92 <p class="price"> 92 <p class="price">
93 - <span class="sale-price {{^price}}no-price{{/price}}">{{salePrice}}</span> 93 + <span class="sale-price {{^price}}no-price{{/price}}">&yen;{{salePrice}}</span>
94 {{#price}} 94 {{#price}}
95 - <span class="market-price">{{.}}</span> 95 + <span class="market-price">&yen;{{.}}</span>
96 {{/price}} 96 {{/price}}
97 <a class="check-detail" href={{url}}> 97 <a class="check-detail" href={{url}}>
98 查看详情 98 查看详情
@@ -49,7 +49,8 @@ exports.addressAct = (req, res, next) => { @@ -49,7 +49,8 @@ exports.addressAct = (req, res, next) => {
49 module: 'home', 49 module: 'home',
50 page: 'address-act', 50 page: 'address-act',
51 pageHeader: headerModel.setNav({ 51 pageHeader: headerModel.setNav({
52 - navTitle: result.navTitle 52 + navTitle: result && result.navTitle,
  53 + navBtn: false
53 }), 54 }),
54 title: result.navTitle 55 title: result.navTitle
55 }; 56 };
@@ -161,7 +162,8 @@ exports.addressModify = (req, res, next) => { @@ -161,7 +162,8 @@ exports.addressModify = (req, res, next) => {
161 module: 'home', 162 module: 'home',
162 page: 'address-modify', 163 page: 'address-modify',
163 pageHeader: headerModel.setNav({ 164 pageHeader: headerModel.setNav({
164 - navTitle: '选择地址' 165 + navTitle: '选择地址',
  166 + navBtn: false
165 }), 167 }),
166 title: '选择地址', 168 title: '选择地址',
167 }; 169 };
@@ -184,6 +186,10 @@ exports.addressModify = (req, res, next) => { @@ -184,6 +186,10 @@ exports.addressModify = (req, res, next) => {
184 * @param next 186 * @param next
185 */ 187 */
186 exports.locationList = (req, res, next) => { 188 exports.locationList = (req, res, next) => {
  189 + res.set({
  190 + 'Cache-Control': 'max-age=600'
  191 + });
  192 +
187 addressModel.locationList({ 193 addressModel.locationList({
188 uid: req.user.uid 194 uid: req.user.uid
189 }).then(result => { 195 }).then(result => {
@@ -9,11 +9,12 @@ exports.index = (req, res, next) => { @@ -9,11 +9,12 @@ exports.index = (req, res, next) => {
9 module: 'home', 9 module: 'home',
10 page: 'help', 10 page: 'help',
11 pageHeader: headerModel.setNav({ 11 pageHeader: headerModel.setNav({
12 - navTitle: '帮助中心' 12 + navTitle: '帮助中心',
  13 + navBtn: false
13 }), 14 }),
14 title: '帮助中心', 15 title: '帮助中心',
15 pageFooter: true, 16 pageFooter: true,
16 - iHelp: result, 17 + iHelp: result
17 }); 18 });
18 }).catch(next); 19 }).catch(next);
19 }; 20 };
@@ -24,7 +25,8 @@ exports.helpDetail = (req, res, next) => { @@ -24,7 +25,8 @@ exports.helpDetail = (req, res, next) => {
24 module: 'home', 25 module: 'home',
25 page: 'help-detail', 26 page: 'help-detail',
26 pageHeader: headerModel.setNav({ 27 pageHeader: headerModel.setNav({
27 - navTitle: req.query.name 28 + navTitle: req.query.name,
  29 + navBtn: false
28 }), 30 }),
29 title: req.query.name, 31 title: req.query.name,
30 pageFooter: true, 32 pageFooter: true,
@@ -65,7 +65,7 @@ let ajaxCurrencyDetail = (req, res, next) => { @@ -65,7 +65,7 @@ let ajaxCurrencyDetail = (req, res, next) => {
65 65
66 res.render('ajax-currency-detail', { 66 res.render('ajax-currency-detail', {
67 layout: false, 67 layout: false,
68 - coinlist: result.coinlist 68 + coinlist: _.get(result, 'coinlist', [])
69 }); 69 });
70 }).catch(next); 70 }).catch(next);
71 }; 71 };
@@ -109,7 +109,7 @@ const favProduct = (uid, page, limit) => { @@ -109,7 +109,7 @@ const favProduct = (uid, page, limit) => {
109 109
110 return resu; 110 return resu;
111 } else { 111 } else {
112 - logger.error('收藏商品 cood 不是 200'); 112 + logger.error('fav goods code no 200');
113 return { 113 return {
114 total: 0, 114 total: 0,
115 }; 115 };
@@ -192,7 +192,7 @@ const favfavBrand = (uid, page, limit) => { @@ -192,7 +192,7 @@ const favfavBrand = (uid, page, limit) => {
192 192
193 return resu; 193 return resu;
194 } else { 194 } else {
195 - logger.error('收藏品牌 cood 不是 200'); 195 + logger.error('fav brand code no 200');
196 return { 196 return {
197 total: 0, 197 total: 0,
198 }; 198 };
@@ -15,7 +15,7 @@ const yohoCoin = (uid) => { @@ -15,7 +15,7 @@ const yohoCoin = (uid) => {
15 if (result && result.code === 200) { 15 if (result && result.code === 200) {
16 return camelCase(result.data); 16 return camelCase(result.data);
17 } else { 17 } else {
18 - logger.error('youhocoin cood 不是 200'); 18 + logger.error('youhocoin code no 200');
19 } 19 }
20 }); 20 });
21 }; 21 };
@@ -59,6 +59,12 @@ const currencyDetail = (uid, page, limit) => { @@ -59,6 +59,12 @@ const currencyDetail = (uid, page, limit) => {
59 if (result && result.code === 200) { 59 if (result && result.code === 200) {
60 let total = parseInt(result.data.page_total, 10) + 1; 60 let total = parseInt(result.data.page_total, 10) + 1;
61 61
  62 + _.forEach(_.get(result, 'data.coinlist', []), perCoin => {
  63 + if (perCoin.num > 0) {
  64 + perCoin.num = '+' + perCoin.num;
  65 + }
  66 + });
  67 +
62 if (page && page <= total) { 68 if (page && page <= total) {
63 return yohoCoin(uid).then(list => { 69 return yohoCoin(uid).then(list => {
64 70
@@ -79,7 +85,7 @@ const currencyDetail = (uid, page, limit) => { @@ -79,7 +85,7 @@ const currencyDetail = (uid, page, limit) => {
79 } 85 }
80 86
81 } else { 87 } else {
82 - logger.error('youholist cood 不是 200'); 88 + logger.error('youholist code no 200');
83 } 89 }
84 90
85 }); 91 });
@@ -289,7 +289,7 @@ const orderDetailData = (uid, orderCode) => { @@ -289,7 +289,7 @@ const orderDetailData = (uid, orderCode) => {
289 289
290 // return orderDetail; 290 // return orderDetail;
291 } else { 291 } else {
292 - logger.error('详情信息 返回不是200'); 292 + logger.error('detail info return no 200');
293 return {}; 293 return {};
294 } 294 }
295 295
@@ -7,12 +7,9 @@ @@ -7,12 +7,9 @@
7 'use strict'; 7 'use strict';
8 8
9 const logger = global.yoho.logger; 9 const logger = global.yoho.logger;
10 -const api = global.yoho.API;  
11 const serviceAPI = global.yoho.ServiceAPI; 10 const serviceAPI = global.yoho.ServiceAPI;
12 const camelCase = global.yoho.camelCase; 11 const camelCase = global.yoho.camelCase;
13 const _ = require('lodash'); 12 const _ = require('lodash');
14 -const config = global.yoho.config;  
15 -const helpers = global.yoho.helpers;  
16 13
17 const suggestData = (udid, page, limit) => { 14 const suggestData = (udid, page, limit) => {
18 15
@@ -22,10 +19,10 @@ const suggestData = (udid, page, limit) => { @@ -22,10 +19,10 @@ const suggestData = (udid, page, limit) => {
22 limit: limit 19 limit: limit
23 }).then((result) => { 20 }).then((result) => {
24 21
25 - if (result && result.code === 200) { 22 + if (result && result.code === 200 && result.data) {
26 _.forEach(result.data.list, function(data) { 23 _.forEach(result.data.list, function(data) {
27 24
28 - data = _.assign(data, { 25 + Object.assign(data, {
29 good: data.is_reliable === 1, 26 good: data.is_reliable === 1,
30 bad: data.is_reliable === 2, 27 bad: data.is_reliable === 2,
31 none: data.is_reliable === 0 28 none: data.is_reliable === 0
@@ -33,7 +30,7 @@ const suggestData = (udid, page, limit) => { @@ -33,7 +30,7 @@ const suggestData = (udid, page, limit) => {
33 }); 30 });
34 return camelCase(result.data.list); 31 return camelCase(result.data.list);
35 } else { 32 } else {
36 - logger.error('收藏商品 cood 不是 200'); 33 + logger.error('fav goods code no 200');
37 } 34 }
38 }); 35 });
39 }; 36 };
@@ -52,6 +52,7 @@ router.get('/locationList', auth, addressController.locationList); // 异步获å @@ -52,6 +52,7 @@ router.get('/locationList', auth, addressController.locationList); // 异步获å
52 router.get('/orders', auth, orderController.order); // 订单列表 52 router.get('/orders', auth, orderController.order); // 订单列表
53 router.get('/getOrders', auth, orderController.getOrders); // 获取订单列表数据 53 router.get('/getOrders', auth, orderController.getOrders); // 获取订单列表数据
54 router.get('/orderDetail', auth, orderDetailController.orderDetailData); // 订单详情页 54 router.get('/orderDetail', auth, orderDetailController.orderDetailData); // 订单详情页
  55 +router.get('/orders/detail', auth, orderDetailController.orderDetailData); // 订单详情页兼容老的
55 router.get('/delOrder', auth, orderDetailController.delOrder); // 删除订单 56 router.get('/delOrder', auth, orderDetailController.delOrder); // 删除订单
56 router.get('/readd', auth, orderDetailController.readdData); // 再次购买 57 router.get('/readd', auth, orderDetailController.readdData); // 再次购买
57 router.get('/cancelOrder', auth, orderDetailController.cancelOrder); // 取消订单 58 router.get('/cancelOrder', auth, orderDetailController.cancelOrder); // 取消订单
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 <p class="title">{{message}}</p> 4 <p class="title">{{message}}</p>
5 <p class="time">{{date}}</p> 5 <p class="time">{{date}}</p>
6 <div class="count"> 6 <div class="count">
7 - +{{num}} 7 + {{num}}
8 </div> 8 </div>
9 </div> 9 </div>
10 </li> 10 </li>
@@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
21 {{# banner}} 21 {{# banner}}
22 {{# data}} 22 {{# data}}
23 <a href="{{url}}"> 23 <a href="{{url}}">
24 - <img src="{{image src 640 200 2}}" alt="img"> 24 + <img src="{{image src 640 200}}" alt="img">
25 </a> 25 </a>
26 {{/ data}} 26 {{/ data}}
27 {{/ banner}} 27 {{/ banner}}
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 {{# productList}} 23 {{# productList}}
24 <li class="swiper-slide"> 24 <li class="swiper-slide">
25 <a href="{{link}}"> 25 <a href="{{link}}">
26 - <img class="swiper-lazy" data-src="{{image imgUrl 97 150}}" alt=""/> 26 + <img class="swiper-lazy" data-src="{{image imgUrl 235 314}}" alt=""/>
27 </a> 27 </a>
28 <div class="brand-product"> 28 <div class="brand-product">
29 <div class="{{# discount}}price-discount{{/ discount}}"> 29 <div class="{{# discount}}price-discount{{/ discount}}">
1 -<div class="iHelp"> 1 +<div class="i-help">
2 <ul> 2 <ul>
3 {{#iHelp}} 3 {{#iHelp}}
4 <li><a href="//m.yohobuy.com/home/helpDetail?code={{code}}&name={{name}}"><span>{{name}}</span><i class="iconfont num">&#xe604;</i></a></li> 4 <li><a href="//m.yohobuy.com/home/helpDetail?code={{code}}&name={{name}}"><span>{{name}}</span><i class="iconfont num">&#xe604;</i></a></li>
@@ -7,11 +7,11 @@ @@ -7,11 +7,11 @@
7 <ul class="cost block"> 7 <ul class="cost block">
8 <li> 8 <li>
9 年度累计金额: 9 年度累计金额:
10 - <span>{{costOfThisYear}}</span> 10 + <span>&yen;{{costOfThisYear}}</span>
11 </li> 11 </li>
12 <li> 12 <li>
13 历史消费总金额: 13 历史消费总金额:
14 - <span>{{sumCost}}</span> 14 + <span>&yen;{{sumCost}}</span>
15 </li> 15 </li>
16 </ul> 16 </ul>
17 17
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 您已升级至最高的等级啦! 7 您已升级至最高的等级啦!
8 </p> 8 </p>
9 <p class="sum-cost"> 9 <p class="sum-cost">
10 - 年度累计金额<span> {{costOfThisYear}}</span> 10 + 年度累计金额<span> &yen;{{costOfThisYear}}</span>
11 </p> 11 </p>
12 <div class="progresser"> 12 <div class="progresser">
13 <div class="outer"></div> 13 <div class="outer"></div>
@@ -24,11 +24,11 @@ @@ -24,11 +24,11 @@
24 <span class="vip-icon vip-2"></span> 24 <span class="vip-icon vip-2"></span>
25 </p> 25 </p>
26 <p class="grade-desc"> 26 <p class="grade-desc">
27 - 还差<span class="cost-gap">{{costGap}}</span>就可以升级为白金会员! 27 + 还差<span class="cost-gap">&yen;{{costGap}}</span>就可以升级为白金会员!
28 <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span> 28 <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span>
29 </p> 29 </p>
30 <p class="sum-cost"> 30 <p class="sum-cost">
31 - 年度累计金额<span> {{costOfThisYear}}</span> 31 + 年度累计金额<span> &yen;{{costOfThisYear}}</span>
32 </p> 32 </p>
33 <div class="progresser"> 33 <div class="progresser">
34 <div class="outer"></div> 34 <div class="outer"></div>
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 金卡会员 37 金卡会员
38 </span> 38 </span>
39 <span class="beacon beacon-max">白金卡会员</span> 39 <span class="beacon beacon-max">白金卡会员</span>
40 - <span class="cost-limit">5000.00</span> 40 + <span class="cost-limit">&yen;5000.00</span>
41 </div> 41 </div>
42 {{/if}} 42 {{/if}}
43 43
@@ -47,11 +47,11 @@ @@ -47,11 +47,11 @@
47 <span class="vip-icon vip-1"></span> 47 <span class="vip-icon vip-1"></span>
48 </p> 48 </p>
49 <p class="grade-desc"> 49 <p class="grade-desc">
50 - 还差<span class="cost-gap">{{costGap}}</span>就可以升级为金卡会员! 50 + 还差<span class="cost-gap">&yen;{{costGap}}</span>就可以升级为金卡会员!
51 <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span> 51 <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span>
52 </p> 52 </p>
53 <p class="sum-cost"> 53 <p class="sum-cost">
54 - 年度累计金额<span> {{costOfThisYear}}</span> 54 + 年度累计金额<span> &yen;{{costOfThisYear}}</span>
55 </p> 55 </p>
56 <div class="progresser"> 56 <div class="progresser">
57 <div class="outer"></div> 57 <div class="outer"></div>
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 银卡会员 60 银卡会员
61 </span> 61 </span>
62 <span class="beacon beacon-max">金卡会员</span> 62 <span class="beacon beacon-max">金卡会员</span>
63 - <span class="cost-limit">2000.00</span> 63 + <span class="cost-limit">&yen;2000.00</span>
64 </div> 64 </div>
65 {{/if}} 65 {{/if}}
66 66
@@ -70,11 +70,11 @@ @@ -70,11 +70,11 @@
70 <span>普通会员</span> 70 <span>普通会员</span>
71 </p> 71 </p>
72 <p class="grade-desc"> 72 <p class="grade-desc">
73 - 还差<span class="cost-gap">{{costGap}}</span>就可以升级为银卡会员! 73 + 还差<span class="cost-gap">&yen;{{costGap}}</span>就可以升级为银卡会员!
74 <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span> 74 <span class="sub-desc">(VIP金额累计需订单成功签收满15天并无退换货)</span>
75 </p> 75 </p>
76 <p class="sum-cost"> 76 <p class="sum-cost">
77 - 年度累计金额<span> {{costOfThisYear}}</span> 77 + 年度累计金额<span> &yen;{{costOfThisYear}}</span>
78 </p> 78 </p>
79 <div class="progresser"> 79 <div class="progresser">
80 <div class="outer"></div> 80 <div class="outer"></div>
@@ -83,6 +83,6 @@ @@ -83,6 +83,6 @@
83 普通 83 普通
84 </span> 84 </span>
85 <span class="beacon beacon-max">银卡会员</span> 85 <span class="beacon beacon-max">银卡会员</span>
86 - <span class="cost-limit">600.00</span> 86 + <span class="cost-limit">&yen;600.00</span>
87 </div> 87 </div>
88 {{/if}} 88 {{/if}}
@@ -34,7 +34,7 @@ const getAreaDataAsync = () => { @@ -34,7 +34,7 @@ const getAreaDataAsync = () => {
34 34
35 return result; 35 return result;
36 } else { 36 } else {
37 - logger.error('获取地区数据返回 code 不是 200'); 37 + logger.error('获取地区数据返回 code no 200');
38 return []; 38 return [];
39 } 39 }
40 }); 40 });
@@ -178,7 +178,7 @@ let consults = (params) => { @@ -178,7 +178,7 @@ let consults = (params) => {
178 data.consults = result[1].list; 178 data.consults = result[1].list;
179 } 179 }
180 180
181 - data.showReadMore = result[1].list.length > 2; 181 + data.showReadMore = _.get(result[1], 'list.length', 0) > 2;
182 182
183 return data; 183 return data;
184 }); 184 });
@@ -1772,7 +1772,7 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => { @@ -1772,7 +1772,7 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => {
1772 colors: _.toArray(colorGroup), 1772 colors: _.toArray(colorGroup),
1773 sizes: sizeGroup 1773 sizes: sizeGroup
1774 }); 1774 });
1775 - 1775 +
1776 // 限购商品 1776 // 限购商品
1777 if (origin.isLimitBuy) { 1777 if (origin.isLimitBuy) {
1778 return api.get('', { 1778 return api.get('', {
@@ -1858,6 +1858,52 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => { @@ -1858,6 +1858,52 @@ let _detailDataPkgAsync = (origin, uid, vipLevel, ua) => {
1858 dest.goodsId = origin.goods_id; 1858 dest.goodsId = origin.goods_id;
1859 return Promise.resolve(dest); 1859 return Promise.resolve(dest);
1860 } 1860 }
  1861 +
  1862 + return api.get('', {
  1863 + method: 'app.shop.queryShopsByBrandId',
  1864 + brand_id: _.toString(brandId)
  1865 + }, {
  1866 + cache: true
  1867 + }).then(shops => {
  1868 + if (shops && shops.code === 200) {
  1869 + return _processShopsInfo(shops.data);
  1870 + }
  1871 +
  1872 + return [];
  1873 + });
  1874 +};
  1875 +
  1876 +let _getPromotionInfo = (skn) => {
  1877 + return api.get('', {
  1878 + method: 'app.product.promotion',
  1879 + product_skn: _.toString(skn)
  1880 + }, {
  1881 + code: 200,
  1882 + cache: true
  1883 + }).then((result) => {
  1884 + return result && result.data;
  1885 + });
  1886 +};
  1887 +
  1888 +/**
  1889 + * 获取默认咨询列表
  1890 + */
  1891 +const _getCommonConsult = () => {
  1892 + let params = {
  1893 + method: 'app.consult.common'
  1894 + };
  1895 +
  1896 + return api.get('', params, {
  1897 + code: 200
  1898 + }).then(result => {
  1899 + let data = {};
  1900 +
  1901 + if (result.data) {
  1902 + data = result.data;
  1903 + }
  1904 +
  1905 + return data;
  1906 + });
1861 }; 1907 };
1862 1908
1863 1909
@@ -596,8 +596,7 @@ const getBrandIntro = (brandId, uid) => { @@ -596,8 +596,7 @@ const getBrandIntro = (brandId, uid) => {
596 method: 'app.brand.getBrandIntro', 596 method: 'app.brand.getBrandIntro',
597 brand_id: brandId 597 brand_id: brandId
598 }, param), { 598 }, param), {
599 - code: 200,  
600 - cache: true 599 + code: 200
601 }).then(result => { 600 }).then(result => {
602 if (result && result.data) { 601 if (result && result.data) {
603 let list = result.data; 602 let list = result.data;
1 'use strict'; 1 'use strict';
2 2
3 const api = global.yoho.API; 3 const api = global.yoho.API;
  4 +const logger = global.yoho.logger;
4 const utils = '../../../utils'; 5 const utils = '../../../utils';
5 const productProcess = require(`${utils}/product-process`); 6 const productProcess = require(`${utils}/product-process`);
6 7
@@ -27,7 +28,8 @@ const mayLike = (uid, page, limit, gender, udid, recPos, channel) => { @@ -27,7 +28,8 @@ const mayLike = (uid, page, limit, gender, udid, recPos, channel) => {
27 return false; 28 return false;
28 } 29 }
29 } 30 }
30 - 31 + } else {
  32 + logger.error('mayLike code no 200');
31 } 33 }
32 }); 34 });
33 }; 35 };
@@ -51,6 +53,8 @@ const mayLikeKids = (page, limit, channel) => { @@ -51,6 +53,8 @@ const mayLikeKids = (page, limit, channel) => {
51 return productProcess.processProductList(result.data.product_list); 53 return productProcess.processProductList(result.data.product_list);
52 54
53 } 55 }
  56 + } else {
  57 + logger.error('mayLikeKids code no 200');
54 } 58 }
55 }); 59 });
56 }; 60 };
@@ -95,6 +95,7 @@ router.get('/search/search', search.search); @@ -95,6 +95,7 @@ router.get('/search/search', search.search);
95 95
96 // 品类 96 // 品类
97 router.get('/index/index', list.category); 97 router.get('/index/index', list.category);
  98 +router.get('/list/index', list.category); // 兼容 PC 的链接
98 99
99 // 品牌 | 店铺 100 // 品牌 | 店铺
100 router.get('/index/brand', list.brand); 101 router.get('/index/brand', list.brand);
@@ -113,6 +114,7 @@ router.get('/opt/favoriteBrand', list.favoriteBrand); @@ -113,6 +114,7 @@ router.get('/opt/favoriteBrand', list.favoriteBrand);
113 114
114 // 新品到着 115 // 新品到着
115 router.get('/new', news.newGoods); 116 router.get('/new', news.newGoods);
  117 +router.get('/list/new', news.newGoods); // 兼容 PC 的链接
116 router.get('/new/selectNewSale', news.selectNewSale); 118 router.get('/new/selectNewSale', news.selectNewSale);
117 router.get('/new/filter', news.filter); 119 router.get('/new/filter', news.filter);
118 120
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 </div> 9 </div>
10 <div class="price"> 10 <div class="price">
11 <span class="sale-price {{^price}}no-price{{/price}}">¥{{salePrice}}</span> 11 <span class="sale-price {{^price}}no-price{{/price}}">¥{{salePrice}}</span>
12 - {{#price}}<span class="old-price">{{.}}</span>{{/price}} 12 + {{#price}}<span class="old-price">&yen;{{.}}</span>{{/price}}
13 </div> 13 </div>
14 <div class="swiper-lazy-preloader"></div> 14 <div class="swiper-lazy-preloader"></div>
15 </a> 15 </a>
@@ -17,10 +17,10 @@ module.exports = { @@ -17,10 +17,10 @@ module.exports = {
17 siteUrl: '//m.yohobuy.com', 17 siteUrl: '//m.yohobuy.com',
18 assetUrl: '//localhost:5001', 18 assetUrl: '//localhost:5001',
19 domains: { 19 domains: {
20 - api: 'http://api.yoho.cn/',  
21 - service: 'http://service.yoho.cn/',  
22 - liveApi: 'http://api.live.yoho.cn/',  
23 - singleApi: 'http://single.yoho.cn/', 20 + api: 'http://api.yoho.yohoops.org/',
  21 + service: 'http://service.yoho.yohoops.org/',
  22 + liveApi: 'http://api.live.yoho.cn/',
  23 + singleApi: 'http://single.yoho.cn/'
24 24
25 // api: 'http://api-test1.yohops.com:9999/', 25 // api: 'http://api-test1.yohops.com:9999/',
26 // service: 'http://service-test1.yohops.com:9999/', 26 // service: 'http://service-test1.yohops.com:9999/',
@@ -59,6 +59,6 @@ exports.serverError = () => { @@ -59,6 +59,6 @@ exports.serverError = () => {
59 isErr: true 59 isErr: true
60 }); 60 });
61 } 61 }
62 - next(); 62 + next(err);
63 }; 63 };
64 }; 64 };
  1 +/**
  2 + * 商品详情页部分商品名称重置,防止express内部decodeURIComponent不能解析url出错
  3 + * @author: xuqi<qi.xu@yoho.cn>
  4 + * @date: 2016/8/23
  5 + */
  6 +
  7 +module.exports = function(req, res, next) {
  8 + if (/^\/product\/pro_/.test(req.url)) {
  9 + req.url = req.url.replace(/\/pro_([\d]+)_([\d]+)\/(.*)/, '/pro_$1_$2/yoho-replace.html');
  10 + }
  11 + next();
  12 +};
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 */ 5 */
6 6
7 'use strict'; 7 'use strict';
  8 +const helpers = global.yoho.helpers;
8 9
9 module.exports = () => { 10 module.exports = () => {
10 return (req, res, next) => { 11 return (req, res, next) => {
@@ -31,6 +32,8 @@ module.exports = () => { @@ -31,6 +32,8 @@ module.exports = () => {
31 res.set('Access-Control-Allow-Origin', '*'); 32 res.set('Access-Control-Allow-Origin', '*');
32 } 33 }
33 34
  35 + res.locals.cartUrl = helpers.urlFormat('/cart/index/index');
  36 +
34 next(); 37 next();
35 }; 38 };
36 }; 39 };
1 <div id="suspend-cart" class="suspend-cart"> 1 <div id="suspend-cart" class="suspend-cart">
2 - <a href={{cartUrl}}> 2 + <a href="{{@root.cartUrl}}">
3 <span class="iconfont">&#xe62c;</span> 3 <span class="iconfont">&#xe62c;</span>
4 </a> 4 </a>
5 <span class="cart-count hide">0</span> 5 <span class="cart-count hide">0</span>
6 -</div>  
  6 +</div>
@@ -14,13 +14,13 @@ @@ -14,13 +14,13 @@
14 <a href="{{url}}" class="nav-sub-right">{{text}}</a> 14 <a href="{{url}}" class="nav-sub-right">{{text}}</a>
15 {{/shopPage}} 15 {{/shopPage}}
16 {{#currencyPage}} 16 {{#currencyPage}}
17 - <a href="/home/helpDetail?code=20151230-102233&caption=有货币介绍" class="iconfont nav-home">&#xe639;</a> 17 + <a href="/home/helpDetail?code=20151230-102233&caption=有货币介绍&name=有货币介绍" class="iconfont nav-home">&#xe639;</a>
18 {{/currencyPage}} 18 {{/currencyPage}}
19 {{#currencyDetailPage}} 19 {{#currencyDetailPage}}
20 - <a href="/home/helpDetail?code=20111130-152530&caption=如何使用有货币支付" class="iconfont nav-home">&#xe639;</a> 20 + <a href="/home/helpDetail?code=20111130-152530&caption=如何使用有货币支付&name=如何使用有货币支付" class="iconfont nav-home">&#xe639;</a>
21 {{/currencyDetailPage}} 21 {{/currencyDetailPage}}
22 {{#installmentPage}} 22 {{#installmentPage}}
23 - <a href="/home/helpDetail?code=20151230-102233&caption=有货分期" class="iconfont nav-home">&#xe639;</a> 23 + <a href="/home/helpDetail?code=20151230-102233&caption=有货分期&name=有货分期" class="iconfont nav-home">&#xe639;</a>
24 {{/installmentPage}} 24 {{/installmentPage}}
25 {{#navPhone}} 25 {{#navPhone}}
26 <a href="{{.}}" class="iconfont nav-home">&#xe641;</a> 26 <a href="{{.}}" class="iconfont nav-home">&#xe641;</a>
@@ -78,6 +78,10 @@ $categoryContainer.on('touchend', function(e) { @@ -78,6 +78,10 @@ $categoryContainer.on('touchend', function(e) {
78 $subLevel.not('.hide').addClass('hide'); 78 $subLevel.not('.hide').addClass('hide');
79 $subLevel.eq(index).removeClass('hide'); 79 $subLevel.eq(index).removeClass('hide');
80 } 80 }
  81 +
  82 + if ($this.find('a').attr('href')) {
  83 + location.href = $this.find('a').attr('href');
  84 + }
81 }); 85 });
82 86
83 $categoryContainer.find('.primary-level').on('touchstart touchend touchcancel', 'li', function() { 87 $categoryContainer.find('.primary-level').on('touchstart touchend touchcancel', 'li', function() {
@@ -127,12 +127,10 @@ module.exports = function(specificGender) { @@ -127,12 +127,10 @@ module.exports = function(specificGender) {
127 success: function(data) { 127 success: function(data) {
128 var PRDID = []; 128 var PRDID = [];
129 if (data === ' ' || data === '') { 129 if (data === ' ' || data === '') {
  130 + searching = true;
130 131
131 - searching = false;  
132 loading.hideLoadingMask(); 132 loading.hideLoadingMask();
133 133
134 - $('.maybe-like').hide();  
135 -  
136 // 有货币页面不加载底部 134 // 有货币页面不加载底部
137 if (gender && !specificGender) { 135 if (gender && !specificGender) {
138 gender = gender.substr(0, 3); 136 gender = gender.substr(0, 3);
@@ -195,7 +195,7 @@ function reMarginFooter(fixedElement) { @@ -195,7 +195,7 @@ function reMarginFooter(fixedElement) {
195 a.async = 1; 195 a.async = 1;
196 a.src = j; 196 a.src = j;
197 m.parentNode.insertBefore(a, m); 197 m.parentNode.insertBefore(a, m);
198 -})(window, document, 'script', (document.location.protocol === 'https:' ? 'https' : 'http') + '://cdn.yoho.cn/yas-jssdk/1.0.17/yas.js', '_yas'); 198 +}(window, document, 'script', (document.location.protocol === 'https:' ? 'https' : 'http') + '://cdn.yoho.cn/yas-jssdk/1.0.17/yas.js', '_yas'));
199 199
200 (function() { 200 (function() {
201 var uid = getUid(); 201 var uid = getUid();
@@ -215,7 +215,7 @@ function loadMore($container, opt, url) { @@ -215,7 +215,7 @@ function loadMore($container, opt, url) {
215 success: function(data) { 215 success: function(data) {
216 var $newItems; 216 var $newItems;
217 217
218 - if (data === ' ') { 218 + if (data === '') {
219 opt.end = true; 219 opt.end = true;
220 searching = false; 220 searching = false;
221 221
@@ -193,6 +193,7 @@ function bindAddressListEvent(html) { @@ -193,6 +193,7 @@ function bindAddressListEvent(html) {
193 if (window.localStorage && window.localStorage.getItem) { 193 if (window.localStorage && window.localStorage.getItem) {
194 chinaAddressList = window.localStorage.getItem('chinaAddressList'); 194 chinaAddressList = window.localStorage.getItem('chinaAddressList');
195 } 195 }
  196 +
196 if (chinaAddressList) { 197 if (chinaAddressList) {
197 bindAddressListEvent(chinaAddressList); 198 bindAddressListEvent(chinaAddressList);
198 } else { 199 } else {
@@ -201,12 +202,14 @@ if (chinaAddressList) { @@ -201,12 +202,14 @@ if (chinaAddressList) {
201 $.ajax({ 202 $.ajax({
202 method: 'GET', 203 method: 'GET',
203 url: '/home/locationList', 204 url: '/home/locationList',
204 - timeout: 60000 205 + timeout: 60000,
  206 + cache: true
205 }).then(function(html) { 207 }).then(function(html) {
206 bindAddressListEvent(html); 208 bindAddressListEvent(html);
207 - if (window.localStorage && window.localStorage.setItem) {  
208 - window.localStorage.setItem('chinaAddressList', html);  
209 - } 209 +
  210 + // if (window.localStorage && window.localStorage.setItem) {
  211 + // window.localStorage.setItem('chinaAddressList', html);
  212 + // }
210 }).fail(function() { 213 }).fail(function() {
211 tip.show('获取省市区列表失败'); 214 tip.show('获取省市区列表失败');
212 }); 215 });
@@ -3,6 +3,8 @@ var $ = require('yoho-jquery'), @@ -3,6 +3,8 @@ var $ = require('yoho-jquery'),
3 var page = 1; 3 var page = 1;
4 var flag = true; 4 var flag = true;
5 5
  6 +require('../common');
  7 +
6 loading.showLoadingMask(); 8 loading.showLoadingMask();
7 9
8 function ajaxCurrencyDetail(curPage) { 10 function ajaxCurrencyDetail(curPage) {
@@ -13,3 +13,7 @@ function getGender() { @@ -13,3 +13,7 @@ function getGender() {
13 } 13 }
14 14
15 require('../channel/maybe-like')(getGender()); 15 require('../channel/maybe-like')(getGender());
  16 +
  17 +if ($('#goods-list').length === 0) {
  18 + $('.maybe-like').hide();
  19 +}
1 -.iHelp { 1 +.i-help {
2 width: 100%; 2 width: 100%;
3 height: auto; 3 height: auto;
4 overflow: hidden; 4 overflow: hidden;
@@ -29,7 +29,7 @@ @@ -29,7 +29,7 @@
29 } 29 }
30 30
31 span { 31 span {
32 - width: 85%; 32 + width: 92%;
33 height: 100%; 33 height: 100%;
34 overflow: hidden; 34 overflow: hidden;
35 float: left; 35 float: left;
@@ -223,7 +223,7 @@ @@ -223,7 +223,7 @@
223 height: auto; 223 height: auto;
224 color: #fff; 224 color: #fff;
225 line-height: 40px; 225 line-height: 40px;
226 - font-size: 14px; 226 + font-size: 14PX;
227 } 227 }
228 } 228 }
229 } 229 }
@@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
30 30
31 .price { 31 .price {
32 margin: 0.3rem 0; 32 margin: 0.3rem 0;
33 - font-size: 16px; 33 + font-size: 16PX;
34 } 34 }
35 35
36 .sale-price { 36 .sale-price {
@@ -107,7 +107,7 @@ @@ -107,7 +107,7 @@
107 font-size: 24px; 107 font-size: 24px;
108 border-bottom: 1px solid #e0e0e0; 108 border-bottom: 1px solid #e0e0e0;
109 padding-bottom: 20px; 109 padding-bottom: 20px;
110 - height: 120px; 110 + height: 140px;
111 overflow: hidden; 111 overflow: hidden;
112 position: relative; 112 position: relative;
113 113
@@ -288,7 +288,7 @@ @@ -288,7 +288,7 @@
288 margin: 0 30px; 288 margin: 0 30px;
289 289
290 .swiper-slide { 290 .swiper-slide {
291 - width: 225px; 291 + width: 255px;
292 height: 100%; 292 height: 100%;
293 float: left; 293 float: left;
294 padding-right: 30px; 294 padding-right: 30px;
@@ -307,6 +307,7 @@ @@ -307,6 +307,7 @@
307 .num { 307 .num {
308 color: #e0e0e0; 308 color: #e0e0e0;
309 float: right; 309 float: right;
  310 + font-size: 16PX;
310 } 311 }
311 } 312 }
312 } 313 }
@@ -124,14 +124,13 @@ @@ -124,14 +124,13 @@
124 .create-new-suggest { 124 .create-new-suggest {
125 display: block; 125 display: block;
126 width: 100%; 126 width: 100%;
127 - height: 88px; 127 + height: 150px;
128 line-height: 88px; 128 line-height: 88px;
129 text-align: center; 129 text-align: center;
130 font-size: 30px; 130 font-size: 30px;
131 border-top: 30px solid #f0f0f0; 131 border-top: 30px solid #f0f0f0;
132 border-bottom: 30px solid #f0f0f0; 132 border-bottom: 30px solid #f0f0f0;
133 position: relative; 133 position: relative;
134 - height: 88px;  
135 134
136 .list-item { 135 .list-item {
137 padding: 0 35px; 136 padding: 0 35px;