使用laravel/pint格式化代码

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,17 +3,17 @@
namespace App\Http\Middleware;
use Beike\Models\Customer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Auth\Middleware\Authenticate as Middleware;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class ShopAuthenticate extends Middleware
{
/**
* Handle an incoming request.
*
* @param Request $request
* @param Request $request
* @param \Closure $next
* @param string[] ...$guards
* @return mixed
@ -27,13 +27,13 @@ class ShopAuthenticate extends Middleware
$customer = current_customer();
if ($customer->status != 1) {
Auth::guard(Customer::AUTH_GUARD)->logout();
return redirect(shop_route('login.index'));
}
return $next($request);
}
/**
* 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)
{
if (!$request->expectsJson()) {
if (! $request->expectsJson()) {
return shop_route('login.index');
}
}
/**
* Handle an unauthenticated user.
*
* @param Request $request
* @param array $guards
* @param array $guards
* @return void
*
* @throws AuthenticationException

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -11,12 +11,12 @@
namespace Beike\Admin\Http\Controllers;
use Illuminate\Http\Request;
use Beike\Repositories\SettingRepo;
use Beike\Admin\Http\Resources\CustomerGroupDetail;
use Beike\Repositories\CountryRepo;
use Beike\Repositories\CurrencyRepo;
use Beike\Repositories\CustomerGroupRepo;
use Beike\Admin\Http\Resources\CustomerGroupDetail;
use Beike\Repositories\SettingRepo;
use Illuminate\Http\Request;
class SettingController extends Controller
{
@ -29,26 +29,25 @@ class SettingController extends Controller
{
$themes = [
['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 = [
['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 = [
'countries' => CountryRepo::listEnabled(),
'currencies' => CurrencyRepo::listEnabled(),
'tax_address' => $tax_address,
'countries' => CountryRepo::listEnabled(),
'currencies' => CurrencyRepo::listEnabled(),
'tax_address' => $tax_address,
'customer_groups' => CustomerGroupDetail::collection(CustomerGroupRepo::list())->jsonSerialize(),
'themes' => $themes
'themes' => $themes,
];
return view('admin::pages.setting', $data);
}
/**
* 更新系统设置
*
@ -63,13 +62,15 @@ class SettingController extends Controller
$oldAdminName = admin_name();
$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'));
}
public function storeDeveloperToken(Request $request)
{
SettingRepo::storeValue('developer_token', $request->get('developer_token'));
return json_success(trans('common.updated_success'));
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -12,23 +12,26 @@
namespace Beike\Admin\Repositories;
use Beike\Models\AdminUser;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Exceptions\PermissionDoesNotExist;
use Spatie\Permission\Models\Role;
class PermissionRepo
{
private ?AdminUser $adminUser = null;
private ?Role $adminRole = null;
public function setUser(AdminUser $user): PermissionRepo
public function setUser(AdminUser $user): self
{
$this->adminUser = $user;
return $this;
}
public function setRole(Role $role): PermissionRepo
public function setRole(Role $role): self
{
$this->adminRole = $role;
return $this;
}
@ -63,10 +66,10 @@ class PermissionRepo
['title' => trans('admin/common.zone'), 'permissions' => $this->getZonePermissions()],
['title' => trans('admin/common.country'), 'permissions' => $this->getCountryPermissions()],
];
return hook_filter('role.all_permissions', $permissions);
}
/**
* 订单权限列表
*
@ -75,11 +78,11 @@ class PermissionRepo
private function getOrderPermissions(): array
{
$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);
}
/**
* 售后(退换货)权限列表
*
@ -88,11 +91,11 @@ class PermissionRepo
private function getRmaPermissions(): array
{
$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);
}
/**
* 售后(退换货)原因权限列表
*
@ -101,11 +104,11 @@ class PermissionRepo
private function getRmaReasonPermissions(): array
{
$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);
}
/**
* 商品权限列表
*
@ -114,11 +117,11 @@ class PermissionRepo
private function getProductPermissions(): array
{
$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);
}
/**
* 分类权限列表
*
@ -127,11 +130,11 @@ class PermissionRepo
private function getCategoryPermissions(): array
{
$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);
}
/**
* 品牌权限列表
*
@ -140,11 +143,11 @@ class PermissionRepo
private function getBrandPermissions(): array
{
$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);
}
/**
* 客户权限列表
*
@ -153,11 +156,11 @@ class PermissionRepo
private function getCustomerPermissions(): array
{
$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);
}
/**
* 客户组权限列表
*
@ -166,11 +169,11 @@ class PermissionRepo
private function getCustomerGroupPermissions(): array
{
$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);
}
/**
* 设置权限列表
*
@ -179,11 +182,11 @@ class PermissionRepo
private function getSettingPermissions(): array
{
$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 mixed
@ -191,11 +194,11 @@ class PermissionRepo
private function getContentPermissions()
{
$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);
}
/**
* 插件权限列表
*
@ -204,11 +207,11 @@ class PermissionRepo
private function getPluginPermissions(): array
{
$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);
}
/**
* 后台管理员权限列表
*
@ -217,11 +220,11 @@ class PermissionRepo
private function getAdminUserPermissions()
{
$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);
}
/**
* 后台管理员权限列表
*
@ -230,11 +233,11 @@ class PermissionRepo
private function getAdminRolePermissions()
{
$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);
}
/**
* 区域分组权限列表
*
@ -243,11 +246,11 @@ class PermissionRepo
private function getRegionPermissions(): array
{
$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);
}
/**
* 获取税率权限列表
*
@ -256,11 +259,11 @@ class PermissionRepo
private function getTaxRatePermissions(): array
{
$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);
}
/**
* 获取税类权限列表
*
@ -269,11 +272,11 @@ class PermissionRepo
private function getTaxClassPermissions(): array
{
$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);
}
/**
* 获取汇率权限列表
*
@ -282,11 +285,11 @@ class PermissionRepo
private function getCurrencyPermissions(): array
{
$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);
}
/**
* 获取语言权限列表
*
@ -295,11 +298,11 @@ class PermissionRepo
private function getLanguagePermissions(): array
{
$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);
}
/**
* 获取文件管理器权限列表
*
@ -308,11 +311,11 @@ class PermissionRepo
private function getFileManagerPermissions(): array
{
$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);
}
/**
* 获取省份权限列表
*
@ -321,11 +324,11 @@ class PermissionRepo
private function getZonePermissions(): array
{
$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);
}
/**
* 获取国家权限列表
*
@ -334,11 +337,11 @@ class PermissionRepo
private function getCountryPermissions(): array
{
$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);
}
/**
* 根据模块和路由返回权限列表
*
@ -352,6 +355,7 @@ class PermissionRepo
foreach ($routes as $route) {
$items[] = ['code' => $route, 'name' => trans("admin/{$module}.{$route}"), 'selected' => $this->hasPermission($route)];
}
return $items;
}
@ -372,6 +376,7 @@ class PermissionRepo
} catch (PermissionDoesNotExist $exception) {
return false;
}
return false;
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -47,7 +47,6 @@ Route::prefix($adminName)
Route::middleware('can:brands_update')->put('brands/{id}', [Controllers\BrandController::class, 'update'])->name('brands.update');
Route::middleware('can:brands_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_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_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_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_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_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_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', [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')->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_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::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_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: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_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: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');
@ -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')->put('design_menu/builder', [Controllers\DesignMenuController::class, 'update'])->name('design_menu.update');
Route::put('edit', [Controllers\EditController::class, 'update'])->name('edit');
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/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::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_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: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_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: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');
@ -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_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_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_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/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_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_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_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_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_delete')->delete('regions/{id}', [Controllers\RegionController::class, 'destroy'])->name('regions.destroy');
// RMA
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');
@ -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/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_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_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_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_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_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_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_create')->get('admin_roles/create', [Controllers\AdminRoleController::class, 'create'])->name('admin_roles.create');

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -7,23 +7,30 @@ use Illuminate\View\Component;
class Input extends Component
{
public string $name;
public string $title;
public string $value;
public string $error;
public string $width;
public string $type;
public string $step;
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 = '')
{
$this->name = $name;
$this->title = $title;
$this->value = $value;
$this->error = $error;
$this->width = $width;
$this->type = $type;
$this->step = $step;
$this->name = $name;
$this->title = $title;
$this->value = $value;
$this->error = $error;
$this->width = $width;
$this->type = $type;
$this->step = $step;
$this->required = $required;
}

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