提交 77d22aca 编写于 作者: R root

购物车显示用户在产品页面勾选的颜色尺码等自定义属性,以及一些spu属性

上级 cbee0a91
......@@ -30,44 +30,42 @@ class Index {
* ]
* 上面的products数组的个数如下:
* $products[] = [
* 'product_id' => $product_id ,
* 'qty' => $qty ,
* 'custom_option_sku' => $custom_option_sku ,
* 'product_price' => $product_price ,
* 'product_row_price' => $product_row_price ,
* 'product_name' => $one['name'],
* 'product_url' => $one['url_key'],
* 'product_image' => $one['image'],
* 'item_id' => $one['item_id'],
* 'product_id' => $product_id ,
* 'qty' => $qty ,
* 'custom_option_sku' => $custom_option_sku ,
* 'product_price' => $product_price ,
* 'product_row_price' => $product_row_price ,
* 'product_name' => $product_one['name'],
* 'product_url' => $product_one['url_key'],
* 'product_image' => $product_one['image'],
* 'custom_option' => $product_one['custom_option'],
* 'spu_options' => $productSpuOptions,
* ];
*/
public function getCartInfo(){
$cart_info = Yii::$service->cart->getCartInfo();
//var_dump($cart_info);
//exit;
if(isset($cart_info['products']) && is_array($cart_info['products'])){
foreach($cart_info['products'] as $k=>$product_one){
# 设置名字,得到当前store的语言名字。
$cart_info['products'][$k]['name'] = Yii::$service->store->getStoreAttrVal($product_one['product_name'],'name');
# 设置图片
if(isset($product_one['product_image']['main']['image'])){
$cart_info['products'][$k]['image'] = $product_one['product_image']['main']['image'];
}
# 产品的url
$cart_info['products'][$k]['url'] = Yii::$service->url->getUrl($product_one['product_url']);
$custom_option = isset($product_one['custom_option']) ? $product_one['custom_option'] : '';
$custom_option_sku = $product_one['custom_option_sku'];
if(isset($custom_option[$custom_option_sku]) && !empty($custom_option[$custom_option_sku])){
$custom_option_info = $custom_option[$custom_option_sku];
$custom_option_info_arr = [];
foreach($custom_option_info as $attr=>$val){
if(!in_array($attr,['qty','sku','price','image'])){
$attr = str_replace('_',' ',$attr);
$attr = ucfirst($attr);
$custom_option_info_arr[$attr] = $val;
}
}
$cart_info['products'][$k]['custom_option_info'] = $custom_option_info_arr;
$custom_option_image = isset($custom_option[$custom_option_sku]['image']) ? $custom_option[$custom_option_sku]['image'] : '';
if($custom_option_image){
$cart_info['products'][$k]['image'] = $custom_option_image;
}
# 将在产品页面选择的颜色尺码等属性显示出来。
$custom_option_info_arr = $this->getProductOptions($product_one,$custom_option_sku);
$cart_info['products'][$k]['custom_option_info'] = $custom_option_info_arr;
# 设置相应的custom option 对应的图片
$custom_option_image = isset($custom_option[$custom_option_sku]['image']) ? $custom_option[$custom_option_sku]['image'] : '';
if($custom_option_image){
$cart_info['products'][$k]['image'] = $custom_option_image;
}
}
}
......@@ -75,6 +73,33 @@ class Index {
return $cart_info;
}
/**
* 将产品页面选择的颜色尺码等显示出来,包括custom option 和spu options部分的数据
*/
public function getProductOptions($product_one,$custom_option_sku){
$custom_option_info_arr = [];
$custom_option = isset($product_one['custom_option']) ? $product_one['custom_option'] : '';
$custom_option_sku = $product_one['custom_option_sku'];
if(isset($custom_option[$custom_option_sku]) && !empty($custom_option[$custom_option_sku])){
$custom_option_info = $custom_option[$custom_option_sku];
foreach($custom_option_info as $attr=>$val){
if(!in_array($attr,['qty','sku','price','image'])){
$attr = str_replace('_',' ',$attr);
$attr = ucfirst($attr);
$custom_option_info_arr[$attr] = $val;
}
}
}
$spu_options = $product_one['spu_options'];
if(is_array($spu_options) && !empty($spu_options)){
foreach($spu_options as $label => $val){
$custom_option_info_arr[$label] = $val;
}
}
return $custom_option_info_arr;
}
public function initHead(){
Yii::$app->view->registerMetaTag([
......
......@@ -121,16 +121,11 @@ class QuoteItem extends Service
$qty = $one['qty'];
$custom_option_sku = $one['custom_option_sku'];
$product_price = Yii::$service->product->price->getCartPriceByProductId($product_id,$qty,$custom_option_sku);
//var_dump($product_id);
//var_dump($qty);
//var_dump($custom_option_sku);
//echo "<br/>";
//var_dump($product_price);
$product_price = isset($product_price['value']) ? $product_price['value'] : 0;
$product_row_price = $product_price * $qty;
//$product_row_price['code'] = $product_price['code'];
//$product_row_price['symbol'] = $product_price['symbol'];
$product_total += $product_row_price;
$productSpuOptions = $this->getProductSpuOptions($product_one);
$products[] = [
'item_id' => $one['item_id'],
'product_id' => $product_id ,
......@@ -142,10 +137,11 @@ class QuoteItem extends Service
'product_url' => $product_one['url_key'],
'product_image' => $product_one['image'],
'custom_option' => $product_one['custom_option'],
'spu_options' => $productSpuOptions,
];
}
}
//var_dump($product_total);
//var_dump($product_total);
return [
'products' => $products,
'product_total' => $product_total,
......@@ -153,6 +149,30 @@ class QuoteItem extends Service
}
}
}
/**
* 得到产品的spu对应的属性以及值。
*/
protected function getProductSpuOptions($productOb){
$custom_option_info_arr = [];
if(isset($productOb['attr_group']) && !empty($productOb['attr_group'])){
$productAttrGroup = $productOb['attr_group'];
$attrInfo = Yii::$service->product->getGroupAttrInfo($productAttrGroup);
if(is_array($attrInfo) && !empty($attrInfo)){
$attrs = array_keys($attrInfo);
\fecshop\models\mongodb\Product::addCustomProductAttrs($attrs);
}
$productOb = Yii::$service->product->getByPrimaryKey($productOb['_id']->{'$id'});
$spuArr = Yii::$service->product->getSpuAttr($productAttrGroup);
if(is_array($spuArr) && !empty($spuArr)){
foreach($spuArr as $spu_attr){
if(isset($productOb[$spu_attr]) && !empty($productOb[$spu_attr])){
$custom_option_info_arr[$spu_attr] = $productOb[$spu_attr];
}
}
}
}
return $custom_option_info_arr ;
}
public function addOneItem($item_id){
$cart_id = Yii::$service->cart->quote->getCartId();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册