You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
297 lines
7.9 KiB
297 lines
7.9 KiB
<?php
|
|
|
|
namespace app\mall\controller\api;
|
|
|
|
use app\mall\model\MallCart;
|
|
use app\mall\model\MallPool;
|
|
use app\mall\model\MallProduct;
|
|
|
|
class Cart extends Base
|
|
{
|
|
|
|
/**
|
|
* 获取购物车种类数量
|
|
* @date 2021-03-01
|
|
*/
|
|
public function getCartNumber()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$cart_model = new MallCart();
|
|
|
|
//获取购物车种类数量
|
|
$cart_number = $cart_model->getOneData([
|
|
['user_id', '=', USER_ID]
|
|
], 'count(id)');
|
|
|
|
return sendSuccessMessage([
|
|
'cart_number' => $cart_number
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 获取用户购物车现有有效和无效产品列表
|
|
* @date 2021-03-01
|
|
*/
|
|
public function listUserCartEffectiveAndInvalid()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$cart_logic = new \app\mall\logic\Cart();
|
|
|
|
// 更新购物车产品选中状态
|
|
$result = $cart_logic -> listUserCartEffectiveAndInvalid();
|
|
|
|
return sendSuccessMessage($result);
|
|
}
|
|
|
|
/**
|
|
* 更新购物车产品选中状态
|
|
* @date 2022-08-25
|
|
*/
|
|
public function updateCartProductSelectedStatus()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$cart_logic = new \app\mall\logic\Cart();
|
|
|
|
// 更新购物车产品选中状态
|
|
$result = $cart_logic -> updateCartProductSelectedStatus($param['cart_id'],$param['is_select']);
|
|
|
|
// 有报错
|
|
if($result['code']){
|
|
return json($result);
|
|
}
|
|
|
|
return sendSuccessMessage([
|
|
'cart_effective' => $result['data']['cart_effective']
|
|
]);
|
|
}
|
|
|
|
|
|
/**
|
|
* 删除购物车选中商品
|
|
* @date 2022-10-27
|
|
*/
|
|
public function deleteChooseProduct()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$cart_logic = new \app\mall\logic\Cart();
|
|
|
|
// 删除购物车选中商品
|
|
$result = $cart_logic->deleteChooseProduct();
|
|
|
|
return json($result);
|
|
}
|
|
|
|
/**
|
|
* 全选/取消全选购物车商品
|
|
* @date 2021-03-01
|
|
*/
|
|
public function chooseAllProduct()
|
|
{
|
|
$param = input('post.');
|
|
|
|
|
|
$cart_model = new MallCart();
|
|
$cart_service = new \app\mall\service\Cart();
|
|
|
|
if ($param['choose'] == 0) {
|
|
$data = [
|
|
'is_select' => 0,
|
|
'update_time' => time()
|
|
];
|
|
} else if ($param['choose'] == 1) {
|
|
$data = [
|
|
'is_select' => 1,
|
|
'update_time' => time()
|
|
];
|
|
}
|
|
|
|
$number = $cart_model -> getNumber([
|
|
['user_id', '=', USER_ID]
|
|
]);
|
|
if(!empty($number)){
|
|
$res = $cart_model->where([
|
|
['user_id', '=', USER_ID]
|
|
])->update($data);
|
|
if (!$res) {
|
|
return sendErrorMessage(4001, '更新购物车失败');
|
|
}
|
|
}
|
|
|
|
|
|
// 更新购物车产品选中状态
|
|
list($cart_effective, $cart_invalid) = $cart_service->listUserCartEffectiveAndInvalid();
|
|
|
|
return sendSuccessMessage([
|
|
'cart_effective' => $cart_effective
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 购物车页新加或更新购物车
|
|
* @date 2021-03-01
|
|
*/
|
|
public function cartNumberChange()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$cart_model = new MallCart();
|
|
$product_logic = new \app\mall\logic\Product();
|
|
$cart_service = new \app\mall\service\Cart();
|
|
|
|
//获取购物车详情
|
|
$cart = $cart_model->getOneData([
|
|
['id', '=', $param['cart_id']]
|
|
]);
|
|
|
|
//判断库存是否足够
|
|
if ($param['type'] == 1) {
|
|
$number = $cart['number'] + 1;
|
|
} else if ($param['type'] == 2) {
|
|
$number = $cart['number'] - 1;
|
|
} else if ($param['type'] == 3) {
|
|
$number = $param['number'];
|
|
}
|
|
$res = $product_logic->isStockEnough($cart['product_id'], $cart['product_sku'], $number);
|
|
if ($res['code'] != 0) {
|
|
return json($res);
|
|
}
|
|
|
|
//更新购物车数量
|
|
$data['id'] = $param['cart_id'];
|
|
$data['number'] = $number;
|
|
$res = $cart_model->dataUpdate($data);
|
|
if (!$res) {
|
|
return sendErrorMessage(4001, '更新购物车失败');
|
|
}
|
|
|
|
|
|
//获取购物车商品
|
|
list($cart_effective, $cart_invalid) = $cart_service->listUserCartEffectiveAndInvalid();;
|
|
|
|
return sendSuccessMessage([
|
|
'cart_effective' => $cart_effective
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* 商品详情页新加或更新购物车
|
|
* @date 2021-03-01
|
|
*/
|
|
public function cartUpdate()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$cart_model = new MallCart();
|
|
$product_model = new MallProduct();
|
|
$product_logic = new \app\mall\logic\Product();
|
|
|
|
//获取商品详情
|
|
$product = $product_model->getOneData([
|
|
['id', '=', $param['product_id']]
|
|
]);
|
|
|
|
//判断库存是否足够
|
|
$cart_number = $cart_model->getOneData([
|
|
['user_id', '=', USER_ID],
|
|
['product_id', '=', $param['product_id']],
|
|
['product_sku', '=', $param['sku']],
|
|
], 'number');
|
|
$cart_number = $cart_number ?? 0;
|
|
$number = $param['number'] + $cart_number;//购物车本身的数量+新增数量
|
|
$res = $product_logic->isStockEnough($param['product_id'], $param['sku'], $number);
|
|
if ($res['code'] != 0) {
|
|
return json($res);
|
|
}
|
|
|
|
//加入购物车
|
|
$data = [
|
|
'uid' => UID,
|
|
'user_agent' => USER_AGENT,
|
|
'user_id' => USER_ID,
|
|
'product_id' => $param['product_id'],
|
|
'is_product_spec_open' => $product['is_spec_open'],
|
|
'product_sku' => $param['sku'],
|
|
'number' => $param['number']
|
|
];
|
|
//凑单的商品默认选中
|
|
if (!empty($param['is_select']) && $param['is_select'] == 1) {
|
|
$data['is_select'] = 1;
|
|
}
|
|
$res = $cart_model->updateCart($data);
|
|
if (!$res) {
|
|
return sendErrorMessage(4001, '更新购物车失败');
|
|
}
|
|
|
|
//获取购物车种类数量
|
|
$cart_number = $cart_model->getOneData([
|
|
['user_id', '=', USER_ID]
|
|
], 'count(id)');
|
|
|
|
return sendSuccessMessage([
|
|
'cart_number' => $cart_number
|
|
], '加入购物车成功');
|
|
}
|
|
|
|
|
|
/**
|
|
* 清空失效宝贝
|
|
* @date 2021-03-01
|
|
*/
|
|
public function clearInvalidProduct()
|
|
{
|
|
$cart_model = new MallCart();
|
|
|
|
|
|
$res = $cart_model->deleteInvalidCart();
|
|
if (!$res) {
|
|
return sendErrorMessage(4001, '清空失效宝贝失败');
|
|
}
|
|
|
|
return sendSuccessMessage([], '清空失效宝贝成功');
|
|
}
|
|
|
|
/**
|
|
* 去凑单
|
|
* @date 2021-03-01
|
|
*/
|
|
public function getPool()
|
|
{
|
|
$param = input('post.');
|
|
|
|
$pool_model = new MallPool();
|
|
|
|
$pool = $pool_model->getAllData([
|
|
['uid', '=', UID]
|
|
], 'limit', 'limit asc')->toArray();
|
|
|
|
//组合数组
|
|
$index = 0;
|
|
foreach ($pool as $k => $v) {
|
|
$pool[$k]['name'] = ($k == 0 ? 0 : $pool[$k - 1]['limit']) . '-' . $pool[$k]['limit'] . '元';
|
|
$pool[$k]['price_min'] = $k == 0 ? 0 : $pool[$k - 1]['limit'];
|
|
$pool[$k]['price_max'] = $pool[$k]['limit'];
|
|
|
|
if ($param['differ_money'] >= $pool[$k]['price_min'] && $param['differ_money'] < $pool[$k]['price_max']) {
|
|
$index = $k;
|
|
}
|
|
if ($k == count($pool) - 1) {
|
|
$pool[$k + 1]['name'] = $pool[$k]['limit'] . '元以上';
|
|
$pool[$k + 1]['price_min'] = $pool[$k]['limit'];
|
|
$pool[$k + 1]['price_max'] = '';
|
|
if ($param['differ_money'] >= $pool[$k + 1]['price_min']) {
|
|
$index = $k + 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return sendSuccessMessage([
|
|
'pool' => $pool,
|
|
'index' => $index
|
|
]);
|
|
}
|
|
}
|