Authored by zhangxiaoru

merge feature/brandJump

... ... @@ -42,7 +42,7 @@ const _packageAd = (params) => {
const _packageList = (channel) => {
return api.get('', {
method: 'app.brand.newBrandList',
method: 'app.brand.allBrandList',
yh_channel: channel
}, {
cache: true,
... ... @@ -172,7 +172,12 @@ const getBrandListByChannel = (channel) => {
name: row.brand_name,
isHot: row.is_hot === 'Y' ? true : false,
isNew: row.is_show_new === 'Y' ? true : false,
url: helpers.urlFormat('/product/index/brand?domain=' + row.brand_domain)
url: row.type !== '3' ? helpers.urlFormat('/product/index/brand', {
domain: row.brand_domain,
shopType: row.type
}) : helpers.urlFormat('/product/global/list/', {
brand: row.global_brand_id
})
});
});
resu.brandList.push(obj);
... ... @@ -190,7 +195,10 @@ const getBrandListByChannel = (channel) => {
obj.list.push({
brandName: newList[key].brand_name,
url: helpers.urlFormat('/product/index/brand?domain=' + newList[key].brand_domain),
url: helpers.urlFormat('/product/index/brand', {
domain: newList[key].brand_domain,
shopType: newList[key].type
}),
img: helpers.image(newList[key].brand_ico, 186, 115),
});
resu.newBrandWall.push(obj);
... ... @@ -208,7 +216,10 @@ const getBrandListByChannel = (channel) => {
obj.list.push({
brandName: hotList[key].brand_name,
url: helpers.urlFormat('/product/index/brand?domain=' + hotList[key].brand_domain),
url: helpers.urlFormat('/product/index/brand', {
domain: hotList[key].brand_domain,
shopType: hotList[key].type
}),
img: helpers.image(hotList[key].brand_ico, 186, 115),
});
resu.recommandBrandWall.push(obj);
... ...
... ... @@ -44,6 +44,7 @@ const shop = {
let title = '';
let uid = req.user.uid || 0;
let shopEnter;
let shopType = req.query.shopType;
if (req.query.shop_id) {
return shop.shop(req, res, next);
... ... @@ -82,13 +83,13 @@ const shop = {
searchParam.uid = uid;
}
if (req.query.from !== 'search' && brandLogo.type === '2' && brandLogo.shopId) {
if (req.query.from !== 'search' && brandLogo.type === '2' && brandLogo.shopId && shopType !== '1') {
req.query.shop_id = brandLogo.shopId;
shop.shop(req, res, next);
return false;
} else if (req.query.from === 'search') {
} else if (req.query.from === 'search' || shopType === '1') {
return Promise.all([
listModel.getBrandShops(brandId, req),
listModel.getBrandShops(brandLogo.brandDomain, req),
searchModel.getSearchData(searchParam)
]).then(shopResult => {
let brandShop = shopResult[0];
... ... @@ -114,14 +115,16 @@ const shop = {
}
if (brandShop.length > 0 || brandLogo && shopEnter) {
params = _.assign({
brandWay: _.isEmpty(brandShop) ? brandLogo : brandShop,
search: {
default: req.query.query,
default: req.query.query || req.query.domain,
url: helpers.urlFormat('', null, 'search')
}
}, params);
}
return true;
});
} else {
... ...
... ... @@ -29,17 +29,29 @@ const _processBrandShops = (list) => {
let formatDat = [];
_.forEach(list, item => {
if (item.shop_id) {
if (item.shop_type === 'yoho_shop') {
formatDat.push({
url: helpers.urlFormat('/product/index/brand/', {
shop_id: item.shop_id
}),
thumb: helpers.image(item.shop_logo, 75, 40),
name: item.shop_name
});
} else if (item.shop_type === 'tbl_brand') {
formatDat.push({
url: helpers.urlFormat('/product/global/list/', {
brand: item.global_brand_id
}),
thumb: helpers.image(item.brand_ico, 75, 40),
name: item.brand_name
});
}
});
if (formatDat.length > 2) {
formatDat.moreShop = true;
}
return formatDat;
};
... ... @@ -749,7 +761,8 @@ const getBrandLogoByDomain = (domain) => {
thumb: helpers.image(formatData.brand_ico, 75, 40),
name: formatData.brand_name,
shopId: formatData.shop_id ? formatData.shop_id : 0, // 店铺id
type: formatData.type ? formatData.type : 0
type: formatData.type ? formatData.type : 0,
brandDomain: formatData.brand_domain
};
} else {
return false;
... ... @@ -763,18 +776,18 @@ const getBrandLogoByDomain = (domain) => {
* @param req
* @return array
*/
const getBrandShops = (brandId, req) => {
const getBrandShops = (domain, req) => {
return api.get('', {
method: 'app.shop.queryShopsByBrandId',
brand_id: brandId
method: 'app.search.li',
query: domain
}, {
code: 200,
cache: true
}).then(result => {
if (_.isArray(result.data)) {
if (result.data.shopList && _.isArray(result.data.shopList)) {
let seoResult = _getBrandShopSeo(req.channel, result.data[0], req.query);
return Object.assign(_processBrandShops(result.data), {seoResult: seoResult});
return Object.assign(_processBrandShops(result.data.shopList), {seoResult: seoResult});
} else {
return [];
}
... ...
... ... @@ -12,18 +12,28 @@
</div>
<ul class="search-associate"></ul>
{{/ search}}
{{# brandWay}}
{{#if brandWay}}
<div class="brand-way">
<a href={{url}}>
<img class="brand-thumb" src={{image2 thumb q=60}}>
<span class="brand-name">{{name}}</span>
<span class="entry">
进入店铺
<i class="iconfont">&#xe614;</i>
</span>
</a>
<div class="brand-enter">
{{# brandWay}}
<a href={{url}}>
<img class="brand-thumb" src={{image2 thumb q=60}}>
<span class="brand-name">{{name}}</span>
<span class="entry">
进入店铺
<i class="iconfont">&#xe614;</i>
</span>
</a>
{{/ brandWay}}
</div>
{{#if brandWay.moreShop}}
<div class="more-shop down">
<span class="iconfont">&#xe616;</span>
</div>
{{/if}}
</div>
{{/ brandWay}}
{{/if}}
<!-- 品牌页面 -->
{{# brandHome}}
<div id="brand-header" class="brand-header" data-id={{id}}>
... ...
... ... @@ -24,6 +24,11 @@
{{# is_presell}}
<p class="good-tag is-presell">预售</p>
{{/ is_presell}}
{{# is_global}}
<p class="good-tag is-global">
<span>{{../tbl_country_name}}</span>
</p>
{{/ is_global}}
{{/ tags}}
</div>
<div class="good-detail-img">
... ... @@ -37,7 +42,7 @@
{{# is_soon_sold_out}}
<p class="few-tag">即将售罄</p>
{{/ is_soon_sold_out}}
{{# is_solded}}
<p class="out-tag">已售罄</p>
{{/ is_solded}}
... ...
... ... @@ -200,7 +200,7 @@ function getQueryString(name) {
let r = window.location.search.substr(1).match(reg);
if (r !== null) {
return window.unescape(r[2]);
return decodeURIComponent(r[2]);
}
return null;
}
... ... @@ -577,7 +577,6 @@ if ($brandHeader.data('isbaseshop') === true) {
Object.assign(defaultOpt, {shop_id: $brandHeader.data('id')});
}
$.ajax({
type: 'GET',
url: location.protocol + '//m.yohobuy.com/product/search/filter',
... ... @@ -834,4 +833,14 @@ $('#goods-container').on('click', '.good-info', function() {
// return false;
});
$('.more-shop').on('click', function() {
if ($(this).hasClass('down')) {
$('.brand-enter').css('max-height', '100%');
$('.more-shop').removeClass('down').find('span').html('&#xe615;');
} else {
$('.brand-enter').removeAttr('style');
$('.more-shop').addClass('down').find('span').html('&#xe616;');
}
});
require('channel/maybe-like')({recpose: 100101, isExecute: true});
... ...
... ... @@ -69,6 +69,21 @@
background-color: #000;
color: #fff;
}
.is-global {
padding: 3px 10px 0 8px;
color: #fff;
background-color: #462e3e;
line-height: 26px;
span {
display: inline-block;
background-image: resolve("product/airplane.png");
background-repeat: no-repeat;
padding-left: 32px;
background-size: auto 95%;
}
}
}
}
... ...
... ... @@ -65,12 +65,16 @@
padding-bottom: 20px;
background: #f4f4f4;
> a {
.brand-enter {
max-height: 160px;
overflow: hidden;
}
a {
display: block;
height: 80px;
line-height: 80px;
padding: 0 20px;
border-bottom: 1px solid #e6e6e6;
border-top: 1px solid #e6e6e6;
font-size: 34px;
background: #fff;
... ... @@ -78,6 +82,10 @@
overflow: hidden;
}
/* a:last-child {
border-bottom: 1px solid #e6e6e6;
} */
span {
font-size: 28px;
overflow: hidden;
... ... @@ -90,21 +98,38 @@
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
position: absolute;
display: inline-block;
/* position: absolute; */
}
.brand-thumb {
display: block;
float: left;
width: 150px;
height: 80px;
margin: 0;
display: inline-block;
}
.entry {
color: #999;
font-size: 28px;
float: right;
display: inline-block;
}
.more-shop {
width: 100%;
height: 40px;
background: #fff;
color: #999;
margin-top: 0;
text-align: center;
span {
position: relative;
top: -6px;
}
}
}
... ...
... ... @@ -103,9 +103,9 @@ exports.processProductList = (list, options) => {
}
// H5 暂时不支持全球购商品,先过滤掉 2017.04.09
if (product.is_global === 'Y') {
return;
}
// if (product.is_global === 'Y') {
// return;
// }
// 商品信息有问题,则不显示
if (!(
... ... @@ -114,7 +114,6 @@ exports.processProductList = (list, options) => {
return;
}
if (product.recommend_type) {
// recommend_type 对应 附加属性
let flagMap = {
... ... @@ -170,7 +169,8 @@ exports.processProductList = (list, options) => {
product.cn_alphabet = productNameProcess(product.cn_alphabet);
}
product.url = helpers.urlFormat(`/product/${product.product_skn}.html`); // 商品url改版 // eslint-disable-line
product.url = product.is_global === 'Y' ? helpers.urlFormat(`/product/global/${product.product_skn}.html`) :
helpers.urlFormat(`/product/${product.product_skn}.html`); // 商品url改版 // eslint-disable-line
// APP访问需要加附加的参数
// 备注:如果以后APP的接口太多,可以把这边参数提取出来,变成一个公共的方法来生成,便于以后管理维护
... ... @@ -191,6 +191,10 @@ exports.processProductList = (list, options) => {
product.is_solded = true;
}
if (product.is_global === 'Y') {
tags.is_global = true;
}
product.is_soon_sold_out = tags.is_soon_sold_out;
}
... ...