...
|
...
|
@@ -8,6 +8,7 @@ |
|
|
const _ = require('lodash');
|
|
|
const itemApi = require('./item-api');
|
|
|
const brandApi = require('./brand-api');
|
|
|
const shopApi = require('./shop-api');
|
|
|
const itemFun = require('./item-handler');
|
|
|
|
|
|
const search = require('./search-api');
|
...
|
...
|
@@ -20,31 +21,55 @@ const search = require('./search-api'); |
|
|
* @return { Object } 返回单个商品品牌、材质、尺码、描述、详情等信息
|
|
|
*/
|
|
|
const _getMultiResourceByBaseInfo = (base) => {
|
|
|
let productId = base.id;
|
|
|
let skn = base.erpProductId;
|
|
|
let brandId = base.brand.id ? base.brand.id : 0;
|
|
|
const productId = base.id;
|
|
|
const skn = base.erpProductId;
|
|
|
const brandId = base.brandId || 0;
|
|
|
const brandDomain = _.get(base, 'brand.brandDomain', false);
|
|
|
const shopId = base.shopId || 0;
|
|
|
let apiIndex = {};
|
|
|
|
|
|
// 获取相关数据
|
|
|
let promiseData = [
|
|
|
itemApi.getsizeInfoAsync(skn),
|
|
|
itemApi.getComfortAsync(productId),
|
|
|
itemApi.getModelTryAsync(skn),
|
|
|
search.getSortAsync({sort: base.smallSortId})
|
|
|
search.getSortAsync({sort: base.smallSortId}),
|
|
|
itemApi.getBrandBannerAsync(brandId)
|
|
|
];
|
|
|
|
|
|
if (base.uid) {
|
|
|
apiIndex.productFav = promiseData.length;
|
|
|
promiseData.push(itemApi.getUserIsFav(base.uid, productId));
|
|
|
apiIndex.brandFav = promiseData.length;
|
|
|
promiseData.push(brandApi.getBrandInfo(brandId, base.uid));
|
|
|
}
|
|
|
|
|
|
// 根据品牌名获取店铺信息
|
|
|
if (brandDomain) {
|
|
|
apiIndex.domainInfo = promiseData.length;
|
|
|
promiseData.push(brandApi.getDomainInfo(brandDomain));
|
|
|
}
|
|
|
|
|
|
// 根据店铺ID获取店铺装修信息
|
|
|
if (shopId) {
|
|
|
apiIndex.shopDecorator = promiseData.length;
|
|
|
promiseData.push(shopApi.getShopDecorator(shopId));
|
|
|
}
|
|
|
|
|
|
return Promise.all(promiseData).then(result => {
|
|
|
return {
|
|
|
sizeInfo: result[0],
|
|
|
comfort: result[1].data,
|
|
|
modelTry: result[2].data,
|
|
|
sort: result[3].data,
|
|
|
productFav: (result[4] && result[4].data),
|
|
|
brandFav: (result[5] && result[5].data && result[5].data.is_favorite === 'Y')
|
|
|
brandBanner: result[4].data,
|
|
|
productFav: (result[apiIndex.productFav] && result[apiIndex.productFav].data),
|
|
|
brandFav: (_.get(result[apiIndex.brandFav], 'data.is_favorite', 'N') === 'Y'),
|
|
|
shopInfo: Object.assign(
|
|
|
{},
|
|
|
{type: _.get(result[apiIndex.domainInfo], 'data.type', 0)},
|
|
|
{list: _.get(result[apiIndex.shopDecorator], 'data.list', [])}
|
|
|
)
|
|
|
};
|
|
|
});
|
|
|
};
|
...
|
...
|
@@ -78,27 +103,28 @@ const getProductItemData = (params, url, uid) => { |
|
|
// 商品基本信息
|
|
|
data.goodInfo = itemFun.setProductData(result);
|
|
|
|
|
|
// BRAND品牌简介
|
|
|
if (result.brand) {
|
|
|
Object.assign(
|
|
|
data,
|
|
|
itemFun.setBrandBanner(result.brand), // banner
|
|
|
itemFun.setBrandIntro(result.brand) // BRAND品牌简介
|
|
|
);
|
|
|
Object.assign(data, itemFun.setBrandIntro(result.brand));
|
|
|
}
|
|
|
|
|
|
return _getMultiResourceByBaseInfo(result).then(mulRes => {
|
|
|
|
|
|
// 收藏状态
|
|
|
_.set(data, 'brandBanner.brandFav', mulRes.brandFav);
|
|
|
_.set(data, 'goodInfo.productFav', mulRes.productFav);
|
|
|
|
|
|
Object.assign(data,
|
|
|
itemFun.setBrandBanner(result, mulRes.brandBanner, mulRes.shopInfo), // banner
|
|
|
itemFun.setPathNav(mulRes.sort, result.productName, params.channel), // 面包屑导航
|
|
|
itemFun.setDescriptionData(mulRes.sizeInfo, mulRes.comfort), // DESCRIPTION商品描述
|
|
|
itemFun.setMaterialData(mulRes.sizeInfo), // MATERIALS材料洗涤
|
|
|
itemFun.setSizeData(mulRes.sizeInfo, mulRes.modelTry), // SIZEINFO尺码信息
|
|
|
itemFun.setDetailData(mulRes.sizeInfo) // DETAILS商品详情
|
|
|
);
|
|
|
|
|
|
// 收藏状态
|
|
|
_.set(data, 'goodInfo.productFav', mulRes.productFav);
|
|
|
if (data.brandBanner) {
|
|
|
_.set(data, 'brandBanner.brandFav', mulRes.brandFav);
|
|
|
}
|
|
|
|
|
|
resData.content = data;
|
|
|
|
|
|
// 商品详情SEO
|
...
|
...
|
|