示例#1
0
 /**
  * 加载基本商品类型相关数据
  *
  * @param array $product
  * @return boolean
  */
 public static function load(&$product)
 {
     $product['classify_id'] && ($product['attributes'] = BLL_Product_Attribute::get_clsattrrs($product['classify_id']));
     //处理简单商品是否属于可配置商品或者组合商品的一项
     $p_configurable = Product_assemblyService::get_instance()->query_assoc(array('where' => array('product_id' => $product['id'], 'assembly_type' => ProductService::PRODUCT_TYPE_CONFIGURABLE), 'orderby' => array('id' => 'asc'), 'limit' => array('per_page' => 1)));
     $configurable_id = isset($p_configurable[0]['assembly_id']) && $p_configurable[0]['assembly_id'] > 0 ? $p_configurable[0]['assembly_id'] : 0;
     if ($configurable_id > 0) {
         $product['configurable_id'] = $configurable_id;
         !$product['descsections'] && ($product['descsections'] = BLL_Product_Detail::get($configurable_id));
         !$product['fetuoptrs'] && ($product['fetuoptrs'] = BLL_Product_Feature::get_fetuoptrs($configurable_id));
         !$product['relations'] && ($product['relations'] = BLL_Product_Relation::get($configurable_id));
         !$product['wholesales'] && ($product['wholesales'] = BLL_Product_Wholesale::get($configurable_id));
         //可配置商品的关联图片更新检查
         if (!empty($product['goods_productpic_relation_struct'])) {
             $configurable_pictures = BLL_Product_Picture::get($configurable_id);
             $productpicService = ProductpicService::get_instance();
             $product = coding::decode_attribute($product, 'goods_productpic_relation_struct');
             foreach ($product['goods_productpic_relation_struct']['items'] as $pic_id) {
                 if (isset($configurable_pictures[$pic_id])) {
                     $query_struct = array('where' => array('product_id' => $product['id'], 'image_id' => $configurable_pictures[$pic_id]['image_id']));
                     if (!$productpicService->count($query_struct) > 0) {
                         $productpic_data = array('product_id' => $product['id'], 'is_default' => ProductpicService::PRODUCTPIC_IS_DEFAULT_FALSE, 'title' => $configurable_pictures[$pic_id]['title'], 'image_id' => $configurable_pictures[$pic_id]['image_id']);
                         $productpic_row_id = $productpicService->add($productpic_data);
                         $product['pictures'][$pic_id] = $configurable_pictures[$pic_id];
                     }
                 }
             }
         }
     }
     //获取商品规格
     $attroptrs = array();
     if ($product['attribute_struct_default']) {
         $attroptrs = json_decode($product['attribute_struct_default'], TRUE);
         $attroptrs = $attroptrs['items'];
         if (is_array($attroptrs)) {
             foreach ($attroptrs as $aid => $oid) {
                 $attroptrs[$aid] = $oid[0];
             }
         }
         unset($product['attribute_struct_default']);
     } else {
         $attroptrs = self::get_pdt_attroptrs($product['id']);
     }
     if (!empty($attroptrs)) {
         $product['attroptrs'] = $attroptrs;
         $product['attrrs'] = array_keys($attroptrs);
     }
     return TRUE;
 }
示例#2
0
 /**
  * 通过商品ID获取商品
  *
  * @param integer $product_id
  * @return array
  */
 public static function get($product_id, $page = 1, $per_page = 10)
 {
     $product = ProductService::get_instance()->get($product_id);
     $product = coding::decode_product($product);
     $product['descsections'] = BLL_Product_Detail::get($product_id);
     $product['fetuoptrs'] = BLL_Product_Feature::get_fetuoptrs($product_id);
     $product['pictures'] = BLL_Product_Picture::get($product_id);
     $product['relations'] = BLL_Product_Relation::get($product_id);
     $product['wholesales'] = BLL_Product_Wholesale::get($product_id);
     //$product['point']      = BLL_Product_Point::get($product_id);
     switch ($product['type']) {
         case ProductService::PRODUCT_TYPE_ASSEMBLY:
             BLL_Product_Type_Assembly::load($product);
             break;
         case ProductService::PRODUCT_TYPE_CONFIGURABLE:
             BLL_Product_Type_Configurable::load($product);
             break;
         case ProductService::PRODUCT_TYPE_GOODS:
         default:
             BLL_Product_Type_Simple::load($product);
             break;
     }
     return $product;
 }