wyyl/beike/API/Controllers/Admin/CategoryController.php

113 lines
2.7 KiB
PHP

<?php
/**
* CategoryController.php
*
* @copyright 2023 beikeshop.com - All Rights Reserved
* @link https://beikeshop.com
* @author Edward Yang <yangjin@guangda.work>
* @created 2023-04-20 17:00:40
* @modified 2023-04-20 17:00:40
*/
namespace Beike\API\Controllers\Admin;
use Beike\Admin\Http\Requests\CategoryRequest;
use Beike\Admin\Http\Resources\CategoryResource;
use Beike\Admin\Services\CategoryService;
use Beike\Models\Category;
use Beike\Repositories\CategoryRepo;
use Illuminate\Http\Request;
class CategoryController
{
/**
* 商品分类列表
*
* @return mixed
*/
public function index()
{
$categories = CategoryRepo::getAdminList();
$data = [
'categories' => CategoryResource::collection($categories),
];
return hook_filter('admin_api.category.index.data', $data);
}
/**
* 单个商品分类
*
* @param Request $request
* @param Category $category
* @return mixed
*/
public function show(Request $request, Category $category)
{
if (! $category->active) {
return [];
}
$category->load('description');
return hook_filter('admin_api.category.show.data', $category);
}
/**
* 保存商品分类
*
* @param CategoryRequest $request
* @return array
* @throws \Exception
*/
public function store(CategoryRequest $request)
{
$requestData = $request->all();
$category = (new CategoryService())->createOrUpdate($requestData, null);
$data = [
'category' => $category,
'request_data' => $requestData,
];
hook_action('admin_api.category.save.after', $data);
return $data;
}
/**
* 更新产品分类
*
* @param CategoryRequest $request
* @param Category $category
* @return array
* @throws \Exception
*/
public function update(CategoryRequest $request, Category $category)
{
$requestData = $request->all();
$category = (new CategoryService())->createOrUpdate($requestData, $category);
$data = [
'category' => $category,
'request_data' => $requestData,
];
hook_action('admin_api.category.save.after', $data);
return $data;
}
/**
* 删除分类
* @param Request $request
* @param Category $category
* @return array
* @throws \Exception
*/
public function destroy(Request $request, Category $category): array
{
CategoryRepo::delete($category);
hook_action('admin.category.destroy.after', $category);
return json_success(trans('common.deleted_success'));
}
}