frontend\controllers\CartController::actionAdd PHP Method

actionAdd() public method

public actionAdd ( )
    public function actionAdd()
    {
        $goodsId = (int) Yii::$app->request->post('goodsId');
        $output = ['status' => 'no'];
        Yii::$app->response->format = Response::FORMAT_JSON;
        $goods = Goods::findOne(['id' => $goodsId, 'status' => Goods::STATUS_NORMAL]);
        if (!$goods) {
            return $output;
        }
        $model = CartGoods::findOne(['goods_id' => $goodsId, 'user_id' => Yii::$app->user->id]);
        if (!$model) {
            if (Yii::$app->user->identity->getCartGoodsCount($goods->store_id) >= Yii::$app->params['goods.cartLimit']) {
                $output['msg'] = '您的购物车已爆满!最多只能容下' . Yii::$app->params['goods.cartLimit'] . '种商品。';
                return $output;
            }
            $model = new CartGoods();
            $model->user_id = Yii::$app->user->id;
            $model->goods_id = $goodsId;
            $model->store_id = $goods->store_id;
            $model->price = $goods->price;
            $model->count = 0;
        }
        $model->count++;
        if ($model->count > $goods->surplus) {
            $model->count = $goods->surplus;
        }
        if ($model->count > 0 && !$model->save(false)) {
            return $output;
        }
        $output = ['status' => 'ok', 'name' => $goods->name, 'price' => $goods->price, 'surplus' => $goods->surplus, 'cart' => $model->count];
        return $output;
    }