88 lines
2.5 KiB
PHP
88 lines
2.5 KiB
PHP
<?php
|
|
|
|
/**
|
|
* 文件功能:后台商店商品管理控制器(站长功能)
|
|
*
|
|
* 提供商店商品的查看、编辑、切换上下架、删除等 CRUD 功能。
|
|
* 仅 superlevel 及以上可访问,id=1 超级站长才能新增/删除。
|
|
*
|
|
* @author ChatRoom Laravel
|
|
*
|
|
* @version 1.0.0
|
|
*/
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\StoreShopItemRequest;
|
|
use App\Http\Requests\UpdateShopItemRequest;
|
|
use App\Models\ShopItem;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\View\View;
|
|
|
|
class ShopItemController extends Controller
|
|
{
|
|
/**
|
|
* 商品列表页(所有 superlevel 以上可查看)
|
|
*/
|
|
public function index(): View
|
|
{
|
|
$items = ShopItem::orderBy('sort_order')->orderBy('id')->get();
|
|
|
|
return view('admin.shop.index', compact('items'));
|
|
}
|
|
|
|
/**
|
|
* 新增商品(仅 id=1 超级站长)
|
|
*/
|
|
public function store(StoreShopItemRequest $request): RedirectResponse
|
|
{
|
|
$data = $request->validated();
|
|
ShopItem::create($data);
|
|
|
|
return redirect()->route('admin.shop.index')->with('success', '商品「'.$data['name'].'」创建成功!');
|
|
}
|
|
|
|
/**
|
|
* 更新商品信息
|
|
*
|
|
* @param ShopItem $shopItem 路由模型自动注入
|
|
*/
|
|
public function update(UpdateShopItemRequest $request, ShopItem $shopItem): RedirectResponse
|
|
{
|
|
$data = $request->validated();
|
|
$shopItem->update($data);
|
|
|
|
return redirect()->route('admin.shop.index')->with('success', '商品「'.$shopItem->name.'」更新成功!');
|
|
}
|
|
|
|
/**
|
|
* 切换商品上下架状态
|
|
*
|
|
* @param ShopItem $shopItem 路由模型自动注入
|
|
*/
|
|
public function toggle(ShopItem $shopItem): RedirectResponse
|
|
{
|
|
$shopItem->update(['is_active' => ! $shopItem->is_active]);
|
|
$status = $shopItem->is_active ? '上架' : '下架';
|
|
|
|
return redirect()->route('admin.shop.index')->with('success', "「{$shopItem->name}」已{$status}。");
|
|
}
|
|
|
|
/**
|
|
* 删除商品(仅 id=1 超级站长)
|
|
*
|
|
* @param ShopItem $shopItem 路由模型自动注入
|
|
*/
|
|
public function destroy(ShopItem $shopItem): RedirectResponse
|
|
{
|
|
abort_unless(Auth::id() === 1, 403);
|
|
|
|
$name = $shopItem->name;
|
|
$shopItem->delete();
|
|
|
|
return redirect()->route('admin.shop.index')->with('success', "「{$name}」已删除。");
|
|
}
|
|
}
|