使用laravel/pint格式化代码
This commit is contained in:
parent
0911ba6102
commit
434d94c01d
|
|
@ -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');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义错误信息页面, 前台与后台不同, 需要分开定义
|
* 自定义错误信息页面, 前台与后台不同, 需要分开定义
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ class SetLocaleAdmin
|
||||||
} else {
|
} else {
|
||||||
App::setLocale('en');
|
App::setLocale('en');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ class SetLocaleFromSession
|
||||||
App::setLocale($configLocale);
|
App::setLocale($configLocale);
|
||||||
session(['locale' => $configLocale]);
|
session(['locale' => $configLocale]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -51,5 +51,4 @@ class CountryController extends Controller
|
||||||
|
|
||||||
return json_success(trans('common.deleted_success'));
|
return json_success(trans('common.deleted_success'));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除语言
|
* 删除语言
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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());
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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()) {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class ForgottenRequest extends FormRequest
|
||||||
public function attributes()
|
public function attributes()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'password' => trans('customer.password')
|
'password' => trans('customer.password'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 [
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 ?? '',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 后台公共数据
|
* 后台公共数据
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除角色
|
* 删除角色
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除后台用户
|
* 删除后台用户
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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')
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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');
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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')) {
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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() ?? [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 ?? '';
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
Loading…
Reference in New Issue