public function setData(shopProduct $product, $data)
 {
     $primary_currency = wa()->getConfig()->getCurrency();
     $sort = 0;
     $default_sku_id = null;
     $result = array();
     foreach ($data as $sku_id => $sku) {
         $sku['sort'] = ++$sort;
         if (empty($sku['available'])) {
             $sku['available'] = 0;
         }
         if (isset($sku['price'])) {
             if ($product->currency == $primary_currency) {
                 $sku['primary_price'] = $sku['price'];
             } else {
                 $sku['primary_price'] = $this->convertPrice($sku['price'], $product->currency);
             }
         }
         $sku['product_id'] = $product->id;
         $sku = $this->updateSku($sku_id > 0 ? $sku_id : 0, $sku, false, $product);
         $result[$sku['id']] = $sku;
         if (!empty($sku['features'])) {
             foreach ($sku['features'] as $code => $value) {
                 if (!isset($features)) {
                     $features = $product->features;
                 }
                 if (!isset($features[$code])) {
                     $features[$code] = array();
                 }
                 if (is_array($features[$code])) {
                     if (is_array($value)) {
                         if (isset($value['id'])) {
                             if (!isset($features[$code][$value['id']])) {
                                 $features[$code][$value['id']] = $value['value'];
                             }
                         }
                     } else {
                         $features[$code][] = $value;
                     }
                 }
             }
         }
         if ($product->sku_id == $sku_id) {
             $default_sku_id = $sku['id'];
         }
     }
     $model = new shopProductModel();
     if ($default_sku_id === null && $result) {
         $default_sku_id = current(array_keys($result));
     }
     $model->updateById($product->id, array('sku_id' => $default_sku_id));
     $model->correct($product->id);
     $product_data = $model->getById($product->id);
     $product->min_price = $product_data['min_price'];
     $product->max_price = $product_data['max_price'];
     $product->price = $product_data['price'];
     $product->compare_price = $product_data['compare_price'];
     $product->count = $product_data['count'];
     $product->sku_count = count($data);
     $product->sku_id = $default_sku_id;
     if (isset($features)) {
         $product->features = $features;
     }
     return $result;
 }