<?php

namespace app\api\controller\order;

use app\api\logic\order\CartLogic;
use app\api\validate\CartValidate;
use app\api\controller\BaseApiController;
use app\api\lists\order\CartList;
use app\common\model\order\Cart;
use app\common\model\store_branch_product\StoreBranchProduct;


class CartController extends BaseApiController
{
    public function list()
    {
        return $this->dataLists(new CartList());
    }

    /**
     * @notes 添加购物车
     */
    public function create()
    {
        $params = (new CartValidate())->post()->goCheck('add');
        $params['uid'] = $this->request->userId;
        $result = Cart::where(['uid' => $params['uid'], 'store_id' => $params['store_id'], 'product_id' => $params['product_id'], 'is_fail' => 0, 'is_pay' => 0,'delete_time' => null])->find();

        //判断起批发价
        $batch = StoreBranchProduct::where(
            ['product_id'=>$params['product_id'],
                'store_id' => $params['store_id']
            ]
        )->value('batch');
        if($params['cart_num'] < $batch){
            return $this->fail('起批发量低于最低值'.$batch);
        }
        $count = Cart::where(['uid' => $params['uid'], 'delete_time' => null, 'is_pay' => 0])->count();
        if ($count > 100) {
            return $this->fail('购物车商品不能大于100个,请先结算');
        }
        //数量下单判断
        $stock = StoreBranchProduct::where(
            ['product_id'=>$params['product_id'],
            'store_id'=>$params['store_id']
            ])->value('stock')??0;
        if ($params['cart_num'] >$stock) {
            return $this->fail('库存数量不足');
        }
        if ($result) {
            $res = CartLogic::edit($params);
        } else {
            $res = CartLogic::add($params);
        }
        if ($res) {
            return $this->success('添加成功');
        } else {
            return $this->fail(CartLogic::getError());
        }
    }

    /**
     * @notes 修改购物车
     */
    public function change()
    {
        $params = (new CartValidate())->post()->goCheck('change');
        $params['uid'] = $this->request->userId;
        $res = CartLogic::edit($params, 'dec');
        if ($res) {
            return $this->success('修改成功');
        } else {
            return $this->fail(CartLogic::getError());
        }
    }

    /**
     * @notes 删除购物车
     */
    public function delete()
    {
        $params = (new CartValidate())->post()->goCheck('delete');
        $params['uid'] = $this->request->userId;
        $res = CartLogic::delete($params);
        if ($res) {
            return $this->success('删除成功');
        } else {
            return $this->fail(CartLogic::getError());
        }
    }


}