Merge branch 'master' into release/wap-optim
Showing
19 changed files
with
116 additions
and
42 deletions
@@ -2,6 +2,11 @@ | @@ -2,6 +2,11 @@ | ||
2 | <div class="ma-header"> | 2 | <div class="ma-header"> |
3 | <div>{{headerTip}}</div> | 3 | <div>{{headerTip}}</div> |
4 | </div> | 4 | </div> |
5 | + {{# download}} | ||
6 | + <a href="{{url}}" class="down"> | ||
7 | + <img src="{{img}}" alt="{{alt}}" /> | ||
8 | + </a> | ||
9 | + {{/ download}} | ||
5 | <div class="tab"> | 10 | <div class="tab"> |
6 | <div class="swiper-container"> | 11 | <div class="swiper-container"> |
7 | <div class="swiper-wrapper"> | 12 | <div class="swiper-wrapper"> |
@@ -42,9 +47,4 @@ | @@ -42,9 +47,4 @@ | ||
42 | <p>{{title}}</p> | 47 | <p>{{title}}</p> |
43 | </div> | 48 | </div> |
44 | {{/ newsList}} | 49 | {{/ newsList}} |
45 | - {{# download}} | ||
46 | - <a href="{{url}}" class="down"> | ||
47 | - <img src="{{img}}" alt="{{alt}}" /> | ||
48 | - </a> | ||
49 | - {{/ download}} | ||
50 | </div> | 50 | </div> |
@@ -50,7 +50,6 @@ const _repaymentList = (req, res, opt, params) => { | @@ -50,7 +50,6 @@ const _repaymentList = (req, res, opt, params) => { | ||
50 | // 开通分期首页 | 50 | // 开通分期首页 |
51 | const index = (req, res) => { | 51 | const index = (req, res) => { |
52 | let uid = req.query.uid; | 52 | let uid = req.query.uid; |
53 | - | ||
54 | Promise.all([ | 53 | Promise.all([ |
55 | installmentModel.getStauts(uid), | 54 | installmentModel.getStauts(uid), |
56 | installmentModel.getSearchIntallment({ | 55 | installmentModel.getSearchIntallment({ |
@@ -309,14 +308,23 @@ const getRepayRecord = (req, res) => { | @@ -309,14 +308,23 @@ const getRepayRecord = (req, res) => { | ||
309 | // 账号管理 | 308 | // 账号管理 |
310 | const account = (req, res) => { | 309 | const account = (req, res) => { |
311 | var url = req.yoho.isApp || req.cookies.appVersion ? '/home/installment/account' : '/home/installment/bank-card'; | 310 | var url = req.yoho.isApp || req.cookies.appVersion ? '/home/installment/account' : '/home/installment/bank-card'; |
312 | - | 311 | + if (req.cookies.appVersion) { |
312 | + var versions = req.cookies.appVersion.split('.'); | ||
313 | + if (versions.length >= 2) { | ||
314 | + if (versions[0] < 5 || (parseInt(versions[0], 10)===5 && versions[1] <= 1)) { | ||
315 | + url = '/home/installment/bank-card'; | ||
316 | + } else { | ||
317 | + url = helpers.appUrlFormat(url, 'go.instalmentMyCard') | ||
318 | + } | ||
319 | + } | ||
320 | + } | ||
313 | res.render('installment/account', { | 321 | res.render('installment/account', { |
314 | module: 'home', | 322 | module: 'home', |
315 | page: 'account', | 323 | page: 'account', |
316 | title: '账号管理', | 324 | title: '账号管理', |
317 | isInstallmentPage: true, | 325 | isInstallmentPage: true, |
318 | posId: 7, | 326 | posId: 7, |
319 | - url: helpers.appUrlFormat(url, 'go.instalmentMyCard') | 327 | + url: url |
320 | }); | 328 | }); |
321 | }; | 329 | }; |
322 | 330 |
@@ -4,13 +4,19 @@ const model = require('../models/myqrcode'), | @@ -4,13 +4,19 @@ const model = require('../models/myqrcode'), | ||
4 | headerModel = require('../../../doraemon/models/header'); // 头部model | 4 | headerModel = require('../../../doraemon/models/header'); // 头部model |
5 | 5 | ||
6 | exports.index = (req, res, next) => { | 6 | exports.index = (req, res, next) => { |
7 | - let params = req.query; | 7 | + let params = req.query, |
8 | + esc = false, | ||
9 | + appversion = req.query.app_version; | ||
10 | + | ||
11 | + if (Number(appversion.substr(0, 1) < 5) || (Number(appversion.substr(0, 1)) === 5 && Number(appversion.substr(2, 1)) < 2)) { | ||
12 | + esc = true; | ||
13 | + } | ||
8 | 14 | ||
9 | model.getQr({ | 15 | model.getQr({ |
10 | token: params.token, | 16 | token: params.token, |
11 | }).then(result => { | 17 | }).then(result => { |
12 | params.token = result; | 18 | params.token = result; |
13 | - params.uname = decodeURIComponent(params.uname.replace(/\%/g, escape('%'))); | 19 | + params.uname = esc ? decodeURIComponent(params.uname) : decodeURIComponent(params.uname.replace(/\%/g, escape('%'))); |
14 | params.icon = params.icon || 'https://img11.static.yhbimg.com/yhb-img01/2016/07/05/13/017ec560b82c132ab2fdb22f7cf6f42b83.png?imageView/2/w/{width}/h/{height}'; | 20 | params.icon = params.icon || 'https://img11.static.yhbimg.com/yhb-img01/2016/07/05/13/017ec560b82c132ab2fdb22f7cf6f42b83.png?imageView/2/w/{width}/h/{height}'; |
15 | res.render('myqrcode', { | 21 | res.render('myqrcode', { |
16 | title: '查看二维码', | 22 | title: '查看二维码', |
@@ -9,8 +9,8 @@ exports.getQr = (params) => { | @@ -9,8 +9,8 @@ exports.getQr = (params) => { | ||
9 | 9 | ||
10 | try { | 10 | try { |
11 | uid = crypto.decrypt(PASSWORD, decodeURIComponent(params.token)); | 11 | uid = crypto.decrypt(PASSWORD, decodeURIComponent(params.token)); |
12 | + uid = parseInt(uid, 10) | ||
12 | } catch (e) { | 13 | } catch (e) { |
13 | - console.error(e); | ||
14 | uid = params.token; | 14 | uid = params.token; |
15 | } | 15 | } |
16 | 16 |
1 | <div class="repayment-list-page installment-order-page yoho-page" data-pos-id="{{posId}}"> | 1 | <div class="repayment-list-page installment-order-page yoho-page" data-pos-id="{{posId}}"> |
2 | - {{> resources/banner-top}} | ||
3 | <ul class="header-tab"> | 2 | <ul class="header-tab"> |
4 | <li class="active"> | 3 | <li class="active"> |
5 | <a href="/home/installment/order.html?type=1" data-type="1">全部</a> | 4 | <a href="/home/installment/order.html?type=1" data-type="1">全部</a> |
@@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
15 | <div class="field"> | 15 | <div class="field"> |
16 | <label for="identityCardNo">身份证号:</label> | 16 | <label for="identityCardNo">身份证号:</label> |
17 | 17 | ||
18 | - <input id="identityCardNo" name="identityCardNo" type="tel" placeholder="请填写身份证号" maxlength="18"/> | 18 | + <input id="identityCardNo" name="identityCardNo" type="text" placeholder="请填写身份证号" maxlength="18"/> |
19 | <div class="clearfix"></div> | 19 | <div class="clearfix"></div> |
20 | </div> | 20 | </div> |
21 | 21 |
@@ -14,6 +14,7 @@ const cookie = global.yoho.cookie; | @@ -14,6 +14,7 @@ const cookie = global.yoho.cookie; | ||
14 | const helpers = global.yoho.helpers; | 14 | const helpers = global.yoho.helpers; |
15 | const log = global.yoho.logger; | 15 | const log = global.yoho.logger; |
16 | const config = global.yoho.config; | 16 | const config = global.yoho.config; |
17 | +const utils = require(global.utils); | ||
17 | const RegService = require('../models/reg-service'); | 18 | const RegService = require('../models/reg-service'); |
18 | const AuthHelper = require('../models/auth-helper'); | 19 | const AuthHelper = require('../models/auth-helper'); |
19 | 20 | ||
@@ -32,6 +33,9 @@ function doPassportCallback(openId, nickname, sourceType, req, res) { | @@ -32,6 +33,9 @@ function doPassportCallback(openId, nickname, sourceType, req, res) { | ||
32 | if (/signin|login/.test(refer)) { | 33 | if (/signin|login/.test(refer)) { |
33 | refer = `${config.siteUrl}/home`; | 34 | refer = `${config.siteUrl}/home`; |
34 | } | 35 | } |
36 | + | ||
37 | + refer = utils.refererLimit(refer); | ||
38 | + | ||
35 | if (openId && nickname) { | 39 | if (openId && nickname) { |
36 | return AuthHelper.signinByOpenID(nickname, openId, sourceType, shoppingKey).then((result) => { | 40 | return AuthHelper.signinByOpenID(nickname, openId, sourceType, shoppingKey).then((result) => { |
37 | if (result.code !== 200) { | 41 | if (result.code !== 200) { |
@@ -64,6 +68,8 @@ const common = { | @@ -64,6 +68,8 @@ const common = { | ||
64 | refer = req.get('Referer'); | 68 | refer = req.get('Referer'); |
65 | } | 69 | } |
66 | 70 | ||
71 | + refer = utils.refererLimit(refer); | ||
72 | + | ||
67 | 73 | ||
68 | refer && !/signin|login|passport/.test(refer) && res.cookie('refer', encodeURI(refer), { | 74 | refer && !/signin|login|passport/.test(refer) && res.cookie('refer', encodeURI(refer), { |
69 | domain: 'yohobuy.com' | 75 | domain: 'yohobuy.com' |
@@ -112,7 +118,7 @@ const local = { | @@ -112,7 +118,7 @@ const local = { | ||
112 | }); | 118 | }); |
113 | }, | 119 | }, |
114 | international: (req, res) => { | 120 | international: (req, res) => { |
115 | - // 先清除cookie | 121 | + // 先清除cookie |
116 | // res.clearCookie('LE' + md5('_LOGIN_EXPIRE'), { | 122 | // res.clearCookie('LE' + md5('_LOGIN_EXPIRE'), { |
117 | // domain: 'yohobuy.com' | 123 | // domain: 'yohobuy.com' |
118 | // }); | 124 | // }); |
@@ -161,6 +167,9 @@ const local = { | @@ -161,6 +167,9 @@ const local = { | ||
161 | if (/sign|login/.test(refer)) { | 167 | if (/sign|login/.test(refer)) { |
162 | refer = `${config.siteUrl}/home`; | 168 | refer = `${config.siteUrl}/home`; |
163 | } | 169 | } |
170 | + | ||
171 | + refer = utils.refererLimit(refer); | ||
172 | + | ||
164 | user.session = refer; | 173 | user.session = refer; |
165 | user.href = refer; | 174 | user.href = refer; |
166 | AuthHelper.syncUserSession(user.uid, req, res, user.session_key).then(() => { | 175 | AuthHelper.syncUserSession(user.uid, req, res, user.session_key).then(() => { |
@@ -184,6 +193,8 @@ const local = { | @@ -184,6 +193,8 @@ const local = { | ||
184 | res.clearCookie('_SPK'); | 193 | res.clearCookie('_SPK'); |
185 | let refer = req.get('Referer') || config.siteUrl; | 194 | let refer = req.get('Referer') || config.siteUrl; |
186 | 195 | ||
196 | + refer = utils.refererLimit(refer); | ||
197 | + | ||
187 | res.redirect(refer); | 198 | res.redirect(refer); |
188 | } | 199 | } |
189 | }; | 200 | }; |
@@ -8,6 +8,7 @@ | @@ -8,6 +8,7 @@ | ||
8 | 'use strict'; | 8 | 'use strict'; |
9 | 9 | ||
10 | const _ = require('lodash'); | 10 | const _ = require('lodash'); |
11 | +const utils = require(global.utils); | ||
11 | const helpers = global.yoho.helpers; | 12 | const helpers = global.yoho.helpers; |
12 | const sign = global.yoho.sign; | 13 | const sign = global.yoho.sign; |
13 | const cookie = global.yoho.cookie; | 14 | const cookie = global.yoho.cookie; |
@@ -61,6 +62,8 @@ let index = (req, res) => { | @@ -61,6 +62,8 @@ let index = (req, res) => { | ||
61 | // req.session.REG_EXPIRE = Date.now() + 1800000; | 62 | // req.session.REG_EXPIRE = Date.now() + 1800000; |
62 | let refer = req.query.refer; | 63 | let refer = req.query.refer; |
63 | 64 | ||
65 | + refer = utils.refererLimit(refer); | ||
66 | + | ||
64 | refer && res.cookie('refer', encodeURI(refer), { | 67 | refer && res.cookie('refer', encodeURI(refer), { |
65 | domain: 'yohobuy.com' | 68 | domain: 'yohobuy.com' |
66 | }); | 69 | }); |
@@ -402,6 +405,8 @@ let setPassword = (req, res, next) => { | @@ -402,6 +405,8 @@ let setPassword = (req, res, next) => { | ||
402 | refer = '/home'; | 405 | refer = '/home'; |
403 | } | 406 | } |
404 | 407 | ||
408 | + refer = utils.refererLimit(refer); | ||
409 | + | ||
405 | delete req.session.phoneNum; | 410 | delete req.session.phoneNum; |
406 | 411 | ||
407 | return res.json({ | 412 | return res.json({ |
@@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
3 | const _ = require('lodash'); | 3 | const _ = require('lodash'); |
4 | const helpers = global.yoho.helpers; | 4 | const helpers = global.yoho.helpers; |
5 | const cookie = global.yoho.cookie; | 5 | const cookie = global.yoho.cookie; |
6 | +const utils = require(global.utils); | ||
6 | const RegService = require('../models/reg-service'); | 7 | const RegService = require('../models/reg-service'); |
7 | const PhoneService = require('../models/phone-service'); | 8 | const PhoneService = require('../models/phone-service'); |
8 | const AuthHelper = require('../models/auth-helper'); | 9 | const AuthHelper = require('../models/auth-helper'); |
@@ -24,8 +25,10 @@ exports.beforeIn = (req, res, next) => { | @@ -24,8 +25,10 @@ exports.beforeIn = (req, res, next) => { | ||
24 | Expires: 0 | 25 | Expires: 0 |
25 | }); | 26 | }); |
26 | 27 | ||
28 | + let refer = utils.refererLimit(req.cookies.refer); | ||
29 | + | ||
27 | if (!req.xhr && req.user.uid) { | 30 | if (!req.xhr && req.user.uid) { |
28 | - return res.redirect(req.cookies.refer || '/'); | 31 | + return res.redirect(refer); |
29 | } | 32 | } |
30 | 33 | ||
31 | next(); | 34 | next(); |
@@ -300,7 +303,7 @@ exports.check = (req, res, next) => { | @@ -300,7 +303,7 @@ exports.check = (req, res, next) => { | ||
300 | res.json({ | 303 | res.json({ |
301 | code: 200, | 304 | code: 200, |
302 | message: LOGIN_SUCCSS, | 305 | message: LOGIN_SUCCSS, |
303 | - redirect: req.cookies.refer | 306 | + redirect: utils.refererLimit(req.cookies.refer) |
304 | }); | 307 | }); |
305 | 308 | ||
306 | delete req.session.smsLogin; | 309 | delete req.session.smsLogin; |
@@ -363,7 +366,7 @@ exports.password = (req, res, next) => { | @@ -363,7 +366,7 @@ exports.password = (req, res, next) => { | ||
363 | res.json({ | 366 | res.json({ |
364 | code: 200, | 367 | code: 200, |
365 | message: LOGIN_SUCCSS, | 368 | message: LOGIN_SUCCSS, |
366 | - redirect: req.cookies.refer || '/' | 369 | + redirect: utils.refererLimit(req.cookies.refer) |
367 | }); | 370 | }); |
368 | delete req.session.smsLogin; | 371 | delete req.session.smsLogin; |
369 | }).catch(next); | 372 | }).catch(next); |
@@ -119,6 +119,10 @@ const _searchGoods = (params) => { | @@ -119,6 +119,10 @@ const _searchGoods = (params) => { | ||
119 | delete params.channel; | 119 | delete params.channel; |
120 | } | 120 | } |
121 | 121 | ||
122 | + if (params.query) { | ||
123 | + params.query = params.query.replace(/\+/g, ','); | ||
124 | + } | ||
125 | + | ||
122 | params = _.assign({ | 126 | params = _.assign({ |
123 | limit: '60', | 127 | limit: '60', |
124 | status: 1, | 128 | status: 1, |
@@ -11,7 +11,7 @@ | @@ -11,7 +11,7 @@ | ||
11 | <ul class="address-list"> | 11 | <ul class="address-list"> |
12 | {{# sub}} | 12 | {{# sub}} |
13 | <li class="address-last" data-id="{{code}}"> | 13 | <li class="address-last" data-id="{{code}}"> |
14 | - <span class="caption">{{caption}}</span> | 14 | + <span class="caption" data-id="{{code}}">{{caption}}</span> |
15 | </li> | 15 | </li> |
16 | {{/ sub}} | 16 | {{/ sub}} |
17 | </ul> | 17 | </ul> |
@@ -68,7 +68,7 @@ function render(data) { | @@ -68,7 +68,7 @@ function render(data) { | ||
68 | var cartInfo = data.cartInfo; | 68 | var cartInfo = data.cartInfo; |
69 | var thumbClone = $chosePanel.find('.thumb').remove(); | 69 | var thumbClone = $chosePanel.find('.thumb').remove(); |
70 | 70 | ||
71 | - for (var i = 0; i < cartInfo.thumbs.length; i++) { | 71 | + for (var i = cartInfo.thumbs.length - 1; i >= 0; i--) { |
72 | var thumbEle = thumbClone.clone(); | 72 | var thumbEle = thumbClone.clone(); |
73 | 73 | ||
74 | thumbEle.attr('src', cartInfo.thumbs[i].img); | 74 | thumbEle.attr('src', cartInfo.thumbs[i].img); |
@@ -20,8 +20,7 @@ var $addressForm = $('.edit-address'), | @@ -20,8 +20,7 @@ var $addressForm = $('.edit-address'), | ||
20 | $area = $('.area'), | 20 | $area = $('.area'), |
21 | isSubmiting, | 21 | isSubmiting, |
22 | currentPage = 'edit', | 22 | currentPage = 'edit', |
23 | - newArea = [], | ||
24 | - chinaAddressList; | 23 | + newArea = []; |
25 | 24 | ||
26 | require('../common.js'); | 25 | require('../common.js'); |
27 | 26 | ||
@@ -193,27 +192,28 @@ function bindAddressListEvent(html) { | @@ -193,27 +192,28 @@ function bindAddressListEvent(html) { | ||
193 | } | 192 | } |
194 | 193 | ||
195 | // 读取省市区列表缓存 | 194 | // 读取省市区列表缓存 |
196 | -if (window.localStorage && window.localStorage.getItem) { | ||
197 | - chinaAddressList = window.localStorage.getItem('chinaAddressList'); | ||
198 | -} | 195 | +// if (window.localStorage && window.localStorage.getItem) { |
196 | +// chinaAddressList = window.localStorage.getItem('chinaAddressList'); | ||
197 | +// } | ||
199 | 198 | ||
200 | -if (chinaAddressList) { | ||
201 | - bindAddressListEvent(chinaAddressList); | ||
202 | -} else { | 199 | +// if (chinaAddressList) { |
200 | +// bindAddressListEvent(chinaAddressList); | ||
201 | +// } else { | ||
203 | 202 | ||
204 | // 省市区列表异步加载 | 203 | // 省市区列表异步加载 |
205 | - $.ajax({ | ||
206 | - method: 'GET', | ||
207 | - url: '/home/locationList', | ||
208 | - timeout: 60000, | ||
209 | - cache: true | ||
210 | - }).then(function(html) { | ||
211 | - bindAddressListEvent(html); | 204 | +$.ajax({ |
205 | + method: 'GET', | ||
206 | + url: '/home/locationList', | ||
207 | + timeout: 60000, | ||
208 | + cache: true | ||
209 | +}).then(function(html) { | ||
210 | + bindAddressListEvent(html); | ||
212 | 211 | ||
213 | // if (window.localStorage && window.localStorage.setItem) { | 212 | // if (window.localStorage && window.localStorage.setItem) { |
214 | // window.localStorage.setItem('chinaAddressList', html); | 213 | // window.localStorage.setItem('chinaAddressList', html); |
215 | // } | 214 | // } |
216 | - }).fail(function() { | ||
217 | - tip.show('获取省市区列表失败'); | ||
218 | - }); | ||
219 | -} | 215 | +}).fail(function() { |
216 | + tip.show('获取省市区列表失败'); | ||
217 | +}); | ||
218 | + | ||
219 | +// } |
@@ -61,8 +61,8 @@ var $listNav = $('#list-nav'), | @@ -61,8 +61,8 @@ var $listNav = $('#list-nav'), | ||
61 | var swipers = [], | 61 | var swipers = [], |
62 | goodsType = ['coat', 'trouser', 'shoes', 'other']; | 62 | goodsType = ['coat', 'trouser', 'shoes', 'other']; |
63 | 63 | ||
64 | -require('../common/suspend-cart'); // 悬浮购物车 | ||
65 | require('../common'); | 64 | require('../common'); |
65 | +require('../common/suspend-cart'); // 悬浮购物车 | ||
66 | 66 | ||
67 | ellipsis.init(); | 67 | ellipsis.init(); |
68 | 68 |
@@ -242,6 +242,13 @@ function search(opt, params, isScroll) { | @@ -242,6 +242,13 @@ function search(opt, params, isScroll) { | ||
242 | 242 | ||
243 | searching = true; | 243 | searching = true; |
244 | loading.showLoadingMask(); | 244 | loading.showLoadingMask(); |
245 | + | ||
246 | + /* TODO tar add 161125 sale dicount no yh_channel*/ | ||
247 | + var discount = $('#discount').val(); | ||
248 | + if (discount === 'discount') { | ||
249 | + delete setting.yh_channel; | ||
250 | + } | ||
251 | + | ||
245 | $.ajax({ | 252 | $.ajax({ |
246 | type: 'GET', | 253 | type: 'GET', |
247 | url: '/product/sale/search', | 254 | url: '/product/sale/search', |
@@ -37,11 +37,11 @@ | @@ -37,11 +37,11 @@ | ||
37 | 37 | ||
38 | .banner-swiper { | 38 | .banner-swiper { |
39 | position: static; | 39 | position: static; |
40 | - height: 312px; | 40 | + max-height: 312px; |
41 | 41 | ||
42 | ul { | 42 | ul { |
43 | position: relative; | 43 | position: relative; |
44 | - height: 312px; | 44 | + max-height: 312px; |
45 | 45 | ||
46 | li { | 46 | li { |
47 | float: left; | 47 | float: left; |
utils/index.js
0 → 100644
1 | +'use strict'; | ||
2 | + | ||
3 | +const url = require('url'); | ||
4 | + | ||
5 | +/** | ||
6 | + * refer限制 | ||
7 | + * @param referer string | ||
8 | + * @param blacklist [array|function] refer黑名单 TODO: 未实现 | ||
9 | + * 1. array: ['/login', '/signin'] 如果referer 在array中,将返回 /home | ||
10 | + * 2. function: 如果返回true, 返回/home | ||
11 | + * @return referer | ||
12 | + */ | ||
13 | +exports.refererLimit = (referer, blacklist) => { // eslint-disable-line | ||
14 | + let result = decodeURIComponent(referer || '/home'); | ||
15 | + | ||
16 | + let urlObj = url.parse(result, false, true); | ||
17 | + | ||
18 | + | ||
19 | + if (urlObj.hostname && !/(?:yohobuy\.com$)|(?:yoho\.cn$)/.test(urlObj.hostname)) { | ||
20 | + result = '/home'; | ||
21 | + } | ||
22 | + | ||
23 | + // TODO: blacklist; | ||
24 | + | ||
25 | + return result; | ||
26 | +}; |
-
Please register or login to post a comment