/** * 加载组合商品类型相关数据 * * @param array $product * @return boolean */ public static function load(&$product) { /** * 获取商品规格与货品 */ $attroptrs = array(); //$attroptrs = self::get_pdt_attroptrs($product['id']); if ($product['attribute_struct_default']) { $attroptrs = json_decode($product['attribute_struct_default']); $attroptrs = (array) @$attroptrs->items; $product['attroptrs'] = $attroptrs; $product['attrrs'] = array_keys($attroptrs); unset($product['attribute_struct_default']); } if (!empty($attroptrs)) { $goods = ProductService::get_instance()->index(array('where' => array('product_id' => $product['id']))); $product['store'] = -1; foreach ($goods as $index => $good) { $good = coding::decode_good($good); if (isset($good['attribute_struct_default']['items'])) { $good['attroptrs'] = $good['attribute_struct_default']['items']; } else { $good['attroptrs'] = array(); } $good['picrels'] = array(); if (!empty($good['goods_productpic_relation_struct']['items'])) { $good['picrels'] = $good['goods_productpic_relation_struct']['items']; } // 重新计算商品库存,以货品库存为准 if ($good['store'] > -1) { if ($product['store'] == -1) { $product['store'] = 0; } $product['store'] += $good['store']; } unset($good['attribute_struct_default']); unset($good['goods_productpic_relation_struct']); unset($good['product_id']); $goods[$index] = $good; } } else { // 重新计算商品库存,以货品库存为准 $good = ProductService::get_instance()->query_row(array('where' => array('product_id' => $product['id']))); if (!empty($good) and isset($good['store'])) { $product['store'] = $good['store']; } } if (empty($goods)) { $product['goods'] = array(); $product['attributes'] = array(); } else { $product['goods'] = $goods; $product['attributes'] = BLL_Product_Attribute::index(array('id' => array_keys($attroptrs))); } //$product['attroptpicrs'] = BLL_Product_Picture::get_pdt_attroptpicrs($product['id']); return TRUE; }
public function run($products) { $csv_array = array(); if ($products) { $result = $this->format($products); foreach ($result as $classify_id => $products) { foreach ($products as $product) { $csv_array[] = $this->get_titlebar($classify_id); //dump($csv_array); //foreach ($products as $product){ $product = coding::decode_product($product); $desc = Product_detailService::get_instance()->get_by_product_id($product['id']); $goods = ProductService::get_instance()->query_assoc(array('where' => array('product_id' => $product['id']), 'orderby' => array('default_goods' => 'DESC'))); if (!empty($this->arguments)) { $arguments = Product_argumentService::get_instance()->query_row(array('where' => array('product_id' => $product['id']))); $arguments = empty($arguments) ? array() : json_decode($arguments['arguments'], TRUE); } $has_goods = FALSE; $default_good = array(); foreach ($goods as $good) { if (!empty($good['attribute_struct']['items'])) { $has_goods = TRUE; } if ($good['default_goods'] == 1) { $default_good = $good; break; } } /*if ($default_good AND $goods) { $default_good = $goods[key($goods)]; }*/ $p_row = array(); $p_row[] = ''; $p_row[] = ''; $p_row[] = $this->get_category_names($product['category_id']); $p_row[] = $product['sku']; $p_row[] = ''; $p_row[] = $product['name_manage']; $p_row[] = $product['title']; $p_row[] = $product['brand_id'] > 0 ? $this->get_brand_name($product['brand_id']) : ''; if (!$has_goods) { $p_row[] = $product['on_sale'] == 1 ? 'Y' : 'N'; $p_row[] = $product['price']; $p_row[] = $product['market_price']; } else { $p_row[] = ''; $p_row[] = ''; $p_row[] = ''; } $p_row[] = ''; // 商品图片 /** * 处理商品规格 */ if ($has_goods) { /*$attribute_option_ids = $product['argumrs_struct_default']['items']; $same_attributes = TRUE; if (count($this->attributes) == count($attribute_option_ids)) { foreach ($this->attributes as $attribute) { if (!isset($attribute_option_ids[$attribute['id']])) { $same_attributes = FALSE; break; } } } else { $same_attributes = FALSE; } if ($same_attributes == TRUE) { $attributes = $this->attributes; $p_row[] = ''; } else { $attributes = AttributeService::get_instance()->get_attribute_options(array( 'where' => array( 'id' => array_keys($attribute_option_ids), ), 'orderby' => array( 'id' => 'ASC', ), ));*/ $attribute_names = ''; foreach ($this->attributes as $attribute) { if (!empty($attribute_names)) { $attribute_names .= '|'; } $attribute_names .= $attribute['name']; } $p_row[] = '规格:' . $attribute_names; //} } else { $p_row[] = ''; } $p_row[] = $product['brief']; /** * 处理商品的详细描述 */ if ($desc) { $p_row[] = $desc['description']; } else { $p_row[] = ''; } /** * 处理商品的成本、库存、重量,当商品有规格时,在商品行不显示此三项信息 */ if (!$has_goods) { $p_row[] = $product['cost']; $p_row[] = $product['store']; $p_row[] = empty($default_good) ? '0' : $default_good['weight']; } else { $p_row[] = ''; $p_row[] = ''; $p_row[] = ''; } $p_row[] = $desc['meta_title']; $p_row[] = $desc['meta_keywords']; $p_row[] = $desc['meta_description']; /** * 处理货品与特性的关联 */ $feature_option_ids = empty($product['product_featureoption_relation_struct']['items']) ? array() : $product['product_featureoption_relation_struct']['items']; foreach ($this->features as $feature) { if (isset($feature_option_ids[$feature['id']])) { $p_row[] = $feature['options'][$feature_option_ids[$feature['id']]]['name']; } else { $p_row[] = ''; } } foreach ($this->arguments as $argument_group) { foreach ($argument_group['items'] as $argument) { if (isset($arguments[$argument_group['name']]) and isset($arguments[$argument_group['name']][$argument['name']])) { $p_row[] = $arguments[$argument_group['name']][$argument['name']]; } else { $p_row[] = ''; } } } $csv_array[] = $p_row; /** * 处理货品 */ if ($has_goods) { foreach ($goods as $good) { $is_err = FALSE; $good = coding::decode_good($good); $g_row = array(); $g_row[] = ''; $g_row[] = ''; $g_row[] = ''; $g_row[] = ''; $g_row[] = $good['sku']; $g_row[] = ''; $g_row[] = $good['title']; $g_row[] = ''; $g_row[] = $good['on_sale'] == 1 ? 'Y' : 'N'; $g_row[] = $good['price']; $g_row[] = $good['market_price']; $g_row[] = ''; $option_name = ''; foreach ($this->attributes as $attribute) { if ($option_name != '') { $option_name .= '|'; } if (!isset($good['argumrs_struct']['items'][$attribute['id']])) { $is_err = TRUE; log::write('product_import_data_error', print_r($product, true), __FILE__, __LINE__); } else { $option_id = $good['argumrs_struct']['items'][$attribute['id']]; $option_name .= $attribute['options'][$option_id]['name']; } } $g_row[] = $option_name; if ($is_err == TRUE) { break; } $g_row[] = ''; $g_row[] = ''; $g_row[] = $good['cost']; $g_row[] = $good['store']; $g_row[] = $good['weight']; $g_row[] = ''; $g_row[] = ''; $g_row[] = ''; foreach ($this->features as $feature) { $g_row[] = ''; } foreach ($this->arguments as $argument_group) { foreach ($argument_group['items'] as $argument) { $g_row[] = ''; } } $csv_array[] = $g_row; } } //} } } } return $csv_array; }
/** * 加载可配置商品类型相关数据 * * @param array $product * @return boolean */ public static function load(&$product) { /** * 获取商品规格、简单商品 */ $goods = array(); $attroptrs = array(); //$attroptrs = self::get_pdt_attroptrs($product['id']); if ($product['attribute_struct_default']) { $attroptrs = json_decode($product['attribute_struct_default']); $attroptrs = (array) @$attroptrs->items; $product['attroptrs'] = $attroptrs; $product['attrrs'] = array_keys($attroptrs); unset($product['attribute_struct_default']); } if (!empty($attroptrs)) { $product['store'] = 0; $good_ids = Product_assemblyService::get_instance()->index(array('where' => array('assembly_id' => $product['id']))); //依次获得简单商品数据 foreach ($good_ids as $good_id) { $good = ProductService::get_instance()->get($good_id['product_id']); $good = coding::decode_good($good); $good['default_goods'] = $good_id['is_default'] ? $good_id['is_default'] : 0; $good['attroptrs'] = array(); if (isset($good['attribute_struct_default']['items'])) { foreach ($good['attribute_struct_default']['items'] as $aid => $oid) { $good['attroptrs'][$aid] = $oid[0]; } } $good['picrels'] = array(); if (!empty($good['goods_productpic_relation_struct']['items'])) { $good['picrels'] = $good['goods_productpic_relation_struct']['items']; } // 重新计算商品库存,以货品库存为准 if ($good['store'] > 0) { $product['store'] += $good['store']; } unset($good['attribute_struct_default']); unset($good['goods_productpic_relation_struct']); $goods[] = $good; unset($good); } } /* else { // 重新计算商品库存,以货品库存为准 $good = ProductService::get_instance()->query_row(array( 'where' => array('product_id' => $product['id']), )); if (!empty($good) AND isset($good['store'])) { $product['store'] = $good['store']; } }*/ if (empty($goods)) { $product['goods'] = array(); $product['attributes'] = array(); } else { $product['goods'] = $goods; $product['attributes'] = BLL_Product_Attribute::index(array('id' => array_keys($attroptrs))); } //$product['attroptpicrs'] = BLL_Product_Picture::get_pdt_attroptpicrs($product['id']); return TRUE; }