diff --git a/beike/Admin/Http/Controllers/PagesController.php b/beike/Admin/Http/Controllers/PagesController.php index ea631417..d473d0ef 100644 --- a/beike/Admin/Http/Controllers/PagesController.php +++ b/beike/Admin/Http/Controllers/PagesController.php @@ -12,6 +12,7 @@ namespace Beike\Admin\Http\Controllers; use Beike\Models\Page; +use Beike\Repositories\ProductRepo; use Illuminate\Http\Request; use Beike\Admin\Repositories\PageRepo; @@ -59,4 +60,27 @@ class PagesController PageRepo::deleteById($pageId); return redirect()->to(admin_route('pages.index')); } + + /** + * 搜索页面标题自动完成 + * @param Request $request + * @return array + */ + public function autocomplete(Request $request): array + { + $products = PageRepo::autocomplete($request->get('name') ?? ''); + return json_success('获取成功!', $products); + } + + + /** + * 获取单页名称 + * @param Page $page + * @return array + */ + public function name(Page $page): array + { + $name = $page->description->title ?? ''; + return json_success('获取成功', $name); + } } diff --git a/beike/Admin/Repositories/PageRepo.php b/beike/Admin/Repositories/PageRepo.php index 9161e501..c99c4d11 100644 --- a/beike/Admin/Repositories/PageRepo.php +++ b/beike/Admin/Repositories/PageRepo.php @@ -12,6 +12,7 @@ namespace Beike\Admin\Repositories; use Beike\Models\Page; +use Beike\Models\Product; use Illuminate\Contracts\Pagination\LengthAwarePaginator; class PageRepo @@ -69,4 +70,28 @@ class PageRepo $page->descriptions()->delete(); $page->delete(); } + + + /** + * 页面内容自动完成 + * + * @param $name + * @return array + */ + public static function autocomplete($name): array + { + $pages = Page::query()->with('description') + ->whereHas('description', function ($query) use ($name) { + $query->where('title', 'like', "{$name}%"); + })->limit(10)->get(); + $results = []; + foreach ($pages as $page) { + $results[] = [ + 'id' => $page->id, + 'title' => $page->description->title, + 'status' => $page->active + ]; + } + return $results; + } } diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 0f2a8a84..d4afff12 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -9,7 +9,6 @@ Route::prefix($adminName) ->middleware(['admin']) ->name("{$adminName}.") ->group(function () { - Route::get('brands/autocomplete', [Controllers\BrandController::class, 'autocomplete'])->name('brands.autocomplete'); Route::get('login', [Controllers\LoginController::class, 'show'])->name('login.show'); Route::post('login', [Controllers\LoginController::class, 'store'])->name('login.store'); @@ -17,18 +16,17 @@ Route::prefix($adminName) Route::post('forgotten/send_code', [ForgottenController::class, 'sendVerifyCode'])->name('forgotten.send_code'); Route::post('forgotten/password', [ForgottenController::class, 'changePassword'])->name('forgotten.password'); - Route::get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete'); - Route::get('products/autocomplete', [Controllers\ProductController::class, 'autocomplete'])->name('products.autocomplete'); - Route::middleware('admin_auth:' . \Beike\Models\AdminUser::AUTH_GUARD) ->group(function () { Route::get('/', [Controllers\HomeController::class, 'index'])->name('home.index'); Route::get('brands/names', [Controllers\BrandController::class, 'getNames'])->name('brands.names'); + Route::get('brands/autocomplete', [Controllers\BrandController::class, 'autocomplete'])->name('brands.autocomplete'); Route::resource('brands', Controllers\BrandController::class); Route::get('brands/{id}/name', [Controllers\BrandController::class, 'name'])->name('brands.name'); Route::resource('categories', Controllers\CategoryController::class); + Route::get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete'); Route::get('categories/{id}/name', [Controllers\CategoryController::class, 'name'])->name('categories.name'); Route::resource('customers', Controllers\CustomerController::class); @@ -80,8 +78,10 @@ Route::prefix($adminName) // 单页 Route::middleware('can:pages_index')->get('pages', [Controllers\PagesController::class, 'index'])->name('pages.index'); + Route::middleware('can:pages_index')->get('pages/autocomplete', [Controllers\PagesController::class, 'autocomplete'])->name('pages.autocomplete'); Route::middleware('can:pages_create')->get('pages/create', [Controllers\PagesController::class, 'create'])->name('pages.create'); Route::middleware('can:pages_show')->get('pages/{code}/edit', [Controllers\PagesController::class, 'edit'])->name('pages.edit'); + Route::middleware('can:pages_show')->get('pages/{page}/name', [Controllers\PagesController::class, 'name'])->name('pages.name'); Route::middleware('can:pages_create')->post('pages', [Controllers\PagesController::class, 'store'])->name('pages.store'); Route::middleware('can:pages_update')->put('pages/{page}', [Controllers\PagesController::class, 'update'])->name('pages.update'); Route::middleware('can:pages_delete')->delete('pages/{page}', [Controllers\PagesController::class, 'destroy'])->name('pages.destroy'); @@ -92,6 +92,7 @@ Route::prefix($adminName) Route::get('products/trashed', [Controllers\ProductController::class, 'trashed'])->name('products.trashed'); Route::get('products/{id}/name', [Controllers\ProductController::class, 'name'])->name('products.name'); Route::get('products/names', [Controllers\ProductController::class, 'getNames'])->name('products.names'); + Route::get('products/autocomplete', [Controllers\ProductController::class, 'autocomplete'])->name('products.autocomplete'); Route::resource('products', Controllers\ProductController::class); Route::resource('regions', Controllers\RegionController::class);