109 lines
3.3 KiB
PHP
109 lines
3.3 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers;
|
||
|
||
use App\Models\Cart;
|
||
use App\Models\Goods;
|
||
use App\Models\GoodsParams;
|
||
use Auth;
|
||
use Illuminate\Http\Request;
|
||
use Illuminate\Support\Facades\View;
|
||
|
||
class CartController extends Controller
|
||
{
|
||
|
||
public function __construct(Request $request)
|
||
{
|
||
$this->middleware('auth');
|
||
View::share('nav', 1);
|
||
}
|
||
|
||
public function index(Request $request)
|
||
{
|
||
$lists = Cart::mine()->orderBy('id', 'desc')->get();
|
||
$carts = [];
|
||
foreach ($lists as $cart) {
|
||
if ($cart->params->stock < 1) {
|
||
$cart->delete();
|
||
} else {
|
||
if ($cart->number > $cart->params->stock) {
|
||
$cart->number = $cart->params->stock;
|
||
$cart->save();
|
||
}
|
||
$carts[] = $cart;
|
||
}
|
||
}
|
||
$recommends = Goods::where('status', 1)->where('is_recommend', 1)->take(6)->orderBy('created_at', 'desc')->get();
|
||
return view('cart.index', compact('carts', 'recommends'));
|
||
}
|
||
|
||
public function setnum(Request $request)
|
||
{
|
||
$cart = Cart::find($request->id);
|
||
$cart->number = $request->number;
|
||
$cart->save();
|
||
}
|
||
|
||
public function sure(Request $request)
|
||
{
|
||
$data = array();
|
||
foreach (explode(',', $request->cart_id) as $key => $value) {
|
||
$cart = Cart::find($value);
|
||
if ($cart) {
|
||
$data['details'][0][$value]['cart_id'] = $value;
|
||
$data['details'][0][$value]['params_id'] = $cart->params_id;
|
||
$data['details'][0][$value]['number'] = $cart->number;
|
||
}
|
||
}
|
||
$data['item']['id'] = 0;
|
||
$data['item']['type'] = 'MEMBER';
|
||
return redirect()->route('orders.create', $data);
|
||
|
||
}
|
||
|
||
public function delete(Request $request)
|
||
{
|
||
$id = $request->id;
|
||
$cart = Cart::find($id);
|
||
if ($cart->delete()) {
|
||
return $this->success('删除成功');
|
||
} else {
|
||
return $this->error('删除失败');
|
||
}
|
||
}
|
||
|
||
//加入购物车
|
||
public function store(Request $request)
|
||
{
|
||
if (Cart::where('user_id', Auth::id())->count() == 99) {
|
||
return ['code' => 0, 'msg' => '您的购物车商品数量已达上限99个'];
|
||
}
|
||
foreach ($request->details as $key => $details) {
|
||
foreach ($details as $detail) {
|
||
$user_id = Auth::id();
|
||
$result = Cart::where(['user_id' => $user_id, 'params_id' => $detail['params_id']])->first();
|
||
$params = GoodsParams::find($detail['params_id']);
|
||
if ($result) {
|
||
$result->number += $detail['number'];
|
||
$result->save();
|
||
} else {
|
||
$result = Cart::create([
|
||
'user_id' => Auth::id(),
|
||
'params_id' => $detail['params_id'],
|
||
'goods_id' => $params->goods_id, //保存goods_id是为了下架商品时,删除购物车
|
||
'number' => $detail['number'],
|
||
]);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
if ($result) {
|
||
return $this->success('成功加入购物车');
|
||
} else {
|
||
return $this->error('加入购物车失败');
|
||
}
|
||
|
||
}
|
||
}
|