1
0
Files
lkafu/app/Http/Controllers/CartController.php
2020-08-06 14:45:56 +08:00

109 lines
3.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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('加入购物车失败');
}
}
}