Authored by ccbikai

更新搜索数据格式

... ... @@ -166,8 +166,9 @@ exports.search = (req, res) => {
saleModel.getSearchData(params).then((result) => {
result.layout = false;
res.render('product', Object.assign({
params: params
}, result));
res.render('product', {
params: params,
goods: result
});
});
};
... ...
... ... @@ -47,49 +47,194 @@ const processSpecial = (list) => {
return formatData;
};
const procProductImg = (product) => {
product;
return '1';
};
/**
* 商品搜索数据处理
*/
const processSearch = (data) => {
return camelCase(data);
const processSearch = (list, options) => {
const pruductList = [];
options = Object.assign({
showTags: true,
showNew: true,
showSale: true,
width: 290,
height: 388,
isApp: false,
showPoint: true
}, options);
list = camelCase(list);
_.forEach(list, (product) => {
// 商品信息有问题,则不显示
if (!product.productId || !product.goodsList.length) {
return;
}
// 市场价和售价一样,则不显示市场价
if (product.marketPrice === product.salesPrice) {
product.marketPrice = false;
}
// const goods = [];
// 判别默认的商品是否将默认的图片URL赋值到skn
let flag = false;
// 如果设置了默认图片,就取默认的图片
_.forEach(product.goodsList, (goods) => {
if (flag) {
return;
}
if (goods.isDefault === 'Y') {
product.defaultImages = procProductImg(goods);
flag = true;
}
});
// 如果还未赋值,则取第一个skc产品的默认图片
if (!flag) {
product.defaultImages = procProductImg(product.goodsList[0]);
}
// product = Object.assign(product, {
// id: product.productSkn,
// thumb: product.defaultImages
// });
if (options.showPoint) {
product.price += '.00';
product.salePrice += '.00';
}
product.isSoonSoldOut = product.isSoonSoldOut === 'Y';
product.url = helpers.urlFormat(`/product/pro_${product.productId}_${product.goodsList[0].goodsId}/${product.cnAlphabet}.html`); // eslint-disable-line
// APP访问需要加附加的参数
// 备注:如果以后APP的接口太多,可以把这边参数提取出来,变成一个公共的方法来生成,便于以后管理维护
if (options.isApp) {
product.url += `?openby:yohobuy={"action":"go.productDetail","params":{"product_skn":'${product.productId}'}}`; // eslint-disable-line
}
// list = list || [];
if (options.showTags) {
product.tags = {};
// _.forEach(list.data.product_list, (data) => {
// let flag = false;
product.tags.isNew = options.showNew && product.isNew === 'Y'; // 新品
product.tags.isDiscount = options.showSale && product.isDiscount === 'Y'; // 在售
product.tags.isLimited = product.isLimited === 'Y'; // 限量
product.tags.isYohood = product.isYohood === 'Y'; // YOHOOD
product.tags.midYear = product.midYear === 'Y'; // 年中
product.tags.yearEnd = product.yearEnd === 'Y'; // 年末
product.tags.isAdvance = product.isAdvance === 'Y'; // 再到着
// 打折与即将售完组合显示打折
if (product.isSoonSoldOut && product.tags.isDiscount) {
product.tags.isNew = false;
} else if (product.tags.isDiscount &&
(product.tags.isNew || product.tags.isLimited || product.tags.isYohood || product.tags.isAdvance)) {
// 打折与其它组合则隐藏打折
product.tags.isDiscount = false;
} else if (product.tags.isYohood && product.tags.isNew) {
// YOHOOD和新品组合显示YOHOOD
product.tags.isNew = false;
}
}
pruductList.push(product);
});
return pruductList;
/* eslint-disable */
// /**
// * 格式化商品信息
// *
// * @param array $productData 需要格式化的商品数据
// * @param bool $showTags 控制是否显示标签
// * @param bool $showNew 控制是否显示NEW图标
// * @param bool $showSale 控制是否显示SALE图标
// * @param int $width 图片的宽度
// * @param int $height 图片的高度
// * @param bool $isApp 判断是不是APP访问
// * @param bool $showPoint 商品价格是否显示小数位,默认显示
// * @return array | false
// */
// public static function formatProduct($productData, $showTags = true, $showNew = true, $showSale = true, $width = 290, $height = 388, $isApp = false, $showPoint = true)
// {
// // 商品信息有问题,则不显示
// if (typeof(data['product_skn']) === 'undefined' || typeof(data['goods_list'][0]) === 'undefined') {
// if (!isset($productData['product_skn']) || !isset($productData['goods_list'][0])) {
// return false;
// }
//
// // 市场价和售价一样,则不显示市场价
// if (parseInt(data['market_price']) === parseInt(data['sales_price'])) {
// data['market_price'] = false;
// if (intval($productData['market_price']) === intval($productData['sales_price'])) {
// $productData['market_price'] = false;
// }
//
// // 判别默认的商品是否将默认的图片URL赋值到skn
// $flag = false;
// // 如果设置了默认图片,就取默认的图片
// _.forEach(data['goods_list'], (goods) => {
// foreach ($productData['goods_list'] as $oneGoods) {
// // 此skc是默认的,则将图片赋值给skn
// if (goods['is_default'] === 'Y') {
// // data['img'] = self::procProductImg($oneGoods);
// flag = true;
// if ($oneGoods['is_default'] === 'Y') {
// $productData['default_images'] = self::procProductImg($oneGoods);
// $flag = true;
// break;
// }
// });
// }
// // 如果还未赋值,则取第一个skc产品的默认图片
// // if (!$flag) {
// // $productData['default_images'] = self::procProductImg($productData['goods_list'][0]);
// // }
// // data.url = '/product/pro_' . data['product_id'] . '_'
// // . data['goods_list'][0]['goods_id']
// // . '/' . data['cn_alphabet'] . '.html';
// });
// if (!$flag) {
// $productData['default_images'] = self::procProductImg($productData['goods_list'][0]);
// }
//
// $result = array();
// $result['id'] = $productData['product_skn'];
// $result['product_id'] = $productData['product_id'];
// $result['thumb'] = Images::getImageUrl($productData['default_images'], $width, $height);
// $result['name'] = $productData['product_name'];
// $result['price'] = empty($productData['market_price']) ? false : $productData['market_price'];
// $result['salePrice'] = $productData['sales_price'];
// if ($showPoint) {
// $result['price'] && $result['price'] .= '.00';
// $result['salePrice'] && $result['salePrice'] .= '.00';
// }
// $result['is_soon_sold_out'] = ($productData['is_soon_sold_out'] === 'Y');
// $result['url'] = self::url('/product/pro_' . $productData['product_id'] . '_'
// . $productData['goods_list'][0]['goods_id']
// . '/' . $productData['cn_alphabet'] . '.html');
// // APP访问需要加附加的参数
// // 备注:如果以后APP的接口太多,可以把这边参数提取出来,变成一个公共的方法来生成,便于以后管理维护
// if ($isApp) {
// $result['url'] .= '?openby:yohobuy={"action":"go.productDetail","params":{"product_skn":' . $productData['product_skn'] . '}}';
// }
//
// if ($showTags) {
// $result['tags'] = array();
// $result['tags']['is_new'] = $showNew && isset($productData['is_new']) && $productData['is_new'] === 'Y'; // 新品
// $result['tags']['is_discount'] = $showSale && isset($productData['is_discount']) && $productData['is_discount'] === 'Y'; // 在售
// $result['tags']['is_limited'] = isset($productData['is_limited']) && $productData['is_limited'] === 'Y'; // 限量
// $result['tags']['is_yohood'] = isset($productData['is_yohood']) && $productData['is_yohood'] === 'Y'; // YOHOOD
// $result['tags']['midYear'] = isset($productData['mid-year']) && $productData['mid-year'] === 'Y'; // 年中
// $result['tags']['yearEnd'] = isset($productData['year-end']) && $productData['year-end'] === 'Y'; // 年末
// $result['tags']['is_advance'] = isset($productData['is_advance']) && $productData['is_advance'] === 'Y'; // 再到着
// // 打折与即将售完组合显示打折
// if ($result['is_soon_sold_out'] && $result['tags']['is_discount']) {
// $result['tags']['is_new'] = false;
// }
// // 打折与其它组合则隐藏打折
// elseif ($result['tags']['is_discount'] &&
// ($result['tags']['is_new'] || $result['tags']['is_limited'] || $result['tags']['is_yohood'] || $result['tags']['is_advance'])) {
// $result['tags']['is_discount'] = false;
// }
// // YOHOOD和新品组合显示YOHOOD
// elseif ($result['tags']['is_yohood'] && $result['tags']['is_new']) {
// $result['tags']['is_new'] = false;
// }
// }
//
// return $result;
// }
};
const getResources = (page) => {
... ... @@ -133,7 +278,7 @@ exports.getSearchData = (params) => {
method: 'app.search.sales'
}, params))).then((result) => {
if (result && result.code === 200) {
return processSearch(result.data);
return processSearch(result.data.product_list || []);
} else {
logger.error('SALE 商品搜索返回 code 不是 200');
return {};
... ...
{{log this}}
{{# goods}}
{{> common/goods}}
{{/ goods}}
\ No newline at end of file
{{/ goods}}
... ...