Authored by unknown

Merge branch 'develop' of http://git.dev.yoho.cn/web/yohobuy into develop

... ... @@ -30,6 +30,7 @@ class FavoriteData {
*/
public static function addUidProductFav($uid, $productSkn)
{
//echo Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE;exit;
return Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE, 'addUidProductFav', array($uid, $productSkn));
}
... ... @@ -45,6 +46,18 @@ class FavoriteData {
}
/**
* 根据uid和商品的skn收藏或取消收藏商品
* @param $uid
* @param $productSkn
* @return bool
*/
public static function changeFavoriteProduct($uid, $productSkn)
{
//echo Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE;exit;
return Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URL_PRODUCT_FAVORITE, 'toggleProduct', array($uid, $productSkn));
}
/**
* 根据uid和商品的skn添加或取消收藏品牌
* @param $uid
* @param $productSkn
... ...
... ... @@ -249,7 +249,7 @@ class SearchData extends \LibModels\Wap\Product\SearchData
if (!isset($condition['order'])) {
$param['order'] = $orderMaps['s_t_desc'];
} else {
$param['order'] = $orderMaps[$condition['order']];
$param['order'] = isset($orderMaps[$condition['order']]) ? $orderMaps[$condition['order']] : '';
}
if (!isset($condition['page'])) {
$param['page'] = 1;
... ...
... ... @@ -79,7 +79,7 @@ class HelperSearch
//总页数
$result['page_total'] = isset($data['product']['page_total']) ? $data['product']['page_total'] : '';
self::$pageTotal = $result['page_total'];
self::$total = $data['product']['total'];
self::$total = isset($data['product']['total']) ? $data['product']['total'] : 0;
//当前页
self::$page = $result['page'] = isset($data['product']['page']) ? $data['product']['page'] : '';
//筛选条件
... ...
... ... @@ -143,6 +143,16 @@ function showPage() {
$pageList.css('visibility', 'visible');
}
function bindTouchedEvent() {
var $boxs = $('.box');
$boxs.on('touchstart', function(e) {
$(this).addClass('bytouch');
}).on('touchend touchcancel', function() {
$boxs.removeClass('bytouch');
});
}
if (wxHammer) {
wxHammer.on('tap', function() {
callpay(theOrderCode);
... ... @@ -154,9 +164,11 @@ function main() {
loading.hideLoadingMask();
showPage();
loadIcon();
bindTouchedEvent();
}
loading.showLoadingMask();
$(document).ready(main);
... ...
... ... @@ -5,6 +5,10 @@
visibility: hidden;
}
.box.bytouch {
background-color:#eee;
}
.box {
border: 1px solid #eee;
border-radius: 10rem / $pxConvertRem;
... ... @@ -23,6 +27,7 @@
@include flexbox((display: flex, align-items: center));
}
.icon {
width: 15%;
... ... @@ -38,7 +43,7 @@
height: 60rem / $pxConvertRem;
background-image: image-url("layout/pay-icon.png");
background-size: 90%;
background-position-y: 8rem / $pxConvertRem;
background-position-y: 12rem / $pxConvertRem;
background-position-x: center;
background-repeat: no-repeat;
}
... ...
... ... @@ -4,7 +4,11 @@
{{# list}}
<li style="{{#if bgColor}}background:{{bgColor}}{{/if}}">
<a href="{{href}}" target= "_blank">
{{#if @first}}
<img src="{{img}}">
{{^}}
<img class="lazy" data-original="{{img}}" alt="">
{{/if}}
</a>
{{# tips}}
<div class="slide-tips">
... ...
... ... @@ -304,9 +304,7 @@
</script>
<script type="text/html" id="tmpl-my-login-new">
<div class="myyoho-info-header clearfix">
\{\{# head_ico \}\}
<div class="myyoho-photo" ><img src="" alt="" data-url ="\{\{it.head_ico\}\}"></div>
\{\{/ head_ico\}\}
<div class="myyoho-photo" ><img src="\{\{headimg it.head_ico\}\}" alt="" data-url =""></div>
<h3 class="user-email"><a href="http://www.yohobuy.com/home?t=\{\{random\}\}">\{\{profile_name\}\}</a></h3>
<h3 class="user-level">
VIP:
... ... @@ -328,37 +326,37 @@
<ul class="myyoho-info-content">
<li class="item">
<span class="itemdetail float-left">
<a href="http://www.yohobuy.com/home/orders?t=<?php print microtime(true);?>">待处理的订单</a>
<a href="http://www.yohobuy.com/home/orders?t=\{\{timestamp\}\}">待处理的订单</a>
</span>
<span class="itemnum float-right">\{\{orderCount\}\}</span>
</li>
<li class="item">
<span class="itemdetail float-left">
<a href="http://www.yohobuy.com/home/favorite?t=<?php print microtime(true);?>">我的收藏</a>
<a href="http://www.yohobuy.com/home/favorite?t=\{\{timestamp\}\}">我的收藏</a>
</span>
<span class="itemnum float-right"></span>
</li>
<li class="item">
<span class="itemdetail float-left">
<a href="http://www.yohobuy.com/home/coupons?t=<?php print microtime(true);?>">我的优惠券</a>
<a href="http://www.yohobuy.com/home/coupons?t=\{\{timestamp\}\}">我的优惠券</a>
</span>
<span class="itemnum float-right">\{\{couponCount\}\}</span>
</li>
<li class="item">
<span class="itemdetail float-left">
<a href="http://www.yohobuy.com/home/currency?t=<?php print microtime(true);?>">我的YOHO币</a>
<a href="http://www.yohobuy.com/home/currency?t=\{\{timestamp\}\}">我的YOHO币</a>
</span>
<span class="itemnum float-right">\{\{YohocoinCount\}\}</span>
</li>
<li class="item">
<span class="itemdetail float-left">
<a href="http://www.yohobuy.com/home/returns?t=<?php print microtime(true);?>">我的退货换货</a>
<a href="http://www.yohobuy.com/home/returns?t=\{\{timestamp\}\}">我的退货换货</a>
</span>
<span class="itemnum float-right">\{\{refundCount\}\}</span>
</li>
</ul>
<div class="myyoho-info-footer">
<a href="http://www.yohobuy.com/home/user?t=<?php print microtime(true);?>">完善资料</a>
<a href="http://www.yohobuy.com/home/user?t=\{\{timestamp\}\}">完善资料</a>
</div>
</script>
</div>
... ...
... ... @@ -29,7 +29,7 @@
{{/ registerHref}}
</li>
<li class="tool-options">
<span>MY有货</span>
<span><a href="{{userCenter}}">MY有货</a></span>
<i class="options-icon down iconfont">&#xe604;</i>
<i class="options-icon up iconfont">&#xe603;</i>
<div class="tool-select">
... ...
... ... @@ -4,17 +4,13 @@
{{!-- 正常头部 --}}
{{#headerdata}}
<script>
seajs.use('js/header',function(header){
header.init();
});
seajs.use('js/header');
</script>
{{/headerdata}}
{{!-- 简单头部 --}}
{{#simpleHeader}}
<script>
seajs.use('js/simple-header',function(simpleheader){
simpleheader.init();
});
seajs.use('js/simple-header');
</script>
{{/simpleHeader}}
{{!-- 首页 --}}
... ...
... ... @@ -614,6 +614,15 @@ handlebars.registerHelper('equalone', function(v1, options) {
}
});
/**
* 时间戳
* @param {[type]} v1 [description]
* @param {[type]} options) { if (v1 [description]
* @return {[type]} [description]
*/
handlebars.registerHelper('timestamp', function() {
return new Date().getTime();
});
/**
* 判断等级为3的helper
* @param {[type]} v1 [description]
* @param {[type]} options) { if (v1 [description]
... ... @@ -1149,11 +1158,6 @@ function actionCover() {
var containertop;
var length = '';
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
if (typeof gender === 'undefined' || gender === '' || gender === null) {
$.get('http://www.yohobuy.com/index/guide', function(data) {
newMask = document.createElement('div');
... ... @@ -1339,70 +1343,6 @@ function actionExeCookieMap() {
}
}
}
/**
* 一级菜单点击(会设置cookie)
* @return {[type]} [description]
*/
function actionFirstMenuClick() {
var $cookieGender;
$('.first-nav-item').click(function() {
$cookieGender = window.cookie('_Gender');
if (typeof $cookieGender !== 'undefined' && $cookieGender !== '') {
window.setCookie('_Gender', 1, {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '男生') {
window.setCookie('_Gender', '1,3', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '女生') {
window.setCookie('_Gender', '2,3', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
window.setCookie('_Channel', 'girls', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '创意生活') {
window.setCookie('_Channel', 'lifestyle', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '潮童') {
window.setCookie('_Channel', 'kids', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
});
$('#backToOld').click(function() {
window.setCookie('_New', 1, {
path: '/',
domain: '.yohobuy.com'
});
location.href = 'http://www.yohobuy.com';
});
}
/**
... ... @@ -1844,7 +1784,7 @@ function actionLoginInfo() {
* 初始化函数
* @return {[type]} [description]
*/
exports.init = function() {
function init() {
actionNav(); //处理导航
actionTipPic(); //鼠标移入后查询
actionExeTemplate(); //处理模板
... ... @@ -1857,7 +1797,6 @@ exports.init = function() {
actionGetBannerAndNotice(); // 获取banner和服务器维护提示
actionBrandChange(); //切换品牌
actionAddKeyWords(); //跳转后增加关键字
actionFirstMenuClick(); //一级菜单点击(会设置cookie)
actionGoodsCarMouseEffect(); //鼠标滑入滑出效果
actionUpdateCartNum(); //更新购物车数量
actionLoopUpdCartNum(); //循环检测购物车数量
... ... @@ -1868,8 +1807,8 @@ exports.init = function() {
actionLoginInfo(); //获取登录信息
actionCover(); //初次登录弹框
actionAddKeyWords(); //增加关键字
};
}
init();
});
define("js/simple-header", ["jquery"], function(require, exports, module){
... ... @@ -1969,9 +1908,10 @@ function actionLoginInfo() {
* 初始化函数
* @return {[type]} [description]
*/
exports.init = function() {
function init() {
actionLoginInfo(); //获取登录信息
};
}
init();
});
... ... @@ -2631,7 +2571,7 @@ $goodInfoMain.on('click', '.col-btn', function() {
url: '/product/list/changeFavorite',
data: {
skn: $this.closest('.good-info').data('skn'),
isFavorite: !$this.hasClass('coled')
isFavorite: $this.hasClass('coled')
}
}).then(function(res) {
if (res.code === 200) {
... ... @@ -2644,21 +2584,22 @@ $goodInfoMain.on('click', '.col-btn', function() {
// 左侧导航
$productListNav.click(function(event) {
var $this = $(this);
if (!$(event.target).hasClass('product-list-nav')) {
if (!$this.hasClass('product-list-nav')) {
return;
}
if ($(this).hasClass('active')) {
if ($this.hasClass('active')) {
$(this).find('.sort-child-list').stop(true, true).slideUp();
$this.find('.sort-child-list').stop(true, true).slideUp();
} else {
$(this).find('.sort-child-list').stop(true, true).slideDown();
$this.find('.sort-child-list').stop(true, true).slideDown();
}
$(this).toggleClass('active');
$this.toggleClass('active');
});
});
... ... @@ -5539,300 +5480,301 @@ $('#find-btn').click(function(e) {
});
});
define("js/passport/login", ["jquery","jquery.placeholder"], function(require, exports, module){
/**
* 登录
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/12/11
*/
var $ = require("jquery");
var mailPostfix = {
num: ['qq.com', '163.com', '126.com', 'sina.com', 'gmail.com', 'sohu.com', 'hotmail.com', '139.com', '189.com'],
other: ['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com', 'sohu.com', 'hotmail.com', '139.com', '189.com']
};
var $account = $('#account'),
$password = $('#password');
var $accountTip = $account.siblings('.err-tip'),
$passwordTip = $password.siblings('.err-tip'),
$capsLock = $('#caps-lock');
var $countryCodeHide = $('#country-code-hide'),
$countryCodeEm = $('#country-code > em'),
$countryList = $('#country-list');
var $emailAutoComplete = $('#email-autocomplete');
var mailPhoneRegx = require("js/passport/mail-phone-regx");
var $remember = $('.remember-me');
//checkbox status unicode
var checkbox = {
checked: '&#xe612;',
unchecked: '&#xe613;'
};
var authing = false;
var emailAcTime;
require("jquery.placeholder");
//验证账户名
function validateAccount() {
var pass = false,
account = $.trim($account.val()),
err;
if (account !== '') {
if (/^[0-9]+$/.test(account)) {
//如果是纯数字,则作为手机号码处理
if (mailPhoneRegx.phoneRegx[$countryCodeHide.val()].test(account)) {
pass = true;
} else {
pass = false;
err = '手机号码不正确,请重新输入';
}
} else {
if (mailPhoneRegx.emailRegx.test(account)) {
pass = true;
} else {
pass = false;
err = '邮箱格式不正确,请重新输入';
}
}
} else {
err = '请输入账户名';
}
if (pass) {
$accountTip.addClass('hide');
$account.removeClass('error');
} else {
$accountTip.removeClass('hide').children('em').text(err);
$account.addClass('error');
}
return pass;
}
//验证密码
function validatePassword() {
var pass = false,
password = $.trim($password.val()),
err;
if (password !== '') {
if (password.length < 6) {
err = '请输入长度为6-20字符的密码';
} else {
pass = true;
}
} else {
err = '请输入密码';
}
if (pass) {
$passwordTip.addClass('hide');
$password.removeClass('error');
} else {
$passwordTip.removeClass('hide').children('em').text(err);
$password.addClass('error');
}
return pass;
}
//验证
function validate() {
var pass = true,
account = $.trim($account.val()),
password = $.trim($password.val());
if (account !== '') {
pass = validateAccount() && validatePassword();
} else {
pass = false;
$account.addClass('error');
if (password === '') {
//账户名和密码都为空的情况下点击登陆,只在账户输入框后显示错误提示
$accountTip.addClass('both-error').removeClass('hide').children('em').text('请输入账户名和密码');
$passwordTip.addClass('hide');
$password.addClass('error');
} else {
$accountTip.removeClass('hide').children('em').text('请输入账户名');
}
}
return pass;
}
$('[placeholder]').placeholder();
//展开地区列表
$('#country-code').on('click', function() {
if ($countryList.css('display') === 'none') {
$countryList.slideDown();
}
});
//选中地区列表项
$countryList.on('click', 'li', function() {
var $this = $(this),
cc = $this.data('cc');
$countryCodeEm.html($this.html());
$countryCodeHide.val(cc);
$countryList.slideUp();
});
//点击其他区域,收起区域列表
$(document).on('click', function(e) {
if ($(e.target).closest('#country-code').length > 0) {
return;
}
if ($countryList.css('display') === 'block') {
$countryList.slideUp();
}
});
//邮箱
$account.on('keyup', function() {
var account = $.trim($(this).val()),
html = '',
accountMatch,
matchStr,
postfix,
i;
//输入@时自动补全邮箱后缀
//此处>0非错误,用于避免输入的第一个字符为@被识别为邮箱
if (account.indexOf('@') > 0) {
accountMatch = account.match(/^[0-9]+@(.*)/);
if (accountMatch) {
//数字邮箱补全
postfix = mailPostfix.num;
} else {
postfix = mailPostfix.other;
}
matchStr = accountMatch[1];
for (i = 0; i < postfix.length; i++) {
if (postfix[i].indexOf(matchStr) > -1) {
html += '<li>' + account.slice(0, account.indexOf('@')) + '@' + postfix[i] + '</li>';
}
}
if (html !== '') {
$emailAutoComplete.html(html).removeClass('hide');
} else {
//隐藏autocomplete
$emailAutoComplete.html('').addClass('hide');
}
}
}).on('blur', function() {
emailAcTime = setTimeout(function() {
$emailAutoComplete.addClass('hide');
//验证
validateAccount();
}, 200);
});
//密码
$password.on('blur', function() {
validatePassword();
if ($capsLock.hasClass('hide')) {
return;
}
$capsLock.addClass('hide');
}).on('keypress', function(e) {
var code = e.which;
//CapsLock检测
if (code >= 65 && code <= 90) {
$capsLock.removeClass('hide');
return;
}
$capsLock.addClass('hide');
});
//邮箱自动完成列表项点击
$emailAutoComplete.on('click', 'li', function() {
clearTimeout(emailAcTime); //清空默认关闭
$account.val($(this).text()).focus();
$emailAutoComplete.addClass('hide');
});
//记住登录状态
$remember.on('click', function() {
var $this = $(this);
$this.toggleClass('checked');
if ($this.hasClass('checked')) {
$this.children('i').html(checkbox.checked);
} else {
$this.children('i').html(checkbox.unchecked);
}
});
//focus到输入框则隐藏错误提示和样式
$('.va').on('focus', function() {
var $this = $(this);
$this.removeClass('error');
$this.siblings('.err-tip').addClass('hide');
});
//登录
$('#login-btn').on('click', function() {
var pass = validate();
if (pass && authing === false) {
authing = true;
$.ajax({
url: '/passport/login/auth',
type: 'POST',
data: {
areaCode: $countryCodeHide.val().replace('+', ''),
account: $.trim($account.val()),
password: $.trim($password.val()),
isRemember: $remember.hasClass('checked') ? true : false
},
success: function(data) {
if (data.code === 200) {
if (data.data) {
//防止data.data为undefined时下行语句执行出错而导致脚本不能走到complete去处理authing
location.href = data.data.session;
}
} else {
$passwordTip.removeClass('hide').children('em').text(data.message);
$password.addClass('error');
}
},
complete: function() {
authing = false;
}
});
}
/**
* 登录
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2015/12/11
*/
var $ = require("jquery");
var mailPostfix = {
num: ['qq.com', '163.com', '126.com', 'sina.com', 'gmail.com', 'sohu.com', 'hotmail.com', '139.com', '189.com'],
other: ['gmail.com', 'qq.com', '163.com', '126.com', 'sina.com', 'sohu.com', 'hotmail.com', '139.com', '189.com']
};
var $account = $('#account'),
$password = $('#password');
var $accountTip = $account.siblings('.err-tip'),
$passwordTip = $password.siblings('.err-tip'),
$capsLock = $('#caps-lock');
var $countryCodeHide = $('#country-code-hide'),
$countryCodeEm = $('#country-code > em'),
$countryList = $('#country-list');
var $emailAutoComplete = $('#email-autocomplete');
var mailPhoneRegx = require("js/passport/mail-phone-regx");
var $remember = $('.remember-me');
//checkbox status unicode
var checkbox = {
checked: '&#xe612;',
unchecked: '&#xe613;'
};
var authing = false;
var emailAcTime;
require("jquery.placeholder");
//验证账户名
function validateAccount() {
var pass = false,
account = $.trim($account.val()),
err;
if (account !== '') {
if (/^[0-9]+$/.test(account)) {
//如果是纯数字,则作为手机号码处理
if (mailPhoneRegx.phoneRegx[$countryCodeHide.val()].test(account)) {
pass = true;
} else {
pass = false;
err = '手机号码不正确,请重新输入';
}
} else {
if (mailPhoneRegx.emailRegx.test(account)) {
pass = true;
} else {
pass = false;
err = '邮箱格式不正确,请重新输入';
}
}
} else {
err = '请输入账户名';
}
if (pass) {
$accountTip.addClass('hide');
$account.removeClass('error');
} else {
$accountTip.removeClass('hide').children('em').text(err);
$account.addClass('error');
}
return pass;
}
//验证密码
function validatePassword() {
var pass = false,
password = $.trim($password.val()),
err;
if (password !== '') {
if (password.length < 6) {
err = '请输入长度为6-20字符的密码';
} else {
pass = true;
}
} else {
err = '请输入密码';
}
if (pass) {
$passwordTip.addClass('hide');
$password.removeClass('error');
} else {
$passwordTip.removeClass('hide').children('em').text(err);
$password.addClass('error');
}
return pass;
}
//验证
function validate() {
var pass = true,
account = $.trim($account.val()),
password = $.trim($password.val());
if (account !== '') {
pass = validateAccount() && validatePassword();
} else {
pass = false;
$account.addClass('error');
if (password === '') {
//账户名和密码都为空的情况下点击登陆,只在账户输入框后显示错误提示
$accountTip.addClass('both-error').removeClass('hide').children('em').text('请输入账户名和密码');
$passwordTip.addClass('hide');
$password.addClass('error');
} else {
$accountTip.removeClass('hide').children('em').text('请输入账户名');
}
}
return pass;
}
$('[placeholder]').placeholder();
//展开地区列表
$('#country-code').on('click', function() {
if ($countryList.css('display') === 'none') {
$countryList.slideDown();
}
});
//选中地区列表项
$countryList.on('click', 'li', function() {
var $this = $(this),
cc = $this.data('cc');
$countryCodeEm.html($this.html());
$countryCodeHide.val(cc);
$countryList.slideUp();
});
//点击其他区域,收起区域列表
$(document).on('click', function(e) {
if ($(e.target).closest('#country-code').length > 0) {
return;
}
if ($countryList.css('display') === 'block') {
$countryList.slideUp();
}
});
//邮箱
$account.on('keyup', function() {
var account = $.trim($(this).val()),
html = '',
accountMatch,
matchStr,
postfix,
i;
//输入@时自动补全邮箱后缀
//此处>0非错误,用于避免输入的第一个字符为@被识别为邮箱
if (account.indexOf('@') > 0) {
accountMatch = account.match(/^[0-9]+@(.*)/);
if (accountMatch) {
//数字邮箱补全
postfix = mailPostfix.num;
matchStr = accountMatch[1];
} else {
postfix = mailPostfix.other;
matchStr = account.match(/@(.*)/)[1];
}
for (i = 0; i < postfix.length; i++) {
if (postfix[i].indexOf(matchStr) > -1) {
html += '<li>' + account.slice(0, account.indexOf('@')) + '@' + postfix[i] + '</li>';
}
}
if (html !== '' && /.com$/.test(account) === false) {
$emailAutoComplete.html(html).removeClass('hide');
} else {
//隐藏autocomplete
$emailAutoComplete.html('').addClass('hide');
}
}
}).on('blur', function() {
emailAcTime = setTimeout(function() {
$emailAutoComplete.addClass('hide');
//验证
validateAccount();
}, 200);
});
//密码
$password.on('blur', function() {
validatePassword();
if ($capsLock.hasClass('hide')) {
return;
}
$capsLock.addClass('hide');
}).on('keypress', function(e) {
var code = e.which;
//CapsLock检测
if (code >= 65 && code <= 90) {
$capsLock.removeClass('hide');
return;
}
$capsLock.addClass('hide');
});
//邮箱自动完成列表项点击
$emailAutoComplete.on('click', 'li', function() {
clearTimeout(emailAcTime); //清空默认关闭
$account.val($(this).text()).focus();
$emailAutoComplete.addClass('hide');
});
//记住登录状态
$remember.on('click', function() {
var $this = $(this);
$this.toggleClass('checked');
if ($this.hasClass('checked')) {
$this.children('i').html(checkbox.checked);
} else {
$this.children('i').html(checkbox.unchecked);
}
});
//focus到输入框则隐藏错误提示和样式
$('.va').on('focus', function() {
var $this = $(this);
$this.removeClass('error');
$this.siblings('.err-tip').addClass('hide');
});
//登录
$('#login-btn').on('click', function() {
var pass = validate();
if (pass && authing === false) {
authing = true;
$.ajax({
url: '/passport/login/auth',
type: 'POST',
data: {
areaCode: $countryCodeHide.val().replace('+', ''),
account: $.trim($account.val()),
password: $.trim($password.val()),
isRemember: $remember.hasClass('checked') ? true : false
},
success: function(data) {
if (data.code === 200) {
if (data.data) {
//防止data.data为undefined时下行语句执行出错而导致脚本不能走到complete去处理authing
location.href = data.data.session;
}
} else {
$passwordTip.removeClass('hide').children('em').html(data.message);
$password.addClass('error');
}
},
complete: function() {
authing = false;
}
});
}
});
});
define("js/passport/reset", ["jquery","jquery.placeholder"], function(require, exports, module){
... ...
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
... ... @@ -279,6 +279,30 @@ handlebars.registerHelper('equalone', function(v1, options) {
}
});
/**
* 时间戳
* @param {[type]} v1 [description]
* @param {[type]} options) { if (v1 [description]
* @return {[type]} [description]
*/
handlebars.registerHelper('timestamp', function() {
return new Date().getTime();
});
/**
* 头像
* @param {[type]} v1 [description]
* @param {[type]} options) { if (v1 [description]
* @return {[type]} [description]
*/
handlebars.registerHelper('headerimg', function(headerimg) {
if(headerimg ===''){
return 'http://img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
}else{
return headerimg;
}
});
/**
* 判断等级为3的helper
* @param {[type]} v1 [description]
* @param {[type]} options) { if (v1 [description]
... ... @@ -814,11 +838,6 @@ function actionCover() {
var containertop;
var length = '';
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
if (typeof gender === 'undefined' || gender === '' || gender === null) {
$.get('http://www.yohobuy.com/index/guide', function(data) {
newMask = document.createElement('div');
... ... @@ -1004,70 +1023,6 @@ function actionExeCookieMap() {
}
}
}
/**
* 一级菜单点击(会设置cookie)
* @return {[type]} [description]
*/
function actionFirstMenuClick() {
var $cookieGender;
$('.first-nav-item').click(function() {
$cookieGender = window.cookie('_Gender');
if (typeof $cookieGender !== 'undefined' && $cookieGender !== '') {
window.setCookie('_Gender', 1, {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '男生') {
window.setCookie('_Gender', '1,3', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '女生') {
window.setCookie('_Gender', '2,3', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
window.setCookie('_Channel', 'girls', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '创意生活') {
window.setCookie('_Channel', 'lifestyle', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
if ($(this).find('.name-cn a').text() === '潮童') {
window.setCookie('_Channel', 'kids', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
}
});
$('#backToOld').click(function() {
window.setCookie('_New', 1, {
path: '/',
domain: '.yohobuy.com'
});
location.href = 'http://www.yohobuy.com';
});
}
/**
... ... @@ -1267,7 +1222,7 @@ function actionGetBannerAndNotice() {
if (url.indexOf('kids') !== -1) {
code = bannerMap[INDEXKIDS];
}
if (url.indexOf('woman') !== -1) {
if (url.indexOf('woman') !== -1 || url.indexOf('girls') !== -1) {
code = bannerMap[INDEXWOMAN];
}
if (url.indexOf('lifestyle') !== -1) {
... ... @@ -1509,7 +1464,7 @@ function actionLoginInfo() {
* 初始化函数
* @return {[type]} [description]
*/
exports.init = function() {
function init() {
actionNav(); //处理导航
actionTipPic(); //鼠标移入后查询
actionExeTemplate(); //处理模板
... ... @@ -1522,7 +1477,6 @@ exports.init = function() {
actionGetBannerAndNotice(); // 获取banner和服务器维护提示
actionBrandChange(); //切换品牌
actionAddKeyWords(); //跳转后增加关键字
actionFirstMenuClick(); //一级菜单点击(会设置cookie)
actionGoodsCarMouseEffect(); //鼠标滑入滑出效果
actionUpdateCartNum(); //更新购物车数量
actionLoopUpdCartNum(); //循环检测购物车数量
... ... @@ -1533,5 +1487,5 @@ exports.init = function() {
actionLoginInfo(); //获取登录信息
actionCover(); //初次登录弹框
actionAddKeyWords(); //增加关键字
};
}
init();
... ...
... ... @@ -174,7 +174,7 @@ $goodInfoMain.on('click', '.col-btn', function() {
url: '/product/list/changeFavorite',
data: {
skn: $this.closest('.good-info').data('skn'),
isFavorite: !$this.hasClass('coled')
isFavorite: $this.hasClass('coled')
}
}).then(function(res) {
if (res.code === 200) {
... ... @@ -187,19 +187,20 @@ $goodInfoMain.on('click', '.col-btn', function() {
// 左侧导航
$productListNav.click(function(event) {
var $this = $(this);
if (!$(event.target).hasClass('product-list-nav')) {
if (!$this.hasClass('product-list-nav')) {
return;
}
if ($(this).hasClass('active')) {
if ($this.hasClass('active')) {
$(this).find('.sort-child-list').stop(true, true).slideUp();
$this.find('.sort-child-list').stop(true, true).slideUp();
} else {
$(this).find('.sort-child-list').stop(true, true).slideDown();
$this.find('.sort-child-list').stop(true, true).slideDown();
}
$(this).toggleClass('active');
$this.toggleClass('active');
});
... ...
... ... @@ -94,7 +94,8 @@ function actionLoginInfo() {
* 初始化函数
* @return {[type]} [description]
*/
exports.init = function() {
function init() {
actionLoginInfo(); //获取登录信息
};
}
init();
... ...
... ... @@ -344,6 +344,8 @@
filter: alpha(opacity=50);
bottom: 20px;
cursor: pointer;
z-index: 4;
&:hover {
opacity: 0.9;
filter: alpha(opacity=90);
... ...
... ... @@ -172,7 +172,7 @@ $tip: sprite-map("passport/tip/*.png", $spacing: 10px);
a {
text-decoration: underline;
color: f00;
color: #f00;
}
}
... ...
... ... @@ -65,6 +65,7 @@
height: 16px;
border: 2px solid #222;
padding: 2px;
background-size: 100% !important;
.sub-color-block {
display: block;
... ... @@ -304,6 +305,7 @@
margin-bottom: -6px;
margin-right: 5px;
background-size: 100% !important;
background-repeat: no-repeat !important;
}
.senior {
... ...
... ... @@ -70,6 +70,7 @@ class HomeModel
$thirdnav = array();
$indexMain = 0;
$indexSub = 0;
foreach ($data['data'] as $val) {
$item = array(
'name_cn' => $val['sort_name'], // 父级
... ... @@ -77,7 +78,7 @@ class HomeModel
'link' => $val['sort_url'],
'icon' => $val['sort_ico'],
'classname' => str_replace(' ', '', strtolower($val['sort_name_en'])) == $channel ? $channel .' cure' : '',
'index_main' => $index_main ++,
'index_main' => $indexMain ++,
'content_code' => $val['content_code'],
'is_hot' => $val['is_hot'] == 'Y' ? true : false,
'is_new' => $val['is_new'] == 'Y' ? true : false,
... ...
... ... @@ -30,13 +30,15 @@ class PassportModel
public static function getSimpleHeader()
{
//拼接简单头部
$radomNum = time();
$tool = array(
'favoriteHref' => Helpers::url('/home/favorite?t=' . time()), //我的收藏链接
'couponHref' => Helpers::url('/home/coupons?t=' . time()), //我的优惠券链接
'orderHref' => Helpers::url('/home/orders?t=' . time()), //订单中心连接
'favoriteHref' => Helpers::url('/home/favorite?t=' . $radomNum), //我的收藏链接
'couponHref' => Helpers::url('/home/coupons?t=' . $radomNum), //我的优惠券链接
'orderHref' => Helpers::url('/home/orders?t=' . $radomNum), //订单中心连接
'userCenter' => Helpers::url('/home?t=' . $radomNum),
'helpHref' => Helpers::url('/help'),
);
$tool += array(
$tool+=array(
'loginHref' => Helpers::url('/signin.html'), //登录链接,已登录不传
'registerHref' => Helpers::url('/reg.html'), //注册链接,已登录不传
);
... ... @@ -111,7 +113,7 @@ class PassportModel
$ret = current($data['data']);
}
}
return array();
return $ret;
}
/**
... ...
... ... @@ -75,8 +75,17 @@ class BrandsModel
}
//根据品牌域名处理相关品牌参数
public static function getBrandByDomain($domain, $fields)
public static function getBrandByDomain($domain, $type)
{
switch ($type) {
case 1:
$fields = 'id,brand_name,brand_name_cn,brand_name_en,brand_domain,brand_alif,brand_banner,brand_ico,static_content_code';
break;
case 2:
$fields = 'id,brand_name,brand_name_cn,brand_banner,brand_ico,brand_intro';
default:
break;
}
$brandInfo = BrandData::getBrandLogoByDomain($domain, $fields);
$result = array();
if (!empty($brandInfo['data']) && $brandInfo['code'] == 200) {
... ...
... ... @@ -36,14 +36,15 @@ class IndexModel
$misort = isset($searchCondition['condition']['misort']) ? $searchCondition['condition']['misort'] : false;
$positionId = isset($searchCondition['options']['positionId']) ? $searchCondition['options']['positionId'] : '';
$gender = $searchCondition['condition']['gender'] == '2,3' ? 2 : 1;
if ($msort && $misort) {//TODO
$banner = array();
if ($msort && $misort) {
$bannerData = Yohobuy::yarClient(Yohobuy::SERVICE_URL . self::URI_INDEX_TBANNER, 'get', array($positionId,$msort,$misort,$gender,0,0,0,0,0));
if (isset($bannerData['code']) && $bannerData['code'] == '200') {
$banner = self::formatBanner($bannerData['data']);
}
}
//插入banner数据
if (!empty($banner)) {
if (isset($banner)) {
$data['sortIntro'] = $banner;
}
... ...
... ... @@ -21,10 +21,18 @@ class LoginController extends WebAction
$this->setSession('_LOGIN_EXPIRE', time() + 1800);
//登录后跳转页面
$refer = empty($_SERVER["HTTP_REFERER"]) ? '' : $_SERVER["HTTP_REFERER"];
$getRefer = $this->get('refer');
$httpRefer = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : '';
$refer = $getRefer ? $getRefer : $httpRefer;
//检查refre是否为绝对路径,补www.yohobuy.com
if (!strstr($refer, 'http')) {
$refer = SITE_MAIN . $refer;
}
if (!empty($refer)) {
$this->setCookie('refer', $refer);
}
$simpleHeader = PassportModel::getSimpleHeader();
//获取登陆页左侧资源
$cover = PassportModel::getLeftBanner(PassportModel::SIGNIN_LEFT_BANNER_CODE);
... ... @@ -62,7 +70,7 @@ class LoginController extends WebAction
*/
public function authAction()
{
$data = array('code' => 400, 'message' => '您输入的密码及账户名不匹配,是否忘记密码?', 'data' => '');
$data = array('code' => 400, 'message' => '您输入的密码及账户名不匹配,是否<a href="'.Helpers::url('/passport/back/index').'" target="_blank">忘记密码?</a>', 'data' => '');
do {
/* 判断是不是AJAX请求 */
if (!$this->isAjax()) {
... ... @@ -101,18 +109,17 @@ class LoginController extends WebAction
$ip = Helpers::getClientIp();
$ipKey = md5('ip_signin_' . $ip);
$accountKey = md5('account_signin_' . $account);
if(!Cache::get($ipKey)){
if (!Cache::get($ipKey)) {
Cache::set($ipKey, 0);
}
if(!Cache::get($accountKey)){
if (!Cache::get($accountKey)) {
Cache::set($accountKey, 0);
}
Cache::increment($accountKey, 1, 0, 1800);
Cache::increment($ipKey, 1, 0, 3600);
$accountTimes = Cache::get($accountKey);
$ipTimes = Cache::get($ipKey);
if ($accountTimes > 10) {
$data = array('code' => 400, 'message' => '您输入的密码及账户名不匹配,是否忘记密码?', 'data' => '');
$data = array('code' => 400, 'message' => '您的账号已被暂时锁定,请稍后再试', 'data' => '');
break;
}
if ($ipTimes > 100) {
... ... @@ -121,7 +128,8 @@ class LoginController extends WebAction
}
$data = LoginData::signin($area, $account, $password, $shoppingKey);
if (!isset($data['code']) || $data['code'] != 200 || !isset($data['data']['uid'])) {
$data = array('code' => 400, 'message' => '您输入的密码及账户名不匹配,是否忘记密码?', 'data' => '');
Cache::increment($accountKey, 1, 0, 1800);
$data = array('code' => 400, 'message' => '您输入的密码及账户名不匹配,是否<a href="'.Helpers::url('/passport/back/index').'" target="_blank">忘记密码?</a>', 'data' => '');
break;
}
... ...
... ... @@ -18,8 +18,8 @@ class IndexController extends WebAction
$this->go(SITE_MAIN);
}
//根据品牌域名获取品牌id(同时判断品牌域名是否有效),无效跳转首页
$fields = 'id,brand_name,brand_name_cn,brand_name_en,brand_domain,brand_alif,brand_banner,brand_ico,static_content_code';
$result = BrandsModel::getBrandByDomain($domain, $fields);//TODO
$type = 1;
$result = BrandsModel::getBrandByDomain($domain, $type);
if (!$result) {
$this->go(SITE_MAIN);
}
... ... @@ -55,7 +55,9 @@ class IndexController extends WebAction
'searchListPage' => true,
'list' => $data
);
//TODO
$this->setTitle('潮流商品搜索 | YOHO!有货');
$this->setKeywords('Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流');
$this->setDescription('潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜');
$this->setWebNavHeader();
//渲染模板
$this->_view->display('list',$data);
... ... @@ -73,8 +75,8 @@ class IndexController extends WebAction
//根据品牌域名获取品牌id(同时判断品牌域名是否有效),无效跳转首页TODO
$fields = 'id,brand_name,brand_name_cn,brand_banner,brand_ico,brand_intro';
$result = BrandsModel::getBrandByDomain($domain, $fields);
$type = 2;
$result = BrandsModel::getBrandByDomain($domain, $type);
if (!$result) {
$this->go(SITE_MAIN);
}
... ... @@ -112,16 +114,28 @@ class IndexController extends WebAction
if (!$this->isAjax()) {
return;
}
//$uid = $this->post('uid');TODO
$result = array(
'code' => '400',
'message' => 'operation failed'
);
$uid = $this->getUid();
$brandId = $this->post('brandId');
if ($uid && $brandId) {
//调用接口收藏或取消收藏
$result = FavoriteData::changeFavoriteBrand($uid, $brandId);
if (isset($result['code']) && $result['code'] == 200) {
$this ->echoJson($result);
}//TODO
}
do{
if (!$uid) {
$result = array(
'code' => '403',
'message' => 'uid is null'
);
break;
}
if ($uid && $brandId) {
//调用接口收藏或取消收藏
$result = FavoriteData::changeFavoriteBrand($uid, $brandId);
break;
}
}while(false);
$this->echoJson($result);
}
/**
... ...
... ... @@ -26,6 +26,9 @@ class ListController extends WebAction
'productListPage' => true,
'list' => $indexData
);
$this->setTitle('潮流商品搜索 | YOHO!有货');
$this->setKeywords('Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流');
$this->setDescription('潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜');
$this->setWebNavHeader();
$this->_view->display('list', $data);
}
... ... @@ -45,11 +48,11 @@ class ListController extends WebAction
$newData = NewModel::getNewSearchData($condition, $options);
$data = array(
'productListPage' => true,
'newSale' => $newData,
'title' => '潮流商品搜索 | YOHO!有货',
'keywords' => 'Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流',
'description' => '潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜'
'newSale' => $newData
);
$this->setTitle('潮流商品搜索 | YOHO!有货');
$this->setKeywords('Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流');
$this->setDescription('潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜');
$this->setWebNavHeader();
//渲染模板
$this->_view->display('new-sale', $data);
... ... @@ -75,11 +78,11 @@ class ListController extends WebAction
$data = array(
//初始化js
'productListPage' => true,
'list' => $list,
'title' => '潮流商品搜索 | YOHO!有货',
'keywords' => 'Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流',
'description' => '潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜'
'list' => $list
);
$this->setTitle('潮流商品搜索 | YOHO!有货');
$this->setKeywords('Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流');
$this->setDescription('潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜');
$this->setWebNavHeader();
$this->_view->display('list', $data);
}
... ... @@ -100,7 +103,6 @@ class ListController extends WebAction
}
$productSkn = $this->post('skn');
$uid = $this->getUid();
if (!$productSkn) {
$this ->echoJson($res);
return ;
... ... @@ -143,10 +145,10 @@ class ListController extends WebAction
public function changeFavoriteAction()
{
$result = array(
'code'=>400
'code' => 400,
'message' => 'operation failed'
);
if (!$this->isAjax()) {
$this->echoJson($resut);
return;
}
$productSkn = $this->post('skn');
... ... @@ -154,10 +156,17 @@ class ListController extends WebAction
$uid = $this->getUid();
do {
if (!$productSkn && !$uid) {
if (!$uid) {
$result = array(
'code' => '403',
'message' => 'uid is null'
);
break;
}
if (!isset($productSkn)) {
break;
}
if ($isFavorite) {
if ($isFavorite == 'true') {
$result = FavoriteData::delUidProductFav($uid, $productSkn);
break;
}else{
... ...
... ... @@ -56,6 +56,9 @@ class SaleController extends WebAction
'productListPage' => true,
'newSale' => $saleData
);
$this->setTitle('潮流商品搜索 | YOHO!有货');
$this->setKeywords('Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流');
$this->setDescription('潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜');
$this->setWebNavHeader();
//渲染模板
$this->_view->display('new-sale', $data);
... ...
... ... @@ -16,6 +16,9 @@ class SearchController extends WebAction
'searchListPage' => true,
'search' => $searchData
);
$this->setTitle('潮流商品搜索 | YOHO!有货');
$this->setKeywords('Yoho! 有货,潮流,时尚,流行,购物,B2C,正品,购物网站,网上购物,货到付款,品牌服饰,男士护肤,黑框眼镜,匡威,板鞋,i.t,izzue,5cm,eastpak,vans,lylescott,g-shock,new balance,lacoste,melissa,casio,卡西欧手表,舒雅,jasonwood,odm,AAAA,香港购物,日本潮流');
$this->setDescription('潮流商品搜索,上衣,衬衫,TEE,卫衣,冲锋衣,风衣,羽绒服,裤子,休闲鞋,板鞋,配饰,复古眼镜');
$this->setWebNavHeader();
$this->_view->display('search', $data);
}
... ...