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

114 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Category;
use App\Models\Goods;
use Auth;
use Illuminate\Http\Request;
class GoodsController extends Controller
{
public function __construct(Request $request)
{
view()->share('nav', 1);
}
public function show(Goods $good)
{
$params = $good->params()->where('stock', '>', 0)->orderBy('price', 'asc')->get();
$first = $good->params()->orderBy('original', 'asc')->first();
$user = Auth::user();
return view('goods.show', compact('good', 'params', 'user', 'first'));
}
public function category(Request $request)
{
$category_id = $request->category_id ?? '';
if ($category_id) {
$category = Category::find($category_id);
} else {
$category = '';
}
$categorys = Category::where('parent_id', 0)->where('type', 'goods')->get();
return view('goods.category', compact('categorys', 'category', 'category_id'));
}
public function lists(Request $request)
{
$category_id = $request->get('category_id', '');
$title = $request->get('title', '');
$page = $request->get('page', '');
$price = $request->get('price', '');
$sold = $request->get('sold', '');
$goods = Goods::where('status', 1)
->when($category_id, function ($query) use ($category_id) {
$ids = Category::where('id', $category_id)->orWhere('parent_id', $category_id)->pluck('id');
return $query->whereIn('category_id', $ids);
})
->when($title, function ($query) use ($title) {
return $query->where('title', 'like', "%$title%");
})
->when($price, function ($q) use ($price) {return $q->orderBy('price', $price);})
->when($sold, function ($q) use ($sold) {return $q->orderBy('sold', $sold);})
->orderBy('sort', 'asc')
->orderBy('created_at', 'desc')
->paginate(10);
if ($page > 1) {
if ($goods->count() > 0) {
$html = response(view('goods.more', compact('goods')))->getContent();
return $this->success($html);
} else {
return $this->error('已经到最后一页');
}
}
$parent_id = 0;
$category = '';
$app_title = '商品列表';
$parent_cate = '';
if ($category_id) {
$parent_cate = $category = Category::find($category_id);
if ($category->parent_id) {
$app_title = $category->parent->title . '--' . $category->title;
$parent_cate = $category->parent;
$parent_id = $parent_cate->id;
} else {
$parent_id = $category->id;
$app_title = $category->title;
}
}
$categorys = Category::where('parent_id', $parent_id)->where('type', 'goods')->get();
view()->share('app_title', $app_title);
return view('goods.lists', compact('goods', 'categorys', 'sold', 'price', 'category_id', 'title', 'parent_cate'));
}
//收藏
public function favorite(Goods $goods)
{
$user = Auth::user();
if (!$user) {
return $this->error('请登录后在进行此操作', route('login'));
}
if ($user->hasFavorited($goods)) {
$result = $user->unfavorite($goods);
$text = '取消收藏';
} else {
$result = $user->favorite($goods);
$text = '收藏';
}
if ($result) {
return $this->success($text . '成功', route('goods.show', $goods));
} else {
return $this->error($text . '失败');
}
}
}