|
|
<?php
|
|
|
|
|
|
namespace Product;
|
|
|
|
|
|
use LibModels\Web\Product\DetailData;
|
|
|
use Plugin\Helpers;
|
|
|
|
|
|
/**
|
|
|
* 商品详情页模板相关的数据模型
|
|
|
*
|
|
|
* @name DetailModel
|
|
|
* @package Product
|
|
|
* @copyright yoho.inc
|
|
|
* @version 1.0 (2015-11-19 10:49:36)
|
|
|
* @author fei.hong <fei.hong@yoho.cn>
|
|
|
*/
|
|
|
class DetailModel
|
|
|
{
|
|
|
|
|
|
/**
|
|
|
* 商品基本信息
|
|
|
*
|
|
|
* @param int $productId 商品ID SKN 和 ID 只需要传一个
|
|
|
* @param int $goodsId 某个颜色的商品
|
|
|
* @param int $uid 当前登录用户ID, 未登录为0
|
|
|
* @param int $productSkn SKN 和 ID 只需要传一个
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getBaseInfo($productId, $goodsId, $uid, $vipLevel, $productSkn = null)
|
|
|
{
|
|
|
$result = array();
|
|
|
|
|
|
$baseInfo = array();
|
|
|
// 通过ID获取
|
|
|
if (is_numeric($productId) && is_numeric($goodsId)) {
|
|
|
$baseInfo = DetailData::baseInfo($productId, $uid);
|
|
|
}
|
|
|
// 通过SKN获取
|
|
|
elseif (is_numeric($productSkn)) {
|
|
|
$baseInfo = DetailData::baseInfo(null, $uid, $productSkn);
|
|
|
}
|
|
|
// 商品名称
|
|
|
if (empty($baseInfo['productName'])) {
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
// 面包屑导航
|
|
|
$result['pathNav'] = array(
|
|
|
array(
|
|
|
'href' => '/boys',
|
|
|
'name' => 'BOYS首页'
|
|
|
),
|
|
|
array(
|
|
|
'href' => '/boys?sort=1',
|
|
|
'name' => '服配'
|
|
|
),
|
|
|
array(
|
|
|
'href' => '/boys?sort=1&msort=232',
|
|
|
'name' => '手表'
|
|
|
),
|
|
|
array(
|
|
|
'name' => $baseInfo['productName'],
|
|
|
)
|
|
|
);
|
|
|
|
|
|
// 商品促销短语
|
|
|
if (!empty($baseInfo['salesPhrase'])) {
|
|
|
$result['goodsSubtitle'] = $baseInfo['salesPhrase'];
|
|
|
}
|
|
|
|
|
|
// 商品标签
|
|
|
if (!empty($baseInfo['productTagBoList'])) {
|
|
|
foreach ($baseInfo['productTagBoList'] as $value) {
|
|
|
switch ($value['tagLabel']) {
|
|
|
case 'is_soon_sold_out': // 即将售磬
|
|
|
$result['tags']['is_soon_sold_out'] = true;
|
|
|
break;
|
|
|
case 'is_new': // 新品NEW
|
|
|
$result['tags']['is_new'] = true;
|
|
|
break;
|
|
|
case 'is_discount': // SALE
|
|
|
$result['tags']['is_discount'] = true;
|
|
|
break;
|
|
|
case 'is_limited': // 限量
|
|
|
$result['tags']['is_limited'] = true;
|
|
|
break;
|
|
|
case 'is_yohood': // YOHOOD
|
|
|
$result['tags']['is_yohood'] = true;
|
|
|
break;
|
|
|
case 'is_advance': // 再到着
|
|
|
$result['tags']['is_advance'] = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 商品价格
|
|
|
if (isset($baseInfo['productPriceBo'])) {
|
|
|
$result['goodsPrice'] = array();
|
|
|
$result['goodsPrice']['currentPrice'] = $baseInfo['productPriceBo']['formatSalesPrice'];
|
|
|
if ($baseInfo['productPriceBo']['formatMarketPrice'] !== $baseInfo['productPriceBo']['formatSalesPrice']) {
|
|
|
$result['goodsPrice']['previousPrice'] = $baseInfo['productPriceBo']['formatMarketPrice'];
|
|
|
}
|
|
|
}
|
|
|
// VIP商品价格
|
|
|
if (isset($baseInfo['productPriceBo']['vipPrices'])) {
|
|
|
$build = array();
|
|
|
foreach ($baseInfo['productPriceBo']['vipPrices'] as $value) {
|
|
|
$build['level'] = $value['vipLevel'];
|
|
|
$build['text'] = $value['vipPrice'];
|
|
|
$build['currentLevel'] = ($value['vipLevel'] == $vipLevel) ? true : false;
|
|
|
$result['vipLevel']['list'][] = $build;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 上市期
|
|
|
if (isset($baseInfo['expectArrivalTime']) && !empty($baseInfo['expectArrivalTime'])) {
|
|
|
$result['periodOfMarket'] = $baseInfo['expectArrivalTime'] . '月';
|
|
|
}
|
|
|
|
|
|
// 促销信息
|
|
|
if (isset($baseInfo['promotionBoList'])) {
|
|
|
$build = array();
|
|
|
foreach ($baseInfo['promotionBoList'] as $value) {
|
|
|
$build['text'] = '【' . $value['promotionType'] . '】' . $value['promotionTitle'];
|
|
|
$result['goodsDiscount']['list'][] = $build;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 没有商品ID, 则取一次
|
|
|
if (empty($productId)) {
|
|
|
$productId = isset($baseInfo['id']) ? $baseInfo['id'] : 0;
|
|
|
}
|
|
|
|
|
|
$result['feedbacks'] = array();
|
|
|
|
|
|
// 商品咨询
|
|
|
$result['feedbacks']['consultsNum'] = 0;
|
|
|
if (!empty($baseInfo['consultBoWrapper'])) {
|
|
|
$result['feedbacks']['consultsNum'] = $baseInfo['consultBoWrapper']['consultTotal'];
|
|
|
$result['feedbacks']['consults'] = array();
|
|
|
$build = array();
|
|
|
foreach ($baseInfo['consultBoWrapper']['consultBoList'] as $value) {
|
|
|
$build['question'] = $value['ask'];
|
|
|
$build['time'] = $value['askTime'];
|
|
|
$build['answer'] = $value['answer'];
|
|
|
$result['feedbacks']['consults'][] = $build;
|
|
|
}
|
|
|
$result['feedbacks']['consultsUrl'] = Helpers::url('/product/detail/consults', array('product_id' => $productId, 'total' => $result['feedbacks']['consultsNum']));
|
|
|
}
|
|
|
// 暂无咨询
|
|
|
else {
|
|
|
$result['feedbacks']['consultsUrl'] = Helpers::url('/product/detail/consultform', array('product_id' => $productId));
|
|
|
}
|
|
|
|
|
|
// 商品评价
|
|
|
$result['feedbacks']['commentsNum'] = 0;
|
|
|
if (!empty($baseInfo['commentBoWrapper'])) {
|
|
|
$result['feedbacks']['commentsNum'] = $baseInfo['commentBoWrapper']['commentTotal'];
|
|
|
$result['feedbacks']['comments'] = array();
|
|
|
$build = array();
|
|
|
foreach ($baseInfo['commentBoWrapper']['commentBoList'] as $value) {
|
|
|
$build['userName'] = $value['nickName'];
|
|
|
$build['desc'] = $value['colorName'] . '/' . $value['sizeName'];
|
|
|
$build['content'] = isset($value['content']) ? $value['content'] : '';
|
|
|
$build['time'] = $value['createTime'];
|
|
|
$result['feedbacks']['comments'][] = $build;
|
|
|
}
|
|
|
$result['feedbacks']['commentsUrl'] = Helpers::url('/product/detail/comments', array('product_id' => $productId, 'total' => $result['feedbacks']['commentsNum']));
|
|
|
}
|
|
|
|
|
|
// 品牌信息
|
|
|
if (!empty($baseInfo['brand'])) {
|
|
|
$result['enterStore'] = array(
|
|
|
'img' => Helpers::getImageUrl($baseInfo['brand']['brandIco'], 47, 47),
|
|
|
'storeName' => $baseInfo['brand']['brandName'],
|
|
|
'url' => Helpers::url('', array(), $baseInfo['brand']['brandDomain'])
|
|
|
);
|
|
|
// 为你优选的链接
|
|
|
$result['preferenceUrl'] = Helpers::url('/product/detail/preference', array('productSkn' => $baseInfo['erpProductId'], 'brandId' => $baseInfo['brand']['id']), '');
|
|
|
}
|
|
|
|
|
|
// 商品信息
|
|
|
if (!empty($baseInfo['goodsList'])) {
|
|
|
$colorGroup = array();
|
|
|
$sizeGroup = array();
|
|
|
$goodsGroup = array();
|
|
|
$sizeName = '';
|
|
|
$colorList = array();
|
|
|
$sizeList = array();
|
|
|
$allSizeList = array(); // 所有尺码列表
|
|
|
$thumbImageList = array();
|
|
|
$colorStorageGroup = array(); // 颜色分组的库存总数集合, 多个之间用/分隔
|
|
|
$colorStorageNum = 0;
|
|
|
$totalStorageNum = 0; // 总库存数
|
|
|
foreach ($baseInfo['goodsList'] as $value) {
|
|
|
// 如果status为0,即skc下架时就跳过该商品
|
|
|
if ($value['status'] === 0) {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
$colorStorageNum = 0;
|
|
|
|
|
|
// 商品分组
|
|
|
if (isset($value['goodsImagesList'])) {
|
|
|
foreach ($value['goodsImagesList'] as $goods) {
|
|
|
$goodsGroup[] = array(
|
|
|
'goodsId' => $goods['goodsId'],
|
|
|
'img' => $goods['imageUrl'],
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 商品的尺码列表
|
|
|
$colorStorageGroup[ $value['productSkc'] ] = array();
|
|
|
if (isset($value['goodsSizeBoList'])) {
|
|
|
$sizeName = '';
|
|
|
foreach ($value['goodsSizeBoList'] as $size) {
|
|
|
$sizeList[ $value['productSkc'] ][] = array(
|
|
|
'id' => $size['id'],
|
|
|
'skuId' => $size['goodsSizeSkuId'],
|
|
|
'goodsId' => $size['goodsId'],
|
|
|
'colorId' => $value['colorId'],
|
|
|
'name' => $size['sizeName'],
|
|
|
'sizeNum' => $size['goodsSizeStorageNum'],
|
|
|
);
|
|
|
$sizeName = $size['sizeName'];
|
|
|
|
|
|
// 所有尺码列表,赋值用于前端展示默认尺码的时候 判断出没有库存则显示灰色
|
|
|
$allSizeList[$sizeName] = empty($allSizeList[$sizeName]['storage'])
|
|
|
? array('storage' => $size['goodsSizeStorageNum'], 'id' => $size['id'])
|
|
|
: $allSizeList[$sizeName];
|
|
|
$colorStorageNum += intval($size['goodsSizeStorageNum']);
|
|
|
$colorStorageGroup[ $value['productSkc'] ][$sizeName] = intval($size['goodsSizeStorageNum']);
|
|
|
}
|
|
|
|
|
|
// 颜色分组
|
|
|
$colorList[] = array(
|
|
|
'id' => $value['colorId'],
|
|
|
'skcId' => $value['productSkc'],
|
|
|
'name' => $value['colorName'],
|
|
|
'goodsName' => $value['goodsName'],
|
|
|
'colorNum' => $colorStorageNum,
|
|
|
);
|
|
|
}
|
|
|
|
|
|
// 缩略图
|
|
|
$thumbImageList[] = array('img' => Helpers::getImageUrl($value['colorImage'], 60, 60));
|
|
|
|
|
|
// 商品库存总数
|
|
|
$totalStorageNum += $colorStorageNum;
|
|
|
}
|
|
|
|
|
|
// 遍历所有尺码,构建颜色显示数据
|
|
|
$i = 1;
|
|
|
foreach ($allSizeList as $sizeName => $value) {
|
|
|
// 默认尺码
|
|
|
$sizeGroup[0]['size'][] = array(
|
|
|
'name' => $sizeName, // 尺码名称
|
|
|
'sizeNum' => empty($value['storage']) ? false : true, // 是否有库存 (false:表示没有库存,true:表示有库存)
|
|
|
'id' => $value['id'],
|
|
|
);
|
|
|
|
|
|
// 各个颜色的尺码, 每行显示一个尺码对应的颜色
|
|
|
foreach ($colorList as $colorArr) {
|
|
|
$colorArr['colorNum'] = isset($colorStorageGroup[ $colorArr['skcId'] ][$sizeName]) ? $colorStorageGroup[ $colorArr['skcId'] ][$sizeName] : 0;
|
|
|
$colorGroup[$i]['color'][] = $colorArr;
|
|
|
}
|
|
|
$colorGroup[$i]['id'] = $value['id'];
|
|
|
|
|
|
++ $i;
|
|
|
}
|
|
|
// 遍历所有颜色, 构建尺码显示数据
|
|
|
$i = 1;
|
|
|
foreach ($colorList as $value) {
|
|
|
// 各个尺码的颜色,每行显示一个颜色的对应尺码
|
|
|
$sizeGroup[$i]['size'] = $sizeList[ $value['skcId'] ];
|
|
|
$sizeGroup[$i]['colorId'] = $value['skcId'];
|
|
|
// 默认颜色
|
|
|
$colorGroup[0]['color'][] = $value;
|
|
|
|
|
|
++ $i;
|
|
|
}
|
|
|
|
|
|
// 商品图: 多个
|
|
|
if (isset($goodsGroup[1])) {
|
|
|
foreach ($goodsGroup as $value) {
|
|
|
$result['bannerTop']['list'][] = array(
|
|
|
'img' => Helpers::getImageUrl($value['img'], 450, 600)
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
// 商品图: 单个
|
|
|
elseif (isset($goodsGroup[0])) {
|
|
|
$result['bannerTop'] = array(
|
|
|
'img' => Helpers::getImageUrl($goodsGroup[0]['img'], 450, 600)
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 悬浮的购物车信息
|
|
|
$result['cartInfo'] = array(
|
|
|
'cartUrl' => Helpers::url('/cart/index/index', null), // 购物车链接
|
|
|
'numInCart' => 0,
|
|
|
'goodsInstore' => $baseInfo['storage'], // 库存量
|
|
|
);
|
|
|
$soldOut = ($baseInfo['storage'] == 0) || ($baseInfo['status'] == 0 || $totalStorageNum === 0);
|
|
|
$notForSale = $baseInfo['attribute'] == 2;
|
|
|
// 显示加入购物车链接
|
|
|
if (!$soldOut && !$notForSale) {
|
|
|
ksort($colorGroup, SORT_NUMERIC);
|
|
|
|
|
|
$result['cartInfo']['addToCartUrl'] = Helpers::url('/product/buy_' . $productId . '_' . $goodsId . '.html');
|
|
|
$result['cartInfo']['productId'] = $productId;
|
|
|
$result['cartInfo']['thumbs'] = $thumbImageList;
|
|
|
$result['cartInfo']['name'] = isset($result['goodsName']) ? $result['goodsName'] : '';
|
|
|
$result['cartInfo']['price'] = isset($result['goodsPrice']['previousPrice']) ? $result['goodsPrice']['previousPrice'] : '';
|
|
|
$result['cartInfo']['salePrice'] = isset($result['goodsPrice']['currentPrice']) ? $result['goodsPrice']['currentPrice'] : '';
|
|
|
$result['cartInfo']['totalNum'] = $totalStorageNum;
|
|
|
$result['cartInfo']['colors'] = $colorGroup;
|
|
|
$result['cartInfo']['sizes'] = $sizeGroup;
|
|
|
}
|
|
|
// 非卖品
|
|
|
elseif ($notForSale) {
|
|
|
$result['cartInfo']['notForSale'] = true;
|
|
|
}
|
|
|
// 已售磬
|
|
|
elseif ($soldOut) {
|
|
|
$result['cartInfo']['soldOut'] = true;
|
|
|
}
|
|
|
|
|
|
// 是否收藏
|
|
|
$result['isCollect'] = false;
|
|
|
if (isset($baseInfo['isCollect']) && $baseInfo['isCollect'] === 'Y') {
|
|
|
$result['isCollect'] = true;
|
|
|
}
|
|
|
|
|
|
// 底部简介的URL链接
|
|
|
$result['introUrl'] = Helpers::url('/product/intro_' . $baseInfo['erpProductId'] . '/' . $baseInfo['cnAlphabet'] . '.html', null, '');
|
|
|
$result['id'] = $productId;
|
|
|
|
|
|
// 清空变量,释放内存
|
|
|
$baseInfo = array();
|
|
|
$goodsGroup = array();
|
|
|
$sizeGroup = array();
|
|
|
$colorGroup = array();
|
|
|
$sizeList = array();
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 商品尺码信息
|
|
|
*
|
|
|
* @param int $productSkn
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getSizeInfo($productSkn)
|
|
|
{
|
|
|
$result = array();
|
|
|
|
|
|
if (is_numeric($productSkn)) {
|
|
|
// 调用服务
|
|
|
$sizeInfo = DetailData::sizeInfo($productSkn);
|
|
|
|
|
|
// 商品信息
|
|
|
if (isset($sizeInfo['productDescBo']['erpProductId'])) {
|
|
|
$sex = '通用';
|
|
|
switch ($sizeInfo['productDescBo']['gender']) {
|
|
|
case 1:
|
|
|
$sex = '男款';
|
|
|
break;
|
|
|
case 2:
|
|
|
$sex = '女款';
|
|
|
break;
|
|
|
}
|
|
|
$result['goodsDescription'] = array(
|
|
|
'title' => '商品信息',
|
|
|
'enTitle' => 'DESCRIPTION',
|
|
|
'detail' => array(
|
|
|
'list' => array(
|
|
|
array('param' => '编号:' . $sizeInfo['productDescBo']['erpProductId']),
|
|
|
array('param' => '颜色:' . $sizeInfo['productDescBo']['colorName']),
|
|
|
array('param' => '性别:' . $sex),
|
|
|
)
|
|
|
),
|
|
|
);
|
|
|
}
|
|
|
if (!empty($sizeInfo['productDescBo']['standardBos'])) {
|
|
|
foreach ($sizeInfo['productDescBo']['standardBos'] as $value) {
|
|
|
$result['goodsDescription']['detail']['list'][] = array('param' => $value['standardName'] . ':' . $value['standardVal']);
|
|
|
}
|
|
|
}
|
|
|
if (isset($sizeInfo['phrase'])) {
|
|
|
$result['goodsDescription']['desc'] = $sizeInfo['phrase'];
|
|
|
}
|
|
|
|
|
|
// 尺码信息
|
|
|
if (!empty($sizeInfo['sizeInfoBo'])) {
|
|
|
$result['sizeInfo'] = array(
|
|
|
'title' => '尺码信息',
|
|
|
'enTitle' => 'SIZE INFO',
|
|
|
'detail' => array('list' => array()),
|
|
|
);
|
|
|
/* 参考尺码 */
|
|
|
$boyReference = !empty($sizeInfo['productExtra']['boyReference']);
|
|
|
$girlReference = !empty($sizeInfo['productExtra']['girlReference']);
|
|
|
$gender = isset($sizeInfo['productDescBo']['gender']) ? $sizeInfo['productDescBo']['gender'] : 3;
|
|
|
$referenceName = '参考尺码';
|
|
|
if (($gender == 1 && $boyReference) || ($gender == 2 && $girlReference)) {
|
|
|
$referenceName = '参考尺码';
|
|
|
} elseif ($gender == 3 && $boyReference) {
|
|
|
$referenceName = '参考尺码(男)';
|
|
|
} elseif ($gender == 3 && $girlReference) {
|
|
|
$referenceName = '参考尺码(女)';
|
|
|
}
|
|
|
|
|
|
$referenceList = array();
|
|
|
// 判断是否显示参考尺码
|
|
|
$showReference = ($boyReference && !empty($sizeInfo['sizeInfoBo']['sizeBoList'][0]['boyReferSize'])) || ($girlReference && !empty($sizeInfo['sizeInfoBo']['sizeBoList'][0]['girlReferSize']) );
|
|
|
if ($showReference) {
|
|
|
$referenceList[0] = array('param' => $referenceName);
|
|
|
}
|
|
|
|
|
|
if (!empty($sizeInfo['sizeInfoBo']['sizeAttributeBos'])) {
|
|
|
$sizeNameList = array(0 => array('param' => '吊牌尺码')); // 尺码名称
|
|
|
$sizeBoGroup = array(); // 尺码按ID分组
|
|
|
foreach ($sizeInfo['sizeInfoBo']['sizeAttributeBos'] as $attr) {
|
|
|
$sizeBoGroup[$attr['id']][0] = array('param' => empty($attr['attributeName']) ? ' ' : $attr['attributeName']);
|
|
|
}
|
|
|
$item = array();
|
|
|
foreach ($sizeInfo['sizeInfoBo']['sizeBoList'] as $value) {
|
|
|
$item = array();
|
|
|
$sizeNameList[] = array('param' => $value['sizeName']);
|
|
|
if ($boyReference && ($gender == 1 || $gender == 3)) {
|
|
|
$referenceList[] = array('param' => empty($value['boyReferSize']['referenceName']) ? ' ' : $value['boyReferSize']['referenceName']);
|
|
|
} elseif ($girlReference && ($gender == 2 || $gender == 3)) {
|
|
|
$referenceList[] = array('param' => empty($value['girlReferSize']['referenceName']) ? ' ' : $value['girlReferSize']['referenceName']);
|
|
|
} else {
|
|
|
$showReference = false;
|
|
|
}
|
|
|
foreach ($value['sortAttributes'] as $attr) {
|
|
|
$sizeBoGroup[$attr['id']][] = array('param' => empty($attr['sizeValue']) ? ' ' : $attr['sizeValue']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 根据模板页面的显示,按表格一列一列来显示
|
|
|
$result['sizeInfo']['detail']['list'][0]['params'] = $sizeNameList;
|
|
|
if ($showReference) {
|
|
|
$result['sizeInfo']['detail']['list'][1]['params'] = $referenceList;
|
|
|
}
|
|
|
foreach ($sizeBoGroup as $value) {
|
|
|
$result['sizeInfo']['detail']['list'][]['params'] = $value;
|
|
|
}
|
|
|
} else {
|
|
|
$result['sizeInfo']['detail']['list'][0]['params'] = array(0 => array('param' => ''));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 测量方式
|
|
|
if (!empty($sizeInfo['sizeImage'])) {
|
|
|
$result['measurementMethod'] = array(
|
|
|
'title' => '测量方式',
|
|
|
'enTitle' => 'MEASUREMENT METHOD',
|
|
|
'img' => $sizeInfo['sizeImage'],
|
|
|
);
|
|
|
}
|
|
|
|
|
|
// 模特试穿, 竖着输出排列显示
|
|
|
if (!empty($sizeInfo['modelBos'])) {
|
|
|
$result['reference'] = array(
|
|
|
'title' => '模特试穿',
|
|
|
'enTitle' => 'REFERENCE',
|
|
|
'detail' => array('list' => array()),
|
|
|
);
|
|
|
|
|
|
// 控制是否显示备注
|
|
|
$showRemark = false;
|
|
|
$remarkList = array(0 => array('param' => '备注'));
|
|
|
|
|
|
$result['reference']['detail']['list'][0]['params'] = array(0 => array('param' => '')); // 头像列表
|
|
|
$result['reference']['detail']['list'][1]['params'] = array(0 => array('param' => '模特')); // 模特名字列表
|
|
|
$result['reference']['detail']['list'][2]['params'] = array(0 => array('param' => '身高')); // 身高列表
|
|
|
$result['reference']['detail']['list'][3]['params'] = array(0 => array('param' => '体重')); // 体重列表
|
|
|
$result['reference']['detail']['list'][4]['params'] = array(0 => array('param' => '三围')); // 三围列表
|
|
|
$result['reference']['detail']['list'][5]['params'] = array(0 => array('param' => '吊牌尺码')); // 吊牌尺码
|
|
|
$result['reference']['detail']['list'][6]['params'] = array(0 => array('param' => '试穿描述')); // 试穿描述
|
|
|
|
|
|
foreach ($sizeInfo['modelBos'] as $value) {
|
|
|
$result['reference']['detail']['list'][0]['params'][] = array('param' => $value['avatar']);
|
|
|
$result['reference']['detail']['list'][1]['params'][] = array('param' => $value['modelName']);
|
|
|
$result['reference']['detail']['list'][2]['params'][] = array('param' => $value['height']);
|
|
|
$result['reference']['detail']['list'][3]['params'][] = array('param' => $value['weight']);
|
|
|
$result['reference']['detail']['list'][4]['params'][] = array('param' => $value['vitalStatistics']);
|
|
|
$result['reference']['detail']['list'][5]['params'][] = array('param' => $value['fitModelBo']['fit_size']);
|
|
|
$result['reference']['detail']['list'][6]['params'][] = array('param' => $value['fitModelBo']['feel']);
|
|
|
if (!empty($value['fitModelBo']['fit_remark'])) {
|
|
|
$showRemark = true;
|
|
|
$remarkList[] = array('param' => $value['fitModelBo']['fit_remark']);
|
|
|
} else {
|
|
|
$remarkList[] = array('param' => '');
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 显示模特备注
|
|
|
if ($showRemark) {
|
|
|
$result['reference']['detail']['list'][7]['params'] = $remarkList;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 商品材质
|
|
|
if (!empty($sizeInfo['productMaterialList'])) {
|
|
|
$result['materials'] = array(
|
|
|
'title' => '商品材质',
|
|
|
'enTitle' => 'MATERIALS',
|
|
|
'list' => array(),
|
|
|
);
|
|
|
foreach ($sizeInfo['productMaterialList'] as $value) {
|
|
|
$result['materials']['list'][] = array(
|
|
|
'img' => $value['imageUrl'],
|
|
|
'desc' => $value['remark'],
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 洗涤提示
|
|
|
if (!empty($sizeInfo['washTipsBoList'])) {
|
|
|
$result['washTips']['list'] = array();
|
|
|
foreach ($sizeInfo['washTipsBoList'] as $value) {
|
|
|
$result['washTips']['list'][] = $value;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 详情配图
|
|
|
if (isset($sizeInfo['productIntroBo']['productIntro'])) {
|
|
|
$productIntro = '';
|
|
|
if (!empty($sizeInfo['productDescBo']['phrase'])) {
|
|
|
$productIntro .= $sizeInfo['productDescBo']['phrase'] . '<br/>';
|
|
|
}
|
|
|
$productIntro .= $sizeInfo['productIntroBo']['productIntro'];
|
|
|
if ($productIntro) {
|
|
|
$result['productDetail'] = array(
|
|
|
'title' => '商品详情',
|
|
|
'enTitle' => 'DETAILS',
|
|
|
'desc' => strtr($productIntro, array(
|
|
|
'\r\n\t' => '',
|
|
|
'</p>' => '',
|
|
|
'<img src=' => "<img class=\"lazy\" src=\"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==\" data-original=",
|
|
|
'<img border="0" src=' => "<img border=\"0\" class=\"lazy\" src=\"data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==\" data-original=",
|
|
|
'.jpg' => '.jpg?imageMogr2/thumbnail/750x/quality/90',
|
|
|
)),
|
|
|
);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 清空变量,释放内存
|
|
|
$sizeInfo = array();
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取评价列表
|
|
|
*
|
|
|
* @param int $productId 产品ID
|
|
|
* @param int $pageNum 页码数
|
|
|
* @param int $pageSize 每页显示个数
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getComments($productId, $pageNum = 1, $pageSize = 300)
|
|
|
{
|
|
|
$result = array();
|
|
|
|
|
|
if (is_numeric($productId) && is_numeric($pageNum) && is_numeric($pageSize)) {
|
|
|
$commentList = DetailData::commentList($productId, $pageNum, $pageSize);
|
|
|
if (!empty($commentList['data'])) {
|
|
|
$build = array();
|
|
|
foreach ($commentList['data'] as $value) {
|
|
|
$build['userName'] = $value['nickname'];
|
|
|
$build['desc'] = $value['color_name'] . '/' . $value['size_name'];
|
|
|
$build['content'] = $value['content'];
|
|
|
$build['time'] = $value['create_time'];
|
|
|
$result[] = $build;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取咨询列表
|
|
|
*
|
|
|
* @param int $uid 用户ID
|
|
|
* @param int $productId 产品ID
|
|
|
* @param int $pageNum 页码数
|
|
|
* @param int $pageSize 每页显示个数
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getConsults($uid, $productId, $pageNum = 1, $pageSize = 300)
|
|
|
{
|
|
|
$result = array();
|
|
|
|
|
|
if (is_numeric($productId) && is_numeric($pageNum) && is_numeric($pageSize)) {
|
|
|
$consultList = DetailData::consultList($uid, $productId, $pageNum, $pageSize);
|
|
|
if (isset($consultList['code']) && $consultList['code'] === 200) {
|
|
|
$build = array();
|
|
|
foreach ($consultList['data']['list'] as $value) {
|
|
|
$build['question'] = $value['ask'];
|
|
|
$build['time'] = $value['ask_time'];
|
|
|
$build['answer'] = $value['answer'];
|
|
|
$build['id'] = $value['id'];
|
|
|
$build['isLike'] = $value['is_like'] === 'Y';
|
|
|
$build['like'] = intval($value['like']);
|
|
|
$build['isUseful'] = $value['is_useful'] === 'Y';
|
|
|
$build['useful'] = intval($value['useful']);
|
|
|
$result[] = $build;
|
|
|
}
|
|
|
}
|
|
|
$consultList = array();
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取常见问题列表
|
|
|
*
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getCommonConsults()
|
|
|
{
|
|
|
$result = array();
|
|
|
|
|
|
$consults = DetailData::commonConsultList();
|
|
|
if (isset($consults['code']) && $consults['code'] === 200) {
|
|
|
$result['commonConsults'] = $consults['data'];
|
|
|
$consults = array();
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 咨询点赞
|
|
|
*
|
|
|
* @param int $uid 用户ID
|
|
|
* @param int $id 咨询ID
|
|
|
* @param int $productId 商品ID
|
|
|
* @param int $total 购买咨询总数
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function upvoteConsult($uid, $id, $productId, $total)
|
|
|
{
|
|
|
$result = array('code' => 400, 'message' => '出错啦~');
|
|
|
|
|
|
do {
|
|
|
if (empty($uid)) {
|
|
|
$result['code'] = 401;
|
|
|
$result['message'] = '用户id为空';
|
|
|
$result['data'] = Helpers::url('/signin.html', array('refer' => Helpers::url('/product/detail/consults', array('product_id' => $productId, 'total' => $total))));
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
// 处理数据
|
|
|
$record = DetailData::upvoteConsult($uid, $id);
|
|
|
if (!empty($record['code'])) {
|
|
|
$result['code'] = $record['code'];
|
|
|
$result['message'] = $record['message'];
|
|
|
}
|
|
|
} while (false);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 咨询有用
|
|
|
*
|
|
|
* @param int $uid 用户ID
|
|
|
* @param int $id 咨询ID
|
|
|
* @param int $productId 商品ID
|
|
|
* @param int $total 购买咨询总数
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function usefulConsult($uid, $id, $productId, $total)
|
|
|
{
|
|
|
$result = array('code' => 400, 'message' => '出错啦~');
|
|
|
|
|
|
do {
|
|
|
if (empty($uid)) {
|
|
|
$result['code'] = 401;
|
|
|
$result['message'] = '用户id为空';
|
|
|
$result['data'] = Helpers::url('/signin.html', array('refer' => Helpers::url('/product/detail/consults', array('product_id' => $productId, 'total' => $total))));
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
// 处理数据
|
|
|
$record = DetailData::usefulConsult($uid, $id);
|
|
|
if (!empty($record['code'])) {
|
|
|
$result['code'] = $record['code'];
|
|
|
$result['message'] = $record['message'];
|
|
|
}
|
|
|
} while (false);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取为你优选的商品
|
|
|
*
|
|
|
* @param int $productSkn 商品SKN
|
|
|
* @return array
|
|
|
*/
|
|
|
public static function getPreference($productSkn, $channel, $brandId)
|
|
|
{
|
|
|
$result = array();
|
|
|
|
|
|
if (is_numeric($productSkn)) {
|
|
|
$preference = DetailData::preference($productSkn, $channel, $brandId);
|
|
|
if (!empty($preference)) {
|
|
|
foreach ($preference as $value) {
|
|
|
$value = Helpers::formatProduct($value, false, true, true, 299, 388, false, false);
|
|
|
if (false !== $value) {
|
|
|
$result['recommendList'][] = $value;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
} |
...
|
...
|
|