Authored by Rock Zhang

初步调试列表页功能

... ... @@ -135,6 +135,9 @@ class BrandData
*/
public static function selectBrandDetail($gender, $brand, $sort, $color, $size, $price, $p_d, $channel = 1, $order = 's_t_desc', $limit = 60, $page = 1)
{
// 构建必传参数
$param = Yohobuy::param();
$selectItems = array(
'gender' => $gender,
'brand' => $brand,
... ... @@ -148,9 +151,7 @@ class BrandData
$queriedParams = array_filter($selectItems, function($v) {
return $v !== null;
});
// 构建必传参数
$param = Yohobuy::param();
$param += $queriedParams;
$param['method'] = 'app.search.brand';
$param['page'] = $page;
... ...
<?php
namespace Plugin\DataProcess;
use Plugin\Helpers;
/**
* 列表数据处理类
*/
class ListProcess
{
/**
* 返回商品和过滤数据
*
* @param $data
* @return array 处理之后的商品数据
*/
public static function getListData($data)
{
$result = array('new'=>array(), 'filter'=>array());
if(isset($data['product_list']))
{
$result['new'] = self::getProductData($data['product_list']);
}
if(isset($data['filter']))
{
$result['filter'] = self::getFilterData($data['filter']);
}
return $result;
}
/**
* 处理列表商品数据
*
* @param $data
* @return array 处理之后的商品数据
*/
public static function getProductData($data)
{
// 处理商品
$products = array();
foreach ($data as $value)
{
$products[] = Helpers::formatProduct($value);
}
return $products;
}
/**
* 处理筛选数据
*
* @param $data
* @return array 处理之后的筛选数据
*/
public static function getFilterData($data)
{
// 过滤条件数据
$filters = array('classify'=>array());
foreach ($data as $key => $val) {
if(empty($val))
{
continue;
}
if (!is_callable("self::$key")) {
continue;
}
$build = self::$key($val);
$filters['classify'][] = $build;
}
return $filters;
}
private static function brand($data)
{
$result = array(
'title' => '品牌',
'name' => '所有品牌',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有品牌'
)
)
);
// 对品牌数据按照品牌字母进行排序
self::sortArrByField($data, 'brand_alif');
foreach ($data as $one) {
$brand = array();
$brand['dataId'] = $one['id'];
$brand['name'] = $one['brand_name'];
$result['subs'][] = $brand;
}
return $result;
}
private static function color($data)
{
$result = array(
'title' => '颜色',
'name' => '所有颜色',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有颜色'
)
)
);
foreach ($data as $one) {
$color = array();
$color['dataId'] = $one['color_id'];
$color['name'] = $one['color_name'];
$result['subs'][] = $color;
}
return $result;
}
private static function discount($data)
{
$result = array(
'title' => '折扣',
'name' => '所有商品',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有商品'
)
)
);
foreach ($data as $one) {
$discount = array();
$discount['dataId'] = $one['count'];
$discount['name'] = $one['name'] .'折商品';
$result['subs'][] = $discount;
}
return $result;
}
private static function gender($data)
{
$result = array(
'title' => '性别',
'name' => '所有性别',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有性别'
),
array(
'dataId' => 1,
'name' => '男'
),
array(
'dataId' => 2,
'name' => '女'
),
)
);
return $result;
}
private static function group_sort($data)
{
$result = array(
'title' => '品类',
'name' => '所有品类',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有品类'
)
)
);
foreach ($data as $one) {
$category = array();
$category['dataId'] = $one['category_id'];
$category['name'] = $one['category_name'];
// 子品类
if(isset($one['sub']))
{
$category['subs'] = array();
foreach ($one['sub'] as $single) {
$subitem = array();
$subitem['dataId'] = $single['category_id'];
$subitem['name'] = $single['category_name'];
$category['subs'][] = $subitem;
}
}
$result['subs'][] = $category;
}
return $result;
}
private static function priceRange($data)
{
$result = array(
'title' => '价格',
'name' => '所有价格',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有价格'
)
)
);
foreach ($data as $one) {
$price = array();
$price['name'] = $one;
$result[] = $price;
}
return $result;
}
private static function size($data)
{
$result = array(
'title' => '尺码',
'name' => '所有尺码',
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '所有尺码'
)
)
);
foreach ($data as $one) {
$size = array();
$size['dataId'] = $one['size_id'];
$size['name'] = $one['size_name'];
$result['subs'][] = $size;
}
return $result;
}
/**
* 按照数组中指定字段排序二维数组
*
* @param array &$array 需要排序的数组
* @param string $field 字段名称
* @param boolean $desc 时候降序排列,默认为false
*/
private static function sortArrByField(&$array, $field, $desc = false){
$fieldArr = array();
foreach ($array as $k => $v) {
$fieldArr[$k] = $v[$field];
}
$sort = $desc == false ? SORT_ASC : SORT_DESC;
array_multisort($fieldArr, $sort, $array);
}
}
... ...
... ... @@ -4,6 +4,7 @@ use Action\AbstractAction;
use LibModels\Wap\Product\SearchData;
use LibModels\Wap\Category\BrandData;
use Plugin\DataProcess\ListProcess;
use Plugin\Helpers;
/**
* 商品列表页
... ... @@ -15,7 +16,6 @@ class ListController extends AbstractAction
$data = array(
'goodListPage' => true,
'goodList' => array(
<<<<<<< HEAD
)
);
... ... @@ -28,7 +28,7 @@ class ListController extends AbstractAction
// 查询数据
$listData = SearchData::searchLiDatas(null, $brand, $gender, $p_d, $misort, $msort);
// 处理返回的数据
if (isset($listData['code']) && $listData['code'] == 200) {
if (isset($listData['code']) && $listData['code'] === 200) {
$tmpData = $listData['data'];
$data['goodList'] = ListProcess::getListData($tmpData);
... ... @@ -49,128 +49,40 @@ class ListController extends AbstractAction
$p_d = $this->get('p_d', null);
$data = array(
'pageHeader' => array(
'navHome' => '/'
),
'goodListPage' => true,
'goodList' => array(
'brand' => array(
'id' => $brand
=======
'search' => 'Aape',
'brandWay' => array(
'url' => 'http://aape.m.yohobuy.com/',
'name' => 'Aape',
'thumb' => 'http://img13.static.yhbimg.com/brandLogo/2015/08/26/15/02261f64c198cb4b181c5ef9e61f38f4b9.jpg?imageMogr2/thumbnail/150x70/extent/150x70/background/d2hpdGU=/position/center/quality/90'
),
'brand' => array(
'id' => 1,
'banner' => 'http://img10.static.yhbimg.com/brandBanner/2015/08/26/07/015af5d6ee626cb132cd9c436e896fae26.jpg?imageMogr2/crop/640x'
),
'new' => array(
array(
'id' => 1,
'thumb' => 'http://img13.static.yhbimg.com/goodsimg/2015/09/15/03/02e50b1037b45b90aa8f33ee328b18facf.jpg?imageMogr2/thumbnail/290x388/extent/290x388/background/d2hpdGU=/position/center/quality/90',
'url' => '',
'name' => 'Aape X YO’HOOD moon face YOH',
'salePrice' => 599,
'tags' => array(
'is_new' => true,
'is_discount' => true
),
'is_soon_sold_out' => true
),
array(
'id' => 2,
'thumb' => 'http://img10.static.yhbimg.com/goodsimg/2015/09/15/03/0101b0c3998752d02724a5512c6efcb241.jpg?imageMogr2/thumbnail/290x388/extent/290x388/background/d2hpdGU=/position/center/quality/90',
'url' => '',
'name' => 'Aape X YO’HOOD moon face YOH',
'salePrice' => 99,
'tags' => array(
'is_yohoood' => true
),
'is_soon_sold_out' => true
)
),
'filter' => array(
array(
'classify' => array(
array(
'title' => '性别',
'name' => '全部性别',
'default' => true,
'subs' => array(
array(
'chosed' => true,
'dataId' => 0,
'name' => '全部性别'
),
array(
'dataId' => 1,
'name' => '男'
),
array(
'dataId' => 3,
'name' => '女'
)
)
),
array(
'title' => '尺寸',
'name' => 'XL',
'subs' => array(
array(
'dataId' => 0,
'name' => '全部尺寸'
),
array(
'dataId' => 1,
'name' => 'S'
),
array(
'dataId' => 2,
'name' => 'M'
),
array(
'dataId' => 3,
'name' => 'L'
),
array(
'chosed' => true,
'dataId' => 4,
'name' => 'XL'
),
array(
'dataId' => 5,
'name' => 'XXL'
)
)
)
)
)
>>>>>>> 4b0a4270663f76e6b242af42f29607e22ffa75e7
)
)
);
// 获取品牌介绍信息
$introData = BrandData::getBrandIntro($brand);
if(isset($introData['code']) && $introData['code'] == 200)
if(isset($introData['code']) && $introData['code'] === 200)
{
$data['goodList']['intro'] = isset($introData['data']['brand_intro']) ? $introData['data']['brand_intro'] : '';
$data['goodList']['brand']['intro'] = isset($introData['data']['brand_intro']) ? $introData['data']['brand_intro'] : '';
}
// 获取品牌banner的数据
$bannerData = BrandData::getBrandBanner($brand, 0);
if(isset($bannerData['code']) && $bannerData['code'] == 200)
if(isset($bannerData['code']) && $bannerData['code'] === 200)
{
$data['goodList']['banner'] = isset($bannerData['data']['banner']) ? $bannerData['data']['banner'] : '';
$data['goodList']['brand']['banner'] = isset($bannerData['data']['banner']) ? Helpers::getImageUrl($bannerData['data']['banner'], 640, 75) : '';
}
// 查询数据
$listData = BrandData::selectBrandDetail($gender, $brand, $sort, $color, $size, $price, $p_d);
// 处理返回的数据
if (isset($listData['code']) && $listData['code'] == 200) {
if (isset($listData['code']) && $listData['code'] === 200) {
$tmpData = $listData['data'];
// 设置品牌名称
$data['pageHeader']['navTitle'] = isset($tmpData['brand_name']) ? $tmpData['brand_name'] : '';
$data['goodList'] = ListProcess::getListData($tmpData);
$data['goodList'] += ListProcess::getListData($tmpData);
}
$this->_view->display('index', $data);
... ...