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.
 
 
 
 
 
 
shipin/app/api/controller/v1/store/StoreCartController.php

166 lines
6.1 KiB

<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\api\controller\v1\store;
use app\Request;
use app\services\activity\combination\StorePinkServices;
use app\services\order\StoreCartServices;
/**
* 购物车类
* Class StoreCartController
* @package app\api\controller\store
*/
class StoreCartController
{
protected $services;
public function __construct(StoreCartServices $services)
{
$this->services = $services;
}
/**
* 购物车 列表
* @param Request $request
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function lst(Request $request)
{
[$status] = $request->postMore([
['status', 1],//购物车商品状态
], true);
return app('json')->success($this->services->getUserCartList($request->uid(), $status));
}
/**
* 购物车 添加
* @param Request $request
* @return mixed
* @throws \Psr\SimpleCache\InvalidArgumentException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function add(Request $request)
{
$where = $request->postMore([
[['productId', 'd'], 0],//普通商品编号
[['cartNum', 'd'], 1], //购物车数量
['uniqueId', ''],//属性唯一值
[['new', 'd'], 0],// 1 加入购物车直接购买 0 加入购物车
[['is_new', 'd'], 0],// 1 加入购物车直接购买 0 加入购物车
[['combinationId', 'd'], 0],//拼团商品编号
[['secKillId', 'd'], 0],//秒杀商品编号
[['bargainId', 'd'], 0],//砍价商品编号
[['advanceId', 'd'], 0],//预售商品编号
[['pinkId', 'd'], 0],//拼团团队ID
]);
if ($where['is_new'] || $where['new']) $new = true;
else $new = false;
/** @var StoreCartServices $cartService */
$cartService = app()->make(StoreCartServices::class);
if (!$where['productId'] || !is_numeric($where['productId'])) return app('json')->fail(100100);
$type = 0;
if ($where['secKillId']) {
$type = 1;
} elseif ($where['bargainId']) {
$type = 2;
} elseif ($where['combinationId']) {
$type = 3;
if ($where['pinkId']) {
/** @var StorePinkServices $pinkServices */
$pinkServices = app()->make(StorePinkServices::class);
if ($pinkServices->isPinkStatus($where['pinkId'])) return app('json')->fail(410315);
}
} elseif ($where['advanceId']) {
$type = 6;
}
$res = $cartService->setCart($request->uid(), $where['productId'], $where['cartNum'], $where['uniqueId'], $type, $new, $where['combinationId'], $where['secKillId'], $where['bargainId'], $where['advanceId']);
if (!$res) return app('json')->fail(100022);
else return app('json')->success(['cartId' => $res]);
}
/**
* 购物车 删除商品
* @param Request $request
* @return mixed
*/
public function del(Request $request)
{
$where = $request->postMore([
['ids', ''],//购物车编号
]);
$where['ids'] = is_array($where['ids']) ? $where['ids'] : explode(',', $where['ids']);
if (!count($where['ids']))
return app('json')->fail(100100);
if ($this->services->removeUserCart((int)$request->uid(), $where['ids']))
return app('json')->success(100002);
return app('json')->fail(100008);
}
/**
* 购物车 修改商品数量
* @param Request $request
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function num(Request $request)
{
$where = $request->postMore([
['id', 0],//购物车编号
['number', 0],//购物车编号
]);
if (!$where['id'] || !is_numeric($where['id'])) return app('json')->fail(100100);
if (!$where['number'] || !is_numeric($where['number'])) return app('json')->fail(100007);
$res = $this->services->changeUserCartNum($where['id'], $where['number'], $request->uid());
if ($res) return app('json')->success(100001);
else return app('json')->fail(100007);
}
/**
* 购物车 统计 数量 价格
* @param Request $request
* @return mixed
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function count(Request $request)
{
[$numType] = $request->postMore([
['numType', true],//购物车编号
], true);
$uid = (int)$request->uid();
return app('json')->success($this->services->getUserCartCount($uid, $numType));
}
/**
* 购物车重选
* @param Request $request
* @return mixed
*/
public function reChange(Request $request)
{
[$cart_id, $product_id, $unique] = $request->postMore([
['cart_id', 0],
['product_id', 0],
['unique', '']
], true);
$this->services->modifyCart($cart_id, $product_id, $unique);
return app('json')->success(410225);
}
}