예제 #1
0
 public function actionAdd()
 {
     $item_id = (int) Yii::$app->request->post('item_id');
     $qty = (int) Yii::$app->request->post('qty');
     $data = Yii::$app->request->post('data');
     $props = Yii::$app->request->post('props');
     if ($props) {
         $tmp = explode(';', $props);
         $props = [];
         foreach ($tmp as $v) {
             $a = explode(':', $v);
             $props[$a[0]] = $v;
         }
         $sku = Sku::find()->where(['item_id' => $item_id, 'props' => Json::encode($props)])->one();
         $sku_id = $sku->sku_id;
     }
     $shoppingCartModel = new ShoppingCart();
     if ($shoppingCartModel->add($sku_id, $qty, $data)) {
         return Json::encode(['message' => \Yii::t('app', 'add to cart success')]);
     } else {
         return Json::encode(['message' => \Yii::t('app', 'add to cart fail')]);
     }
 }
예제 #2
0
 /**
  * @param $event CartEvent
  */
 public function validate($event)
 {
     //@TODO need to move to cart model the have error message
     $sku = Sku::find()->where($event->item_id)->one();
     if (!$sku) {
         $event->isValid = false;
         return;
     }
     $item = Item::find()->where($sku->item_id)->one();
     if (!$item || intval($event->qty) != $event->qty) {
         $event->isValid = false;
         return;
     }
     if ($event->qty <= 0) {
         $event->isValid = false;
         return;
     }
 }
예제 #3
0
파일: Item.php 프로젝트: ASDAFF/OurYincart2
 public function saveSkus($item_id, $skus)
 {
     if (is_array($skus) && count($skus)) {
         $skuArray = array();
         foreach ($skus as $i => $sku) {
             if (isset($sku['sku_id']) && $sku['sku_id']) {
                 $skuModel = Sku::find()->where(['sku_id' => $sku['sku_id']])->one();
             } else {
                 $skuModel = new Sku();
             }
             $skuModel->item_id = $item_id;
             $skuModel->props = $sku['props'];
             $skuModel->props_name = $sku['props_name'];
             $skuModel->quantity = $sku['stock'];
             $skuModel->price = $sku['price'];
             $skuModel->outer_id = $sku['outer_id'];
             if (isset($sku['sku_id']) && $sku['sku_id']) {
                 if ($skuModel->update() === false) {
                     Yii::$app->session->setFlash('sku-error', Yii::t('catalog', 'Every sku must have a value !'));
                     $this->addError('props', Yii::t('catalog', null));
                 }
             } else {
                 if (!$skuModel->save()) {
                     Yii::$app->session->setFlash('sku-error', Yii::t('catalog', 'Every sku must have a value !'));
                     $this->addError('props', Yii::t('catalog', null));
                 }
             }
             $skuArray[$i] = $skuModel->sku_id;
         }
         //删除
         $models = Sku::findAll(['item_id' => $item_id]);
         $delArr = array();
         foreach ($models as $k1 => $v1) {
             if (!in_array($v1->sku_id, $skuArray)) {
                 $delArr[] = $v1->sku_id;
             }
         }
         if (count($delArr)) {
             Sku::deleteAll('sku_id IN (' . implode(', ', $delArr) . ')');
         }
     } else {
         //已经没有SKU了,要清除数据表内容
         Sku::deleteAll(['item_id' => $item_id]);
     }
 }