使用laravel/pint格式化代码

This commit is contained in:
Edward Yang 2023-01-10 14:38:26 +08:00
parent 0911ba6102
commit 434d94c01d
787 changed files with 11696 additions and 11700 deletions

View File

@ -10,7 +10,7 @@ class Kernel extends ConsoleKernel
/** /**
* Define the application's command schedule. * Define the application's command schedule.
* *
* @param \Illuminate\Console\Scheduling\Schedule $schedule * @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void * @return void
*/ */
protected function schedule(Schedule $schedule) protected function schedule(Schedule $schedule)
@ -25,7 +25,7 @@ class Kernel extends ConsoleKernel
*/ */
protected function commands() protected function commands()
{ {
$this->load(__DIR__.'/Commands'); $this->load(__DIR__ . '/Commands');
require base_path('routes/console.php'); require base_path('routes/console.php');
} }

View File

@ -2,10 +2,10 @@
namespace App\Exceptions; namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Foundation\Exceptions\RegisterErrorViewPaths;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Throwable; use Throwable;
use Illuminate\Foundation\Exceptions\RegisterErrorViewPaths;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
class Handler extends ExceptionHandler class Handler extends ExceptionHandler
{ {
@ -41,28 +41,26 @@ class Handler extends ExceptionHandler
}); });
} }
/** /**
* Convert the given exception to an array. * Convert the given exception to an array.
* *
* @param \Throwable $e * @param \Throwable $e
* @return array * @return array
*/ */
protected function convertExceptionToArray(Throwable $e) protected function convertExceptionToArray(Throwable $e)
{ {
return config('app.debug') ? [ return config('app.debug') ? [
'message' => $e->getMessage(), 'message' => $e->getMessage(),
'exception' => get_class($e), 'exception' => get_class($e),
'file' => $e->getFile(), 'file' => $e->getFile(),
'line' => $e->getLine(), 'line' => $e->getLine(),
'trace' => collect($e->getTrace())->map(fn ($trace) => Arr::except($trace, ['args']))->all(), 'trace' => collect($e->getTrace())->map(fn ($trace) => Arr::except($trace, ['args']))->all(),
] : [ ] : [
'message' => $this->isHttpException($e) ? $e->getMessage() : 'Server Error', 'message' => $this->isHttpException($e) ? $e->getMessage() : 'Server Error',
]; ];
} }
/** /**
* 自定义错误信息页面, 前台与后台不同, 需要分开定义 * 自定义错误信息页面, 前台与后台不同, 需要分开定义
*/ */

View File

@ -28,7 +28,7 @@ class Kernel extends HttpKernel
* @var array * @var array
*/ */
protected $middlewareGroups = [ protected $middlewareGroups = [
'shop' => [ 'shop' => [
\App\Http\Middleware\EncryptCookies::class, \App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class, \Illuminate\Session\Middleware\StartSession::class,
@ -39,7 +39,7 @@ class Kernel extends HttpKernel
\App\Http\Middleware\VerifyCsrfToken::class, \App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Routing\Middleware\SubstituteBindings::class,
], ],
'admin' => [ 'admin' => [
\App\Http\Middleware\EncryptCookies::class, \App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class, \Illuminate\Session\Middleware\StartSession::class,
@ -55,7 +55,7 @@ class Kernel extends HttpKernel
\Illuminate\View\Middleware\ShareErrorsFromSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class,
], ],
'api' => [ 'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api', 'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Routing\Middleware\SubstituteBindings::class,
@ -70,16 +70,16 @@ class Kernel extends HttpKernel
* @var array * @var array
*/ */
protected $routeMiddleware = [ protected $routeMiddleware = [
'admin_auth' => \App\Http\Middleware\Authenticate::class, 'admin_auth' => \App\Http\Middleware\Authenticate::class,
'shop_auth' => \App\Http\Middleware\ShopAuthenticate::class, 'shop_auth' => \App\Http\Middleware\ShopAuthenticate::class,
'checkout_auth' => \App\Http\Middleware\CheckoutAuthenticate::class, 'checkout_auth' => \App\Http\Middleware\CheckoutAuthenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
]; ];
} }

View File

@ -9,7 +9,7 @@ class Authenticate extends Middleware
/** /**
* Get the path the user should be redirected to when they are not authenticated. * Get the path the user should be redirected to when they are not authenticated.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return string|null * @return string|null
*/ */
protected function redirectTo($request) protected function redirectTo($request)

View File

@ -3,17 +3,17 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Beike\Models\Customer; use Beike\Models\Customer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\AuthenticationException; use Illuminate\Auth\AuthenticationException;
use Illuminate\Auth\Middleware\Authenticate as Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class CheckoutAuthenticate extends Middleware class CheckoutAuthenticate extends Middleware
{ {
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param Request $request * @param Request $request
* @param \Closure $next * @param \Closure $next
* @param string[] ...$guards * @param string[] ...$guards
* @return mixed * @return mixed
@ -31,13 +31,13 @@ class CheckoutAuthenticate extends Middleware
$customer = current_customer(); $customer = current_customer();
if ($customer->status != 1) { if ($customer->status != 1) {
Auth::guard(Customer::AUTH_GUARD)->logout(); Auth::guard(Customer::AUTH_GUARD)->logout();
return redirect(shop_route('login.index')); return redirect(shop_route('login.index'));
} }
return $next($request); return $next($request);
} }
/** /**
* Get the path the user should be redirected to when they are not authenticated. * Get the path the user should be redirected to when they are not authenticated.
* *
@ -45,17 +45,16 @@ class CheckoutAuthenticate extends Middleware
*/ */
protected function redirectTo($request) protected function redirectTo($request)
{ {
if (!$request->expectsJson()) { if (! $request->expectsJson()) {
return shop_route('login.index'); return shop_route('login.index');
} }
} }
/** /**
* Handle an unauthenticated user. * Handle an unauthenticated user.
* *
* @param Request $request * @param Request $request
* @param array $guards * @param array $guards
* @return void * @return void
* *
* @throws AuthenticationException * @throws AuthenticationException
@ -65,6 +64,7 @@ class CheckoutAuthenticate extends Middleware
if (system_setting('base.guest_checkout', 1)) { if (system_setting('base.guest_checkout', 1)) {
return; return;
} }
throw new AuthenticationException( throw new AuthenticationException(
trans('common.unauthenticated'), $guards, $this->redirectTo($request) trans('common.unauthenticated'), $guards, $this->redirectTo($request)
); );

View File

@ -12,9 +12,9 @@ class RedirectIfAuthenticated
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \Closure $next * @param \Closure $next
* @param string|null ...$guards * @param string|null ...$guards
* @return mixed * @return mixed
*/ */
public function handle(Request $request, Closure $next, ...$guards) public function handle(Request $request, Closure $next, ...$guards)

View File

@ -23,6 +23,7 @@ class SetLocaleAdmin
} else { } else {
App::setLocale('en'); App::setLocale('en');
} }
return $next($request); return $next($request);
} }
} }

View File

@ -25,6 +25,7 @@ class SetLocaleFromSession
App::setLocale($configLocale); App::setLocale($configLocale);
session(['locale' => $configLocale]); session(['locale' => $configLocale]);
} }
return $next($request); return $next($request);
} }
} }

View File

@ -2,10 +2,10 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Beike\Installer\Helpers\EnvironmentManager;
use Closure; use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Beike\Installer\Helpers\EnvironmentManager;
class SetLocaleInstaller class SetLocaleInstaller
{ {
@ -18,9 +18,9 @@ class SetLocaleInstaller
*/ */
public function handle(Request $request, Closure $next) public function handle(Request $request, Closure $next)
{ {
$locale = $_COOKIE['locale'] ?? 'en'; $locale = $_COOKIE['locale'] ?? 'en';
$languageDir = base_path('beike/Installer/Lang'); $languageDir = base_path('beike/Installer/Lang');
$languages = array_values(array_diff(scandir($languageDir), array('..', '.'))); $languages = array_values(array_diff(scandir($languageDir), ['..', '.']));
(new EnvironmentManager)->getEnvContent(); (new EnvironmentManager)->getEnvContent();
@ -29,6 +29,7 @@ class SetLocaleInstaller
} else { } else {
App::setLocale('en'); App::setLocale('en');
} }
return $next($request); return $next($request);
} }
} }

View File

@ -11,19 +11,19 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Beike\Repositories\FooterRepo;
use Beike\Repositories\LanguageRepo;
use Beike\Repositories\MenuRepo;
use Closure; use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Beike\Repositories\MenuRepo;
use Beike\Repositories\FooterRepo;
use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\View;
use Beike\Repositories\CategoryRepo;
use Beike\Repositories\LanguageRepo;
class ShareViewData class ShareViewData
{ {
public function handle(Request $request, Closure $next) public function handle(Request $request, Closure $next)
{ {
$this->loadShopShareViewData(); $this->loadShopShareViewData();
return $next($request); return $next($request);
} }
@ -33,7 +33,7 @@ class ShareViewData
protected function loadShopShareViewData() protected function loadShopShareViewData()
{ {
if (is_admin()) { if (is_admin()) {
$adminLanguages = $this->handleAdminLanguages(); $adminLanguages = $this->handleAdminLanguages();
$loggedAdminUser = current_user(); $loggedAdminUser = current_user();
if ($loggedAdminUser) { if ($loggedAdminUser) {
$currentLanguage = $loggedAdminUser->locale ?: 'en'; $currentLanguage = $loggedAdminUser->locale ?: 'en';
@ -49,7 +49,6 @@ class ShareViewData
} }
} }
/** /**
* 处理后台语言包列表 * 处理后台语言包列表
* *
@ -57,19 +56,20 @@ class ShareViewData
*/ */
private function handleAdminLanguages(): array private function handleAdminLanguages(): array
{ {
$items = []; $items = [];
$languages = admin_languages(); $languages = admin_languages();
foreach ($languages as $language) { foreach ($languages as $language) {
$path = lang_path("{$language}/admin/base.php"); $path = lang_path("{$language}/admin/base.php");
if (file_exists($path)) { if (file_exists($path)) {
$baseData = require_once($path); $baseData = require_once $path;
} }
$name = $baseData['name'] ?? ''; $name = $baseData['name'] ?? '';
$items[] = [ $items[] = [
'code' => $language, 'code' => $language,
'name' => $name, 'name' => $name,
]; ];
} }
return $items; return $items;
} }
} }

View File

@ -3,17 +3,17 @@
namespace App\Http\Middleware; namespace App\Http\Middleware;
use Beike\Models\Customer; use Beike\Models\Customer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\AuthenticationException; use Illuminate\Auth\AuthenticationException;
use Illuminate\Auth\Middleware\Authenticate as Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ShopAuthenticate extends Middleware class ShopAuthenticate extends Middleware
{ {
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param Request $request * @param Request $request
* @param \Closure $next * @param \Closure $next
* @param string[] ...$guards * @param string[] ...$guards
* @return mixed * @return mixed
@ -27,13 +27,13 @@ class ShopAuthenticate extends Middleware
$customer = current_customer(); $customer = current_customer();
if ($customer->status != 1) { if ($customer->status != 1) {
Auth::guard(Customer::AUTH_GUARD)->logout(); Auth::guard(Customer::AUTH_GUARD)->logout();
return redirect(shop_route('login.index')); return redirect(shop_route('login.index'));
} }
return $next($request); return $next($request);
} }
/** /**
* Get the path the user should be redirected to when they are not authenticated. * Get the path the user should be redirected to when they are not authenticated.
* *
@ -41,17 +41,16 @@ class ShopAuthenticate extends Middleware
*/ */
protected function redirectTo($request) protected function redirectTo($request)
{ {
if (!$request->expectsJson()) { if (! $request->expectsJson()) {
return shop_route('login.index'); return shop_route('login.index');
} }
} }
/** /**
* Handle an unauthenticated user. * Handle an unauthenticated user.
* *
* @param Request $request * @param Request $request
* @param array $guards * @param array $guards
* @return void * @return void
* *
* @throws AuthenticationException * @throws AuthenticationException

View File

@ -20,9 +20,9 @@ class TrustProxies extends Middleware
* @var int * @var int
*/ */
protected $headers = protected $headers =
Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST | Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO | Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB; Request::HEADER_X_FORWARDED_AWS_ELB;
} }

View File

@ -24,7 +24,7 @@ class ContactRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'name'=>'required|string|max:100|min:10' 'name' => 'required|string|max:100|min:10',
]; ];
} }
} }

View File

@ -11,16 +11,16 @@ class ProductSeeder extends Seeder
public function run() public function run()
{ {
$faker = \Faker\Factory::create(); $faker = \Faker\Factory::create();
$date = Carbon::create(2021); $date = Carbon::create(2021);
for ($i = 0; $i < 1000; $i++) { for ($i = 0; $i < 1000; $i++) {
$time = $date->addMinute(); $time = $date->addMinute();
$productId = DB::table('products')->insertGetId([ $productId = DB::table('products')->insertGetId([
'image' => $faker->imageUrl(100, 100), 'image' => $faker->imageUrl(100, 100),
'video' => '', 'video' => '',
'position' => 0, 'position' => 0,
'active' => 1, 'active' => 1,
'variables' => null, 'variables' => null,
'created_at' => $time, 'created_at' => $time,
'updated_at' => $time, 'updated_at' => $time,
]); ]);
@ -28,34 +28,34 @@ class ProductSeeder extends Seeder
$descriptions = []; $descriptions = [];
foreach (locales() as $locale) { foreach (locales() as $locale) {
$descriptions[] = [ $descriptions[] = [
'product_id' => $productId, 'product_id' => $productId,
'locale' => $locale['code'], 'locale' => $locale['code'],
'name' => $faker->words(5, true), 'name' => $faker->words(5, true),
'content' => $faker->paragraphs(6, true), 'content' => $faker->paragraphs(6, true),
'meta_title' => $faker->words(10, true), 'meta_title' => $faker->words(10, true),
'meta_description' => $faker->sentence(10), 'meta_description' => $faker->sentence(10),
'meta_keywords' => $faker->words(10, true), 'meta_keywords' => $faker->words(10, true),
'created_at' => $time, 'created_at' => $time,
'updated_at' => $time, 'updated_at' => $time,
]; ];
} }
DB::table('product_descriptions')->insert($descriptions); DB::table('product_descriptions')->insert($descriptions);
$costPrice = $faker->numberBetween(100, 500); $costPrice = $faker->numberBetween(100, 500);
DB::table('product_skus')->insert([ DB::table('product_skus')->insert([
'product_id' => $productId, 'product_id' => $productId,
'variants' => null, 'variants' => null,
'position' => 0, 'position' => 0,
'image' => $faker->imageUrl(100, 100), 'image' => $faker->imageUrl(100, 100),
'model' => $faker->isbn10(), 'model' => $faker->isbn10(),
'sku' => $faker->isbn10(), 'sku' => $faker->isbn10(),
'price' => $costPrice + 10, 'price' => $costPrice + 10,
'origin_price' => $costPrice + 50, 'origin_price' => $costPrice + 50,
'cost_price' => $costPrice, 'cost_price' => $costPrice,
'quantity' => $faker->numberBetween(100, 1000), 'quantity' => $faker->numberBetween(100, 1000),
'is_default' => 1, 'is_default' => 1,
'created_at' => $time, 'created_at' => $time,
'updated_at' => $time, 'updated_at' => $time,
]); ]);
} }
} }

View File

@ -21,7 +21,7 @@ class AddressController extends Controller
public function index(Request $request, int $customerId) public function index(Request $request, int $customerId)
{ {
$addresses = AddressRepo::listByCustomer($customerId); $addresses = AddressRepo::listByCustomer($customerId);
$data = [ $data = [
'addresses' => AddressResource::collection($addresses), 'addresses' => AddressResource::collection($addresses),
]; ];
@ -31,6 +31,7 @@ class AddressController extends Controller
public function store(Request $request, int $customerId) public function store(Request $request, int $customerId)
{ {
$address = AddressService::addForCustomer($customerId, $request->all()); $address = AddressService::addForCustomer($customerId, $request->all());
return json_success(trans('common.created_success'), $address); return json_success(trans('common.created_success'), $address);
} }

View File

@ -12,44 +12,46 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Requests\AdminRoleRequest; use Beike\Admin\Http\Requests\AdminRoleRequest;
use Illuminate\Http\Request;
use Spatie\Permission\Models\Role;
use Illuminate\Support\Facades\Cache;
use Beike\Admin\Repositories\AdminRoleRepo; use Beike\Admin\Repositories\AdminRoleRepo;
use Beike\Admin\Repositories\PermissionRepo; use Beike\Admin\Repositories\PermissionRepo;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Spatie\Permission\Models\Role;
class AdminRoleController extends Controller class AdminRoleController extends Controller
{ {
public function index() public function index()
{ {
$data = [ $data = [
'roles' => Role::query()->get() 'roles' => Role::query()->get(),
]; ];
return view('admin::pages.admin_roles.index', $data); return view('admin::pages.admin_roles.index', $data);
} }
public function create(Request $request) public function create(Request $request)
{ {
$permissionRepo = (new PermissionRepo()); $permissionRepo = (new PermissionRepo());
$data = [ $data = [
'permissions' => $permissionRepo->getAllPermissions(), 'permissions' => $permissionRepo->getAllPermissions(),
]; ];
return view('admin::pages.admin_roles.edit', $data); return view('admin::pages.admin_roles.edit', $data);
} }
public function edit(Request $request, int $id) public function edit(Request $request, int $id)
{ {
Cache::forget('spatie.permission.cache'); Cache::forget('spatie.permission.cache');
$role = Role::query()->findOrFail($id); $role = Role::query()->findOrFail($id);
$permissionRepo = (new PermissionRepo())->setRole($role); $permissionRepo = (new PermissionRepo())->setRole($role);
$data = [ $data = [
'permissions' => $permissionRepo->getAllPermissions(), 'permissions' => $permissionRepo->getAllPermissions(),
'role' => $role, 'role' => $role,
]; ];
return view('admin::pages.admin_roles.edit', $data); return view('admin::pages.admin_roles.edit', $data);
} }
/** /**
* 保存后台用户角色 * 保存后台用户角色
* *
@ -60,18 +62,21 @@ class AdminRoleController extends Controller
public function store(AdminRoleRequest $request): array public function store(AdminRoleRequest $request): array
{ {
$adminUser = AdminRoleRepo::createAdminRole($request->toArray()); $adminUser = AdminRoleRepo::createAdminRole($request->toArray());
return json_success(trans('common.created_success'), $adminUser); return json_success(trans('common.created_success'), $adminUser);
} }
public function update(Request $request, int $adminUserId) public function update(Request $request, int $adminUserId)
{ {
$adminUser = AdminRoleRepo::updateAdminRole($request->toArray()); $adminUser = AdminRoleRepo::updateAdminRole($request->toArray());
return json_success(trans('common.updated_success'), $adminUser); return json_success(trans('common.updated_success'), $adminUser);
} }
public function destroy(Request $request, int $adminUserId) public function destroy(Request $request, int $adminUserId)
{ {
AdminRoleRepo::deleteAdminRole($adminUserId); AdminRoleRepo::deleteAdminRole($adminUserId);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -11,10 +11,10 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Requests\AdminUserRequest;
use Beike\Admin\Repositories\AdminUserRepo;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Role;
use Beike\Admin\Repositories\AdminUserRepo;
use Beike\Admin\Http\Requests\AdminUserRequest;
class AdminUserController extends Controller class AdminUserController extends Controller
{ {
@ -27,12 +27,12 @@ class AdminUserController extends Controller
{ {
$data = [ $data = [
'admin_users' => AdminUserRepo::getAdminUsers(), 'admin_users' => AdminUserRepo::getAdminUsers(),
'admin_roles' => Role::query()->get() 'admin_roles' => Role::query()->get(),
]; ];
return view('admin::pages.admin_users.index', $data); return view('admin::pages.admin_users.index', $data);
} }
/** /**
* 创建后台管理员 * 创建后台管理员
* *
@ -42,27 +42,28 @@ class AdminUserController extends Controller
public function store(AdminUserRequest $request) public function store(AdminUserRequest $request)
{ {
$adminUser = AdminUserRepo::createAdminUser($request->toArray()); $adminUser = AdminUserRepo::createAdminUser($request->toArray());
return json_success(trans('common.created_success'), $adminUser); return json_success(trans('common.created_success'), $adminUser);
} }
/** /**
* 更新后台管理员 * 更新后台管理员
* *
* @param AdminUserRequest $request * @param AdminUserRequest $request
* @param int $adminUserId * @param int $adminUserId
* @return array * @return array
*/ */
public function update(AdminUserRequest $request, int $adminUserId) public function update(AdminUserRequest $request, int $adminUserId)
{ {
$adminUser = AdminUserRepo::updateAdminUser($adminUserId, $request->toArray()); $adminUser = AdminUserRepo::updateAdminUser($adminUserId, $request->toArray());
return json_success(trans('common.updated_success'), $adminUser); return json_success(trans('common.updated_success'), $adminUser);
} }
public function destroy(Request $request, int $adminUserId) public function destroy(Request $request, int $adminUserId)
{ {
AdminUserRepo::deleteAdminUser($adminUserId); AdminUserRepo::deleteAdminUser($adminUserId);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -24,10 +24,10 @@ class AttributeController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$attributes = AttributeRepo::getList(); $attributes = AttributeRepo::getList();
$data = [ $data = [
'attribute_list' => $attributes, 'attribute_list' => $attributes,
'attribute_list_format' => AttributeResource::collection($attributes), 'attribute_list_format' => AttributeResource::collection($attributes),
'attribute_group' => AttributeGroupRepo::getList(), 'attribute_group' => AttributeGroupRepo::getList(),
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
@ -40,7 +40,7 @@ class AttributeController extends Controller
public function show(Request $request, int $id) public function show(Request $request, int $id)
{ {
$data = [ $data = [
'attribute' => (new AttributeDetailResource(AttributeRepo::find($id)))->jsonSerialize(), 'attribute' => (new AttributeDetailResource(AttributeRepo::find($id)))->jsonSerialize(),
'attribute_group' => AttributeGroupRepo::getList(), 'attribute_group' => AttributeGroupRepo::getList(),
]; ];
@ -50,41 +50,46 @@ class AttributeController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$item = AttributeRepo::create($requestData); $item = AttributeRepo::create($requestData);
return json_success(trans('common.created_success'), $item); return json_success(trans('common.created_success'), $item);
} }
public function update(Request $request, int $id) public function update(Request $request, int $id)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$item = AttributeRepo::update($id, $requestData); $item = AttributeRepo::update($id, $requestData);
return json_success(trans('common.updated_success'), $item); return json_success(trans('common.updated_success'), $item);
} }
public function storeValue(Request $request, int $id) public function storeValue(Request $request, int $id)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$item = AttributeRepo::createValue(array_merge($requestData, ['attribute_id' => $id])); $item = AttributeRepo::createValue(array_merge($requestData, ['attribute_id' => $id]));
return json_success(trans('common.created_success'), new AttributeValueResource($item)); return json_success(trans('common.created_success'), new AttributeValueResource($item));
} }
public function updateValue(Request $request, int $id, int $value_id) public function updateValue(Request $request, int $id, int $value_id)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$item = AttributeRepo::updateValue($value_id, $requestData); $item = AttributeRepo::updateValue($value_id, $requestData);
return json_success(trans('common.updated_success'), new AttributeValueResource($item)); return json_success(trans('common.updated_success'), new AttributeValueResource($item));
} }
public function destroyValue(Request $request, int $id, int $value_id) public function destroyValue(Request $request, int $id, int $value_id)
{ {
AttributeRepo::deleteValue($value_id); AttributeRepo::deleteValue($value_id);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
public function destroy(Request $request, int $id) public function destroy(Request $request, int $id)
{ {
AttributeRepo::delete($id); AttributeRepo::delete($id);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }

View File

@ -28,20 +28,23 @@ class AttributeGroupController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$item = AttributeGroupRepo::create($requestData); $item = AttributeGroupRepo::create($requestData);
return json_success(trans('common.created_success'), $item); return json_success(trans('common.created_success'), $item);
} }
public function update(Request $request, int $id) public function update(Request $request, int $id)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$item = AttributeGroupRepo::update($id, $requestData); $item = AttributeGroupRepo::update($id, $requestData);
return json_success(trans('common.updated_success'), $item); return json_success(trans('common.updated_success'), $item);
} }
public function destroy(Request $request, int $id) public function destroy(Request $request, int $id)
{ {
AttributeGroupRepo::delete($id); AttributeGroupRepo::delete($id);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -25,7 +25,7 @@ class BrandController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$brands = BrandRepo::list($request->only('name', 'first', 'status')); $brands = BrandRepo::list($request->only('name', 'first', 'status'));
$data = [ $data = [
'brands' => $brands, 'brands' => $brands,
]; ];
@ -36,7 +36,6 @@ class BrandController extends Controller
return view('admin::pages.brands.index', $data); return view('admin::pages.brands.index', $data);
} }
/** /**
* 创建品牌 * 创建品牌
* *
@ -46,6 +45,7 @@ class BrandController extends Controller
public function store(Request $request): array public function store(Request $request): array
{ {
$brand = BrandRepo::create($request->all()); $brand = BrandRepo::create($request->all());
return json_success(trans('common.created_success'), $brand); return json_success(trans('common.created_success'), $brand);
} }
@ -73,7 +73,6 @@ class BrandController extends Controller
return json_success(trans('common.get_success'), $brands); return json_success(trans('common.get_success'), $brands);
} }
public function name(int $id): array public function name(int $id): array
{ {
$name = BrandRepo::getName($id); $name = BrandRepo::getName($id);
@ -81,7 +80,6 @@ class BrandController extends Controller
return json_success(trans('common.get_success'), $name); return json_success(trans('common.get_success'), $name);
} }
/** /**
* 根据商品ID批量获取商品名称 * 根据商品ID批量获取商品名称
* *
@ -90,7 +88,7 @@ class BrandController extends Controller
*/ */
public function getNames(Request $request): array public function getNames(Request $request): array
{ {
$ids = explode(',', $request->get('ids')); $ids = explode(',', $request->get('ids'));
$name = BrandRepo::getNames($ids); $name = BrandRepo::getNames($ids);
return json_success(trans('common.get_success'), $name); return json_success(trans('common.get_success'), $name);

View File

@ -2,13 +2,13 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Models\Category;
use Illuminate\Http\Request;
use Beike\Repositories\LanguageRepo;
use Beike\Repositories\CategoryRepo;
use Beike\Admin\Services\CategoryService;
use Beike\Admin\Http\Requests\CategoryRequest; use Beike\Admin\Http\Requests\CategoryRequest;
use Beike\Admin\Http\Resources\CategoryResource; use Beike\Admin\Http\Resources\CategoryResource;
use Beike\Admin\Services\CategoryService;
use Beike\Models\Category;
use Beike\Repositories\CategoryRepo;
use Beike\Repositories\LanguageRepo;
use Illuminate\Http\Request;
class CategoryController extends Controller class CategoryController extends Controller
{ {
@ -17,7 +17,7 @@ class CategoryController extends Controller
public function index() public function index()
{ {
$categories = CategoryRepo::getAdminList(); $categories = CategoryRepo::getAdminList();
$data = [ $data = [
'categories' => CategoryResource::collection($categories), 'categories' => CategoryResource::collection($categories),
]; ];
@ -44,10 +44,9 @@ class CategoryController extends Controller
return $this->save($request, $category); return $this->save($request, $category);
} }
/** /**
* 删除分类 * 删除分类
* @param Request $request * @param Request $request
* @param Category $category * @param Category $category
* @return array * @return array
* @throws \Exception * @throws \Exception
@ -55,10 +54,10 @@ class CategoryController extends Controller
public function destroy(Request $request, Category $category): array public function destroy(Request $request, Category $category): array
{ {
CategoryRepo::delete($category); CategoryRepo::delete($category);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
public function name(int $id) public function name(int $id)
{ {
$name = CategoryRepo::getName($id); $name = CategoryRepo::getName($id);
@ -73,11 +72,11 @@ class CategoryController extends Controller
} }
$data = [ $data = [
'category' => $category ?? new Category(), 'category' => $category ?? new Category(),
'languages' => LanguageRepo::all(), 'languages' => LanguageRepo::all(),
'descriptions' => $descriptions ?? null, 'descriptions' => $descriptions ?? null,
'categories' => CategoryRepo::flatten(locale()), 'categories' => CategoryRepo::flatten(locale()),
'_redirect' => $this->getRedirect(), '_redirect' => $this->getRedirect(),
]; ];
return view('admin::pages.categories.form', $data); return view('admin::pages.categories.form', $data);
@ -86,6 +85,7 @@ class CategoryController extends Controller
protected function save(Request $request, ?Category $category = null) protected function save(Request $request, ?Category $category = null)
{ {
(new CategoryService())->createOrUpdate($request->all(), $category); (new CategoryService())->createOrUpdate($request->all(), $category);
return redirect($this->getRedirect())->with('success', 'Category created successfully'); return redirect($this->getRedirect())->with('success', 'Category created successfully');
} }

View File

@ -2,8 +2,8 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Controller as BaseController; use App\Http\Controllers\Controller as BaseController;
use Illuminate\Support\Facades\Route;
use Symfony\Component\HttpFoundation\BinaryFileResponse; use Symfony\Component\HttpFoundation\BinaryFileResponse;
abstract class Controller extends BaseController abstract class Controller extends BaseController
@ -19,10 +19,10 @@ abstract class Controller extends BaseController
if (empty($this->defaultRoute)) { if (empty($this->defaultRoute)) {
$this->defaultRoute = $this->getDefaultRoute(); $this->defaultRoute = $this->getDefaultRoute();
} }
return request('_redirect') ?? request()->header('referer', admin_route($this->defaultRoute)); return request('_redirect') ?? request()->header('referer', admin_route($this->defaultRoute));
} }
/** /**
* 获取当前管理界面列表页路由 * 获取当前管理界面列表页路由
* @return string * @return string
@ -30,12 +30,12 @@ abstract class Controller extends BaseController
private function getDefaultRoute(): string private function getDefaultRoute(): string
{ {
$currentRouteName = Route::getCurrentRoute()->getName(); $currentRouteName = Route::getCurrentRoute()->getName();
$names = explode('.', $currentRouteName); $names = explode('.', $currentRouteName);
$name = $names[1] ?? ''; $name = $names[1] ?? '';
return "{$name}.index"; return "{$name}.index";
} }
/** /**
* 导出CSV * 导出CSV
* *
@ -47,37 +47,37 @@ abstract class Controller extends BaseController
*/ */
protected function downloadCsv($fileName, $items, string $module = ''): BinaryFileResponse protected function downloadCsv($fileName, $items, string $module = ''): BinaryFileResponse
{ {
$module = $module ?: $fileName; $module = $module ?: $fileName;
$charset = app()->getLocale() == 'zh-hk' ? 'BIG5' : 'GBK'; $charset = app()->getLocale() == 'zh-hk' ? 'BIG5' : 'GBK';
if (empty($items)) { if (empty($items)) {
throw new \Exception(trans('common.empty_items')); throw new \Exception(trans('common.empty_items'));
} }
if (!str_contains($fileName, '.csv')) { if (! str_contains($fileName, '.csv')) {
$fileName = $fileName . '-' . date('YmdHis') . '.csv'; $fileName = $fileName . '-' . date('YmdHis') . '.csv';
} }
$headers = [ $headers = [
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
'Content-type' => 'application/octet-stream', 'Content-type' => 'application/octet-stream',
// 'Content-type' => 'text/csv', // 'Content-type' => 'text/csv',
'Content-Disposition' => "attachment; filename={$fileName}", 'Content-Disposition' => "attachment; filename={$fileName}",
'Content-Transfer-Encoding' => 'binary', 'Content-Transfer-Encoding' => 'binary',
'Expires' => '0', 'Expires' => '0',
'Pragma' => 'public' 'Pragma' => 'public',
]; ];
$columns = array_keys($items[0]); $columns = array_keys($items[0]);
foreach ($columns as $index => $column) { foreach ($columns as $index => $column) {
$columns[$index] = iconv("UTF-8", "{$charset}//IGNORE", trans("$module.{$column}")); $columns[$index] = iconv('UTF-8', "{$charset}//IGNORE", trans("$module.{$column}"));
} }
foreach ($items as $index => $item) { foreach ($items as $index => $item) {
foreach ($item as $field => $value) { foreach ($item as $field => $value) {
$items[$index][$field] = iconv("UTF-8", "{$charset}//IGNORE", $value); $items[$index][$field] = iconv('UTF-8', "{$charset}//IGNORE", $value);
} }
} }
$filePath = storage_path('app/' . $fileName); $filePath = storage_path('app/' . $fileName);
$file = fopen($filePath, 'w'); $file = fopen($filePath, 'w');
fputcsv($file, $columns); fputcsv($file, $columns);
foreach ($items as $item) { foreach ($items as $item) {
fputcsv($file, $item); fputcsv($file, $item);

View File

@ -51,5 +51,4 @@ class CountryController extends Controller
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -33,13 +33,13 @@ class CurrencyController extends Controller
public function store(CurrencyRequest $request) public function store(CurrencyRequest $request)
{ {
$data = [ $data = [
'name' => $request->get('name', ''), 'name' => $request->get('name', ''),
'code' => $request->get('code', ''), 'code' => $request->get('code', ''),
'symbol_left' => $request->get('symbol_left', ''), 'symbol_left' => $request->get('symbol_left', ''),
'symbol_right' => $request->get('symbol_right', ''), 'symbol_right' => $request->get('symbol_right', ''),
'decimal_place' => (float)$request->get('decimal_place', 0), 'decimal_place' => (float) $request->get('decimal_place', 0),
'value' => (float)$request->get('value', 1), 'value' => (float) $request->get('value', 1),
'status' => (int)$request->get('status', 0), 'status' => (int) $request->get('status', 0),
]; ];
$currency = CurrencyRepo::create($data); $currency = CurrencyRepo::create($data);
@ -49,13 +49,13 @@ class CurrencyController extends Controller
public function update(CurrencyRequest $request, int $id) public function update(CurrencyRequest $request, int $id)
{ {
$data = [ $data = [
'name' => $request->get('name', ''), 'name' => $request->get('name', ''),
'code' => $request->get('code', ''), 'code' => $request->get('code', ''),
'symbol_left' => $request->get('symbol_left', ''), 'symbol_left' => $request->get('symbol_left', ''),
'symbol_right' => $request->get('symbol_right', ''), 'symbol_right' => $request->get('symbol_right', ''),
'decimal_place' => (float)$request->get('decimal_place', 0), 'decimal_place' => (float) $request->get('decimal_place', 0),
'value' => (float)$request->get('value', 1), 'value' => (float) $request->get('value', 1),
'status' => (int)$request->get('status', 0), 'status' => (int) $request->get('status', 0),
]; ];
$currency = CurrencyRepo::update($id, $data); $currency = CurrencyRepo::update($id, $data);

View File

@ -29,10 +29,10 @@ class CustomerController extends Controller
$customers = CustomerRepo::list($request->only(['name', 'email', 'status', 'from', 'customer_group_id'])); $customers = CustomerRepo::list($request->only(['name', 'email', 'status', 'from', 'customer_group_id']));
$data = [ $data = [
'customers' => $customers, 'customers' => $customers,
'customers_format' => CustomerResource::collection($customers)->jsonSerialize(), 'customers_format' => CustomerResource::collection($customers)->jsonSerialize(),
'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(), 'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(),
'type' => 'customer', 'type' => 'customer',
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
@ -47,10 +47,10 @@ class CustomerController extends Controller
$customers = CustomerRepo::list(array_merge($request->only(['name', 'email', 'status', 'from', 'customer_group_id']), ['only_trashed' => true])); $customers = CustomerRepo::list(array_merge($request->only(['name', 'email', 'status', 'from', 'customer_group_id']), ['only_trashed' => true]));
$data = [ $data = [
'customers' => $customers, 'customers' => $customers,
'customers_format' => CustomerResource::collection($customers)->jsonSerialize(), 'customers_format' => CustomerResource::collection($customers)->jsonSerialize(),
'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(), 'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(),
'type' => 'trashed', 'type' => 'trashed',
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
@ -62,7 +62,7 @@ class CustomerController extends Controller
public function store(CustomerRequest $request) public function store(CustomerRequest $request)
{ {
$data = $request->only(['email', 'name', 'password', 'status', 'customer_group_id']); $data = $request->only(['email', 'name', 'password', 'status', 'customer_group_id']);
$customer = CustomerService::create($data); $customer = CustomerService::create($data);
return json_success(trans('common.success'), new CustomerResource($customer)); return json_success(trans('common.success'), new CustomerResource($customer));
@ -71,14 +71,14 @@ class CustomerController extends Controller
public function edit(Request $request, int $customerId) public function edit(Request $request, int $customerId)
{ {
$addresses = AddressRepo::listByCustomer($customerId); $addresses = AddressRepo::listByCustomer($customerId);
$customer = CustomerRepo::find($customerId); $customer = CustomerRepo::find($customerId);
$data = [ $data = [
'customer' => $customer, 'customer' => $customer,
'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(), 'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(),
'addresses' => AddressResource::collection($addresses)->jsonSerialize(), 'addresses' => AddressResource::collection($addresses)->jsonSerialize(),
'countries' => CountryRepo::all(), 'countries' => CountryRepo::all(),
'country_id' => system_setting('base.country_id'), 'country_id' => system_setting('base.country_id'),
'_redirect' => $this->getRedirect(), '_redirect' => $this->getRedirect(),
]; ];
return view('admin::pages.customers.form', $data); return view('admin::pages.customers.form', $data);

View File

@ -11,11 +11,11 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Illuminate\Http\Request;
use Beike\Repositories\LanguageRepo;
use Beike\Repositories\CustomerGroupRepo;
use Beike\Admin\Services\CustomerGroupService;
use Beike\Admin\Http\Requests\CustomerGroupRequest; use Beike\Admin\Http\Requests\CustomerGroupRequest;
use Beike\Admin\Services\CustomerGroupService;
use Beike\Repositories\CustomerGroupRepo;
use Beike\Repositories\LanguageRepo;
use Illuminate\Http\Request;
class CustomerGroupController extends Controller class CustomerGroupController extends Controller
{ {
@ -27,7 +27,7 @@ class CustomerGroupController extends Controller
$data = [ $data = [
'customer_groups' => $customers, 'customer_groups' => $customers,
'languages' => LanguageRepo::all(), 'languages' => LanguageRepo::all(),
]; ];
return view('admin::pages.customer_groups.index', $data); return view('admin::pages.customer_groups.index', $data);
@ -52,6 +52,7 @@ class CustomerGroupController extends Controller
public function destroy(Request $request, int $id) public function destroy(Request $request, int $id)
{ {
CustomerGroupRepo::delete($id); CustomerGroupRepo::delete($id);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -2,10 +2,10 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Beike\Services\DesignService;
use Beike\Repositories\SettingRepo; use Beike\Repositories\SettingRepo;
use Beike\Services\DesignService;
use Illuminate\Http\Request;
use Illuminate\View\View;
class DesignController extends Controller class DesignController extends Controller
{ {
@ -18,13 +18,13 @@ class DesignController extends Controller
public function index(Request $request): View public function index(Request $request): View
{ {
$data = [ $data = [
'editors' => ['editor-slide_show', 'editor-image401', 'editor-tab_product', 'editor-image100', 'editor-brand'], 'editors' => ['editor-slide_show', 'editor-image401', 'editor-tab_product', 'editor-image100', 'editor-brand'],
'design_settings' => system_setting('base.design_setting'), 'design_settings' => system_setting('base.design_setting'),
]; ];
return view('admin::pages.design.builder.index', $data); return view('admin::pages.design.builder.index', $data);
} }
/** /**
* 预览模块显示结果 * 预览模块显示结果
* *
@ -34,24 +34,23 @@ class DesignController extends Controller
*/ */
public function preview(Request $request): View public function preview(Request $request): View
{ {
$module = json_decode($request->getContent(), true); $module = json_decode($request->getContent(), true);
$moduleId = $module['module_id'] ?? ''; $moduleId = $module['module_id'] ?? '';
$moduleCode = $module['code'] ?? ''; $moduleCode = $module['code'] ?? '';
$content = $module['content'] ?? ''; $content = $module['content'] ?? '';
$viewPath = "design.{$moduleCode}"; $viewPath = "design.{$moduleCode}";
$viewData = [ $viewData = [
'code' => $moduleCode, 'code' => $moduleCode,
'module_id' => $moduleId, 'module_id' => $moduleId,
'view_path' => $viewPath, 'view_path' => $viewPath,
'content' => DesignService::handleModuleContent($moduleCode, $content), 'content' => DesignService::handleModuleContent($moduleCode, $content),
'design' => (bool)$request->get('design') 'design' => (bool) $request->get('design'),
]; ];
return view($viewPath, $viewData); return view($viewPath, $viewData);
} }
/** /**
* 更新所有数据 * 更新所有数据
* *
@ -61,9 +60,10 @@ class DesignController extends Controller
*/ */
public function update(Request $request): array public function update(Request $request): array
{ {
$content = json_decode($request->getContent(), true); $content = json_decode($request->getContent(), true);
$moduleData = DesignService::handleRequestModules($content); $moduleData = DesignService::handleRequestModules($content);
SettingRepo::storeValue('design_setting', $moduleData); SettingRepo::storeValue('design_setting', $moduleData);
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
} }

View File

@ -2,10 +2,10 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Beike\Repositories\FooterRepo; use Beike\Repositories\FooterRepo;
use Beike\Repositories\SettingRepo; use Beike\Repositories\SettingRepo;
use Illuminate\Http\Request;
use Illuminate\View\View;
class DesignFooterController extends Controller class DesignFooterController extends Controller
{ {
@ -20,6 +20,7 @@ class DesignFooterController extends Controller
$data = [ $data = [
'design_settings' => system_setting('base.footer_setting'), 'design_settings' => system_setting('base.footer_setting'),
]; ];
return view('admin::pages.design.builder.footer', $data); return view('admin::pages.design.builder.footer', $data);
} }
@ -32,18 +33,17 @@ class DesignFooterController extends Controller
*/ */
public function preview(Request $request): View public function preview(Request $request): View
{ {
$content = json_decode($request->getContent(), true); $content = json_decode($request->getContent(), true);
$viewPath = "layout.footer"; $viewPath = 'layout.footer';
$viewData = [ $viewData = [
'footer_content' => FooterRepo::handleFooterData($content), 'footer_content' => FooterRepo::handleFooterData($content),
'design' => (bool)$request->get('design') 'design' => (bool) $request->get('design'),
]; ];
return view($viewPath, $viewData); return view($viewPath, $viewData);
} }
/** /**
* 更新所有数据 * 更新所有数据
* *
@ -55,7 +55,8 @@ class DesignFooterController extends Controller
{ {
$content = json_decode($request->getContent(), true); $content = json_decode($request->getContent(), true);
SettingRepo::storeValue("footer_setting", $content); SettingRepo::storeValue('footer_setting', $content);
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
} }

View File

@ -2,10 +2,9 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Illuminate\View\View;
use Illuminate\Http\Request;
use Beike\Repositories\FooterRepo;
use Beike\Repositories\SettingRepo; use Beike\Repositories\SettingRepo;
use Illuminate\Http\Request;
use Illuminate\View\View;
class DesignMenuController extends Controller class DesignMenuController extends Controller
{ {
@ -20,6 +19,7 @@ class DesignMenuController extends Controller
$data = [ $data = [
'design_settings' => system_setting('base.menu_setting', []), 'design_settings' => system_setting('base.menu_setting', []),
]; ];
return view('admin::pages.design.builder.menu', $data); return view('admin::pages.design.builder.menu', $data);
} }
@ -34,7 +34,8 @@ class DesignMenuController extends Controller
{ {
$content = json_decode($request->getContent(), true); $content = json_decode($request->getContent(), true);
SettingRepo::storeValue("menu_setting", $content); SettingRepo::storeValue('menu_setting', $content);
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
} }

View File

@ -16,10 +16,10 @@ class FileManagerController extends Controller
public function index() public function index()
{ {
$data = (new FileManagerService)->getDirectories(); $data = (new FileManagerService)->getDirectories();
return view('admin::pages.file_manager.index', ['directories' => $data]); return view('admin::pages.file_manager.index', ['directories' => $data]);
} }
/** /**
* 获取某个文件夹下面的文件列表 * 获取某个文件夹下面的文件列表
* *
@ -30,12 +30,12 @@ class FileManagerController extends Controller
public function getFiles(Request $request): array public function getFiles(Request $request): array
{ {
$baseFolder = $request->get('base_folder'); $baseFolder = $request->get('base_folder');
$page = (int)$request->get('page'); $page = (int) $request->get('page');
$perPage = (int)$request->get('per_page'); $perPage = (int) $request->get('per_page');
return (new FileManagerService)->getFiles($baseFolder, $page, $perPage); return (new FileManagerService)->getFiles($baseFolder, $page, $perPage);
} }
/** /**
* 获取文件夹列表 * 获取文件夹列表
* @param Request $request * @param Request $request
@ -45,10 +45,10 @@ class FileManagerController extends Controller
public function getDirectories(Request $request) public function getDirectories(Request $request)
{ {
$baseFolder = $request->get('base_folder'); $baseFolder = $request->get('base_folder');
return (new FileManagerService)->getDirectories($baseFolder); return (new FileManagerService)->getDirectories($baseFolder);
} }
/** /**
* 创建文件夹 * 创建文件夹
* POST /admin/file_manager * POST /admin/file_manager
@ -58,10 +58,10 @@ class FileManagerController extends Controller
{ {
$folderName = $request->get('name'); $folderName = $request->get('name');
(new FileManagerService)->createDirectory($folderName); (new FileManagerService)->createDirectory($folderName);
return json_success(trans('common.created_success')); return json_success(trans('common.created_success'));
} }
/** /**
* 文件或文件夹改名 * 文件或文件夹改名
* PUT /admin/file_manager/rename * PUT /admin/file_manager/rename
@ -70,12 +70,12 @@ class FileManagerController extends Controller
public function rename(Request $request): array public function rename(Request $request): array
{ {
$originPath = $request->get('origin_name'); $originPath = $request->get('origin_name');
$newPath = $request->get('new_name'); $newPath = $request->get('new_name');
(new FileManagerService)->updateName($originPath, $newPath); (new FileManagerService)->updateName($originPath, $newPath);
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
/** /**
* 删除文件或文件夹 * 删除文件或文件夹
* DELETE /admin/file_manager/files {"path":"/xx/yy", "files":["1.jpg", "2.png"]} * DELETE /admin/file_manager/files {"path":"/xx/yy", "files":["1.jpg", "2.png"]}
@ -84,13 +84,13 @@ class FileManagerController extends Controller
public function destroyFiles(Request $request): array public function destroyFiles(Request $request): array
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$basePath = $requestData['path'] ?? ''; $basePath = $requestData['path'] ?? '';
$files = $requestData['files'] ?? []; $files = $requestData['files'] ?? [];
(new FileManagerService)->deleteFiles($basePath, $files); (new FileManagerService)->deleteFiles($basePath, $files);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
/** /**
* 删除文件夹 * 删除文件夹
* *
@ -102,10 +102,10 @@ class FileManagerController extends Controller
{ {
$folderName = $request->get('name'); $folderName = $request->get('name');
(new FileManagerService)->deleteDirectoryOrFile($folderName); (new FileManagerService)->deleteDirectoryOrFile($folderName);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
/** /**
* 上传文件 * 上传文件
* POST /admin/file_manager/upload * POST /admin/file_manager/upload
@ -115,15 +115,15 @@ class FileManagerController extends Controller
*/ */
public function uploadFiles(UploadRequest $request): array public function uploadFiles(UploadRequest $request): array
{ {
$file = $request->file('file'); $file = $request->file('file');
$savePath = $request->get('path'); $savePath = $request->get('path');
$originName = $file->getClientOriginalName(); $originName = $file->getClientOriginalName();
$filePath = $file->storeAs($savePath, $originName, 'catalog'); $filePath = $file->storeAs($savePath, $originName, 'catalog');
return [ return [
'name' => $originName, 'name' => $originName,
'url' => asset('catalog/' . $filePath), 'url' => asset('catalog/' . $filePath),
]; ];
} }
} }

View File

@ -35,6 +35,7 @@ class ForgottenController
public function sendVerifyCode(VerifyCodeRequest $request) public function sendVerifyCode(VerifyCodeRequest $request)
{ {
UserService::sendVerifyCodeForForgotten($request->get('email')); UserService::sendVerifyCodeForForgotten($request->get('email'));
return json_success(trans('admin/forgotten.verify_code_sent')); return json_success(trans('admin/forgotten.verify_code_sent'));
} }

View File

@ -11,15 +11,15 @@ class HomeController extends Controller
public function index() public function index()
{ {
$data = [ $data = [
'views' => DashboardRepo::getCustomerViewData(), 'views' => DashboardRepo::getCustomerViewData(),
'orders' => DashboardRepo::getOrderData(), 'orders' => DashboardRepo::getOrderData(),
'customers' => DashboardRepo::getCustomerData(), 'customers' => DashboardRepo::getCustomerData(),
'order_totals' => DashboardRepo::getTotalData(), 'order_totals' => DashboardRepo::getTotalData(),
'order_trends' => [ 'order_trends' => [
'latest_month' => OrderReportRepo::getLatestMonth(), 'latest_month' => OrderReportRepo::getLatestMonth(),
'latest_week' => OrderReportRepo::getLatestWeek(), 'latest_week' => OrderReportRepo::getLatestWeek(),
'latest_year' => OrderReportRepo::getLatestYear(), 'latest_year' => OrderReportRepo::getLatestYear(),
] ],
]; ];
return view('admin::pages.home', $data); return view('admin::pages.home', $data);

View File

@ -12,9 +12,9 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Services\LanguageService; use Beike\Admin\Services\LanguageService;
use Beike\Repositories\LanguageRepo;
use Exception; use Exception;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Beike\Repositories\LanguageRepo;
class LanguageController extends Controller class LanguageController extends Controller
{ {
@ -45,10 +45,9 @@ class LanguageController extends Controller
return json_success(trans('common.created_success'), $language); return json_success(trans('common.created_success'), $language);
} }
/** /**
* @param Request $request * @param Request $request
* @param int $id * @param int $id
* @return array * @return array
* @throws Exception * @throws Exception
*/ */
@ -59,7 +58,6 @@ class LanguageController extends Controller
return json_success(trans('common.updated_success'), $language); return json_success(trans('common.updated_success'), $language);
} }
/** /**
* 删除语言 * 删除语言
* *

View File

@ -11,9 +11,9 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Models\AdminUser;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Beike\Admin\Http\Requests\LoginRequest; use Beike\Admin\Http\Requests\LoginRequest;
use Beike\Models\AdminUser;
class LoginController extends Controller class LoginController extends Controller
{ {
@ -22,15 +22,16 @@ class LoginController extends Controller
if (auth(AdminUser::AUTH_GUARD)->check()) { if (auth(AdminUser::AUTH_GUARD)->check()) {
return redirect()->back(); return redirect()->back();
} }
return view('admin::pages.login.login', \request()->only('admin_email', 'admin_password')); return view('admin::pages.login.login', \request()->only('admin_email', 'admin_password'));
} }
public function store(LoginRequest $loginRequest) public function store(LoginRequest $loginRequest)
{ {
if (auth(AdminUser::AUTH_GUARD)->attempt($loginRequest->validated())) { if (auth(AdminUser::AUTH_GUARD)->attempt($loginRequest->validated())) {
return redirect(admin_route('home.index')); return redirect(admin_route('home.index'));
} }
return redirect()->back()->with(['error' => trans('auth.failed')])->withInput(); return redirect()->back()->with(['error' => trans('auth.failed')])->withInput();
} }
} }

View File

@ -12,6 +12,7 @@ class LogoutController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
Auth::guard(AdminUser::AUTH_GUARD)->logout(); Auth::guard(AdminUser::AUTH_GUARD)->logout();
return redirect(admin_route('login.show')); return redirect(admin_route('login.show'));
} }
} }

View File

@ -11,11 +11,9 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Repositories\PluginRepo;
use ZanySoft\Zip\Zip;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Beike\Admin\Services\MarketingService; use Beike\Admin\Services\MarketingService;
use Beike\Repositories\PluginRepo;
use Illuminate\Http\Request;
class MarketingController class MarketingController
{ {
@ -26,14 +24,14 @@ class MarketingController
public function index(Request $request) public function index(Request $request)
{ {
$filters = [ $filters = [
'type' => $request->get('type'), 'type' => $request->get('type'),
'keyword' => $request->get('keyword'), 'keyword' => $request->get('keyword'),
]; ];
$plugins = MarketingService::getInstance()->getList($filters); $plugins = MarketingService::getInstance()->getList($filters);
$data = [ $data = [
'plugins' => $plugins, 'plugins' => $plugins,
'domain' => str_replace(['http://', 'https://'], '', config('app.url')), 'domain' => str_replace(['http://', 'https://'], '', config('app.url')),
'types' => PluginRepo::getTypes(), 'types' => PluginRepo::getTypes(),
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
@ -43,7 +41,6 @@ class MarketingController
return view('admin::pages.marketing.index', $data); return view('admin::pages.marketing.index', $data);
} }
/** /**
* 获取单个插件详情 * 获取单个插件详情
*/ */
@ -51,37 +48,37 @@ class MarketingController
{ {
try { try {
$pluginCode = $request->code; $pluginCode = $request->code;
$plugin = MarketingService::getInstance()->getPlugin($pluginCode); $plugin = MarketingService::getInstance()->getPlugin($pluginCode);
$data = [ $data = [
'domain' => str_replace(['http://', 'https://'], '', config('app.url')), 'domain' => str_replace(['http://', 'https://'], '', config('app.url')),
'plugin' => $plugin, 'plugin' => $plugin,
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
return $data; return $data;
} }
return view('admin::pages.marketing.show', $data); return view('admin::pages.marketing.show', $data);
} catch (\Exception $e) { } catch (\Exception $e) {
return redirect(admin_route('marketing.index'))->withErrors(['error' => $e->getMessage()]); return redirect(admin_route('marketing.index'))->withErrors(['error' => $e->getMessage()]);
} }
} }
/** /**
* 下单购买插件 * 下单购买插件
*/ */
public function buy(Request $request) public function buy(Request $request)
{ {
try { try {
$postData = $request->getContent(); $postData = $request->getContent();
$pluginCode = $request->code; $pluginCode = $request->code;
$result = MarketingService::getInstance()->buy($pluginCode, $postData); $result = MarketingService::getInstance()->buy($pluginCode, $postData);
return json_success('获取成功', $result); return json_success('获取成功', $result);
} catch (\Exception $e) { } catch (\Exception $e) {
return json_fail($e->getMessage()); return json_fail($e->getMessage());
} }
} }
/** /**
* 下载插件安装包到本地 * 下载插件安装包到本地
*/ */
@ -90,6 +87,7 @@ class MarketingController
try { try {
$pluginCode = $request->code; $pluginCode = $request->code;
MarketingService::getInstance()->download($pluginCode); MarketingService::getInstance()->download($pluginCode);
return json_success('下载解压成功, 请去插件列表安装'); return json_success('下载解压成功, 请去插件列表安装');
} catch (\Exception $e) { } catch (\Exception $e) {
return json_fail($e->getMessage()); return json_fail($e->getMessage());

View File

@ -11,13 +11,13 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Models\Order;
use Beike\Services\ShipmentService;
use Illuminate\Http\Request;
use Beike\Repositories\OrderRepo;
use Beike\Services\StateMachineService;
use Beike\Admin\Http\Resources\OrderSimple; use Beike\Admin\Http\Resources\OrderSimple;
use Beike\Models\Order;
use Beike\Repositories\OrderRepo;
use Beike\Services\ShipmentService;
use Beike\Services\StateMachineService;
use Beike\Shop\Http\Resources\Account\OrderList; use Beike\Shop\Http\Resources\Account\OrderList;
use Illuminate\Http\Request;
class OrderController extends Controller class OrderController extends Controller
{ {
@ -31,14 +31,14 @@ class OrderController extends Controller
public function index(Request $request) public function index(Request $request)
{ {
$orders = OrderRepo::filterOrders($request->all()); $orders = OrderRepo::filterOrders($request->all());
$data = [ $data = [
'orders' => OrderList::collection($orders), 'orders' => OrderList::collection($orders),
'statuses' => StateMachineService::getAllStatuses(), 'statuses' => StateMachineService::getAllStatuses(),
]; ];
return view('admin::pages.orders.index', $data); return view('admin::pages.orders.index', $data);
} }
/** /**
* 导出订单列表 * 导出订单列表
* *
@ -50,49 +50,50 @@ class OrderController extends Controller
{ {
try { try {
$orders = OrderRepo::filterAll($request->all()); $orders = OrderRepo::filterAll($request->all());
$items = OrderSimple::collection($orders)->jsonSerialize(); $items = OrderSimple::collection($orders)->jsonSerialize();
return $this->downloadCsv('orders', $items, 'order'); return $this->downloadCsv('orders', $items, 'order');
} catch (\Exception $e) { } catch (\Exception $e) {
return redirect(admin_route('orders.index'))->withErrors(['error' => $e->getMessage()]); return redirect(admin_route('orders.index'))->withErrors(['error' => $e->getMessage()]);
} }
} }
/** /**
* 查看单个订单 * 查看单个订单
* *
* @param Request $request * @param Request $request
* @param Order $order * @param Order $order
* @return mixed * @return mixed
* @throws \Exception * @throws \Exception
*/ */
public function show(Request $request, Order $order) public function show(Request $request, Order $order)
{ {
$order->load(['orderTotals', 'orderHistories', 'orderShipments']); $order->load(['orderTotals', 'orderHistories', 'orderShipments']);
$data = hook_filter('admin_order_detail', ['order' => $order, 'html_items' => []]); $data = hook_filter('admin_order_detail', ['order' => $order, 'html_items' => []]);
$data['statuses'] = StateMachineService::getInstance($order)->nextBackendStatuses(); $data['statuses'] = StateMachineService::getInstance($order)->nextBackendStatuses();
return view('admin::pages.orders.form', $data); return view('admin::pages.orders.form', $data);
} }
/** /**
* 更新订单状态,添加订单更新日志 * 更新订单状态,添加订单更新日志
* *
* @param Request $request * @param Request $request
* @param Order $order * @param Order $order
* @return array * @return array
* @throws \Throwable * @throws \Throwable
*/ */
public function updateStatus(Request $request, Order $order) public function updateStatus(Request $request, Order $order)
{ {
$status = $request->get('status'); $status = $request->get('status');
$comment = $request->get('comment'); $comment = $request->get('comment');
$notify = $request->get('notify'); $notify = $request->get('notify');
$shipment = ShipmentService::handleShipment(\request('express_code'), \request('express_number')); $shipment = ShipmentService::handleShipment(\request('express_code'), \request('express_number'));
$stateMachine = new StateMachineService($order); $stateMachine = new StateMachineService($order);
$stateMachine->setShipment($shipment)->changeStatus($status, $comment, $notify); $stateMachine->setShipment($shipment)->changeStatus($status, $comment, $notify);
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
} }

View File

@ -12,11 +12,11 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Requests\PageRequest; use Beike\Admin\Http\Requests\PageRequest;
use Beike\Models\Page;
use Illuminate\Http\Request;
use Illuminate\Http\RedirectResponse;
use Beike\Admin\Repositories\PageRepo; use Beike\Admin\Repositories\PageRepo;
use Beike\Models\Page;
use Beike\Shop\Http\Resources\PageDetail; use Beike\Shop\Http\Resources\PageDetail;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
class PagesController class PagesController
{ {
@ -28,14 +28,14 @@ class PagesController
public function index() public function index()
{ {
$pageList = PageRepo::getList(); $pageList = PageRepo::getList();
$data = [ $data = [
'pages' => $pageList, 'pages' => $pageList,
'pages_format' => PageDetail::collection($pageList)->jsonSerialize() 'pages_format' => PageDetail::collection($pageList)->jsonSerialize(),
]; ];
return view('admin::pages.pages.index', $data); return view('admin::pages.pages.index', $data);
} }
/** /**
* 创建页面 * 创建页面
* *
@ -46,7 +46,6 @@ class PagesController
return view('admin::pages.pages.form', ['page' => new Page()]); return view('admin::pages.pages.form', ['page' => new Page()]);
} }
/** /**
* 保存新建 * 保存新建
* *
@ -58,62 +57,62 @@ class PagesController
try { try {
$requestData = $request->all(); $requestData = $request->all();
PageRepo::createOrUpdate($requestData); PageRepo::createOrUpdate($requestData);
return redirect(admin_route('pages.index')); return redirect(admin_route('pages.index'));
} catch (\Exception $e) { } catch (\Exception $e) {
return redirect(admin_route('pages.index'))->withErrors(['error' => $e->getMessage()]); return redirect(admin_route('pages.index'))->withErrors(['error' => $e->getMessage()]);
} }
} }
/** /**
* @param Request $request * @param Request $request
* @param int $pageId * @param int $pageId
* @return mixed * @return mixed
*/ */
public function edit(Request $request, int $pageId) public function edit(Request $request, int $pageId)
{ {
$data = [ $data = [
'page' => PageRepo::findByPageId($pageId), 'page' => PageRepo::findByPageId($pageId),
'descriptions' => PageRepo::getDescriptionsByLocale($pageId), 'descriptions' => PageRepo::getDescriptionsByLocale($pageId),
]; ];
return view('admin::pages.pages.form', $data); return view('admin::pages.pages.form', $data);
} }
/** /**
* 保存更新 * 保存更新
* *
* @param PageRequest $request * @param PageRequest $request
* @param int $pageId * @param int $pageId
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(PageRequest $request, int $pageId) public function update(PageRequest $request, int $pageId)
{ {
try { try {
$requestData = $request->all(); $requestData = $request->all();
$requestData['id'] = $pageId; $requestData['id'] = $pageId;
PageRepo::createOrUpdate($requestData); PageRepo::createOrUpdate($requestData);
return redirect()->to(admin_route('pages.index')); return redirect()->to(admin_route('pages.index'));
} catch (\Exception $e) { } catch (\Exception $e) {
return redirect(admin_route('pages.index'))->withErrors(['error' => $e->getMessage()]); return redirect(admin_route('pages.index'))->withErrors(['error' => $e->getMessage()]);
} }
} }
/** /**
* 删除单页 * 删除单页
* *
* @param Request $request * @param Request $request
* @param int $pageId * @param int $pageId
* @return array * @return array
*/ */
public function destroy(Request $request, int $pageId): array public function destroy(Request $request, int $pageId): array
{ {
PageRepo::deleteById($pageId); PageRepo::deleteById($pageId);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
/** /**
* 搜索页面标题自动完成 * 搜索页面标题自动完成
* @param Request $request * @param Request $request
@ -122,10 +121,10 @@ class PagesController
public function autocomplete(Request $request): array public function autocomplete(Request $request): array
{ {
$products = PageRepo::autocomplete($request->get('name') ?? ''); $products = PageRepo::autocomplete($request->get('name') ?? '');
return json_success(trans('common.get_success'), $products); return json_success(trans('common.get_success'), $products);
} }
/** /**
* 获取单页名称 * 获取单页名称
* @param Page $page * @param Page $page
@ -134,6 +133,7 @@ class PagesController
public function name(Page $page): array public function name(Page $page): array
{ {
$name = $page->description->title ?? ''; $name = $page->description->title ?? '';
return json_success(trans('common.get_success'), $name); return json_success(trans('common.get_success'), $name);
} }
} }

View File

@ -11,12 +11,12 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Exception; use Beike\Admin\Http\Resources\PluginResource;
use Illuminate\Http\Request;
use Beike\Repositories\PluginRepo; use Beike\Repositories\PluginRepo;
use Beike\Repositories\SettingRepo; use Beike\Repositories\SettingRepo;
use Exception;
use Illuminate\Contracts\View\View; use Illuminate\Contracts\View\View;
use Beike\Admin\Http\Resources\PluginResource; use Illuminate\Http\Request;
class PluginController extends Controller class PluginController extends Controller
{ {
@ -25,12 +25,12 @@ class PluginController extends Controller
*/ */
public function index() public function index()
{ {
$plugins = app('plugin')->getPlugins(); $plugins = app('plugin')->getPlugins();
$data['plugins'] = array_values(PluginResource::collection($plugins)->jsonSerialize()); $data['plugins'] = array_values(PluginResource::collection($plugins)->jsonSerialize());
return view('admin::pages.plugins.index', $data); return view('admin::pages.plugins.index', $data);
} }
/** /**
* 上传插件 * 上传插件
*/ */
@ -38,10 +38,10 @@ class PluginController extends Controller
{ {
$zipFile = $request->file('file'); $zipFile = $request->file('file');
app('plugin')->import($zipFile); app('plugin')->import($zipFile);
return json_success(trans('common.success')); return json_success(trans('common.success'));
} }
/** /**
* @param Request $request * @param Request $request
* @param $code * @param $code
@ -52,10 +52,10 @@ class PluginController extends Controller
{ {
$plugin = app('plugin')->getPluginOrFail($code); $plugin = app('plugin')->getPluginOrFail($code);
PluginRepo::installPlugin($plugin); PluginRepo::installPlugin($plugin);
return json_success(trans('common.success')); return json_success(trans('common.success'));
} }
/** /**
* @param Request $request * @param Request $request
* @param $code * @param $code
@ -66,10 +66,10 @@ class PluginController extends Controller
{ {
$plugin = app('plugin')->getPluginOrFail($code); $plugin = app('plugin')->getPluginOrFail($code);
PluginRepo::uninstallPlugin($plugin); PluginRepo::uninstallPlugin($plugin);
return json_success(trans('common.success')); return json_success(trans('common.success'));
} }
/** /**
* @param Request $request * @param Request $request
* @param $code * @param $code
@ -78,13 +78,13 @@ class PluginController extends Controller
*/ */
public function edit(Request $request, $code): View public function edit(Request $request, $code): View
{ {
$plugin = app('plugin')->getPluginOrFail($code); $plugin = app('plugin')->getPluginOrFail($code);
$columnView = $plugin->getColumnView(); $columnView = $plugin->getColumnView();
$view = $columnView ?: 'admin::pages.plugins.form'; $view = $columnView ?: 'admin::pages.plugins.form';
return view($view, ['plugin' => $plugin]); return view($view, ['plugin' => $plugin]);
} }
/** /**
* @param Request $request * @param Request $request
* @param $code * @param $code
@ -104,10 +104,10 @@ class PluginController extends Controller
SettingRepo::update('plugin', $code, $fields); SettingRepo::update('plugin', $code, $fields);
hook_action('after_edit_plugin', ['plugin_code' => $code, 'fields' => $fields]); hook_action('after_edit_plugin', ['plugin_code' => $code, 'fields' => $fields]);
return redirect($this->getRedirect())->with('success', trans('common.updated_success')); return redirect($this->getRedirect())->with('success', trans('common.updated_success'));
} }
/** /**
* @param Request $request * @param Request $request
* @param $code * @param $code
@ -119,6 +119,7 @@ class PluginController extends Controller
app('plugin')->getPluginOrFail($code); app('plugin')->getPluginOrFail($code);
$status = $request->get('status'); $status = $request->get('status');
SettingRepo::update('plugin', $code, ['status' => $status]); SettingRepo::update('plugin', $code, ['status' => $status]);
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
} }

View File

@ -2,17 +2,16 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Requests\ProductRequest;
use Beike\Admin\Http\Resources\ProductAttributeResource; use Beike\Admin\Http\Resources\ProductAttributeResource;
use Beike\Admin\Http\Resources\ProductResource;
use Beike\Admin\Repositories\TaxClassRepo;
use Beike\Admin\Services\ProductService;
use Beike\Models\Product; use Beike\Models\Product;
use Beike\Models\ProductAttribute;
use Illuminate\Http\Request;
use Beike\Repositories\ProductRepo;
use Beike\Repositories\CategoryRepo; use Beike\Repositories\CategoryRepo;
use Beike\Repositories\LanguageRepo; use Beike\Repositories\LanguageRepo;
use Beike\Admin\Services\ProductService; use Beike\Repositories\ProductRepo;
use Beike\Admin\Repositories\TaxClassRepo; use Illuminate\Http\Request;
use Beike\Admin\Http\Requests\ProductRequest;
use Beike\Admin\Http\Resources\ProductResource;
class ProductController extends Controller class ProductController extends Controller
{ {
@ -22,12 +21,12 @@ class ProductController extends Controller
{ {
$requestData = $request->all(); $requestData = $request->all();
$productList = ProductRepo::list($requestData); $productList = ProductRepo::list($requestData);
$products = ProductResource::collection($productList)->resource; $products = ProductResource::collection($productList)->resource;
$data = [ $data = [
'categories' => CategoryRepo::flatten(locale()), 'categories' => CategoryRepo::flatten(locale()),
'products' => $products, 'products' => $products,
'type' => 'products', 'type' => 'products',
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
@ -39,15 +38,15 @@ class ProductController extends Controller
public function trashed(Request $request) public function trashed(Request $request)
{ {
$requestData = $request->all(); $requestData = $request->all();
$requestData['trashed'] = true; $requestData['trashed'] = true;
$productList = ProductRepo::list($requestData); $productList = ProductRepo::list($requestData);
$products = ProductResource::collection($productList)->resource; $products = ProductResource::collection($productList)->resource;
$data = [ $data = [
'categories' => CategoryRepo::flatten(locale()), 'categories' => CategoryRepo::flatten(locale()),
'products' => $products, 'products' => $products,
'type' => 'trashed', 'type' => 'trashed',
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {
@ -66,6 +65,7 @@ class ProductController extends Controller
{ {
try { try {
(new ProductService)->create($request->all()); (new ProductService)->create($request->all());
return redirect()->to(admin_route('products.index')) return redirect()->to(admin_route('products.index'))
->with('success', trans('common.created_success')); ->with('success', trans('common.created_success'));
} catch (\Exception $e) { } catch (\Exception $e) {
@ -84,6 +84,7 @@ class ProductController extends Controller
{ {
try { try {
(new ProductService)->update($product, $request->all()); (new ProductService)->update($product, $request->all());
return redirect()->to($this->getRedirect())->with('success', trans('common.updated_success')); return redirect()->to($this->getRedirect())->with('success', trans('common.updated_success'));
} catch (\Exception $e) { } catch (\Exception $e) {
return redirect(admin_route('products.edit', $product))->withErrors(['error' => $e->getMessage()]); return redirect(admin_route('products.edit', $product))->withErrors(['error' => $e->getMessage()]);
@ -93,6 +94,7 @@ class ProductController extends Controller
public function destroy(Request $request, Product $product) public function destroy(Request $request, Product $product)
{ {
$product->delete(); $product->delete();
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
@ -108,22 +110,22 @@ class ProductController extends Controller
{ {
if ($product->id) { if ($product->id) {
$descriptions = $product->descriptions->keyBy('locale'); $descriptions = $product->descriptions->keyBy('locale');
$categoryIds = $product->categories->pluck('id')->toArray(); $categoryIds = $product->categories->pluck('id')->toArray();
$product->load('brand', 'attributes'); $product->load('brand', 'attributes');
} }
$data = [ $data = [
'product' => $product, 'product' => $product,
'descriptions' => $descriptions ?? [], 'descriptions' => $descriptions ?? [],
'category_ids' => $categoryIds ?? [], 'category_ids' => $categoryIds ?? [],
'product_attributes' => ProductAttributeResource::collection($product->attributes), 'product_attributes' => ProductAttributeResource::collection($product->attributes),
'relations' => ProductResource::collection($product->relations)->resource, 'relations' => ProductResource::collection($product->relations)->resource,
'languages' => LanguageRepo::all(), 'languages' => LanguageRepo::all(),
'tax_classes' => TaxClassRepo::getList(), 'tax_classes' => TaxClassRepo::getList(),
'source' => [ 'source' => [
'categories' => CategoryRepo::flatten(locale()), 'categories' => CategoryRepo::flatten(locale()),
], ],
'_redirect' => $this->getRedirect(), '_redirect' => $this->getRedirect(),
]; ];
return view('admin::pages.products.form.form', $data); return view('admin::pages.products.form.form', $data);
@ -136,7 +138,6 @@ class ProductController extends Controller
return json_success(trans('common.get_success'), $name); return json_success(trans('common.get_success'), $name);
} }
/** /**
* 根据商品ID批量获取商品名称 * 根据商品ID批量获取商品名称
* *
@ -146,12 +147,11 @@ class ProductController extends Controller
public function getNames(Request $request): array public function getNames(Request $request): array
{ {
$productIds = explode(',', $request->get('product_ids')); $productIds = explode(',', $request->get('product_ids'));
$name = ProductRepo::getNames($productIds); $name = ProductRepo::getNames($productIds);
return json_success(trans('common.get_success'), $name); return json_success(trans('common.get_success'), $name);
} }
public function autocomplete(Request $request) public function autocomplete(Request $request)
{ {
$products = ProductRepo::autocomplete($request->get('name') ?? ''); $products = ProductRepo::autocomplete($request->get('name') ?? '');
@ -166,7 +166,6 @@ class ProductController extends Controller
return json_success(trans('common.updated_success'), []); return json_success(trans('common.updated_success'), []);
} }
public function destroyByIds(Request $request) public function destroyByIds(Request $request)
{ {
ProductRepo::DeleteByIds($request->get('ids')); ProductRepo::DeleteByIds($request->get('ids'));

View File

@ -11,18 +11,17 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Models\Region;
use Illuminate\Http\Request;
use Beike\Repositories\CountryRepo;
use Beike\Admin\Repositories\RegionRepo; use Beike\Admin\Repositories\RegionRepo;
use Beike\Repositories\CountryRepo;
use Illuminate\Http\Request;
class RegionController class RegionController
{ {
public function index() public function index()
{ {
$data = [ $data = [
'regions' => RegionRepo::getList(), 'regions' => RegionRepo::getList(),
'countries' => CountryRepo::all() 'countries' => CountryRepo::all(),
]; ];
return view('admin::pages.regions.index', $data); return view('admin::pages.regions.index', $data);
@ -31,21 +30,24 @@ class RegionController
public function store(Request $request) public function store(Request $request)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$region = RegionRepo::createOrUpdate($requestData); $region = RegionRepo::createOrUpdate($requestData);
return json_success(trans('common.created_success'), $region); return json_success(trans('common.created_success'), $region);
} }
public function update(Request $request, int $regionId) public function update(Request $request, int $regionId)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$requestData['id'] = $regionId; $requestData['id'] = $regionId;
$region = RegionRepo::createOrUpdate($requestData); $region = RegionRepo::createOrUpdate($requestData);
return json_success(trans('common.updated_success'), $region); return json_success(trans('common.updated_success'), $region);
} }
public function destroy(Request $request, int $regionId) public function destroy(Request $request, int $regionId)
{ {
RegionRepo::deleteById($regionId); RegionRepo::deleteById($regionId);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -13,10 +13,7 @@ namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Resources\RmaDetail; use Beike\Admin\Http\Resources\RmaDetail;
use Beike\Admin\Http\Resources\RmaHistoryDetail; use Beike\Admin\Http\Resources\RmaHistoryDetail;
use Beike\Models\Rma;
use Beike\Repositories\RmaReasonRepo;
use Beike\Repositories\RmaRepo; use Beike\Repositories\RmaRepo;
use Exception;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class RmaController extends Controller class RmaController extends Controller
@ -25,7 +22,7 @@ class RmaController extends Controller
{ {
$rmas = RmaRepo::list($request->only('name', 'email', 'telephone', 'product_name', 'sku', 'type', 'status')); $rmas = RmaRepo::list($request->only('name', 'email', 'telephone', 'product_name', 'sku', 'type', 'status'));
$data = [ $data = [
'rmas' => $rmas, 'rmas' => $rmas,
'rmas_format' => RmaDetail::collection($rmas)->jsonSerialize(), 'rmas_format' => RmaDetail::collection($rmas)->jsonSerialize(),
]; ];
@ -38,13 +35,14 @@ class RmaController extends Controller
*/ */
public function show(int $id) public function show(int $id)
{ {
$rma = RmaRepo::find($id); $rma = RmaRepo::find($id);
$data = [ $data = [
'rma' => (new RmaDetail($rma))->jsonSerialize(), 'rma' => (new RmaDetail($rma))->jsonSerialize(),
'histories' => RmaHistoryDetail::collection($rma->histories)->jsonSerialize(), 'histories' => RmaHistoryDetail::collection($rma->histories)->jsonSerialize(),
'statuses' => RmaRepo::getStatuses(), 'statuses' => RmaRepo::getStatuses(),
'types' => RmaRepo::getTypes(), 'types' => RmaRepo::getTypes(),
]; ];
return view('admin::pages.rmas.info', $data); return view('admin::pages.rmas.info', $data);
} }
@ -53,9 +51,10 @@ class RmaController extends Controller
RmaRepo::addHistory($id, $request->only('status', 'notify', 'comment')); RmaRepo::addHistory($id, $request->only('status', 'notify', 'comment'));
$data = [ $data = [
'rma' => (new RmaDetail(RmaRepo::find($id)))->jsonSerialize(), 'rma' => (new RmaDetail(RmaRepo::find($id)))->jsonSerialize(),
'statuses' => RmaRepo::getStatuses(), 'statuses' => RmaRepo::getStatuses(),
]; ];
return json_success(trans('common.updated_success'), $data); return json_success(trans('common.updated_success'), $data);
} }

View File

@ -12,8 +12,8 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Resources\RmaReasonDetail; use Beike\Admin\Http\Resources\RmaReasonDetail;
use Beike\Repositories\RmaReasonRepo;
use Beike\Repositories\LanguageRepo; use Beike\Repositories\LanguageRepo;
use Beike\Repositories\RmaReasonRepo;
use Exception; use Exception;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -24,7 +24,7 @@ class RmaReasonController extends Controller
$rmaReasons = RmaReasonRepo::list($request->only('name')); $rmaReasons = RmaReasonRepo::list($request->only('name'));
$data = [ $data = [
'languages' => LanguageRepo::all(), 'languages' => LanguageRepo::all(),
'rmaReasons' => RmaReasonDetail::collection($rmaReasons)->jsonSerialize(), 'rmaReasons' => RmaReasonDetail::collection($rmaReasons)->jsonSerialize(),
]; ];
@ -38,6 +38,7 @@ class RmaReasonController extends Controller
public function store(Request $request): array public function store(Request $request): array
{ {
$rmaReason = RmaReasonRepo::create($request->only('name')); $rmaReason = RmaReasonRepo::create($request->only('name'));
return json_success(trans('common.created_success'), $rmaReason); return json_success(trans('common.created_success'), $rmaReason);
} }

View File

@ -11,12 +11,12 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Illuminate\Http\Request; use Beike\Admin\Http\Resources\CustomerGroupDetail;
use Beike\Repositories\SettingRepo;
use Beike\Repositories\CountryRepo; use Beike\Repositories\CountryRepo;
use Beike\Repositories\CurrencyRepo; use Beike\Repositories\CurrencyRepo;
use Beike\Repositories\CustomerGroupRepo; use Beike\Repositories\CustomerGroupRepo;
use Beike\Admin\Http\Resources\CustomerGroupDetail; use Beike\Repositories\SettingRepo;
use Illuminate\Http\Request;
class SettingController extends Controller class SettingController extends Controller
{ {
@ -29,26 +29,25 @@ class SettingController extends Controller
{ {
$themes = [ $themes = [
['value' => 'default', 'label' => trans('admin/setting.theme_default')], ['value' => 'default', 'label' => trans('admin/setting.theme_default')],
['value' => 'black', 'label' => trans('admin/setting.theme_black')] ['value' => 'black', 'label' => trans('admin/setting.theme_black')],
]; ];
$tax_address = [ $tax_address = [
['value' => 'shipping', 'label' => trans('admin/setting.shipping_address')], ['value' => 'shipping', 'label' => trans('admin/setting.shipping_address')],
['value' => 'payment', 'label' => trans('admin/setting.payment_address')] ['value' => 'payment', 'label' => trans('admin/setting.payment_address')],
]; ];
$data = [ $data = [
'countries' => CountryRepo::listEnabled(), 'countries' => CountryRepo::listEnabled(),
'currencies' => CurrencyRepo::listEnabled(), 'currencies' => CurrencyRepo::listEnabled(),
'tax_address' => $tax_address, 'tax_address' => $tax_address,
'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(), 'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(),
'themes' => $themes 'themes' => $themes,
]; ];
return view('admin::pages.setting', $data); return view('admin::pages.setting', $data);
} }
/** /**
* 更新系统设置 * 更新系统设置
* *
@ -63,13 +62,15 @@ class SettingController extends Controller
$oldAdminName = admin_name(); $oldAdminName = admin_name();
$newAdminName = $settings['admin_name'] ?: 'admin'; $newAdminName = $settings['admin_name'] ?: 'admin';
$settingUrl = str_replace($oldAdminName, $newAdminName, admin_route('settings.index')); $settingUrl = str_replace($oldAdminName, $newAdminName, admin_route('settings.index'));
return redirect($settingUrl)->with('success', trans('common.updated_success')); return redirect($settingUrl)->with('success', trans('common.updated_success'));
} }
public function storeDeveloperToken(Request $request) public function storeDeveloperToken(Request $request)
{ {
SettingRepo::storeValue('developer_token', $request->get('developer_token')); SettingRepo::storeValue('developer_token', $request->get('developer_token'));
return json_success(trans('common.updated_success')); return json_success(trans('common.updated_success'));
} }
} }

View File

@ -11,18 +11,18 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Repositories\TaxClassRepo;
use Beike\Models\TaxRate; use Beike\Models\TaxRate;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Beike\Admin\Repositories\TaxClassRepo;
class TaxClassController extends Controller class TaxClassController extends Controller
{ {
public function index() public function index()
{ {
$data = [ $data = [
'tax_classes' => TaxClassRepo::getList(), 'tax_classes' => TaxClassRepo::getList(),
'all_tax_rates' => TaxRate::all(), 'all_tax_rates' => TaxRate::all(),
'bases' => TaxClassRepo::BASE_TYPES, 'bases' => TaxClassRepo::BASE_TYPES,
]; ];
return view('admin::pages.tax_classes.index', $data); return view('admin::pages.tax_classes.index', $data);
@ -31,21 +31,24 @@ class TaxClassController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$taxClass = TaxClassRepo::createOrUpdate($requestData); $taxClass = TaxClassRepo::createOrUpdate($requestData);
return json_success(trans('common.created_success'), $taxClass); return json_success(trans('common.created_success'), $taxClass);
} }
public function update(Request $request, int $taxClassId) public function update(Request $request, int $taxClassId)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$requestData['id'] = $taxClassId; $requestData['id'] = $taxClassId;
$taxClass = TaxClassRepo::createOrUpdate($requestData); $taxClass = TaxClassRepo::createOrUpdate($requestData);
return json_success(trans('common.updated_success'), $taxClass); return json_success(trans('common.updated_success'), $taxClass);
} }
public function destroy(Request $request, int $taxClassId) public function destroy(Request $request, int $taxClassId)
{ {
TaxClassRepo::deleteById($taxClassId); TaxClassRepo::deleteById($taxClassId);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -12,9 +12,9 @@
namespace Beike\Admin\Http\Controllers; namespace Beike\Admin\Http\Controllers;
use Beike\Admin\Http\Requests\TaxRateRequest; use Beike\Admin\Http\Requests\TaxRateRequest;
use Beike\Admin\Repositories\TaxRateRepo;
use Beike\Models\Region; use Beike\Models\Region;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Beike\Admin\Repositories\TaxRateRepo;
class TaxRateController class TaxRateController
{ {
@ -22,7 +22,7 @@ class TaxRateController
{ {
$data = [ $data = [
'tax_rates' => TaxRateRepo::getList(), 'tax_rates' => TaxRateRepo::getList(),
'regions' => Region::all() 'regions' => Region::all(),
]; ];
return view('admin::pages.tax_rates.index', $data); return view('admin::pages.tax_rates.index', $data);
@ -31,23 +31,26 @@ class TaxRateController
public function store(TaxRateRequest $request) public function store(TaxRateRequest $request)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$taxRate = TaxRateRepo::createOrUpdate($requestData); $taxRate = TaxRateRepo::createOrUpdate($requestData);
$taxRate->load('region'); $taxRate->load('region');
return json_success(trans('common.created_success'), $taxRate); return json_success(trans('common.created_success'), $taxRate);
} }
public function update(TaxRateRequest $request, int $taxRateId) public function update(TaxRateRequest $request, int $taxRateId)
{ {
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$requestData['id'] = $taxRateId; $requestData['id'] = $taxRateId;
$taxRate = TaxRateRepo::createOrUpdate($requestData); $taxRate = TaxRateRepo::createOrUpdate($requestData);
$taxRate->load('region'); $taxRate->load('region');
return json_success(trans('common.updated_success'), $taxRate); return json_success(trans('common.updated_success'), $taxRate);
} }
public function destroy(Request $request, int $taxRateId) public function destroy(Request $request, int $taxRateId)
{ {
TaxRateRepo::deleteById($taxRateId); TaxRateRepo::deleteById($taxRateId);
return json_success(trans('common.deleted_success')); return json_success(trans('common.deleted_success'));
} }
} }

View File

@ -22,8 +22,8 @@ class ZoneController extends Controller
$zones = ZoneRepo::list($request->only('name', 'code', 'status')); $zones = ZoneRepo::list($request->only('name', 'code', 'status'));
$data = [ $data = [
'zones' => $zones, 'zones' => $zones,
'countries' => CountryRepo::all() 'countries' => CountryRepo::all(),
]; ];
if ($request->expectsJson()) { if ($request->expectsJson()) {

View File

@ -32,7 +32,7 @@ class AdminUserRequest extends FormRequest
*/ */
public function rules(): array public function rules(): array
{ {
if (!$this->id) { if (! $this->id) {
$rules['email'] = 'required|email:rfc|unique:admin_users,email'; $rules['email'] = 'required|email:rfc|unique:admin_users,email';
} else { } else {
$rules['email'] = 'required|email:rfc|unique:admin_users,email,' . $this->id; $rules['email'] = 'required|email:rfc|unique:admin_users,email,' . $this->id;

View File

@ -24,11 +24,11 @@ class CurrencyRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'name' => 'required', 'name' => 'required',
'code' => 'required|max:16', 'code' => 'required|max:16',
'symbol_left' => 'max:16', 'symbol_left' => 'max:16',
'symbol_right' => 'max:16', 'symbol_right' => 'max:16',
'value' => 'required', 'value' => 'required',
'decimal_place' => 'required|max:1', 'decimal_place' => 'required|max:1',
]; ];
} }
@ -36,11 +36,11 @@ class CurrencyRequest extends FormRequest
public function attributes() public function attributes()
{ {
return [ return [
'name' => trans('currency.name'), 'name' => trans('currency.name'),
'code' => trans('currency.code'), 'code' => trans('currency.code'),
'symbol_left' => trans('currency.symbol_left'), 'symbol_left' => trans('currency.symbol_left'),
'symbol_right' => trans('currency.symbol_right'), 'symbol_right' => trans('currency.symbol_right'),
'value' => trans('currency.value'), 'value' => trans('currency.value'),
'decimal_place' => trans('currency.decimal_place'), 'decimal_place' => trans('currency.decimal_place'),
]; ];
} }

View File

@ -34,7 +34,7 @@ class CustomerGroupRequest extends FormRequest
{ {
return [ return [
'name.*' => 'required|max:64', 'name.*' => 'required|max:64',
'level' => 'required|max:16', 'level' => 'required|max:16',
]; ];
} }
@ -42,7 +42,7 @@ class CustomerGroupRequest extends FormRequest
{ {
return [ return [
'descriptions.*.name' => trans('customer_group.name'), 'descriptions.*.name' => trans('customer_group.name'),
'level' => trans('customer_group.level'), 'level' => trans('customer_group.level'),
]; ];
} }
} }

View File

@ -33,24 +33,25 @@ class CustomerRequest extends FormRequest
public function rules() public function rules()
{ {
$rules = [ $rules = [
'name' => 'required|max:64', 'name' => 'required|max:64',
'email' => 'required|email:rfc|unique:customers', 'email' => 'required|email:rfc|unique:customers',
'customer_group_id' => 'required|exists:customer_groups,id', 'customer_group_id' => 'required|exists:customer_groups,id',
]; ];
if (!$this->id) { if (! $this->id) {
$rules['password'] = 'required|max:64'; $rules['password'] = 'required|max:64';
} else { } else {
$rules['email'] = 'required|email:rfc|unique:customers,email,' . $this->id; $rules['email'] = 'required|email:rfc|unique:customers,email,' . $this->id;
} }
return $rules; return $rules;
} }
public function attributes() public function attributes()
{ {
return [ return [
'name' => trans('customer.name'), 'name' => trans('customer.name'),
'email' => trans('customer.email'), 'email' => trans('customer.email'),
'password' => trans('customer.password'), 'password' => trans('customer.password'),
'customer_group_id' => trans('customer.customer_group_id'), 'customer_group_id' => trans('customer.customer_group_id'),
]; ];
} }

View File

@ -31,7 +31,7 @@ class ForgottenRequest extends FormRequest
public function attributes() public function attributes()
{ {
return [ return [
'password' => trans('customer.password') 'password' => trans('customer.password'),
]; ];
} }
} }

View File

@ -24,10 +24,8 @@ class LoginRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
return [ return [
'email' => ['required', 'email'], 'email' => ['required', 'email'],
'password' => 'required', 'password' => 'required',
]; ];
} }
} }

View File

@ -33,9 +33,9 @@ class PageRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
$rules = [ $rules = [
'descriptions.*.title' => 'required|string|min:3|max:32', 'descriptions.*.title' => 'required|string|min:3|max:32',
'descriptions.*.content' => 'required|string', 'descriptions.*.content' => 'required|string',
'descriptions.*.locale' => 'required|string', 'descriptions.*.locale' => 'required|string',
]; ];
return $rules; return $rules;
@ -44,7 +44,7 @@ class PageRequest extends FormRequest
public function attributes() public function attributes()
{ {
return [ return [
'title' => trans('page.title'), 'title' => trans('page.title'),
'content' => trans('page.content'), 'content' => trans('page.content'),
]; ];
} }

View File

@ -34,11 +34,11 @@ class ProductRequest extends FormRequest
{ {
return [ return [
'descriptions.*.name' => 'required|string|min:3|max:128', 'descriptions.*.name' => 'required|string|min:3|max:128',
'brand_id' => 'int', 'brand_id' => 'int',
'skus.*.sku' => 'required|string', 'skus.*.sku' => 'required|string',
'skus.*.price' => 'required|numeric', 'skus.*.price' => 'required|numeric',
'skus.*.origin_price' => 'required|numeric', 'skus.*.origin_price' => 'required|numeric',
'skus.*.cost_price' => 'numeric', 'skus.*.cost_price' => 'numeric',
]; ];
} }
@ -46,11 +46,11 @@ class ProductRequest extends FormRequest
{ {
return [ return [
'descriptions.*.name' => trans('product.name'), 'descriptions.*.name' => trans('product.name'),
'brand_id' => trans('product.brand'), 'brand_id' => trans('product.brand'),
'skus.*.sku' => trans('product.sku'), 'skus.*.sku' => trans('product.sku'),
'skus.*.price' => trans('product.price'), 'skus.*.price' => trans('product.price'),
'skus.*.origin_price' => trans('product.origin_price'), 'skus.*.origin_price' => trans('product.origin_price'),
'skus.*.cost_price' => trans('product.cost_price'), 'skus.*.cost_price' => trans('product.cost_price'),
]; ];
} }
} }

View File

@ -33,27 +33,28 @@ class RmaRequest extends FormRequest
public function rules() public function rules()
{ {
$rules = [ $rules = [
'order_id' => 'required|exists:orders,id', 'order_id' => 'required|exists:orders,id',
'order_product_id' => 'required|exists:order_products,id', 'order_product_id' => 'required|exists:order_products,id',
'customer_id' => 'required|exists:customers,id', 'customer_id' => 'required|exists:customers,id',
'quantity' => 'required', 'quantity' => 'required',
'opened' => 'required', 'opened' => 'required',
'rma_reason_id' => 'required|exists:rma_reasons,id', 'rma_reason_id' => 'required|exists:rma_reasons,id',
'type' => 'required', 'type' => 'required',
]; ];
return $rules; return $rules;
} }
public function attributes() public function attributes()
{ {
return [ return [
'order_id' => trans('rma.order_id'), 'order_id' => trans('rma.order_id'),
'order_product_id' => trans('rma.order_product_id'), 'order_product_id' => trans('rma.order_product_id'),
'customer_id' => trans('rma.customer_id'), 'customer_id' => trans('rma.customer_id'),
'quantity' => trans('rma.quantity'), 'quantity' => trans('rma.quantity'),
'opened' => trans('rma.opened'), 'opened' => trans('rma.opened'),
'rma_reason_id' => trans('rma.rma_reason_id'), 'rma_reason_id' => trans('rma.rma_reason_id'),
'type' => trans('rma.type'), 'type' => trans('rma.type'),
]; ];
} }
} }

View File

@ -33,19 +33,19 @@ class TaxRateRequest extends FormRequest
public function rules(): array public function rules(): array
{ {
$rule = [ $rule = [
'name' => 'required|string|max:10', 'name' => 'required|string|max:10',
'rate' => 'required|numeric', 'rate' => 'required|numeric',
'type' => 'required|in:percent,flat', 'type' => 'required|in:percent,flat',
'region_id' => 'required|int', 'region_id' => 'required|int',
]; ];
if ($this->type == 'percent') { if ($this->type == 'percent') {
$rule['rate'] = 'required|numeric|gt:0|lt:100'; $rule['rate'] = 'required|numeric|gt:0|lt:100';
} }
return $rule; return $rule;
} }
public function attributes() public function attributes()
{ {
return [ return [

View File

@ -9,22 +9,22 @@ class AddressResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'name' => $this->name, 'name' => $this->name,
'phone' => $this->phone, 'phone' => $this->phone,
'country_id' => $this->country_id, 'country_id' => $this->country_id,
'country' => $this->country->name, 'country' => $this->country->name,
'zone_id' => $this->zone_id, 'zone_id' => $this->zone_id,
'zone' => $this->zone, 'zone' => $this->zone,
'city' => $this->city, 'city' => $this->city,
'zipcode' => $this->zipcode, 'zipcode' => $this->zipcode,
'address_1' => $this->address_1, 'address_1' => $this->address_1,
'address_2' => $this->address_2, 'address_2' => $this->address_2,
]; ];
return $data; return $data;

View File

@ -18,11 +18,11 @@ class AdminUserDetail extends JsonResource
public function toArray($request): array public function toArray($request): array
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'name' => $this->name, 'name' => $this->name,
'email' => $this->email, 'email' => $this->email,
'locale' => $this->locale, 'locale' => $this->locale,
'roles' => $this->roles, 'roles' => $this->roles,
'roles_name' => $this->roles->pluck('name')->toArray(), 'roles_name' => $this->roles->pluck('name')->toArray(),
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'updated_at' => time_format($this->updated_at), 'updated_at' => time_format($this->updated_at),

View File

@ -9,20 +9,20 @@ class AttributeDetailResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'attribute_group_id' => $this->attribute_group_id, 'attribute_group_id' => $this->attribute_group_id,
'name' => $this->description->name ?? '', 'name' => $this->description->name ?? '',
'sort_order' => $this->sort_order, 'sort_order' => $this->sort_order,
'attribute_group_name' => $this->attributeGroup->description->name ?? '', 'attribute_group_name' => $this->attributeGroup->description->name ?? '',
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'values' => AttributeValueResource::collection($this->values), 'values' => AttributeValueResource::collection($this->values),
'descriptions' => $this->descriptions 'descriptions' => $this->descriptions,
]; ];
return $data; return $data;

View File

@ -9,17 +9,17 @@ class AttributeResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'name' => $this->description->name ?? '', 'name' => $this->description->name ?? '',
'sort_order' => $this->sort_order, 'sort_order' => $this->sort_order,
'attribute_group_name' => $this->attributeGroup->description->name ?? '', 'attribute_group_name' => $this->attributeGroup->description->name ?? '',
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
]; ];
return $data; return $data;

View File

@ -9,18 +9,18 @@ class AttributeValueResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'attribute_id' => $this->attribute_id, 'attribute_id' => $this->attribute_id,
'name' => $this->description->name, 'name' => $this->description->name,
'description' => $this->description, 'description' => $this->description,
'descriptions' => $this->descriptions, 'descriptions' => $this->descriptions,
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
]; ];
return $data; return $data;

View File

@ -9,13 +9,13 @@ class AutocompleteResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'name' => $this->description->name ?? '', 'name' => $this->description->name ?? '',
]; ];

View File

@ -9,19 +9,19 @@ class CategoryResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'name' => $this->description->name ?? '', 'name' => $this->description->name ?? '',
'parent_id' => $this->parent_id, 'parent_id' => $this->parent_id,
'position' => $this->position, 'position' => $this->position,
'active' => $this->active, 'active' => $this->active,
'url_edit' => admin_route('categories.edit', $this), 'url_edit' => admin_route('categories.edit', $this),
'children' => CategoryResource::collection($this->children), 'children' => self::collection($this->children),
]; ];
return $data; return $data;

View File

@ -10,20 +10,20 @@ class CustomerGroupDetail extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param Request $request * @param Request $request
* @return array * @return array
*/ */
public function toArray($request): array public function toArray($request): array
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'total' => $this->total, 'total' => $this->total,
'reward_point_factor' => $this->reward_point_factor, 'reward_point_factor' => $this->reward_point_factor,
'use_point_factor' => $this->use_point_factor, 'use_point_factor' => $this->use_point_factor,
'discount_factor' => $this->discount_factor, 'discount_factor' => $this->discount_factor,
'level' => $this->level, 'level' => $this->level,
'name' => $this->description->name ?? '', 'name' => $this->description->name ?? '',
'description' => $this->description->description ?? '', 'description' => $this->description->description ?? '',
]; ];
return $data; return $data;

View File

@ -9,22 +9,22 @@ class CustomerResource extends JsonResource
/** /**
* Transform the resource into an array. * Transform the resource into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable * @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
*/ */
public function toArray($request) public function toArray($request)
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'name' => $this->name, 'name' => $this->name,
'email' => $this->email, 'email' => $this->email,
'status' => $this->status, 'status' => $this->status,
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'avatar' => image_resize($this->avatar), 'avatar' => image_resize($this->avatar),
'from' => $this->from, 'from' => $this->from,
'customer_group_name' => $this->customerGroup->description->name ?? '', 'customer_group_name' => $this->customerGroup->description->name ?? '',
'edit' => admin_route('customers.edit', $this->id), 'edit' => admin_route('customers.edit', $this->id),
'delete' => admin_route('customers.destroy', $this->id), 'delete' => admin_route('customers.destroy', $this->id),
]; ];
return $data; return $data;

View File

@ -18,13 +18,13 @@ class OrderSimple extends JsonResource
public function toArray($request): array public function toArray($request): array
{ {
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'number' => $this->number, 'number' => $this->number,
'customer_name' => $this->customer_name, 'customer_name' => $this->customer_name,
'email' => $this->email, 'email' => $this->email,
'telephone' => $this->telephone, 'telephone' => $this->telephone,
'created_at' => $this->created_at, 'created_at' => $this->created_at,
'updated_at' => $this->updated_at, 'updated_at' => $this->updated_at,
'status_format' => $this->status_format, 'status_format' => $this->status_format,
]; ];

View File

@ -17,19 +17,19 @@ class PluginResource extends JsonResource
public function toArray($request): array public function toArray($request): array
{ {
$data = [ $data = [
'name' => $this->name, 'name' => $this->name,
'version' => $this->version, 'version' => $this->version,
'dir_name' => $this->dirName, 'dir_name' => $this->dirName,
'path' => $this->path, 'path' => $this->path,
'code' => $this->code, 'code' => $this->code,
'description' => $this->description, 'description' => $this->description,
'type' => $this->type, 'type' => $this->type,
'type_format' => trans('admin/plugin.' . $this->type), 'type_format' => trans('admin/plugin.' . $this->type),
'icon' => plugin_resize($this->code, $this->icon), 'icon' => plugin_resize($this->code, $this->icon),
'author' => $this->author, 'author' => $this->author,
'status' => $this->getStatus(), 'status' => $this->getStatus(),
'installed' => $this->getInstalled(), 'installed' => $this->getInstalled(),
'edit_url' => $this->getEditUrl(), 'edit_url' => $this->getEditUrl(),
]; ];
return $data; return $data;

View File

@ -18,15 +18,15 @@ class ProductAttributeResource extends JsonResource
{ {
$this->load('attribute', 'attributeValue'); $this->load('attribute', 'attributeValue');
$data = [ $data = [
'attribute' => [ 'attribute' => [
'id' => $this->attribute_id, 'id' => $this->attribute_id,
'name' => $this->attribute->description->name, 'name' => $this->attribute->description->name,
], ],
'attribute_value' => [ 'attribute_value' => [
'id' => $this->attribute_value_id, 'id' => $this->attribute_value_id,
'name' => $this->attributeValue->description->name, 'name' => $this->attributeValue->description->name,
], ],
]; ];
return $data; return $data;
} }

View File

@ -19,18 +19,18 @@ class ProductResource extends JsonResource
$masterSku = $this->master_sku; $masterSku = $this->master_sku;
$data = [ $data = [
'id' => $this->id, 'id' => $this->id,
'images' => array_map(function ($image) { 'images' => array_map(function ($image) {
return image_resize($image); return image_resize($image);
}, $this->images ?? []), }, $this->images ?? []),
'name' => $this->description->name ?? '', 'name' => $this->description->name ?? '',
'price_formatted' => currency_format($masterSku->price), 'price_formatted' => currency_format($masterSku->price),
'active' => $this->active, 'active' => $this->active,
'position' => $this->position, 'position' => $this->position,
'url' => shop_route('products.show', $this->id), 'url' => shop_route('products.show', $this->id),
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'deleted_at' => $this->deleted_at ? time_format($this->deleted_at) : '', 'deleted_at' => $this->deleted_at ? time_format($this->deleted_at) : '',
'url_edit' => admin_route('products.edit', $this->id), 'url_edit' => admin_route('products.edit', $this->id),
]; ];
return $data; return $data;

View File

@ -18,25 +18,25 @@ class RmaDetail extends JsonResource
{ {
public function toArray($request): array public function toArray($request): array
{ {
$types = RmaRepo::getTypes(); $types = RmaRepo::getTypes();
$statuses = RmaRepo::getStatuses(); $statuses = RmaRepo::getStatuses();
return [ return [
'id' => $this->id, 'id' => $this->id,
'order_product_id' => $this->order_product_id, 'order_product_id' => $this->order_product_id,
'quantity' => $this->quantity, 'quantity' => $this->quantity,
'opened' => $this->opened, 'opened' => $this->opened,
'type' => $types[$this->type], 'type' => $types[$this->type],
'comment' => $this->comment, 'comment' => $this->comment,
'status' => $statuses[$this->status], 'status' => $statuses[$this->status],
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'email' => $this->email, 'email' => $this->email,
'telephone' => $this->telephone, 'telephone' => $this->telephone,
'product_name' => $this->product_name, 'product_name' => $this->product_name,
'name' => $this->name, 'name' => $this->name,
'sku' => $this->sku, 'sku' => $this->sku,
'reason' => $this->reason ? (json_decode($this->reason->name, true)[locale()] ?? '') : '', 'reason' => $this->reason ? (json_decode($this->reason->name, true)[locale()] ?? '') : '',
'type_text' => $this->type_text, 'type_text' => $this->type_text,
]; ];
} }
} }

View File

@ -21,12 +21,12 @@ class RmaHistoryDetail extends JsonResource
$statuses = RmaRepo::getStatuses(); $statuses = RmaRepo::getStatuses();
return [ return [
'id' => $this->id, 'id' => $this->id,
'rma_id' => $this->rma_id, 'rma_id' => $this->rma_id,
'status' => $statuses[$this->status], 'status' => $statuses[$this->status],
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'notify' => $this->notify, 'notify' => $this->notify,
'comment' => $this->comment, 'comment' => $this->comment,
]; ];
} }
} }

View File

@ -11,7 +11,6 @@
namespace Beike\Admin\Http\Resources; namespace Beike\Admin\Http\Resources;
use Beike\Repositories\RmaRepo;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
class RmaReasonDetail extends JsonResource class RmaReasonDetail extends JsonResource
@ -19,9 +18,9 @@ class RmaReasonDetail extends JsonResource
public function toArray($request): array public function toArray($request): array
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'name' => json_decode($this->name, true)[locale()] ?? '', 'name' => json_decode($this->name, true)[locale()] ?? '',
'names' => json_decode($this->name, true) 'names' => json_decode($this->name, true),
]; ];
} }
} }

View File

@ -18,13 +18,13 @@ class TaxClassDetail extends JsonResource
public function toArray($request): array public function toArray($request): array
{ {
return [ return [
'id' => $this->id, 'id' => $this->id,
'title' => $this->title, 'title' => $this->title,
'description' => sub_string($this->description), 'description' => sub_string($this->description),
'created_at' => time_format($this->created_at), 'created_at' => time_format($this->created_at),
'updated_at' => time_format($this->updated_at), 'updated_at' => time_format($this->updated_at),
'tax_rates' => $this->taxRates->toArray(), 'tax_rates' => $this->taxRates->toArray(),
'tax_rules' => $this->taxRules->toArray(), 'tax_rules' => $this->taxRules->toArray(),
]; ];
} }
} }

View File

@ -11,25 +11,25 @@
namespace Beike\Admin\Providers; namespace Beike\Admin\Providers;
use Beike\Models\AdminUser;
use Illuminate\Support\Str;
use Beike\Console\Commands\Sitemap;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\ServiceProvider;
use Beike\Admin\View\Components\Filter;
use Beike\Admin\View\Components\Header;
use Beike\Admin\View\Components\Sidebar;
use Beike\Admin\View\Components\Alert; use Beike\Admin\View\Components\Alert;
use Beike\Admin\View\Components\NoData; use Beike\Admin\View\Components\Filter;
use Beike\Admin\View\Components\Form\Image; use Beike\Admin\View\Components\Form\Image;
use Beike\Admin\View\Components\Form\Input; use Beike\Admin\View\Components\Form\Input;
use Beike\Admin\View\Components\Form\Select;
use Beike\Console\Commands\MakeRootAdminUser;
use Beike\Admin\View\Components\Form\Textarea;
use Beike\Console\Commands\GenerateDatabaseDict;
use Beike\Admin\View\Components\Form\InputLocale; use Beike\Admin\View\Components\Form\InputLocale;
use Beike\Admin\View\Components\Form\Select;
use Beike\Admin\View\Components\Form\SwitchRadio; use Beike\Admin\View\Components\Form\SwitchRadio;
use Beike\Admin\View\Components\Form\Textarea;
use Beike\Admin\View\Components\Header;
use Beike\Admin\View\Components\NoData;
use Beike\Admin\View\Components\Sidebar;
use Beike\Console\Commands\GenerateDatabaseDict;
use Beike\Console\Commands\MakeRootAdminUser;
use Beike\Console\Commands\Sitemap;
use Beike\Models\AdminUser;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\View;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
use Illuminate\View\FileViewFinder; use Illuminate\View\FileViewFinder;
class AdminServiceProvider extends ServiceProvider class AdminServiceProvider extends ServiceProvider
@ -51,7 +51,7 @@ class AdminServiceProvider extends ServiceProvider
$this->loadRoutesFrom(__DIR__ . '/../Routes/admin.php'); $this->loadRoutesFrom(__DIR__ . '/../Routes/admin.php');
$adminName = admin_name(); $adminName = admin_name();
if (!Str::startsWith($uri, "/{$adminName}")) { if (! Str::startsWith($uri, "/{$adminName}")) {
return; return;
} }
@ -69,13 +69,12 @@ class AdminServiceProvider extends ServiceProvider
Config::set('filesystems.disks.catalog', [ Config::set('filesystems.disks.catalog', [
'driver' => 'local', 'driver' => 'local',
'root' => public_path('catalog'), 'root' => public_path('catalog'),
]); ]);
$this->loadDesignComponents(); $this->loadDesignComponents();
} }
/** /**
* 加载后台命令行脚本 * 加载后台命令行脚本
*/ */
@ -90,24 +89,22 @@ class AdminServiceProvider extends ServiceProvider
} }
} }
/** /**
* 注册后台用户 guard * 注册后台用户 guard
*/ */
protected function registerGuard() protected function registerGuard()
{ {
Config::set('auth.guards.' . AdminUser::AUTH_GUARD, [ Config::set('auth.guards.' . AdminUser::AUTH_GUARD, [
'driver' => 'session', 'driver' => 'session',
'provider' => 'admin_users', 'provider' => 'admin_users',
]); ]);
Config::set('auth.providers.admin_users', [ Config::set('auth.providers.admin_users', [
'driver' => 'eloquent', 'driver' => 'eloquent',
'model' => AdminUser::class, 'model' => AdminUser::class,
]); ]);
} }
/** /**
* 加载主题模板, 用于装修预览 * 加载主题模板, 用于装修预览
*/ */
@ -117,34 +114,33 @@ class AdminServiceProvider extends ServiceProvider
$paths = $app['config']['view.paths']; $paths = $app['config']['view.paths'];
if ($theme = system_setting('base.theme')) { if ($theme = system_setting('base.theme')) {
$customTheme[] = base_path("themes/{$theme}"); $customTheme[] = base_path("themes/{$theme}");
$paths = array_merge($customTheme, $paths); $paths = array_merge($customTheme, $paths);
} }
return new FileViewFinder($app['files'], $paths); return new FileViewFinder($app['files'], $paths);
}); });
} }
/** /**
* 后台UI组件 * 后台UI组件
*/ */
protected function loadAdminViewComponents() protected function loadAdminViewComponents()
{ {
$this->loadViewComponentsAs('admin', [ $this->loadViewComponentsAs('admin', [
'header' => Header::class, 'header' => Header::class,
'sidebar' => Sidebar::class, 'sidebar' => Sidebar::class,
'filter' => Filter::class, 'filter' => Filter::class,
'alert' => Alert::class, 'alert' => Alert::class,
'form-input-locale' => InputLocale::class, 'form-input-locale' => InputLocale::class,
'form-switch' => SwitchRadio::class, 'form-switch' => SwitchRadio::class,
'form-input' => Input::class, 'form-input' => Input::class,
'form-select' => Select::class, 'form-select' => Select::class,
'form-image' => Image::class, 'form-image' => Image::class,
'form-textarea' => Textarea::class, 'form-textarea' => Textarea::class,
'no-data' => NoData::class, 'no-data' => NoData::class,
]); ]);
} }
/** /**
* seeder 数据 * seeder 数据
*/ */
@ -155,7 +151,6 @@ class AdminServiceProvider extends ServiceProvider
], 'beike-seeders'); ], 'beike-seeders');
} }
/** /**
* 加载首页 page builder 相关组件 * 加载首页 page builder 相关组件
* *
@ -163,26 +158,25 @@ class AdminServiceProvider extends ServiceProvider
*/ */
protected function loadDesignComponents() protected function loadDesignComponents()
{ {
$viewPath = base_path() . '/beike/Admin/View'; $viewPath = base_path() . '/beike/Admin/View';
$builderPath = $viewPath . '/DesignBuilders/'; $builderPath = $viewPath . '/DesignBuilders/';
$builders = glob($builderPath . '*'); $builders = glob($builderPath . '*');
foreach ($builders as $builder) { foreach ($builders as $builder) {
$builderName = basename($builder, '.php'); $builderName = basename($builder, '.php');
$aliasName = Str::snake($builderName); $aliasName = Str::snake($builderName);
$componentName = Str::studly($builderName); $componentName = Str::studly($builderName);
$classBaseName = "\\Beike\\Admin\\View\\DesignBuilders\\{$componentName}"; $classBaseName = "\\Beike\\Admin\\View\\DesignBuilders\\{$componentName}";
if (!class_exists($classBaseName)) { if (! class_exists($classBaseName)) {
throw new \Exception("请先定义自定义模板类 {$classBaseName}"); throw new \Exception("请先定义自定义模板类 {$classBaseName}");
} }
$this->loadViewComponentsAs('editor', [ $this->loadViewComponentsAs('editor', [
$aliasName => $classBaseName $aliasName => $classBaseName,
]); ]);
} }
} }
/** /**
* 后台公共数据 * 后台公共数据
*/ */

View File

@ -25,13 +25,13 @@ class AdminRoleRepo
*/ */
public static function createAdminRole($data): Role public static function createAdminRole($data): Role
{ {
$adminRole = Role::findOrCreate($data['name'], 'web_admin'); $adminRole = Role::findOrCreate($data['name'], 'web_admin');
$permissions = $data['permissions']; $permissions = $data['permissions'];
self::syncPermissions($adminRole, $permissions); self::syncPermissions($adminRole, $permissions);
return $adminRole; return $adminRole;
} }
/** /**
* 编辑新角色 * 编辑新角色
* *
@ -43,16 +43,16 @@ class AdminRoleRepo
{ {
$adminRole = Role::findById($data['id']); $adminRole = Role::findById($data['id']);
$adminRole->update([ $adminRole->update([
'name' => $data['name'], 'name' => $data['name'],
'guard_name' => 'web_admin', 'guard_name' => 'web_admin',
]); ]);
$permissions = $data['permissions']; $permissions = $data['permissions'];
self::syncPermissions($adminRole, $permissions); self::syncPermissions($adminRole, $permissions);
return $adminRole; return $adminRole;
} }
/** /**
* 同步所有权限 * 同步所有权限
* *
@ -78,7 +78,6 @@ class AdminRoleRepo
$adminRole->syncPermissions($items); $adminRole->syncPermissions($items);
} }
/** /**
* 删除角色 * 删除角色
* *

View File

@ -11,8 +11,8 @@
namespace Beike\Admin\Repositories; namespace Beike\Admin\Repositories;
use Beike\Models\AdminUser;
use Beike\Admin\Http\Resources\AdminUserDetail; use Beike\Admin\Http\Resources\AdminUserDetail;
use Beike\Models\AdminUser;
use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException; use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
class AdminUserRepo class AdminUserRepo
@ -22,12 +22,12 @@ class AdminUserRepo
*/ */
public static function getAdminUsers(): array public static function getAdminUsers(): array
{ {
$builder = AdminUser::query()->with(['roles']); $builder = AdminUser::query()->with(['roles']);
$adminUsers = $builder->get(); $adminUsers = $builder->get();
return AdminUserDetail::collection($adminUsers)->jsonSerialize(); return AdminUserDetail::collection($adminUsers)->jsonSerialize();
} }
/** /**
* 创建后台管理员用户 * 创建后台管理员用户
* *
@ -37,21 +37,21 @@ class AdminUserRepo
public static function createAdminUser($data): AdminUser public static function createAdminUser($data): AdminUser
{ {
$adminUser = new AdminUser([ $adminUser = new AdminUser([
'name' => $data['name'], 'name' => $data['name'],
'email' => $data['email'], 'email' => $data['email'],
'password' => bcrypt($data['password']), 'password' => bcrypt($data['password']),
'locale' => $data['locale'], 'locale' => $data['locale'],
'active' => true, 'active' => true,
]); ]);
$adminUser->save(); $adminUser->save();
if (isset($data['roles'])) { if (isset($data['roles'])) {
$adminUser->assignRole($data['roles']); $adminUser->assignRole($data['roles']);
} }
return $adminUser; return $adminUser;
} }
/** /**
* 更新后台管理员用户 * 更新后台管理员用户
* *
@ -61,11 +61,11 @@ class AdminUserRepo
*/ */
public static function updateAdminUser($adminUserId, $data) public static function updateAdminUser($adminUserId, $data)
{ {
$password = $data['password'] ?? ''; $password = $data['password'] ?? '';
$adminUser = AdminUser::query()->findOrFail($adminUserId); $adminUser = AdminUser::query()->findOrFail($adminUserId);
$userData = [ $userData = [
'name' => $data['name'], 'name' => $data['name'],
'email' => $data['email'], 'email' => $data['email'],
'locale' => $data['locale'], 'locale' => $data['locale'],
'active' => true, 'active' => true,
]; ];
@ -74,10 +74,10 @@ class AdminUserRepo
} }
$adminUser->update($userData); $adminUser->update($userData);
$adminUser->syncRoles($data['roles']); $adminUser->syncRoles($data['roles']);
return $adminUser; return $adminUser;
} }
/** /**
* 删除后台用户 * 删除后台用户
* *

View File

@ -30,7 +30,7 @@ class AttributeGroupRepo
foreach ($data['name'] as $locale => $name) { foreach ($data['name'] as $locale => $name) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $name, 'name' => $name,
]; ];
} }
$attributeGroup->descriptions()->createMany($descriptions); $attributeGroup->descriptions()->createMany($descriptions);
@ -50,7 +50,7 @@ class AttributeGroupRepo
foreach ($data['name'] as $locale => $name) { foreach ($data['name'] as $locale => $name) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $name, 'name' => $name,
]; ];
} }
$attributeGroup->descriptions()->delete(); $attributeGroup->descriptions()->delete();

View File

@ -11,10 +11,8 @@
namespace Beike\Admin\Repositories; namespace Beike\Admin\Repositories;
use Beike\Admin\Http\Resources\TaxClassDetail;
use Beike\Models\Attribute; use Beike\Models\Attribute;
use Beike\Models\AttributeValue; use Beike\Models\AttributeValue;
use Beike\Models\TaxClass;
class AttributeRepo class AttributeRepo
{ {
@ -27,14 +25,14 @@ class AttributeRepo
{ {
$attribute = Attribute::query()->create([ $attribute = Attribute::query()->create([
'attribute_group_id' => $data['attribute_group_id'], 'attribute_group_id' => $data['attribute_group_id'],
'sort_order' => $data['sort_order'], 'sort_order' => $data['sort_order'],
]); ]);
$descriptions = []; $descriptions = [];
foreach ($data['name'] as $locale => $name) { foreach ($data['name'] as $locale => $name) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $name, 'name' => $name,
]; ];
} }
$attribute->descriptions()->createMany($descriptions); $attribute->descriptions()->createMany($descriptions);
@ -46,14 +44,14 @@ class AttributeRepo
{ {
$attribute = Attribute::query()->updateOrCreate(['id' => $id], [ $attribute = Attribute::query()->updateOrCreate(['id' => $id], [
'attribute_group_id' => $data['attribute_group_id'], 'attribute_group_id' => $data['attribute_group_id'],
'sort_order' => $data['sort_order'], 'sort_order' => $data['sort_order'],
]); ]);
$descriptions = []; $descriptions = [];
foreach ($data['name'] as $locale => $name) { foreach ($data['name'] as $locale => $name) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $name, 'name' => $name,
]; ];
} }
$attribute->descriptions()->delete(); $attribute->descriptions()->delete();
@ -72,7 +70,7 @@ class AttributeRepo
foreach ($data['name'] as $locale => $name) { foreach ($data['name'] as $locale => $name) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $name, 'name' => $name,
]; ];
} }
$attributeValue->descriptions()->createMany($descriptions); $attributeValue->descriptions()->createMany($descriptions);
@ -88,7 +86,7 @@ class AttributeRepo
foreach ($data['name'] as $locale => $name) { foreach ($data['name'] as $locale => $name) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $name, 'name' => $name,
]; ];
} }
$attributeValue->descriptions()->delete(); $attributeValue->descriptions()->delete();
@ -114,7 +112,6 @@ class AttributeRepo
$attribute->delete(); $attribute->delete();
} }
public static function autocomplete($name) public static function autocomplete($name)
{ {
$builder = Attribute::query()->with('description') $builder = Attribute::query()->with('description')

View File

@ -12,8 +12,8 @@
namespace Beike\Admin\Repositories; namespace Beike\Admin\Repositories;
use Beike\Models\Product; use Beike\Models\Product;
use Beike\Repositories\OrderRepo;
use Beike\Repositories\CustomerRepo; use Beike\Repositories\CustomerRepo;
use Beike\Repositories\OrderRepo;
class DashboardRepo class DashboardRepo
{ {
@ -25,22 +25,20 @@ class DashboardRepo
public static function getProductData(): array public static function getProductData(): array
{ {
return [ return [
'total' => quantity_format(Product::query()->count()), 'total' => quantity_format(Product::query()->count()),
'percentage' => 0, 'percentage' => 0,
]; ];
} }
/** /**
* 获取客户访问统计今日昨日比较 * 获取客户访问统计今日昨日比较
* @return array * @return array
* @todo * @todo
*
*/ */
public static function getCustomerViewData(): array public static function getCustomerViewData(): array
{ {
$today = 10; $today = 10;
$yesterday = 8; $yesterday = 8;
$difference = $today - $yesterday; $difference = $today - $yesterday;
if ($difference && $yesterday) { if ($difference && $yesterday) {
$percentage = round(($difference / $yesterday) * 100); $percentage = round(($difference / $yesterday) * 100);
@ -49,12 +47,11 @@ class DashboardRepo
} }
return [ return [
'total' => $today, 'total' => $today,
'percentage' => $percentage, 'percentage' => $percentage,
]; ];
} }
/** /**
* 获取订单基础统计, 总数和今日昨日比较 * 获取订单基础统计, 总数和今日昨日比较
* *
@ -62,8 +59,8 @@ class DashboardRepo
*/ */
public static function getOrderData(): array public static function getOrderData(): array
{ {
$today = OrderRepo::getListBuilder(['start' => today()->subDay(), 'end' => today()])->count(); $today = OrderRepo::getListBuilder(['start' => today()->subDay(), 'end' => today()])->count();
$yesterday = OrderRepo::getListBuilder(['start' => today()->subDays(2), 'end' => today()->subDay()])->count(); $yesterday = OrderRepo::getListBuilder(['start' => today()->subDays(2), 'end' => today()->subDay()])->count();
$difference = $today - $yesterday; $difference = $today - $yesterday;
if ($difference && $yesterday) { if ($difference && $yesterday) {
$percentage = round(($difference / $yesterday) * 100); $percentage = round(($difference / $yesterday) * 100);
@ -72,12 +69,11 @@ class DashboardRepo
} }
return [ return [
'total' => $today, 'total' => $today,
'percentage' => $percentage, 'percentage' => $percentage,
]; ];
} }
/** /**
* 获取客户注册今日昨日比较 * 获取客户注册今日昨日比较
* *
@ -85,8 +81,8 @@ class DashboardRepo
*/ */
public static function getCustomerData(): array public static function getCustomerData(): array
{ {
$today = CustomerRepo::getListBuilder(['start' => today()->subDay(), 'end' => today()])->count(); $today = CustomerRepo::getListBuilder(['start' => today()->subDay(), 'end' => today()])->count();
$yesterday = CustomerRepo::getListBuilder(['start' => today()->subDays(2), 'end' => today()->subDay()])->count(); $yesterday = CustomerRepo::getListBuilder(['start' => today()->subDays(2), 'end' => today()->subDay()])->count();
$difference = $today - $yesterday; $difference = $today - $yesterday;
if ($difference && $yesterday) { if ($difference && $yesterday) {
$percentage = round(($difference / $yesterday) * 100); $percentage = round(($difference / $yesterday) * 100);
@ -95,12 +91,11 @@ class DashboardRepo
} }
return [ return [
'total' => $today, 'total' => $today,
'percentage' => $percentage, 'percentage' => $percentage,
]; ];
} }
/** /**
* 获取订单总额基础统计, 总数和今日昨日比较 * 获取订单总额基础统计, 总数和今日昨日比较
* *
@ -108,8 +103,8 @@ class DashboardRepo
*/ */
public static function getTotalData(): array public static function getTotalData(): array
{ {
$today = OrderRepo::getListBuilder(['start' => today()->subDay(), 'end' => today()])->sum('total'); $today = OrderRepo::getListBuilder(['start' => today()->subDay(), 'end' => today()])->sum('total');
$yesterday = OrderRepo::getListBuilder(['start' => today()->subDays(2), 'end' => today()->subDay()])->sum('total'); $yesterday = OrderRepo::getListBuilder(['start' => today()->subDays(2), 'end' => today()->subDay()])->sum('total');
$difference = $today - $yesterday; $difference = $today - $yesterday;
if ($difference && $yesterday) { if ($difference && $yesterday) {
$percentage = round(($difference / $yesterday) * 100); $percentage = round(($difference / $yesterday) * 100);
@ -118,7 +113,7 @@ class DashboardRepo
} }
return [ return [
'total' => currency_format($today), 'total' => currency_format($today),
'percentage' => $percentage, 'percentage' => $percentage,
]; ];
} }

View File

@ -12,8 +12,8 @@
namespace Beike\Admin\Repositories; namespace Beike\Admin\Repositories;
use Beike\Models\Page; use Beike\Models\Page;
use Illuminate\Support\Facades\DB;
use Illuminate\Contracts\Pagination\LengthAwarePaginator; use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\DB;
class PageRepo class PageRepo
{ {
@ -25,37 +25,38 @@ class PageRepo
public static function getList(): LengthAwarePaginator public static function getList(): LengthAwarePaginator
{ {
$builder = Page::query()->with([ $builder = Page::query()->with([
'description' 'description',
])->orderByDesc('updated_at'); ])->orderByDesc('updated_at');
return $builder->paginate(perPage()); return $builder->paginate(perPage());
} }
public static function findByPageId($pageId) public static function findByPageId($pageId)
{ {
$page = Page::query()->findOrFail($pageId); $page = Page::query()->findOrFail($pageId);
$page->load(['descriptions']); $page->load(['descriptions']);
return $page; return $page;
} }
public static function getDescriptionsByLocale($pageId) public static function getDescriptionsByLocale($pageId)
{ {
$page = self::findByPageId($pageId); $page = self::findByPageId($pageId);
return $page->descriptions->keyBy('locale')->toArray(); return $page->descriptions->keyBy('locale')->toArray();
} }
public static function createOrUpdate($data) public static function createOrUpdate($data)
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
$region = self::pushPage($data); $region = self::pushPage($data);
DB::commit(); DB::commit();
return $region; return $region;
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
throw $e; throw $e;
} }
} }
@ -70,13 +71,14 @@ class PageRepo
} }
$page->fill([ $page->fill([
'position' => $data['position'] ?? 0, 'position' => $data['position'] ?? 0,
'active' => $data['active'] ?? true, 'active' => $data['active'] ?? true,
]); ]);
$page->saveOrFail(); $page->saveOrFail();
$page->descriptions()->delete(); $page->descriptions()->delete();
$page->descriptions()->createMany($data['descriptions']); $page->descriptions()->createMany($data['descriptions']);
$page->load(['descriptions']); $page->load(['descriptions']);
return $page; return $page;
} }
@ -87,7 +89,6 @@ class PageRepo
$page->delete(); $page->delete();
} }
/** /**
* 页面内容自动完成 * 页面内容自动完成
* *
@ -103,11 +104,12 @@ class PageRepo
$results = []; $results = [];
foreach ($pages as $page) { foreach ($pages as $page) {
$results[] = [ $results[] = [
'id' => $page->id, 'id' => $page->id,
'name' => $page->description->title, 'name' => $page->description->title,
'status' => $page->active 'status' => $page->active,
]; ];
} }
return $results; return $results;
} }
} }

View File

@ -12,23 +12,26 @@
namespace Beike\Admin\Repositories; namespace Beike\Admin\Repositories;
use Beike\Models\AdminUser; use Beike\Models\AdminUser;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Exceptions\PermissionDoesNotExist; use Spatie\Permission\Exceptions\PermissionDoesNotExist;
use Spatie\Permission\Models\Role;
class PermissionRepo class PermissionRepo
{ {
private ?AdminUser $adminUser = null; private ?AdminUser $adminUser = null;
private ?Role $adminRole = null; private ?Role $adminRole = null;
public function setUser(AdminUser $user): PermissionRepo public function setUser(AdminUser $user): self
{ {
$this->adminUser = $user; $this->adminUser = $user;
return $this; return $this;
} }
public function setRole(Role $role): PermissionRepo public function setRole(Role $role): self
{ {
$this->adminRole = $role; $this->adminRole = $role;
return $this; return $this;
} }
@ -63,10 +66,10 @@ class PermissionRepo
['title' => trans('admin/common.zone'), 'permissions' => $this->getZonePermissions()], ['title' => trans('admin/common.zone'), 'permissions' => $this->getZonePermissions()],
['title' => trans('admin/common.country'), 'permissions' => $this->getCountryPermissions()], ['title' => trans('admin/common.country'), 'permissions' => $this->getCountryPermissions()],
]; ];
return hook_filter('role.all_permissions', $permissions); return hook_filter('role.all_permissions', $permissions);
} }
/** /**
* 订单权限列表 * 订单权限列表
* *
@ -75,11 +78,11 @@ class PermissionRepo
private function getOrderPermissions(): array private function getOrderPermissions(): array
{ {
$routes = ['orders_index', 'orders_export', 'orders_show', 'orders_update_status']; $routes = ['orders_index', 'orders_export', 'orders_show', 'orders_update_status'];
$items = $this->getPermissionList('order', $routes); $items = $this->getPermissionList('order', $routes);
return hook_filter('role.order_permissions', $items); return hook_filter('role.order_permissions', $items);
} }
/** /**
* 售后(退换货)权限列表 * 售后(退换货)权限列表
* *
@ -88,11 +91,11 @@ class PermissionRepo
private function getRmaPermissions(): array private function getRmaPermissions(): array
{ {
$routes = ['rmas_index', 'rmas_show', 'rmas_update', 'rmas_delete']; $routes = ['rmas_index', 'rmas_show', 'rmas_update', 'rmas_delete'];
$items = $this->getPermissionList('rma', $routes); $items = $this->getPermissionList('rma', $routes);
return hook_filter('role.rma_permissions', $items); return hook_filter('role.rma_permissions', $items);
} }
/** /**
* 售后(退换货)原因权限列表 * 售后(退换货)原因权限列表
* *
@ -101,11 +104,11 @@ class PermissionRepo
private function getRmaReasonPermissions(): array private function getRmaReasonPermissions(): array
{ {
$routes = ['rma_reasons_index', 'rma_reasons_create', 'rma_reasons_update', 'rma_reasons_delete']; $routes = ['rma_reasons_index', 'rma_reasons_create', 'rma_reasons_update', 'rma_reasons_delete'];
$items = $this->getPermissionList('rma_reason', $routes); $items = $this->getPermissionList('rma_reason', $routes);
return hook_filter('role.rma_reason_permissions', $items); return hook_filter('role.rma_reason_permissions', $items);
} }
/** /**
* 商品权限列表 * 商品权限列表
* *
@ -114,11 +117,11 @@ class PermissionRepo
private function getProductPermissions(): array private function getProductPermissions(): array
{ {
$routes = ['products_index', 'products_create', 'products_show', 'products_update', 'products_delete', 'products_trashed', 'products_restore']; $routes = ['products_index', 'products_create', 'products_show', 'products_update', 'products_delete', 'products_trashed', 'products_restore'];
$items = $this->getPermissionList('product', $routes); $items = $this->getPermissionList('product', $routes);
return hook_filter('role.product_permissions', $items); return hook_filter('role.product_permissions', $items);
} }
/** /**
* 分类权限列表 * 分类权限列表
* *
@ -127,11 +130,11 @@ class PermissionRepo
private function getCategoryPermissions(): array private function getCategoryPermissions(): array
{ {
$routes = ['categories_index', 'categories_create', 'categories_show', 'categories_update', 'categories_delete']; $routes = ['categories_index', 'categories_create', 'categories_show', 'categories_update', 'categories_delete'];
$items = $this->getPermissionList('category', $routes); $items = $this->getPermissionList('category', $routes);
return hook_filter('role.category_permissions', $items); return hook_filter('role.category_permissions', $items);
} }
/** /**
* 品牌权限列表 * 品牌权限列表
* *
@ -140,11 +143,11 @@ class PermissionRepo
private function getBrandPermissions(): array private function getBrandPermissions(): array
{ {
$routes = ['brands_index', 'brands_create', 'brands_show', 'brands_update', 'brands_delete']; $routes = ['brands_index', 'brands_create', 'brands_show', 'brands_update', 'brands_delete'];
$items = $this->getPermissionList('brand', $routes); $items = $this->getPermissionList('brand', $routes);
return hook_filter('role.brand_permissions', $items); return hook_filter('role.brand_permissions', $items);
} }
/** /**
* 客户权限列表 * 客户权限列表
* *
@ -153,11 +156,11 @@ class PermissionRepo
private function getCustomerPermissions(): array private function getCustomerPermissions(): array
{ {
$routes = ['customers_index', 'customers_create', 'customers_show', 'customers_update', 'customers_delete']; $routes = ['customers_index', 'customers_create', 'customers_show', 'customers_update', 'customers_delete'];
$items = $this->getPermissionList('customer', $routes); $items = $this->getPermissionList('customer', $routes);
return hook_filter('role.customer_permissions', $items); return hook_filter('role.customer_permissions', $items);
} }
/** /**
* 客户组权限列表 * 客户组权限列表
* *
@ -166,11 +169,11 @@ class PermissionRepo
private function getCustomerGroupPermissions(): array private function getCustomerGroupPermissions(): array
{ {
$routes = ['customer_groups_index', 'customer_groups_create', 'customer_groups_show', 'customer_groups_update', 'customer_groups_delete']; $routes = ['customer_groups_index', 'customer_groups_create', 'customer_groups_show', 'customer_groups_update', 'customer_groups_delete'];
$items = $this->getPermissionList('customer_group', $routes); $items = $this->getPermissionList('customer_group', $routes);
return hook_filter('role.customer_group_permissions', $items); return hook_filter('role.customer_group_permissions', $items);
} }
/** /**
* 设置权限列表 * 设置权限列表
* *
@ -179,11 +182,11 @@ class PermissionRepo
private function getSettingPermissions(): array private function getSettingPermissions(): array
{ {
$routes = ['settings_index', 'settings_update', 'design_index', 'design_footer_index', 'design_menu_index']; $routes = ['settings_index', 'settings_update', 'design_index', 'design_footer_index', 'design_menu_index'];
$items = $this->getPermissionList('setting', $routes); $items = $this->getPermissionList('setting', $routes);
return hook_filter('role.setting_permissions', $items); return hook_filter('role.setting_permissions', $items);
} }
/** /**
* 内容管理列表 * 内容管理列表
* @return mixed * @return mixed
@ -191,11 +194,11 @@ class PermissionRepo
private function getContentPermissions() private function getContentPermissions()
{ {
$routes = ['pages_index', 'pages_create', 'pages_show', 'pages_update', 'pages_delete']; $routes = ['pages_index', 'pages_create', 'pages_show', 'pages_update', 'pages_delete'];
$items = $this->getPermissionList('page', $routes); $items = $this->getPermissionList('page', $routes);
return hook_filter('role.page_permissions', $items); return hook_filter('role.page_permissions', $items);
} }
/** /**
* 插件权限列表 * 插件权限列表
* *
@ -204,11 +207,11 @@ class PermissionRepo
private function getPluginPermissions(): array private function getPluginPermissions(): array
{ {
$routes = ['plugins_index', 'plugins_import', 'plugins_update', 'plugins_show', 'plugins_install', 'plugins_update_status', 'plugins_uninstall']; $routes = ['plugins_index', 'plugins_import', 'plugins_update', 'plugins_show', 'plugins_install', 'plugins_update_status', 'plugins_uninstall'];
$items = $this->getPermissionList('plugin', $routes); $items = $this->getPermissionList('plugin', $routes);
return hook_filter('role.plugin_permissions', $items); return hook_filter('role.plugin_permissions', $items);
} }
/** /**
* 后台管理员权限列表 * 后台管理员权限列表
* *
@ -217,11 +220,11 @@ class PermissionRepo
private function getAdminUserPermissions() private function getAdminUserPermissions()
{ {
$routes = ['admin_users_index', 'admin_users_create', 'admin_users_show', 'admin_users_update', 'admin_users_delete']; $routes = ['admin_users_index', 'admin_users_create', 'admin_users_show', 'admin_users_update', 'admin_users_delete'];
$items = $this->getPermissionList('user', $routes); $items = $this->getPermissionList('user', $routes);
return hook_filter('role.user_permissions', $items); return hook_filter('role.user_permissions', $items);
} }
/** /**
* 后台管理员权限列表 * 后台管理员权限列表
* *
@ -230,11 +233,11 @@ class PermissionRepo
private function getAdminRolePermissions() private function getAdminRolePermissions()
{ {
$routes = ['admin_roles_index', 'admin_roles_create', 'admin_roles_show', 'admin_roles_update', 'admin_roles_delete']; $routes = ['admin_roles_index', 'admin_roles_create', 'admin_roles_show', 'admin_roles_update', 'admin_roles_delete'];
$items = $this->getPermissionList('role', $routes); $items = $this->getPermissionList('role', $routes);
return hook_filter('role.role_permissions', $items); return hook_filter('role.role_permissions', $items);
} }
/** /**
* 区域分组权限列表 * 区域分组权限列表
* *
@ -243,11 +246,11 @@ class PermissionRepo
private function getRegionPermissions(): array private function getRegionPermissions(): array
{ {
$routes = ['regions_index', 'regions_create', 'regions_show', 'regions_update', 'regions_delete']; $routes = ['regions_index', 'regions_create', 'regions_show', 'regions_update', 'regions_delete'];
$items = $this->getPermissionList('region', $routes); $items = $this->getPermissionList('region', $routes);
return hook_filter('role.region_permissions', $items); return hook_filter('role.region_permissions', $items);
} }
/** /**
* 获取税率权限列表 * 获取税率权限列表
* *
@ -256,11 +259,11 @@ class PermissionRepo
private function getTaxRatePermissions(): array private function getTaxRatePermissions(): array
{ {
$routes = ['tax_rates_index', 'tax_rates_create', 'tax_rates_show', 'tax_rates_update', 'tax_rates_delete']; $routes = ['tax_rates_index', 'tax_rates_create', 'tax_rates_show', 'tax_rates_update', 'tax_rates_delete'];
$items = $this->getPermissionList('tax_rate', $routes); $items = $this->getPermissionList('tax_rate', $routes);
return hook_filter('role.tax_rate_permissions', $items); return hook_filter('role.tax_rate_permissions', $items);
} }
/** /**
* 获取税类权限列表 * 获取税类权限列表
* *
@ -269,11 +272,11 @@ class PermissionRepo
private function getTaxClassPermissions(): array private function getTaxClassPermissions(): array
{ {
$routes = ['tax_classes_index', 'tax_classes_create', 'tax_classes_show', 'tax_classes_update', 'tax_classes_delete']; $routes = ['tax_classes_index', 'tax_classes_create', 'tax_classes_show', 'tax_classes_update', 'tax_classes_delete'];
$items = $this->getPermissionList('tax_class', $routes); $items = $this->getPermissionList('tax_class', $routes);
return hook_filter('role.tax_class_permissions', $items); return hook_filter('role.tax_class_permissions', $items);
} }
/** /**
* 获取汇率权限列表 * 获取汇率权限列表
* *
@ -282,11 +285,11 @@ class PermissionRepo
private function getCurrencyPermissions(): array private function getCurrencyPermissions(): array
{ {
$routes = ['currencies_index', 'currencies_create', 'currencies_show', 'currencies_update', 'currencies_delete']; $routes = ['currencies_index', 'currencies_create', 'currencies_show', 'currencies_update', 'currencies_delete'];
$items = $this->getPermissionList('currency', $routes); $items = $this->getPermissionList('currency', $routes);
return hook_filter('role.currency_permissions', $items); return hook_filter('role.currency_permissions', $items);
} }
/** /**
* 获取语言权限列表 * 获取语言权限列表
* *
@ -295,11 +298,11 @@ class PermissionRepo
private function getLanguagePermissions(): array private function getLanguagePermissions(): array
{ {
$routes = ['languages_index', 'languages_create', 'languages_update', 'languages_delete']; $routes = ['languages_index', 'languages_create', 'languages_update', 'languages_delete'];
$items = $this->getPermissionList('language', $routes); $items = $this->getPermissionList('language', $routes);
return hook_filter('role.language_permissions', $items); return hook_filter('role.language_permissions', $items);
} }
/** /**
* 获取文件管理器权限列表 * 获取文件管理器权限列表
* *
@ -308,11 +311,11 @@ class PermissionRepo
private function getFileManagerPermissions(): array private function getFileManagerPermissions(): array
{ {
$routes = ['file_manager_create', 'file_manager_show', 'file_manager_update', 'file_manager_delete']; $routes = ['file_manager_create', 'file_manager_show', 'file_manager_update', 'file_manager_delete'];
$items = $this->getPermissionList('file_manager', $routes); $items = $this->getPermissionList('file_manager', $routes);
return hook_filter('role.file_manager_permissions', $items); return hook_filter('role.file_manager_permissions', $items);
} }
/** /**
* 获取省份权限列表 * 获取省份权限列表
* *
@ -321,11 +324,11 @@ class PermissionRepo
private function getZonePermissions(): array private function getZonePermissions(): array
{ {
$routes = ['zones_create', 'zones_index', 'zones_update', 'zones_delete']; $routes = ['zones_create', 'zones_index', 'zones_update', 'zones_delete'];
$items = $this->getPermissionList('zone', $routes); $items = $this->getPermissionList('zone', $routes);
return hook_filter('role.zone_permissions', $items); return hook_filter('role.zone_permissions', $items);
} }
/** /**
* 获取国家权限列表 * 获取国家权限列表
* *
@ -334,11 +337,11 @@ class PermissionRepo
private function getCountryPermissions(): array private function getCountryPermissions(): array
{ {
$routes = ['countries_create', 'countries_index', 'countries_update', 'countries_delete']; $routes = ['countries_create', 'countries_index', 'countries_update', 'countries_delete'];
$items = $this->getPermissionList('country', $routes); $items = $this->getPermissionList('country', $routes);
return hook_filter('role.country_permissions', $items); return hook_filter('role.country_permissions', $items);
} }
/** /**
* 根据模块和路由返回权限列表 * 根据模块和路由返回权限列表
* *
@ -352,6 +355,7 @@ class PermissionRepo
foreach ($routes as $route) { foreach ($routes as $route) {
$items[] = ['code' => $route, 'name' => trans("admin/{$module}.{$route}"), 'selected' => $this->hasPermission($route)]; $items[] = ['code' => $route, 'name' => trans("admin/{$module}.{$route}"), 'selected' => $this->hasPermission($route)];
} }
return $items; return $items;
} }
@ -372,6 +376,7 @@ class PermissionRepo
} catch (PermissionDoesNotExist $exception) { } catch (PermissionDoesNotExist $exception) {
return false; return false;
} }
return false; return false;
} }
} }

View File

@ -27,9 +27,11 @@ class RegionRepo
DB::beginTransaction(); DB::beginTransaction();
$region = self::pushRegion($data); $region = self::pushRegion($data);
DB::commit(); DB::commit();
return $region; return $region;
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
throw $e; throw $e;
} }
} }
@ -43,7 +45,7 @@ class RegionRepo
$region = new Region(); $region = new Region();
} }
$region->fill([ $region->fill([
'name' => $data['name'], 'name' => $data['name'],
'description' => $data['description'], 'description' => $data['description'],
]); ]);
$region->saveOrFail(); $region->saveOrFail();
@ -52,8 +54,8 @@ class RegionRepo
foreach ($data['region_zones'] as $regionZone) { foreach ($data['region_zones'] as $regionZone) {
if ($regionZone['country_id']) { if ($regionZone['country_id']) {
$newRegionZones[] = [ $newRegionZones[] = [
'country_id' => (int)$regionZone['country_id'], 'country_id' => (int) $regionZone['country_id'],
'zone_id' => (int)$regionZone['zone_id'], 'zone_id' => (int) $regionZone['zone_id'],
]; ];
} }
} }
@ -62,6 +64,7 @@ class RegionRepo
$region->regionZones()->createMany($newRegionZones); $region->regionZones()->createMany($newRegionZones);
} }
$region->load(['regionZones']); $region->load(['regionZones']);
return $region; return $region;
} }

View File

@ -11,8 +11,6 @@
namespace Beike\Admin\Repositories\Report; namespace Beike\Admin\Repositories\Report;
use Beike\Models\Order;
use Beike\Repositories\OrderRepo; use Beike\Repositories\OrderRepo;
use Carbon\Carbon; use Carbon\Carbon;
use Carbon\CarbonPeriod; use Carbon\CarbonPeriod;
@ -38,27 +36,27 @@ class OrderReportRepo
->get() ->get()
->keyBy('date'); ->keyBy('date');
$dates = $totals = $amounts = []; $dates = $totals = $amounts = [];
$period = CarbonPeriod::create(today()->subMonth(), today()->subDay())->toArray(); $period = CarbonPeriod::create(today()->subMonth(), today()->subDay())->toArray();
foreach ($period as $date) { foreach ($period as $date) {
$dateFormat = $date->format('Y-m-d'); $dateFormat = $date->format('Y-m-d');
$orderTotal = $orderTotals[$dateFormat] ?? null; $orderTotal = $orderTotals[$dateFormat] ?? null;
$orderAmount = $orderAmounts[$dateFormat] ?? null; $orderAmount = $orderAmounts[$dateFormat] ?? null;
$dates[] = $dateFormat; $dates[] = $dateFormat;
$totals[] = $orderTotal ? $orderTotal->total : 0; $totals[] = $orderTotal ? $orderTotal->total : 0;
$amounts[] = $orderAmount ? $orderAmount->amount : 0; $amounts[] = $orderAmount ? $orderAmount->amount : 0;
} }
$data = [ $data = [
'period' => $dates, 'period' => $dates,
'totals' => $totals, 'totals' => $totals,
'amounts' => $amounts, 'amounts' => $amounts,
]; ];
return hook_filter('dashboard.order_report_month', $data); return hook_filter('dashboard.order_report_month', $data);
} }
/** /**
* 获取最近一周每日销售订单数 * 获取最近一周每日销售订单数
*/ */
@ -76,27 +74,27 @@ class OrderReportRepo
->get() ->get()
->keyBy('date'); ->keyBy('date');
$dates = $totals = $amounts = []; $dates = $totals = $amounts = [];
$period = CarbonPeriod::create(today()->subWeek(), today()->subDay())->toArray(); $period = CarbonPeriod::create(today()->subWeek(), today()->subDay())->toArray();
foreach ($period as $date) { foreach ($period as $date) {
$dateFormat = $date->format('Y-m-d'); $dateFormat = $date->format('Y-m-d');
$orderTotal = $orderTotals[$dateFormat] ?? null; $orderTotal = $orderTotals[$dateFormat] ?? null;
$orderAmount = $orderAmounts[$dateFormat] ?? null; $orderAmount = $orderAmounts[$dateFormat] ?? null;
$dates[] = $dateFormat; $dates[] = $dateFormat;
$totals[] = $orderTotal ? $orderTotal->total : 0; $totals[] = $orderTotal ? $orderTotal->total : 0;
$amounts[] = $orderAmount ? $orderAmount->amount : 0; $amounts[] = $orderAmount ? $orderAmount->amount : 0;
} }
$data = [ $data = [
'period' => $dates, 'period' => $dates,
'totals' => $totals, 'totals' => $totals,
'amounts' => $amounts, 'amounts' => $amounts,
]; ];
return hook_filter('dashboard.order_report_week', $data); return hook_filter('dashboard.order_report_week', $data);
} }
/** /**
* 获取最近一年每月销售订单数 * 获取最近一年每月销售订单数
*/ */
@ -108,7 +106,7 @@ class OrderReportRepo
->get(); ->get();
$orderMonthTotals = []; $orderMonthTotals = [];
foreach ($orderTotals as $orderTotal) { foreach ($orderTotals as $orderTotal) {
$key = Carbon::create($orderTotal->year, $orderTotal->month)->format('Y-m'); $key = Carbon::create($orderTotal->year, $orderTotal->month)->format('Y-m');
$orderMonthTotals[$key] = $orderTotal['total']; $orderMonthTotals[$key] = $orderTotal['total'];
} }
@ -118,27 +116,28 @@ class OrderReportRepo
->get(); ->get();
$orderMonthAmounts = []; $orderMonthAmounts = [];
foreach ($orderAmounts as $orderAmount) { foreach ($orderAmounts as $orderAmount) {
$key = Carbon::create($orderAmount->year, $orderAmount->month)->format('Y-m'); $key = Carbon::create($orderAmount->year, $orderAmount->month)->format('Y-m');
$orderMonthAmounts[$key] = $orderAmount['amount']; $orderMonthAmounts[$key] = $orderAmount['amount'];
} }
$dates = $totals = $amounts = []; $dates = $totals = $amounts = [];
$period = CarbonPeriod::create(today()->subYear()->endOfMonth(), '1 month', today()->endOfMonth())->toArray(); $period = CarbonPeriod::create(today()->subYear()->endOfMonth(), '1 month', today()->endOfMonth())->toArray();
foreach ($period as $date) { foreach ($period as $date) {
$dateFormat = $date->format('Y-m'); $dateFormat = $date->format('Y-m');
$orderTotal = $orderMonthTotals[$dateFormat] ?? null; $orderTotal = $orderMonthTotals[$dateFormat] ?? null;
$orderAmount = $orderMonthAmounts[$dateFormat] ?? null; $orderAmount = $orderMonthAmounts[$dateFormat] ?? null;
$dates[] = $dateFormat; $dates[] = $dateFormat;
$totals[] = $orderTotal ?: 0; $totals[] = $orderTotal ?: 0;
$amounts[] = $orderAmount ?: 0; $amounts[] = $orderAmount ?: 0;
} }
$data = [ $data = [
'period' => $dates, 'period' => $dates,
'totals' => $totals, 'totals' => $totals,
'amounts' => $amounts, 'amounts' => $amounts,
]; ];
return hook_filter('dashboard.order_report_year', $data); return hook_filter('dashboard.order_report_year', $data);
} }
} }

View File

@ -16,13 +16,13 @@ use Beike\Models\TaxClass;
class TaxClassRepo class TaxClassRepo
{ {
const BASE_TYPES = ['store', 'payment', 'shipping']; public const BASE_TYPES = ['store', 'payment', 'shipping'];
public static function getList() public static function getList()
{ {
$taxClass = TaxClass::query()->with([ $taxClass = TaxClass::query()->with([
'taxRates.region', 'taxRates.region',
'taxRules' 'taxRules',
])->get(); ])->get();
return TaxClassDetail::collection($taxClass)->jsonSerialize(); return TaxClassDetail::collection($taxClass)->jsonSerialize();
@ -37,7 +37,7 @@ class TaxClassRepo
$taxClass = new TaxClass(); $taxClass = new TaxClass();
} }
$taxClass->fill([ $taxClass->fill([
'title' => $data['title'], 'title' => $data['title'],
'description' => $data['description'], 'description' => $data['description'],
]); ]);
$taxClass->saveOrFail(); $taxClass->saveOrFail();
@ -46,13 +46,14 @@ class TaxClassRepo
foreach ($data['tax_rules'] as $rule) { foreach ($data['tax_rules'] as $rule) {
$rules[] = [ $rules[] = [
'tax_rate_id' => $rule['tax_rate_id'], 'tax_rate_id' => $rule['tax_rate_id'],
'based' => $rule['based'], 'based' => $rule['based'],
'priority' => (int)$rule['priority'], 'priority' => (int) $rule['priority'],
]; ];
} }
$taxClass->taxRules()->delete(); $taxClass->taxRules()->delete();
$taxClass->taxRules()->createMany($rules); $taxClass->taxRules()->createMany($rules);
$taxClass->load(['taxRules']); $taxClass->load(['taxRules']);
return $taxClass; return $taxClass;
} }

View File

@ -18,7 +18,7 @@ class TaxRateRepo
public static function getList() public static function getList()
{ {
return TaxRate::query()->with([ return TaxRate::query()->with([
'region' 'region',
])->get(); ])->get();
} }
@ -32,11 +32,12 @@ class TaxRateRepo
} }
$taxRate->fill([ $taxRate->fill([
'region_id' => $data['region_id'], 'region_id' => $data['region_id'],
'name' => $data['name'], 'name' => $data['name'],
'rate' => $data['rate'], 'rate' => $data['rate'],
'type' => $data['type'], 'type' => $data['type'],
]); ]);
$taxRate->saveOrFail(); $taxRate->saveOrFail();
return $taxRate; return $taxRate;
} }
@ -49,6 +50,7 @@ class TaxRateRepo
public static function getNameByRateId($taxRateId) public static function getNameByRateId($taxRateId)
{ {
$taxRate = TaxRate::query()->findOrFail($taxRateId); $taxRate = TaxRate::query()->findOrFail($taxRateId);
return $taxRate->name; return $taxRate->name;
} }
} }

View File

@ -47,7 +47,6 @@ Route::prefix($adminName)
Route::middleware('can:brands_update')->put('brands/{id}', [Controllers\BrandController::class, 'update'])->name('brands.update'); Route::middleware('can:brands_update')->put('brands/{id}', [Controllers\BrandController::class, 'update'])->name('brands.update');
Route::middleware('can:brands_delete')->delete('brands/{id}', [Controllers\BrandController::class, 'destroy'])->name('brands.destroy'); Route::middleware('can:brands_delete')->delete('brands/{id}', [Controllers\BrandController::class, 'destroy'])->name('brands.destroy');
// 商品分类 // 商品分类
Route::middleware('can:categories_index')->get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete'); Route::middleware('can:categories_index')->get('categories/autocomplete', [Controllers\CategoryController::class, 'autocomplete'])->name('categories.autocomplete');
Route::middleware('can:categories_show')->get('categories/{category}/name', [Controllers\CategoryController::class, 'name'])->name('categories.name'); Route::middleware('can:categories_show')->get('categories/{category}/name', [Controllers\CategoryController::class, 'name'])->name('categories.name');
@ -58,21 +57,18 @@ Route::prefix($adminName)
Route::middleware('can:categories_update')->put('categories/{category}', [Controllers\CategoryController::class, 'update'])->name('categories.update'); Route::middleware('can:categories_update')->put('categories/{category}', [Controllers\CategoryController::class, 'update'])->name('categories.update');
Route::middleware('can:categories_delete')->delete('categories/{category}', [Controllers\CategoryController::class, 'destroy'])->name('categories.destroy'); Route::middleware('can:categories_delete')->delete('categories/{category}', [Controllers\CategoryController::class, 'destroy'])->name('categories.destroy');
// 国家 // 国家
Route::middleware('can:countries_index')->get('countries', [Controllers\CountryController::class, 'index'])->name('countries.index'); Route::middleware('can:countries_index')->get('countries', [Controllers\CountryController::class, 'index'])->name('countries.index');
Route::middleware('can:countries_create')->post('countries', [Controllers\CountryController::class, 'store'])->name('countries.store'); Route::middleware('can:countries_create')->post('countries', [Controllers\CountryController::class, 'store'])->name('countries.store');
Route::middleware('can:countries_update')->put('countries/{id}', [Controllers\CountryController::class, 'update'])->name('countries.update'); Route::middleware('can:countries_update')->put('countries/{id}', [Controllers\CountryController::class, 'update'])->name('countries.update');
Route::middleware('can:countries_delete')->delete('countries/{id}', [Controllers\CountryController::class, 'destroy'])->name('countries.destroy'); Route::middleware('can:countries_delete')->delete('countries/{id}', [Controllers\CountryController::class, 'destroy'])->name('countries.destroy');
// 省份 // 省份
Route::middleware('can:zones_index')->get('zones', [Controllers\ZoneController::class, 'index'])->name('zones.index'); Route::middleware('can:zones_index')->get('zones', [Controllers\ZoneController::class, 'index'])->name('zones.index');
Route::middleware('can:zones_create')->post('zones', [Controllers\ZoneController::class, 'store'])->name('zones.store'); Route::middleware('can:zones_create')->post('zones', [Controllers\ZoneController::class, 'store'])->name('zones.store');
Route::middleware('can:zones_update')->put('zones/{id}', [Controllers\ZoneController::class, 'update'])->name('zones.update'); Route::middleware('can:zones_update')->put('zones/{id}', [Controllers\ZoneController::class, 'update'])->name('zones.update');
Route::middleware('can:zones_delete')->delete('zones/{id}', [Controllers\ZoneController::class, 'destroy'])->name('zones.destroy'); Route::middleware('can:zones_delete')->delete('zones/{id}', [Controllers\ZoneController::class, 'destroy'])->name('zones.destroy');
// 客户 // 客户
Route::middleware('can:customers_index')->get('customers/trashed', [Controllers\CustomerController::class, 'trashed'])->name('customers.trashed'); Route::middleware('can:customers_index')->get('customers/trashed', [Controllers\CustomerController::class, 'trashed'])->name('customers.trashed');
Route::middleware('can:customers_index')->get('customers', [Controllers\CustomerController::class, 'index'])->name('customers.index'); Route::middleware('can:customers_index')->get('customers', [Controllers\CustomerController::class, 'index'])->name('customers.index');
@ -84,7 +80,6 @@ Route::prefix($adminName)
Route::middleware('can:customers_delete')->delete('customers/{id}/force', [Controllers\CustomerController::class, 'forceDelete'])->name('customers.force_delete'); Route::middleware('can:customers_delete')->delete('customers/{id}/force', [Controllers\CustomerController::class, 'forceDelete'])->name('customers.force_delete');
Route::middleware('can:customers_delete')->post('customers/force_delete_all', [Controllers\CustomerController::class, 'forceDeleteAll'])->name('customers.force_delete_all'); Route::middleware('can:customers_delete')->post('customers/force_delete_all', [Controllers\CustomerController::class, 'forceDeleteAll'])->name('customers.force_delete_all');
// 客户地址 // 客户地址
Route::middleware('can:customers_show')->get('customers/{customer_id}/addresses', [Controllers\AddressController::class, 'index'])->name('customers.addresses.index'); Route::middleware('can:customers_show')->get('customers/{customer_id}/addresses', [Controllers\AddressController::class, 'index'])->name('customers.addresses.index');
Route::middleware('can:customers_update')->post('customers/{customer_id}/addresses', [Controllers\AddressController::class, 'store'])->name('customers.addresses.store'); Route::middleware('can:customers_update')->post('customers/{customer_id}/addresses', [Controllers\AddressController::class, 'store'])->name('customers.addresses.store');
@ -93,21 +88,18 @@ Route::prefix($adminName)
Route::get('countries/{country_id}/zones', [Controllers\ZoneController::class, 'listByCountry'])->name('countries.zones.index'); Route::get('countries/{country_id}/zones', [Controllers\ZoneController::class, 'listByCountry'])->name('countries.zones.index');
// 客户组 // 客户组
Route::middleware('can:customer_groups_index')->get('customer_groups', [Controllers\CustomerGroupController::class, 'index'])->name('customer_groups.index'); Route::middleware('can:customer_groups_index')->get('customer_groups', [Controllers\CustomerGroupController::class, 'index'])->name('customer_groups.index');
Route::middleware('can:customer_groups_create')->post('customer_groups', [Controllers\CustomerGroupController::class, 'store'])->name('customer_groups.store'); Route::middleware('can:customer_groups_create')->post('customer_groups', [Controllers\CustomerGroupController::class, 'store'])->name('customer_groups.store');
Route::middleware('can:customer_groups_update')->put('customer_groups/{id}', [Controllers\CustomerGroupController::class, 'update'])->name('customer_groups.update'); Route::middleware('can:customer_groups_update')->put('customer_groups/{id}', [Controllers\CustomerGroupController::class, 'update'])->name('customer_groups.update');
Route::middleware('can:customer_groups_delete')->delete('customer_groups/{id}', [Controllers\CustomerGroupController::class, 'destroy'])->name('customer_groups.destroy'); Route::middleware('can:customer_groups_delete')->delete('customer_groups/{id}', [Controllers\CustomerGroupController::class, 'destroy'])->name('customer_groups.destroy');
// 货币 // 货币
Route::middleware('can:currencies_index')->get('currencies', [Controllers\CurrencyController::class, 'index'])->name('currencies.index'); Route::middleware('can:currencies_index')->get('currencies', [Controllers\CurrencyController::class, 'index'])->name('currencies.index');
Route::middleware('can:currencies_create')->post('currencies', [Controllers\CurrencyController::class, 'store'])->name('currencies.store'); Route::middleware('can:currencies_create')->post('currencies', [Controllers\CurrencyController::class, 'store'])->name('currencies.store');
Route::middleware('can:currencies_update')->put('currencies/{id}', [Controllers\CurrencyController::class, 'update'])->name('currencies.update'); Route::middleware('can:currencies_update')->put('currencies/{id}', [Controllers\CurrencyController::class, 'update'])->name('currencies.update');
Route::middleware('can:currencies_delete')->delete('currencies/{id}', [Controllers\CurrencyController::class, 'destroy'])->name('currencies.destroy'); Route::middleware('can:currencies_delete')->delete('currencies/{id}', [Controllers\CurrencyController::class, 'destroy'])->name('currencies.destroy');
// 页面装修 // 页面装修
Route::middleware('can:design_index')->get('design/builder', [Controllers\DesignController::class, 'index'])->name('design.index'); Route::middleware('can:design_index')->get('design/builder', [Controllers\DesignController::class, 'index'])->name('design.index');
Route::middleware('can:design_index')->put('design/builder', [Controllers\DesignController::class, 'update'])->name('design.update'); Route::middleware('can:design_index')->put('design/builder', [Controllers\DesignController::class, 'update'])->name('design.update');
@ -120,11 +112,9 @@ Route::prefix($adminName)
Route::middleware('can:design_menu_index')->get('design_menu/builder', [Controllers\DesignMenuController::class, 'index'])->name('design_menu.index'); Route::middleware('can:design_menu_index')->get('design_menu/builder', [Controllers\DesignMenuController::class, 'index'])->name('design_menu.index');
Route::middleware('can:design_menu_index')->put('design_menu/builder', [Controllers\DesignMenuController::class, 'update'])->name('design_menu.update'); Route::middleware('can:design_menu_index')->put('design_menu/builder', [Controllers\DesignMenuController::class, 'update'])->name('design_menu.update');
Route::put('edit', [Controllers\EditController::class, 'update'])->name('edit'); Route::put('edit', [Controllers\EditController::class, 'update'])->name('edit');
Route::get('edit/locale', [Controllers\EditController::class, 'locale'])->name('edit.locale'); Route::get('edit/locale', [Controllers\EditController::class, 'locale'])->name('edit.locale');
// 图片库 // 图片库
Route::middleware('can:file_manager_show')->get('file_manager', [Controllers\FileManagerController::class, 'index'])->name('file_manager.index'); Route::middleware('can:file_manager_show')->get('file_manager', [Controllers\FileManagerController::class, 'index'])->name('file_manager.index');
Route::middleware('can:file_manager_show')->get('file_manager/files', [Controllers\FileManagerController::class, 'getFiles'])->name('file_manager.get_files'); Route::middleware('can:file_manager_show')->get('file_manager/files', [Controllers\FileManagerController::class, 'getFiles'])->name('file_manager.get_files');
@ -137,21 +127,18 @@ Route::prefix($adminName)
Route::get('logout', [Controllers\LogoutController::class, 'index'])->name('logout.index'); Route::get('logout', [Controllers\LogoutController::class, 'index'])->name('logout.index');
// 语言管理 // 语言管理
Route::middleware('can:languages_index')->get('languages', [Controllers\LanguageController::class, 'index'])->name('languages.index'); Route::middleware('can:languages_index')->get('languages', [Controllers\LanguageController::class, 'index'])->name('languages.index');
Route::middleware('can:languages_create')->post('languages', [Controllers\LanguageController::class, 'store'])->name('languages.store'); Route::middleware('can:languages_create')->post('languages', [Controllers\LanguageController::class, 'store'])->name('languages.store');
Route::middleware('can:languages_update')->put('languages/{id}', [Controllers\LanguageController::class, 'update'])->name('languages.update'); Route::middleware('can:languages_update')->put('languages/{id}', [Controllers\LanguageController::class, 'update'])->name('languages.update');
Route::middleware('can:languages_delete')->delete('languages/{id}', [Controllers\LanguageController::class, 'destroy'])->name('languages.destroy'); Route::middleware('can:languages_delete')->delete('languages/{id}', [Controllers\LanguageController::class, 'destroy'])->name('languages.destroy');
// 订单 // 订单
Route::middleware('can:orders_index')->get('orders', [Controllers\OrderController::class, 'index'])->name('orders.index'); Route::middleware('can:orders_index')->get('orders', [Controllers\OrderController::class, 'index'])->name('orders.index');
Route::middleware('can:orders_export')->get('orders/export', [Controllers\OrderController::class, 'export'])->name('orders.export'); Route::middleware('can:orders_export')->get('orders/export', [Controllers\OrderController::class, 'export'])->name('orders.export');
Route::middleware('can:orders_show')->get('orders/{order}', [Controllers\OrderController::class, 'show'])->name('orders.show'); Route::middleware('can:orders_show')->get('orders/{order}', [Controllers\OrderController::class, 'show'])->name('orders.show');
Route::middleware('can:orders_update_status')->put('orders/{order}/status', [Controllers\OrderController::class, 'updateStatus'])->name('orders.update_status'); Route::middleware('can:orders_update_status')->put('orders/{order}/status', [Controllers\OrderController::class, 'updateStatus'])->name('orders.update_status');
// 插件 // 插件
Route::middleware('can:plugins_index')->get('plugins', [Controllers\PluginController::class, 'index'])->name('plugins.index'); Route::middleware('can:plugins_index')->get('plugins', [Controllers\PluginController::class, 'index'])->name('plugins.index');
Route::middleware('can:plugins_import')->post('plugins/import', [Controllers\PluginController::class, 'import'])->name('plugins.import'); Route::middleware('can:plugins_import')->post('plugins/import', [Controllers\PluginController::class, 'import'])->name('plugins.import');
@ -161,14 +148,12 @@ Route::prefix($adminName)
Route::middleware('can:plugins_install')->post('plugins/{code}/install', [Controllers\PluginController::class, 'install'])->name('plugins.install'); Route::middleware('can:plugins_install')->post('plugins/{code}/install', [Controllers\PluginController::class, 'install'])->name('plugins.install');
Route::middleware('can:plugins_uninstall')->post('plugins/{code}/uninstall', [Controllers\PluginController::class, 'uninstall'])->name('plugins.uninstall'); Route::middleware('can:plugins_uninstall')->post('plugins/{code}/uninstall', [Controllers\PluginController::class, 'uninstall'])->name('plugins.uninstall');
// 插件市场 // 插件市场
Route::middleware('can:marketing_index')->get('marketing', [Controllers\MarketingController::class, 'index'])->name('marketing.index'); Route::middleware('can:marketing_index')->get('marketing', [Controllers\MarketingController::class, 'index'])->name('marketing.index');
Route::middleware('can:marketing_show')->get('marketing/{code}', [Controllers\MarketingController::class, 'show'])->name('marketing.show'); Route::middleware('can:marketing_show')->get('marketing/{code}', [Controllers\MarketingController::class, 'show'])->name('marketing.show');
Route::middleware('can:marketing_buy')->post('marketing/{code}/buy', [Controllers\MarketingController::class, 'buy'])->name('marketing.buy'); Route::middleware('can:marketing_buy')->post('marketing/{code}/buy', [Controllers\MarketingController::class, 'buy'])->name('marketing.buy');
Route::middleware('can:marketing_download')->post('marketing/{code}/download', [Controllers\MarketingController::class, 'download'])->name('marketing.download'); Route::middleware('can:marketing_download')->post('marketing/{code}/download', [Controllers\MarketingController::class, 'download'])->name('marketing.download');
// 单页 // 单页
Route::middleware('can:pages_index')->get('pages', [Controllers\PagesController::class, 'index'])->name('pages.index'); 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_index')->get('pages/autocomplete', [Controllers\PagesController::class, 'autocomplete'])->name('pages.autocomplete');
@ -179,7 +164,6 @@ Route::prefix($adminName)
Route::middleware('can:pages_update')->put('pages/{page}', [Controllers\PagesController::class, 'update'])->name('pages.update'); 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'); Route::middleware('can:pages_delete')->delete('pages/{page}', [Controllers\PagesController::class, 'destroy'])->name('pages.destroy');
// 商品 // 商品
Route::middleware('can:products_restore')->put('products/restore', [Controllers\ProductController::class, 'restore']); Route::middleware('can:products_restore')->put('products/restore', [Controllers\ProductController::class, 'restore']);
Route::middleware('can:products_trashed')->get('products/trashed', [Controllers\ProductController::class, 'trashed'])->name('products.trashed'); Route::middleware('can:products_trashed')->get('products/trashed', [Controllers\ProductController::class, 'trashed'])->name('products.trashed');
@ -197,14 +181,12 @@ Route::prefix($adminName)
Route::middleware('can:products_update')->put('products/{product}', [Controllers\ProductController::class, 'update'])->name('products.update'); Route::middleware('can:products_update')->put('products/{product}', [Controllers\ProductController::class, 'update'])->name('products.update');
Route::middleware('can:products_delete')->delete('products/{product}', [Controllers\ProductController::class, 'destroy'])->name('products.destroy'); Route::middleware('can:products_delete')->delete('products/{product}', [Controllers\ProductController::class, 'destroy'])->name('products.destroy');
// 区域组 // 区域组
Route::middleware('can:regions_index')->get('regions', [Controllers\RegionController::class, 'index'])->name('regions.index'); Route::middleware('can:regions_index')->get('regions', [Controllers\RegionController::class, 'index'])->name('regions.index');
Route::middleware('can:regions_create')->post('regions', [Controllers\RegionController::class, 'store'])->name('regions.store'); Route::middleware('can:regions_create')->post('regions', [Controllers\RegionController::class, 'store'])->name('regions.store');
Route::middleware('can:regions_update')->put('regions/{id}', [Controllers\RegionController::class, 'update'])->name('regions.update'); Route::middleware('can:regions_update')->put('regions/{id}', [Controllers\RegionController::class, 'update'])->name('regions.update');
Route::middleware('can:regions_delete')->delete('regions/{id}', [Controllers\RegionController::class, 'destroy'])->name('regions.destroy'); Route::middleware('can:regions_delete')->delete('regions/{id}', [Controllers\RegionController::class, 'destroy'])->name('regions.destroy');
// RMA // RMA
Route::middleware('can:rmas_update')->post('rmas/history/{id}', [Controllers\RmaController::class, 'addHistory'])->name('rmas.add_history'); Route::middleware('can:rmas_update')->post('rmas/history/{id}', [Controllers\RmaController::class, 'addHistory'])->name('rmas.add_history');
Route::middleware('can:rmas_index')->get('rmas', [Controllers\RmaController::class, 'index'])->name('rmas.index'); Route::middleware('can:rmas_index')->get('rmas', [Controllers\RmaController::class, 'index'])->name('rmas.index');
@ -220,28 +202,24 @@ Route::prefix($adminName)
Route::middleware('can:settings_update')->post('settings', [Controllers\SettingController::class, 'store'])->name('settings.store'); Route::middleware('can:settings_update')->post('settings', [Controllers\SettingController::class, 'store'])->name('settings.store');
Route::middleware('can:settings_update')->post('settings/store_token', [Controllers\SettingController::class, 'storeDeveloperToken'])->name('settings.store_token'); Route::middleware('can:settings_update')->post('settings/store_token', [Controllers\SettingController::class, 'storeDeveloperToken'])->name('settings.store_token');
// 税类 // 税类
Route::middleware('can:tax_classes_index')->get('tax_classes', [Controllers\TaxClassController::class, 'index'])->name('tax_classes.index'); Route::middleware('can:tax_classes_index')->get('tax_classes', [Controllers\TaxClassController::class, 'index'])->name('tax_classes.index');
Route::middleware('can:tax_classes_create')->post('tax_classes', [Controllers\TaxClassController::class, 'store'])->name('tax_classes.store'); Route::middleware('can:tax_classes_create')->post('tax_classes', [Controllers\TaxClassController::class, 'store'])->name('tax_classes.store');
Route::middleware('can:tax_classes_update')->put('tax_classes/{tax_class}', [Controllers\TaxClassController::class, 'update'])->name('tax_classes.update'); Route::middleware('can:tax_classes_update')->put('tax_classes/{tax_class}', [Controllers\TaxClassController::class, 'update'])->name('tax_classes.update');
Route::middleware('can:tax_classes_delete')->delete('tax_classes/{tax_class}', [Controllers\TaxClassController::class, 'destroy'])->name('tax_classes.destroy'); Route::middleware('can:tax_classes_delete')->delete('tax_classes/{tax_class}', [Controllers\TaxClassController::class, 'destroy'])->name('tax_classes.destroy');
// 税费 // 税费
Route::middleware('can:tax_rates_index')->get('tax_rates', [Controllers\TaxRateController::class, 'index'])->name('tax_rates.index'); Route::middleware('can:tax_rates_index')->get('tax_rates', [Controllers\TaxRateController::class, 'index'])->name('tax_rates.index');
Route::middleware('can:tax_rates_create')->post('tax_rates', [Controllers\TaxRateController::class, 'store'])->name('tax_rates.store'); Route::middleware('can:tax_rates_create')->post('tax_rates', [Controllers\TaxRateController::class, 'store'])->name('tax_rates.store');
Route::middleware('can:tax_rates_update')->put('tax_rates/{tax_rate}', [Controllers\TaxRateController::class, 'update'])->name('tax_rates.update'); Route::middleware('can:tax_rates_update')->put('tax_rates/{tax_rate}', [Controllers\TaxRateController::class, 'update'])->name('tax_rates.update');
Route::middleware('can:tax_rates_delete')->delete('tax_rates/{tax_rate}', [Controllers\TaxRateController::class, 'destroy'])->name('tax_rates.destroy'); Route::middleware('can:tax_rates_delete')->delete('tax_rates/{tax_rate}', [Controllers\TaxRateController::class, 'destroy'])->name('tax_rates.destroy');
// 后台用户 // 后台用户
Route::middleware('can:admin_users_index')->get('admin_users', [Controllers\AdminUserController::class, 'index'])->name('admin_users.index'); Route::middleware('can:admin_users_index')->get('admin_users', [Controllers\AdminUserController::class, 'index'])->name('admin_users.index');
Route::middleware('can:admin_users_create')->post('admin_users', [Controllers\AdminUserController::class, 'store'])->name('admin_users.store'); Route::middleware('can:admin_users_create')->post('admin_users', [Controllers\AdminUserController::class, 'store'])->name('admin_users.store');
Route::middleware('can:admin_users_update')->put('admin_users/{user_id}', [Controllers\AdminUserController::class, 'update'])->name('admin_users.update'); Route::middleware('can:admin_users_update')->put('admin_users/{user_id}', [Controllers\AdminUserController::class, 'update'])->name('admin_users.update');
Route::middleware('can:admin_users_delete')->delete('admin_users/{user_id}', [Controllers\AdminUserController::class, 'destroy'])->name('admin_users.destroy'); Route::middleware('can:admin_users_delete')->delete('admin_users/{user_id}', [Controllers\AdminUserController::class, 'destroy'])->name('admin_users.destroy');
// 后台用户组 // 后台用户组
Route::middleware('can:admin_roles_index')->get('admin_roles', [Controllers\AdminRoleController::class, 'index'])->name('admin_roles.index'); Route::middleware('can:admin_roles_index')->get('admin_roles', [Controllers\AdminRoleController::class, 'index'])->name('admin_roles.index');
Route::middleware('can:admin_roles_create')->get('admin_roles/create', [Controllers\AdminRoleController::class, 'create'])->name('admin_roles.create'); Route::middleware('can:admin_roles_create')->get('admin_roles/create', [Controllers\AdminRoleController::class, 'create'])->name('admin_roles.create');

View File

@ -11,27 +11,25 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use Beike\Models\Category;
use Beike\Models\CategoryPath;
use Beike\Repositories\AddressRepo; use Beike\Repositories\AddressRepo;
use Beike\Repositories\CustomerRepo;
use Beike\Repositories\ZoneRepo; use Beike\Repositories\ZoneRepo;
use Illuminate\Support\Facades\DB;
class AddressService class AddressService
{ {
public static function addForCustomer($customerId, $data) public static function addForCustomer($customerId, $data)
{ {
$data = self::getParams($data); $data = self::getParams($data);
$data['customer_id'] = $customerId; $data['customer_id'] = $customerId;
$address = AddressRepo::create($data); $address = AddressRepo::create($data);
return $address; return $address;
} }
public static function update($addressId, $data) public static function update($addressId, $data)
{ {
$data = self::getParams($data); $data = self::getParams($data);
$address = AddressRepo::update($addressId, $data); $address = AddressRepo::update($addressId, $data);
return $address; return $address;
} }
@ -42,17 +40,18 @@ class AddressService
public static function getParams($data): array public static function getParams($data): array
{ {
$data = [ $data = [
'name' => $data['name'] ?? '', 'name' => $data['name'] ?? '',
'phone' => $data['phone'] ?? '', 'phone' => $data['phone'] ?? '',
'country_id' => (int)$data['country_id'] ?? 0, 'country_id' => (int) $data['country_id'] ?? 0,
'zone_id' => (int)$data['zone_id'] ?? 0, 'zone_id' => (int) $data['zone_id'] ?? 0,
'zone' => ZoneRepo::find($data['zone_id'])->name, 'zone' => ZoneRepo::find($data['zone_id'])->name,
'city_id' => (int)$data['city_id'] ?? 0, 'city_id' => (int) $data['city_id'] ?? 0,
'city' => $data['city'] ?? '', 'city' => $data['city'] ?? '',
'zipcode' => $data['zipcode'] ?? '', 'zipcode' => $data['zipcode'] ?? '',
'address_1' => $data['address_1'] ?? '', 'address_1' => $data['address_1'] ?? '',
'address_2' => $data['address_2'] ?? '', 'address_2' => $data['address_2'] ?? '',
]; ];
return $data; return $data;
} }
} }

View File

@ -33,12 +33,12 @@ class CategoryService
$descriptions = []; $descriptions = [];
foreach ($data['descriptions'] as $locale => $description) { foreach ($data['descriptions'] as $locale => $description) {
$descriptions[] = [ $descriptions[] = [
'locale' => $locale, 'locale' => $locale,
'name' => $description['name'], 'name' => $description['name'],
'content' => $description['content'] ?? '', 'content' => $description['content'] ?? '',
'meta_title' => $description['meta_title'] ?? '', 'meta_title' => $description['meta_title'] ?? '',
'meta_description' => $description['meta_description'] ?? '', 'meta_description' => $description['meta_description'] ?? '',
'meta_keywords' => $description['meta_keywords'] ?? '', 'meta_keywords' => $description['meta_keywords'] ?? '',
]; ];
} }
if ($isUpdating) { if ($isUpdating) {
@ -55,6 +55,7 @@ class CategoryService
DB::commit(); DB::commit();
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
throw $e; throw $e;
} }
@ -66,19 +67,19 @@ class CategoryService
// Paths // Paths
$paths = []; $paths = [];
// 复制上级分类的 paths // 复制上级分类的 paths
$level = 0; $level = 0;
$parentPaths = CategoryPath::query()->where('category_id', $category->parent_id)->orderBy('level')->get(); $parentPaths = CategoryPath::query()->where('category_id', $category->parent_id)->orderBy('level')->get();
foreach ($parentPaths as $path) { foreach ($parentPaths as $path) {
$paths[] = [ $paths[] = [
'path_id' => $path->path_id, 'path_id' => $path->path_id,
'level' => $level, 'level' => $level,
]; ];
$level++; $level++;
} }
// 自身 // 自身
$paths[] = [ $paths[] = [
'path_id' => $category->id, 'path_id' => $category->id,
'level' => $level, 'level' => $level,
]; ];
$category->paths()->createMany($paths); $category->paths()->createMany($paths);
} }
@ -103,7 +104,7 @@ class CategoryService
$newPathIds = $newParentPathIds; $newPathIds = $newParentPathIds;
$results = CategoryPath::query() $results = CategoryPath::query()
->where('category_id', (int)$category_path->category_id) ->where('category_id', (int) $category_path->category_id)
->where('level', '>=', $category_path->level) ->where('level', '>=', $category_path->level)
->orderBy('level') ->orderBy('level')
->get(); ->get();
@ -116,10 +117,10 @@ class CategoryService
foreach ($newPathIds as $path_id) { foreach ($newPathIds as $path_id) {
$paths[] = [ $paths[] = [
'category_id' => $category_path->category_id, 'category_id' => $category_path->category_id,
'path_id' => $path_id, 'path_id' => $path_id,
'level' => $level, 'level' => $level,
'created_at' => now(), 'created_at' => now(),
'updated_at' => now(), 'updated_at' => now(),
]; ];
$level++; $level++;
} }
@ -134,7 +135,6 @@ class CategoryService
// $this->repairCategories(0); // $this->repairCategories(0);
} }
/** /**
* 重建category path * 重建category path
* *
@ -149,13 +149,13 @@ class CategoryService
CategoryPath::query()->where('category_id', $category->id)->delete(); CategoryPath::query()->where('category_id', $category->id)->delete();
// Fix for records with no paths // Fix for records with no paths
$level = 0; $level = 0;
$subCategoryPaths = CategoryPath::query()->where('category_id', $parentId)->orderBy('level')->get(); $subCategoryPaths = CategoryPath::query()->where('category_id', $parentId)->orderBy('level')->get();
foreach ($subCategoryPaths as $path) { foreach ($subCategoryPaths as $path) {
CategoryPath::query()->create([ CategoryPath::query()->create([
'category_id' => $category->id, 'category_id' => $category->id,
'path_id' => $path->path_id, 'path_id' => $path->path_id,
'level' => $level, 'level' => $level,
]); ]);
$level++; $level++;
} }
@ -167,8 +167,8 @@ class CategoryService
->first(); ->first();
$pathData = [ $pathData = [
'category_id' => $category->id, 'category_id' => $category->id,
'path_id' => $category->id, 'path_id' => $category->id,
'level' => $level 'level' => $level,
]; ];
if ($path) { if ($path) {
$path->update($pathData); $path->update($pathData);

View File

@ -11,7 +11,6 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use Beike\Repositories\CustomerGroupRepo; use Beike\Repositories\CustomerGroupRepo;
class CustomerGroupService class CustomerGroupService
@ -22,13 +21,13 @@ class CustomerGroupService
*/ */
public static function create($data) public static function create($data)
{ {
$data = self::getParams($data); $data = self::getParams($data);
$customerGroup = CustomerGroupRepo::create($data); $customerGroup = CustomerGroupRepo::create($data);
$descriptions = []; $descriptions = [];
foreach ($data['descriptions'] as $locale => $description) { foreach ($data['descriptions'] as $locale => $description) {
$description['locale'] = $locale; $description['locale'] = $locale;
$descriptions[] = $description; $descriptions[] = $description;
} }
$customerGroup->descriptions()->createMany($descriptions); $customerGroup->descriptions()->createMany($descriptions);
@ -37,7 +36,7 @@ class CustomerGroupService
public static function update($id, $data) public static function update($id, $data)
{ {
$data = self::getParams($data); $data = self::getParams($data);
$customerGroup = CustomerGroupRepo::find($id); $customerGroup = CustomerGroupRepo::find($id);
$customerGroup->update($data); $customerGroup->update($data);
@ -46,7 +45,7 @@ class CustomerGroupService
$descriptions = []; $descriptions = [];
foreach ($data['descriptions'] as $locale => $description) { foreach ($data['descriptions'] as $locale => $description) {
$description['locale'] = $locale; $description['locale'] = $locale;
$descriptions[] = $description; $descriptions[] = $description;
} }
$customerGroup->descriptions()->createMany($descriptions); $customerGroup->descriptions()->createMany($descriptions);
@ -58,18 +57,18 @@ class CustomerGroupService
$descriptions = []; $descriptions = [];
foreach ($data['name'] as $locale => $value) { foreach ($data['name'] as $locale => $value) {
$descriptions[$locale] = [ $descriptions[$locale] = [
'name' => $value, 'name' => $value,
'description' => $data['description'][$locale] ?? '' 'description' => $data['description'][$locale] ?? '',
]; ];
} }
$params = [ $params = [
'total' => (int)$data['total'] ?? 0, 'total' => (int) $data['total'] ?? 0,
'reward_point_factor' => (float)$data['reward_point_factor'] ?? 0, 'reward_point_factor' => (float) $data['reward_point_factor'] ?? 0,
'use_point_factor' => (float)$data['use_point_factor'] ?? 0, 'use_point_factor' => (float) $data['use_point_factor'] ?? 0,
'discount_factor' => (float)$data['discount_factor'] ?? 0, 'discount_factor' => (float) $data['discount_factor'] ?? 0,
'level' => (int)$data['level'] ?? 0, 'level' => (int) $data['level'] ?? 0,
'descriptions' => $descriptions, 'descriptions' => $descriptions,
]; ];
return $params; return $params;

View File

@ -11,19 +11,16 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use Beike\Models\Category;
use Beike\Models\CategoryPath;
use Beike\Repositories\CustomerRepo; use Beike\Repositories\CustomerRepo;
use Illuminate\Support\Facades\DB;
class CustomerService class CustomerService
{ {
public static function create($data) public static function create($data)
{ {
$data['locale'] = system_setting('base.locale'); $data['locale'] = system_setting('base.locale');
$data['from'] = 'admin'; $data['from'] = 'admin';
$customer = CustomerRepo::create($data); $customer = CustomerRepo::create($data);
return $customer; return $customer;
} }
} }

View File

@ -11,33 +11,29 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use Illuminate\Support\Facades\File;
class FileManagerService class FileManagerService
{ {
private $fileBasePath = ''; private $fileBasePath = '';
public function __construct() public function __construct()
{ {
$this->fileBasePath = public_path('catalog'); $this->fileBasePath = public_path('catalog');
} }
/** /**
* 获取某个目录下所有文件夹 * 获取某个目录下所有文件夹
*/ */
public function getDirectories($baseFolder = '/'): array public function getDirectories($baseFolder = '/'): array
{ {
$currentBasePath = rtrim($this->fileBasePath . $baseFolder, '/'); $currentBasePath = rtrim($this->fileBasePath . $baseFolder, '/');
$directories = glob("{$currentBasePath}/*", GLOB_ONLYDIR); $directories = glob("{$currentBasePath}/*", GLOB_ONLYDIR);
$result = []; $result = [];
foreach ($directories as $directory) { foreach ($directories as $directory) {
$baseName = basename($directory); $baseName = basename($directory);
$dirName = str_replace($this->fileBasePath, '', $directory); $dirName = str_replace($this->fileBasePath, '', $directory);
if (is_dir($directory)) { if (is_dir($directory)) {
$item = $this->handleFolder($dirName, $baseName); $item = $this->handleFolder($dirName, $baseName);
$subDirectories = $this->getDirectories($dirName); $subDirectories = $this->getDirectories($dirName);
if ($subDirectories) { if ($subDirectories) {
$item['children'] = $subDirectories; $item['children'] = $subDirectories;
@ -45,10 +41,10 @@ class FileManagerService
$result[] = $item; $result[] = $item;
} }
} }
return $result; return $result;
} }
/** /**
* 获取某个目录下的文件和文件夹 * 获取某个目录下的文件和文件夹
* *
@ -61,9 +57,9 @@ class FileManagerService
public function getFiles($baseFolder, int $page = 1, int $perPage = 20): array public function getFiles($baseFolder, int $page = 1, int $perPage = 20): array
{ {
$currentBasePath = rtrim($this->fileBasePath . $baseFolder, '/'); $currentBasePath = rtrim($this->fileBasePath . $baseFolder, '/');
$files = glob($currentBasePath . '/*'); $files = glob($currentBasePath . '/*');
usort($files, function ($a, $b) { usort($files, function ($a, $b) {
return filemtime($a) - filemtime($b) <0; return filemtime($a) - filemtime($b) < 0;
}); });
$images = []; $images = [];
@ -78,17 +74,16 @@ class FileManagerService
} }
} }
$page = $page > 0 ? $page : 1; $page = $page > 0 ? $page : 1;
$imageCollection = collect($images); $imageCollection = collect($images);
return [ return [
'images' => $imageCollection->forPage($page, $perPage)->values()->toArray(), 'images' => $imageCollection->forPage($page, $perPage)->values()->toArray(),
'image_total' => $imageCollection->count(), 'image_total' => $imageCollection->count(),
'image_page' => $page, 'image_page' => $page,
]; ];
} }
/** /**
* 创建目录 * 创建目录
* @param $folderName * @param $folderName
@ -97,14 +92,13 @@ class FileManagerService
public function createDirectory($folderName) public function createDirectory($folderName)
{ {
$catalogFolderPath = "catalog/{$folderName}"; $catalogFolderPath = "catalog/{$folderName}";
$folderPath = public_path($catalogFolderPath); $folderPath = public_path($catalogFolderPath);
if (is_dir($folderPath)) { if (is_dir($folderPath)) {
throw new \Exception(trans('admin/file_manager.directory_already_exist')); throw new \Exception(trans('admin/file_manager.directory_already_exist'));
} }
create_directories($catalogFolderPath); create_directories($catalogFolderPath);
} }
/** /**
* 删除文件或文件夹 * 删除文件或文件夹
* *
@ -125,7 +119,6 @@ class FileManagerService
} }
} }
/** /**
* 批量删除文件 * 批量删除文件
* *
@ -145,7 +138,6 @@ class FileManagerService
} }
} }
/** /**
* 修改文件夹或者文件名称 * 修改文件夹或者文件名称
* *
@ -156,18 +148,17 @@ class FileManagerService
public function updateName($originPath, $newPath) public function updateName($originPath, $newPath)
{ {
$originPath = public_path("catalog/{$originPath}"); $originPath = public_path("catalog/{$originPath}");
if (!is_dir($originPath) && !file_exists($originPath)) { if (! is_dir($originPath) && ! file_exists($originPath)) {
throw new \Exception(trans('admin/file_manager.target_not_exist')); throw new \Exception(trans('admin/file_manager.target_not_exist'));
} }
$originBase = dirname($originPath); $originBase = dirname($originPath);
$newPath = $originBase . '/' . $newPath; $newPath = $originBase . '/' . $newPath;
if ($originPath == $newPath) { if ($originPath == $newPath) {
return; return;
} }
@rename($originPath, $newPath); @rename($originPath, $newPath);
} }
/** /**
* 处理文件夹 * 处理文件夹
* *
@ -179,11 +170,10 @@ class FileManagerService
{ {
return [ return [
'path' => $folderPath, 'path' => $folderPath,
'name' => $baseName 'name' => $baseName,
]; ];
} }
/** /**
* 检测是否含有子文件夹 * 检测是否含有子文件夹
* *
@ -192,17 +182,17 @@ class FileManagerService
*/ */
private function hasSubFolders($folderPath): bool private function hasSubFolders($folderPath): bool
{ {
$path = public_path("catalog/{$folderPath}"); $path = public_path("catalog/{$folderPath}");
$subFiles = glob($path . '/*'); $subFiles = glob($path . '/*');
foreach ($subFiles as $subFile) { foreach ($subFiles as $subFile) {
if (is_dir($subFile)) { if (is_dir($subFile)) {
return true; return true;
} }
} }
return false; return false;
} }
/** /**
* 处理文件 * 处理文件
* *
@ -214,11 +204,11 @@ class FileManagerService
private function handleImage($filePath, $baseName): array private function handleImage($filePath, $baseName): array
{ {
return [ return [
'path' => 'catalog' . $filePath, 'path' => 'catalog' . $filePath,
'name' => $baseName, 'name' => $baseName,
'url' => image_resize("catalog{$filePath}"), 'url' => image_resize("catalog{$filePath}"),
'origin_url' => image_origin("catalog{$filePath}"), 'origin_url' => image_origin("catalog{$filePath}"),
'selected' => false, 'selected' => false,
]; ];
} }
} }

View File

@ -17,18 +17,18 @@ class LanguageService
$result = []; $result = [];
foreach (admin_languages() as $languageCode) { foreach (admin_languages() as $languageCode) {
$langFile = resource_path("lang/$languageCode/admin/base.php"); $langFile = resource_path("lang/$languageCode/admin/base.php");
if (!is_file($langFile)) { if (! is_file($langFile)) {
throw new \Exception("File ($langFile) not exist!"); throw new \Exception("File ($langFile) not exist!");
} }
$baseData = require($langFile); $baseData = require $langFile;
$name = $baseData['name'] ?? $languageCode; $name = $baseData['name'] ?? $languageCode;
$result[] = [ $result[] = [
'code' => $languageCode, 'code' => $languageCode,
'name' => $name, 'name' => $name,
'id' => $languages[$languageCode]['id'] ?? 0, 'id' => $languages[$languageCode]['id'] ?? 0,
'image' => $languages[$languageCode]['image'] ?? '', 'image' => $languages[$languageCode]['image'] ?? '',
'sort_order' => $languages[$languageCode]['sort_order'] ?? '', 'sort_order' => $languages[$languageCode]['sort_order'] ?? '',
'status' => $languages[$languageCode]['status'] ?? '', 'status' => $languages[$languageCode]['status'] ?? '',
]; ];
} }
@ -46,7 +46,7 @@ class LanguageService
$models = self::$models; $models = self::$models;
foreach ($models as $className) { foreach ($models as $className) {
$className = "\\Beike\\Models\\$className"; $className = "\\Beike\\Models\\$className";
$items = $className::query()->where('locale', system_setting('base.locale', 'en'))->get()->toArray(); $items = $className::query()->where('locale', system_setting('base.locale', 'en'))->get()->toArray();
foreach ($items as &$item) { foreach ($items as &$item) {
if (isset($item['created_at'])) { if (isset($item['created_at'])) {
$item['created_at'] = now(); $item['created_at'] = now();
@ -59,13 +59,14 @@ class LanguageService
} }
$className::query()->insert($items); $className::query()->insert($items);
} }
return $language; return $language;
} }
public static function delete($id) public static function delete($id)
{ {
$language = LanguageRepo::find($id); $language = LanguageRepo::find($id);
if (!$language) { if (! $language) {
return; return;
} }
if ($language->code == system_setting('base.locale')) { if ($language->code == system_setting('base.locale')) {

View File

@ -11,11 +11,11 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use ZanySoft\Zip\Zip; use Illuminate\Http\Client\PendingRequest;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Client\PendingRequest;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use ZanySoft\Zip\Zip;
class MarketingService class MarketingService
{ {
@ -35,7 +35,6 @@ class MarketingService
return new self; return new self;
} }
/** /**
* 获取可插件市场插件列表 * 获取可插件市场插件列表
* *
@ -45,13 +44,13 @@ class MarketingService
public function getList(array $filters = []): mixed public function getList(array $filters = []): mixed
{ {
$url = config('beike.api_url') . '/api/plugins'; $url = config('beike.api_url') . '/api/plugins';
if (!empty($filters)) { if (! empty($filters)) {
$url .= '?' . http_build_query($filters); $url .= '?' . http_build_query($filters);
} }
return $this->httpClient->get($url)->json(); return $this->httpClient->get($url)->json();
} }
/** /**
* 获取插件市场单个插件信息 * 获取插件市场单个插件信息
* *
@ -60,15 +59,15 @@ class MarketingService
*/ */
public function getPlugin($pluginCode): mixed public function getPlugin($pluginCode): mixed
{ {
$url = config('beike.api_url') . "/api/plugins/{$pluginCode}"; $url = config('beike.api_url') . "/api/plugins/{$pluginCode}";
$plugin = $this->httpClient->get($url)->json(); $plugin = $this->httpClient->get($url)->json();
if (empty($plugin)) { if (empty($plugin)) {
throw new NotFoundHttpException('该插件不存在或已下架'); throw new NotFoundHttpException('该插件不存在或已下架');
} }
return $plugin; return $plugin;
} }
/** /**
* 购买插件市场单个插件 * 购买插件市场单个插件
* *
@ -85,11 +84,10 @@ class MarketingService
$status = $content['status'] ?? ''; $status = $content['status'] ?? '';
if ($status == 'success') { if ($status == 'success') {
return $content['data']; return $content['data'];
} else {
throw new \Exception($content['message'] ?? '');
} }
}
throw new \Exception($content['message'] ?? '');
}
/** /**
* 下载插件到网站 * 下载插件到网站
@ -100,7 +98,7 @@ class MarketingService
public function download($pluginCode) public function download($pluginCode)
{ {
$datetime = date('Y-m-d'); $datetime = date('Y-m-d');
$url = config('beike.api_url') . "/api/plugins/{$pluginCode}/download"; $url = config('beike.api_url') . "/api/plugins/{$pluginCode}/download";
$content = $this->httpClient->get($url)->body(); $content = $this->httpClient->get($url)->body();
@ -108,7 +106,7 @@ class MarketingService
Storage::disk('local')->put($pluginPath, $content); Storage::disk('local')->put($pluginPath, $content);
$pluginZip = storage_path('app/' . $pluginPath); $pluginZip = storage_path('app/' . $pluginPath);
$zipFile = Zip::open($pluginZip); $zipFile = Zip::open($pluginZip);
$zipFile->extract(base_path('plugins')); $zipFile->extract(base_path('plugins'));
} }
} }

View File

@ -3,7 +3,6 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use Beike\Models\Product; use Beike\Models\Product;
use Beike\Models\ProductDescription;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class ProductService class ProductService
@ -11,6 +10,7 @@ class ProductService
public function create(array $data): Product public function create(array $data): Product
{ {
$product = new Product; $product = new Product;
return $this->createOrUpdate($product, $data); return $this->createOrUpdate($product, $data);
} }
@ -26,7 +26,7 @@ class ProductService
try { try {
DB::beginTransaction(); DB::beginTransaction();
$data['brand_id'] = (int)$data['brand_id']; $data['brand_id'] = (int) $data['brand_id'];
$data['variables'] = json_decode($data['variables']); $data['variables'] = json_decode($data['variables']);
$product->fill($data); $product->fill($data);
$product->save(); $product->save();
@ -39,7 +39,7 @@ class ProductService
$descriptions = []; $descriptions = [];
foreach ($data['descriptions'] as $locale => $description) { foreach ($data['descriptions'] as $locale => $description) {
$description['locale'] = $locale; $description['locale'] = $locale;
$description['content'] = $description['content'] ?? ''; $description['content'] = $description['content'] ?? '';
$descriptions[] = $description; $descriptions[] = $description;
@ -50,11 +50,11 @@ class ProductService
$skus = []; $skus = [];
foreach ($data['skus'] as $index => $sku) { foreach ($data['skus'] as $index => $sku) {
$sku['position'] = $index; $sku['position'] = $index;
$sku['origin_price'] = (float)$sku['origin_price']; $sku['origin_price'] = (float) $sku['origin_price'];
$sku['cost_price'] = (float)$sku['cost_price']; $sku['cost_price'] = (float) $sku['cost_price'];
$sku['quantity'] = (int)$sku['quantity']; $sku['quantity'] = (int) $sku['quantity'];
$skus[] = $sku; $skus[] = $sku;
} }
$product->skus()->createMany($skus); $product->skus()->createMany($skus);
@ -66,6 +66,7 @@ class ProductService
return $product; return $product;
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
throw $e; throw $e;
} }
} }

View File

@ -11,8 +11,6 @@
namespace Beike\Admin\Services; namespace Beike\Admin\Services;
use Beike\Libraries\Notification;
use Beike\Repositories\UserRepo; use Beike\Repositories\UserRepo;
use Beike\Repositories\VerifyCodeRepo; use Beike\Repositories\VerifyCodeRepo;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
@ -25,13 +23,14 @@ class UserService
* @param $email * @param $email
* @return void * @return void
*/ */
public static function sendVerifyCodeForForgotten($email) { public static function sendVerifyCodeForForgotten($email)
{
$code = str_pad(mt_rand(10, 999999), 6, '0', STR_PAD_LEFT); $code = str_pad(mt_rand(10, 999999), 6, '0', STR_PAD_LEFT);
VerifyCodeRepo::deleteByAccount($email); VerifyCodeRepo::deleteByAccount($email);
VerifyCodeRepo::create([ VerifyCodeRepo::create([
'account' => $email, 'account' => $email,
'code' => $code, 'code' => $code,
]); ]);
Log::info("找回密码验证码:{$code}"); Log::info("找回密码验证码:{$code}");
@ -51,6 +50,7 @@ class UserService
$verifyCode = VerifyCodeRepo::findByAccount($account); $verifyCode = VerifyCodeRepo::findByAccount($account);
if ($verifyCode->created_at->addMinutes(10) < Carbon::now()) { if ($verifyCode->created_at->addMinutes(10) < Carbon::now()) {
$verifyCode->delete(); $verifyCode->delete();
throw new \Exception(trans('admin/user.verify_code_expired')); throw new \Exception(trans('admin/user.verify_code_expired'));
} }
@ -59,7 +59,7 @@ class UserService
} }
$user = UserRepo::findByEmail($account); $user = UserRepo::findByEmail($account);
if (!$user) { if (! $user) {
throw new \Exception(trans('admin/user.account_not_exist')); throw new \Exception(trans('admin/user.account_not_exist'));
} }

View File

@ -7,12 +7,13 @@ use Illuminate\View\Component;
class Alert extends Component class Alert extends Component
{ {
public string $type; public string $type;
public string $msg; public string $msg;
public function __construct(?string $type = 'success', string $msg) public function __construct(?string $type, string $msg)
{ {
$this->type = $type ?? 'success'; $this->type = $type ?? 'success';
$this->msg = $msg; $this->msg = $msg;
} }
public function render() public function render()

View File

@ -7,6 +7,7 @@ use Illuminate\View\Component;
class Filter extends Component class Filter extends Component
{ {
public string $url; public string $url;
public array $queries; public array $queries;
/** /**
@ -16,7 +17,7 @@ class Filter extends Component
*/ */
public function __construct(string $url) public function __construct(string $url)
{ {
$this->url = $url; $this->url = $url;
$this->queries = request()->query() ?? []; $this->queries = request()->query() ?? [];
} }

View File

@ -7,12 +7,14 @@ use Illuminate\View\Component;
class Image extends Component class Image extends Component
{ {
public string $name; public string $name;
public string $title; public string $title;
public string $value; public string $value;
public function __construct(string $name, ?string $title, ?string $value) public function __construct(string $name, ?string $title, ?string $value)
{ {
$this->name = $name; $this->name = $name;
$this->title = $title ?? ''; $this->title = $title ?? '';
$this->value = $value ?? ''; $this->value = $value ?? '';
} }

View File

@ -7,23 +7,30 @@ use Illuminate\View\Component;
class Input extends Component class Input extends Component
{ {
public string $name; public string $name;
public string $title; public string $title;
public string $value; public string $value;
public string $error; public string $error;
public string $width; public string $width;
public string $type; public string $type;
public string $step; public string $step;
public bool $required; public bool $required;
public function __construct(string $name, string $title, ?string $value, bool $required = false, ?string $error = '', ?string $width = '400', ?string $type = 'text', ?string $step = '') public function __construct(string $name, string $title, ?string $value, bool $required = false, ?string $error = '', ?string $width = '400', ?string $type = 'text', ?string $step = '')
{ {
$this->name = $name; $this->name = $name;
$this->title = $title; $this->title = $title;
$this->value = $value; $this->value = $value;
$this->error = $error; $this->error = $error;
$this->width = $width; $this->width = $width;
$this->type = $type; $this->type = $type;
$this->step = $step; $this->step = $step;
$this->required = $required; $this->required = $required;
} }

Some files were not shown because too many files have changed in this diff Show More