Authored by ccbikai(👎🏻🍜)

Merge branch 'master' into release/wap-optim

... ... @@ -2,6 +2,11 @@
<div class="ma-header">
<div>{{headerTip}}</div>
</div>
{{# download}}
<a href="{{url}}" class="down">
<img src="{{img}}" alt="{{alt}}" />
</a>
{{/ download}}
<div class="tab">
<div class="swiper-container">
<div class="swiper-wrapper">
... ... @@ -42,9 +47,4 @@
<p>{{title}}</p>
</div>
{{/ newsList}}
{{# download}}
<a href="{{url}}" class="down">
<img src="{{img}}" alt="{{alt}}" />
</a>
{{/ download}}
</div>
\ No newline at end of file
... ...
... ... @@ -50,7 +50,6 @@ const _repaymentList = (req, res, opt, params) => {
// 开通分期首页
const index = (req, res) => {
let uid = req.query.uid;
Promise.all([
installmentModel.getStauts(uid),
installmentModel.getSearchIntallment({
... ... @@ -309,14 +308,23 @@ const getRepayRecord = (req, res) => {
// 账号管理
const account = (req, res) => {
var url = req.yoho.isApp || req.cookies.appVersion ? '/home/installment/account' : '/home/installment/bank-card';
if (req.cookies.appVersion) {
var versions = req.cookies.appVersion.split('.');
if (versions.length >= 2) {
if (versions[0] < 5 || (parseInt(versions[0], 10)===5 && versions[1] <= 1)) {
url = '/home/installment/bank-card';
} else {
url = helpers.appUrlFormat(url, 'go.instalmentMyCard')
}
}
}
res.render('installment/account', {
module: 'home',
page: 'account',
title: '账号管理',
isInstallmentPage: true,
posId: 7,
url: helpers.appUrlFormat(url, 'go.instalmentMyCard')
url: url
});
};
... ...
... ... @@ -4,13 +4,19 @@ const model = require('../models/myqrcode'),
headerModel = require('../../../doraemon/models/header'); // 头部model
exports.index = (req, res, next) => {
let params = req.query;
let params = req.query,
esc = false,
appversion = req.query.app_version;
if (Number(appversion.substr(0, 1) < 5) || (Number(appversion.substr(0, 1)) === 5 && Number(appversion.substr(2, 1)) < 2)) {
esc = true;
}
model.getQr({
token: params.token,
}).then(result => {
params.token = result;
params.uname = decodeURIComponent(params.uname.replace(/\%/g, escape('%')));
params.uname = esc ? decodeURIComponent(params.uname) : decodeURIComponent(params.uname.replace(/\%/g, escape('%')));
params.icon = params.icon || 'https://img11.static.yhbimg.com/yhb-img01/2016/07/05/13/017ec560b82c132ab2fdb22f7cf6f42b83.png?imageView/2/w/{width}/h/{height}';
res.render('myqrcode', {
title: '查看二维码',
... ...
... ... @@ -9,8 +9,8 @@ exports.getQr = (params) => {
try {
uid = crypto.decrypt(PASSWORD, decodeURIComponent(params.token));
uid = parseInt(uid, 10)
} catch (e) {
console.error(e);
uid = params.token;
}
... ...
<div class="repayment-list-page installment-order-page yoho-page" data-pos-id="{{posId}}">
{{> resources/banner-top}}
<ul class="header-tab">
<li class="active">
<a href="/home/installment/order.html?type=1" data-type="1">全部</a>
... ...
... ... @@ -15,7 +15,7 @@
<div class="field">
<label for="identityCardNo">身份证号:</label>
<input id="identityCardNo" name="identityCardNo" type="tel" placeholder="请填写身份证号" maxlength="18"/>
<input id="identityCardNo" name="identityCardNo" type="text" placeholder="请填写身份证号" maxlength="18"/>
<div class="clearfix"></div>
</div>
... ...
... ... @@ -14,6 +14,7 @@ const cookie = global.yoho.cookie;
const helpers = global.yoho.helpers;
const log = global.yoho.logger;
const config = global.yoho.config;
const utils = require(global.utils);
const RegService = require('../models/reg-service');
const AuthHelper = require('../models/auth-helper');
... ... @@ -32,6 +33,9 @@ function doPassportCallback(openId, nickname, sourceType, req, res) {
if (/signin|login/.test(refer)) {
refer = `${config.siteUrl}/home`;
}
refer = utils.refererLimit(refer);
if (openId && nickname) {
return AuthHelper.signinByOpenID(nickname, openId, sourceType, shoppingKey).then((result) => {
if (result.code !== 200) {
... ... @@ -64,6 +68,8 @@ const common = {
refer = req.get('Referer');
}
refer = utils.refererLimit(refer);
refer && !/signin|login|passport/.test(refer) && res.cookie('refer', encodeURI(refer), {
domain: 'yohobuy.com'
... ... @@ -112,7 +118,7 @@ const local = {
});
},
international: (req, res) => {
// 先清除cookie
// 先清除cookie
// res.clearCookie('LE' + md5('_LOGIN_EXPIRE'), {
// domain: 'yohobuy.com'
// });
... ... @@ -161,6 +167,9 @@ const local = {
if (/sign|login/.test(refer)) {
refer = `${config.siteUrl}/home`;
}
refer = utils.refererLimit(refer);
user.session = refer;
user.href = refer;
AuthHelper.syncUserSession(user.uid, req, res, user.session_key).then(() => {
... ... @@ -184,6 +193,8 @@ const local = {
res.clearCookie('_SPK');
let refer = req.get('Referer') || config.siteUrl;
refer = utils.refererLimit(refer);
res.redirect(refer);
}
};
... ...
... ... @@ -8,6 +8,7 @@
'use strict';
const _ = require('lodash');
const utils = require(global.utils);
const helpers = global.yoho.helpers;
const sign = global.yoho.sign;
const cookie = global.yoho.cookie;
... ... @@ -61,6 +62,8 @@ let index = (req, res) => {
// req.session.REG_EXPIRE = Date.now() + 1800000;
let refer = req.query.refer;
refer = utils.refererLimit(refer);
refer && res.cookie('refer', encodeURI(refer), {
domain: 'yohobuy.com'
});
... ... @@ -402,6 +405,8 @@ let setPassword = (req, res, next) => {
refer = '/home';
}
refer = utils.refererLimit(refer);
delete req.session.phoneNum;
return res.json({
... ...
... ... @@ -3,6 +3,7 @@
const _ = require('lodash');
const helpers = global.yoho.helpers;
const cookie = global.yoho.cookie;
const utils = require(global.utils);
const RegService = require('../models/reg-service');
const PhoneService = require('../models/phone-service');
const AuthHelper = require('../models/auth-helper');
... ... @@ -24,8 +25,10 @@ exports.beforeIn = (req, res, next) => {
Expires: 0
});
let refer = utils.refererLimit(req.cookies.refer);
if (!req.xhr && req.user.uid) {
return res.redirect(req.cookies.refer || '/');
return res.redirect(refer);
}
next();
... ... @@ -300,7 +303,7 @@ exports.check = (req, res, next) => {
res.json({
code: 200,
message: LOGIN_SUCCSS,
redirect: req.cookies.refer
redirect: utils.refererLimit(req.cookies.refer)
});
delete req.session.smsLogin;
... ... @@ -363,7 +366,7 @@ exports.password = (req, res, next) => {
res.json({
code: 200,
message: LOGIN_SUCCSS,
redirect: req.cookies.refer || '/'
redirect: utils.refererLimit(req.cookies.refer)
});
delete req.session.smsLogin;
}).catch(next);
... ...
... ... @@ -119,6 +119,10 @@ const _searchGoods = (params) => {
delete params.channel;
}
if (params.query) {
params.query = params.query.replace(/\+/g, ',');
}
params = _.assign({
limit: '60',
status: 1,
... ...
... ... @@ -34,5 +34,5 @@
</ul>
{{> sale/common}}
<input type="hidden" id="discount" value="discount">
</div>
\ No newline at end of file
... ...
... ... @@ -11,7 +11,7 @@
<ul class="address-list">
{{# sub}}
<li class="address-last" data-id="{{code}}">
<span class="caption">{{caption}}</span>
<span class="caption" data-id="{{code}}">{{caption}}</span>
</li>
{{/ sub}}
</ul>
... ...
... ... @@ -68,7 +68,7 @@ function render(data) {
var cartInfo = data.cartInfo;
var thumbClone = $chosePanel.find('.thumb').remove();
for (var i = 0; i < cartInfo.thumbs.length; i++) {
for (var i = cartInfo.thumbs.length - 1; i >= 0; i--) {
var thumbEle = thumbClone.clone();
thumbEle.attr('src', cartInfo.thumbs[i].img);
... ...
... ... @@ -20,8 +20,7 @@ var $addressForm = $('.edit-address'),
$area = $('.area'),
isSubmiting,
currentPage = 'edit',
newArea = [],
chinaAddressList;
newArea = [];
require('../common.js');
... ... @@ -193,27 +192,28 @@ function bindAddressListEvent(html) {
}
// 读取省市区列表缓存
if (window.localStorage && window.localStorage.getItem) {
chinaAddressList = window.localStorage.getItem('chinaAddressList');
}
// if (window.localStorage && window.localStorage.getItem) {
// chinaAddressList = window.localStorage.getItem('chinaAddressList');
// }
if (chinaAddressList) {
bindAddressListEvent(chinaAddressList);
} else {
// if (chinaAddressList) {
// bindAddressListEvent(chinaAddressList);
// } else {
// 省市区列表异步加载
$.ajax({
method: 'GET',
url: '/home/locationList',
timeout: 60000,
cache: true
}).then(function(html) {
bindAddressListEvent(html);
$.ajax({
method: 'GET',
url: '/home/locationList',
timeout: 60000,
cache: true
}).then(function(html) {
bindAddressListEvent(html);
// if (window.localStorage && window.localStorage.setItem) {
// window.localStorage.setItem('chinaAddressList', html);
// }
}).fail(function() {
tip.show('获取省市区列表失败');
});
}
}).fail(function() {
tip.show('获取省市区列表失败');
});
// }
... ...
... ... @@ -61,8 +61,8 @@ var $listNav = $('#list-nav'),
var swipers = [],
goodsType = ['coat', 'trouser', 'shoes', 'other'];
require('../common/suspend-cart'); // 悬浮购物车
require('../common');
require('../common/suspend-cart'); // 悬浮购物车
ellipsis.init();
... ...
... ... @@ -242,6 +242,13 @@ function search(opt, params, isScroll) {
searching = true;
loading.showLoadingMask();
/* TODO tar add 161125 sale dicount no yh_channel*/
var discount = $('#discount').val();
if (discount === 'discount') {
delete setting.yh_channel;
}
$.ajax({
type: 'GET',
url: '/product/sale/search',
... ...
... ... @@ -626,6 +626,11 @@ function search(opt) {
age_level: opt.id
};
break;
case 'p_d':
ext = {
p_d: opt.id
};
break;
default:
break;
}
... ...
... ... @@ -37,11 +37,11 @@
.banner-swiper {
position: static;
height: 312px;
max-height: 312px;
ul {
position: relative;
height: 312px;
max-height: 312px;
li {
float: left;
... ...
'use strict';
const url = require('url');
/**
* refer限制
* @param referer string
* @param blacklist [array|function] refer黑名单 TODO: 未实现
* 1. array: ['/login', '/signin'] 如果referer 在array中,将返回 /home
* 2. function: 如果返回true, 返回/home
* @return referer
*/
exports.refererLimit = (referer, blacklist) => { // eslint-disable-line
let result = decodeURIComponent(referer || '/home');
let urlObj = url.parse(result, false, true);
if (urlObj.hostname && !/(?:yohobuy\.com$)|(?:yoho\.cn$)/.test(urlObj.hostname)) {
result = '/home';
}
// TODO: blacklist;
return result;
};
... ...