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.
 
 

63 lines
2.2 KiB

<?php
namespace App\Controller\v3;
use App\Constants\v3\ErrorCode;
use App\Controller\BaseController;
use App\Exception\ErrorCodeException;
use App\Model\v3\ShoppingCart;
use App\Service\v3\Interfaces\OrderOnlineServiceInterface;
use Hyperf\Di\Annotation\Inject;
use App\Service\v3\Interfaces\ShopCartUpdateServiceInterface;
use App\Request\v3\ShopCartUpdateRequest;
class ShopCartUpdateController extends BaseController
{
/**
* @Inject
* @var OrderOnlineServiceInterface
*/
protected $orderOnlineService;
/**
* @Inject
* @var ShopCartUpdateServiceInterface
*/
protected $shopCarServiceUpdate;
public function update(ShopCartUpdateRequest $request)
{
$userId = $this->request->input('user_id',0);
$goodsId = $this->request->input('goods_id',0);
$num = $this->request->input('num',0);
$activityType = $this->request->input('activity_type',1);
if($num <= 0){
$shopcartIds = ShoppingCart::query()->where([
'user_id' => $userId,
'goods_id' => $goodsId,
'activity_type' => $activityType
])
->value('id');
$res = $this->shopCarServiceUpdate->undo($shopcartIds);
}else{
if ($activityType == 2) {
// TODO 校验当前用户今天是否超过了购买活动秒杀商品的(特定价格)的订单笔数
if (!$this->orderOnlineService->checkIfBuyFlashGoodsToday($userId)) {
throw new ErrorCodeException(
ErrorCode::ORDER_ONLINE_LIMIT_BUY_COUNT,
'[' . env('LIMIT_BUY_COUNT') . ']',
['params' => $this->request->all(), 'limit_prices' => env('LIMIT_BUY_COUNT_GOODS_PRICES')]
);
}
}
$res = $this->shopCarServiceUpdate->do($userId,$goodsId,$num,$activityType);
}
return $this->success($res);
}
public function delete()
{
$shopcartIds = $this->request->input('shopcart_ids','');
$res = $this->shopCarServiceUpdate->undo($shopcartIds);
return $this->success($res);
}
}