格式化代码

This commit is contained in:
iVampireSP.com 2023-02-07 17:03:47 +08:00
parent 59dd162a95
commit a0e80defa0
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
92 changed files with 653 additions and 541 deletions

View File

@ -51,7 +51,7 @@ public function handle(): int
]); ]);
// 输出信息 // 输出信息
$this->info('管理员创建成功ID为'.$admin->id); $this->info('管理员创建成功ID为' . $admin->id);
return CommandAlias::SUCCESS; return CommandAlias::SUCCESS;
} }

View File

@ -46,7 +46,7 @@ public function handle(): int
$user = (new User)->find($user_id); $user = (new User)->find($user_id);
$this->info('封禁: '.$user->name); $this->info('封禁: ' . $user->name);
$this->confirm('确定要继续吗?如果继续,将会暂停所有的主机,并且吊销所有 Token。'); $this->confirm('确定要继续吗?如果继续,将会暂停所有的主机,并且吊销所有 Token。');

View File

@ -39,11 +39,11 @@ public function __construct()
public function handle(): int public function handle(): int
{ {
$this->warn('开始计算集成模块收益。'); $this->warn('开始计算集成模块收益。');
$this->warn('当前时间: '.now()); $this->warn('当前时间: ' . now());
(new Module)->chunk(100, function ($modules) { (new Module)->chunk(100, function ($modules) {
foreach ($modules as $module) { foreach ($modules as $module) {
$this->warn('模块: '.$module->name); $this->warn('模块: ' . $module->name);
$years = $module->calculate(); $years = $module->calculate();
foreach ($years as $year => $months) { foreach ($years as $year => $months) {
@ -63,7 +63,7 @@ public function handle(): int
}); });
$this->warn('计算模块收益完成。'); $this->warn('计算模块收益完成。');
$this->warn('完成时间: '.now()); $this->warn('完成时间: ' . now());
return 1; return 1;
} }

View File

@ -40,11 +40,11 @@ private function format(string $event, array $message = [])
{ {
$status = $this->switch($event, $message['data']); $status = $this->switch($event, $message['data']);
if (! $status) { if (!$status) {
return; return;
} }
$message = "[{$message['node']['type']}] {$message['node']['id']}:$event: ".$status; $message = "[{$message['node']['type']}] {$message['node']['id']}:$event: " . $status;
$this->info($message); $this->info($message);
} }

View File

@ -32,13 +32,13 @@ public function handle(): int
// 检测 service 参数 // 检测 service 参数
$service = $this->argument('service'); $service = $this->argument('service');
if (! in_array($service, ['web', 'all'])) { if (!in_array($service, ['web', 'all'])) {
$this->error('service 参数错误,只能是 web 或 all。'); $this->error('service 参数错误,只能是 web 或 all。');
return CommandAlias::FAILURE; return CommandAlias::FAILURE;
} }
ClusterSupport::publish('cluster.restart.'.$service); ClusterSupport::publish('cluster.restart.' . $service);
$this->info('已经向集群广播重启命令,等待集群响应。'); $this->info('已经向集群广播重启命令,等待集群响应。');

View File

@ -44,7 +44,7 @@ public function handle(): int
$confirm = $this->ask('主节点同步将会恢复上一次数据,确定吗?', true); $confirm = $this->ask('主节点同步将会恢复上一次数据,确定吗?', true);
} }
if (! $confirm) { if (!$confirm) {
$this->warn('已取消。'); $this->warn('已取消。');
return CommandAlias::SUCCESS; return CommandAlias::SUCCESS;

View File

@ -91,7 +91,7 @@ public function upload($node_type)
// 相对路径 // 相对路径
$cache = 'config'; $cache = 'config';
$cacheZip = $cache.'.zip'; $cacheZip = $cache . '.zip';
$zip = new ZipArchive(); $zip = new ZipArchive();
$zip->open($cacheZip, ZipArchive::CREATE); $zip->open($cacheZip, ZipArchive::CREATE);
$this->addFileToZip($cache, $zip); $this->addFileToZip($cache, $zip);
@ -151,10 +151,10 @@ public function addFileToZip(string $path, ZipArchive $zip): void
$handler = opendir($path); $handler = opendir($path);
while (($filename = readdir($handler)) !== false) { while (($filename = readdir($handler)) !== false) {
if ($filename != '.' && $filename != '..') { if ($filename != '.' && $filename != '..') {
if (is_dir($path.'/'.$filename)) { if (is_dir($path . '/' . $filename)) {
$this->addFileToZip($path.'/'.$filename, $zip); $this->addFileToZip($path . '/' . $filename, $zip);
} else { } else {
$zip->addFile($path.'/'.$filename); $zip->addFile($path . '/' . $filename);
} }
} }
} }

View File

@ -32,7 +32,7 @@ class Work extends Command
public function handle(): int public function handle(): int
{ {
// 检测目录下是否有 rr // 检测目录下是否有 rr
if (! file_exists(base_path('rr'))) { if (!file_exists(base_path('rr'))) {
$this->warn('未找到 rr 文件,将自动下载。'); $this->warn('未找到 rr 文件,将自动下载。');
// 获取操作系统是 darwin 还是 linux // 获取操作系统是 darwin 还是 linux
@ -70,7 +70,7 @@ public function handle(): int
// 关闭 Octane // 关闭 Octane
Artisan::call('octane:stop'); Artisan::call('octane:stop');
if (! config('settings.node.ip')) { if (!config('settings.node.ip')) {
$this->error('请先配置节点 IP。'); $this->error('请先配置节点 IP。');
return CommandAlias::FAILURE; return CommandAlias::FAILURE;
@ -94,14 +94,14 @@ public function handle(): int
$this->error('无法创建子进程。'); $this->error('无法创建子进程。');
return CommandAlias::FAILURE; return CommandAlias::FAILURE;
} elseif ($pid === 0) { } else if ($pid === 0) {
// 再打开一个,负责 octane // 再打开一个,负责 octane
$pid = pcntl_fork(); $pid = pcntl_fork();
if ($pid === -1) { if ($pid === -1) {
$this->error('无法创建子进程。'); $this->error('无法创建子进程。');
return CommandAlias::FAILURE; return CommandAlias::FAILURE;
} elseif ($pid === 0) { } else if ($pid === 0) {
// 子进程 // 子进程
$this->info('正在启动 Web。'); $this->info('正在启动 Web。');

View File

@ -86,17 +86,17 @@ public function handle(): int
$this->info('完成。'); $this->info('完成。');
$this->warn('用户数量: '.$users); $this->warn('用户数量: ' . $users);
$this->warn('主机数量: '.$hosts); $this->warn('主机数量: ' . $hosts);
$this->warn('正在部署的主机数量: '.$pending_hosts); $this->warn('正在部署的主机数量: ' . $pending_hosts);
$this->warn('已停止的主机数量: '.$stopped_hosts); $this->warn('已停止的主机数量: ' . $stopped_hosts);
$this->warn('部署失败的主机数量: '.$error_hosts); $this->warn('部署失败的主机数量: ' . $error_hosts);
$this->warn('正常的主机数量: '.$active_hosts); $this->warn('正常的主机数量: ' . $active_hosts);
$this->warn('暂停的主机数量: '.$suspended_hosts); $this->warn('暂停的主机数量: ' . $suspended_hosts);
$this->warn('服务器数量: '.$servers); $this->warn('服务器数量: ' . $servers);
$this->warn('工单数量: '.$workOrders); $this->warn('工单数量: ' . $workOrders);
$this->warn('工单回复数量: '.$replies); $this->warn('工单回复数量: ' . $replies);
$this->warn('今年的交易记录: '.$transactions.' 条'); $this->warn('今年的交易记录: ' . $transactions . ' 条');
return 0; return 0;
} }

View File

@ -49,10 +49,10 @@ public function handle(): int
$this->warn('用户基本信息'); $this->warn('用户基本信息');
$this->info('用户 ID: '.$user->id); $this->info('用户 ID: ' . $user->id);
$this->info('名称: '.$user->name); $this->info('名称: ' . $user->name);
$this->info('邮箱: '.$user->email); $this->info('邮箱: ' . $user->email);
$this->info('余额:'.$user->balance.' 元'); $this->info('余额:' . $user->balance . ' 元');
$this->warn('前 10 条充值记录'); $this->warn('前 10 条充值记录');
@ -60,7 +60,7 @@ public function handle(): int
// 倒序输出 // 倒序输出
foreach (array_reverse($balances->toArray()) as $balance) { foreach (array_reverse($balances->toArray()) as $balance) {
$this->info('['.$balance['paid_at'].'] 支付方式: '.$balance['payment'].' 金额:'.$balance['amount'].' 元'); $this->info('[' . $balance['paid_at'] . '] 支付方式: ' . $balance['payment'] . ' 金额:' . $balance['amount'] . ' 元');
} }
$this->warn('前 10 个主机'); $this->warn('前 10 个主机');
@ -69,7 +69,7 @@ public function handle(): int
// 倒序 // 倒序
foreach (array_reverse($hosts->toArray()) as $host) { foreach (array_reverse($hosts->toArray()) as $host) {
$this->info('['.$host['module']['name'].']('.$host['price'].' 元) '.$host['name']); $this->info('[' . $host['module']['name'] . '](' . $host['price'] . ' 元) ' . $host['name']);
} }
return 0; return 0;

View File

@ -35,7 +35,7 @@ public function handle(): int
if ($this->confirm('如果不指定主机名,将会扣除所有主机的费用,是否继续?', true)) { if ($this->confirm('如果不指定主机名,将会扣除所有主机的费用,是否继续?', true)) {
(new Host)->chunk(100, function ($hosts) { (new Host)->chunk(100, function ($hosts) {
foreach ($hosts as $host) { foreach ($hosts as $host) {
$this->info('正在扣除主机 '.$host->name.' 的费用: '.$host->getPrice().' 元'); $this->info('正在扣除主机 ' . $host->name . ' 的费用: ' . $host->getPrice() . ' 元');
$host->cost(); $host->cost();
} }
}); });
@ -43,7 +43,7 @@ public function handle(): int
} else { } else {
$host_model = (new Host)->where('id', $host)->firstOrFail(); $host_model = (new Host)->where('id', $host)->firstOrFail();
if ($this->confirm('是否扣除主机 '.$host_model->name.' 的费用?', true)) { if ($this->confirm('是否扣除主机 ' . $host_model->name . ' 的费用?', true)) {
$host_model->cost(); $host_model->cost();
} }
} }

View File

@ -47,11 +47,11 @@ public function handle(): void
$user = (new User)->find($user_id); $user = (new User)->find($user_id);
$this->warn('扣除金额: '.$amount.' 元'); $this->warn('扣除金额: ' . $amount . ' 元');
$this->warn('用户当前余额:'.$user->balance.' 元'); $this->warn('用户当前余额:' . $user->balance . ' 元');
$this->warn('剩余余额:'.$user->balance - $amount.' 元'); $this->warn('剩余余额:' . $user->balance - $amount . ' 元');
$confirm = $this->confirm('确认扣除?'); $confirm = $this->confirm('确认扣除?');

View File

@ -42,19 +42,19 @@ public function handle(): int
$this->warn('===== 运行环境 ====='); $this->warn('===== 运行环境 =====');
// php version // php version
$this->info('PHP 版本: '.PHP_VERSION); $this->info('PHP 版本: ' . PHP_VERSION);
// get mysql version // get mysql version
/** @noinspection UnknownColumnInspection */ /** @noinspection UnknownColumnInspection */
$mysql_version = DB::select('select version() as version')[0]->version; $mysql_version = DB::select('select version() as version')[0]->version;
$this->warn('MySQL 版本: '.$mysql_version); $this->warn('MySQL 版本: ' . $mysql_version);
$redis_info = Redis::info(); $redis_info = Redis::info();
// get redis version // get redis version
$redis_version = $redis_info['redis_version']; $redis_version = $redis_info['redis_version'];
$this->warn('Redis 版本: '.$redis_version); $this->warn('Redis 版本: ' . $redis_version);
// 是否是 Redis 集群 // 是否是 Redis 集群
$redis_cluster = $redis_info['cluster_enabled']; $redis_cluster = $redis_info['cluster_enabled'];
@ -67,42 +67,42 @@ public function handle(): int
// redis 操作系统 // redis 操作系统
$redis_os = $redis_info['os']; $redis_os = $redis_info['os'];
$this->warn('Redis 操作系统: '.$redis_os); $this->warn('Redis 操作系统: ' . $redis_os);
// redis process id // redis process id
$redis_pid = $redis_info['process_id']; $redis_pid = $redis_info['process_id'];
$this->warn('Redis 进程 ID: '.$redis_pid); $this->warn('Redis 进程 ID: ' . $redis_pid);
// redis used memory // redis used memory
$redis_used_memory = $redis_info['used_memory_human']; $redis_used_memory = $redis_info['used_memory_human'];
$this->info('Redis 内存: '.$redis_used_memory); $this->info('Redis 内存: ' . $redis_used_memory);
// redis memory peak // redis memory peak
$redis_memory_peak = $redis_info['used_memory_peak_human']; $redis_memory_peak = $redis_info['used_memory_peak_human'];
$this->info('Redis 内存峰值: '.$redis_memory_peak); $this->info('Redis 内存峰值: ' . $redis_memory_peak);
// redis memory lua // redis memory lua
$redis_memory_lua = $redis_info['used_memory_lua_human']; $redis_memory_lua = $redis_info['used_memory_lua_human'];
$this->info('Redis Lua 内存: '.$redis_memory_lua); $this->info('Redis Lua 内存: ' . $redis_memory_lua);
// redis 连接 // redis 连接
$redis_connected_clients = $redis_info['connected_clients']; $redis_connected_clients = $redis_info['connected_clients'];
$this->info('Redis 连接数量: '.$redis_connected_clients); $this->info('Redis 连接数量: ' . $redis_connected_clients);
// redis 命中率 // redis 命中率
$redis_keyspace_hits = $redis_info['keyspace_hits']; $redis_keyspace_hits = $redis_info['keyspace_hits'];
$redis_keyspace_misses = $redis_info['keyspace_misses']; $redis_keyspace_misses = $redis_info['keyspace_misses'];
$redis_keyspace_hit_rate = round($redis_keyspace_hits / ($redis_keyspace_hits + $redis_keyspace_misses) * 100, 2); $redis_keyspace_hit_rate = round($redis_keyspace_hits / ($redis_keyspace_hits + $redis_keyspace_misses) * 100, 2);
$this->info('Redis 命中率: '.$redis_keyspace_hit_rate.'%'); $this->info('Redis 命中率: ' . $redis_keyspace_hit_rate . '%');
// redis 总连接数 // redis 总连接数
$redis_total_connections_received = $redis_info['total_connections_received']; $redis_total_connections_received = $redis_info['total_connections_received'];
$this->info('Redis 总连接数: '.$redis_total_connections_received); $this->info('Redis 总连接数: ' . $redis_total_connections_received);
// redis total commands // redis total commands
$redis_total_commands_processed = $redis_info['total_commands_processed']; $redis_total_commands_processed = $redis_info['total_commands_processed'];
$this->info('Redis 总命令数: '.$redis_total_commands_processed); $this->info('Redis 总命令数: ' . $redis_total_commands_processed);
$this->warn('===== 莱云 统计 ====='); $this->warn('===== 莱云 统计 =====');
$this->warn('要获取 莱云 统计信息,请运行 count 命令。'); $this->warn('要获取 莱云 统计信息,请运行 count 命令。');

View File

@ -44,7 +44,7 @@ public function handle(): void
$user = (new User)->find($user_id); $user = (new User)->find($user_id);
$this->info('解除封禁: '.$user->name); $this->info('解除封禁: ' . $user->name);
$user->banned_at = null; $user->banned_at = null;
$user->save(); $user->save();

View File

@ -47,10 +47,10 @@ public function handle(): int
// find user // find user
$user = (new User)->findOrFail($user_id); $user = (new User)->findOrFail($user_id);
$this->info($user->name.', 当前余额: '.$user->balance.' 元'); $this->info($user->name . ', 当前余额: ' . $user->balance . ' 元');
$this->info('充值后余额: '.($user->balance + $amount).' 元'); $this->info('充值后余额: ' . ($user->balance + $amount) . ' 元');
if (! $this->confirm('确认充值 '.$amount.' 元?')) { if (!$this->confirm('确认充值 ' . $amount . ' 元?')) {
$this->info('已取消。'); $this->info('已取消。');
return 0; return 0;
@ -58,14 +58,14 @@ public function handle(): int
$transaction = new Transaction(); $transaction = new Transaction();
$description = '控制台充值 '.$amount.' 元'; $description = '控制台充值 ' . $amount . ' 元';
$transaction->addAmount($user->id, 'console', $amount, $description, true); $transaction->addAmount($user->id, 'console', $amount, $description, true);
$this->info('充值成功。'); $this->info('充值成功。');
$user->refresh(); $user->refresh();
$this->info($user->name.', 当前余额: '.$user->balance); $this->info($user->name . ', 当前余额: ' . $user->balance);
return 0; return 0;
} }

View File

@ -22,6 +22,7 @@ class Kernel extends ConsoleKernel
* Define the application's command schedule. * Define the application's command schedule.
* *
* @param Schedule $schedule * @param Schedule $schedule
*
* @return void * @return void
*/ */
protected function schedule(Schedule $schedule): void protected function schedule(Schedule $schedule): void
@ -69,7 +70,7 @@ protected function schedule(Schedule $schedule): void
*/ */
protected function commands(): void protected function commands(): void
{ {
$this->load(__DIR__.'/Commands'); $this->load(__DIR__ . '/Commands');
require base_path('routes/console.php'); require base_path('routes/console.php');
} }

View File

@ -72,7 +72,7 @@ public function __construct(User|int $user, string $event, array|Model $data)
public function broadcastOn(): PrivateChannel public function broadcastOn(): PrivateChannel
{ {
return new PrivateChannel('users.'.$this->user->id); return new PrivateChannel('users.' . $this->user->id);
} }
public function broadcastAs(): string public function broadcastAs(): string

View File

@ -69,6 +69,7 @@ public function register(): void
* *
* @param Request $request * @param Request $request
* @param AuthenticationException $exception * @param AuthenticationException $exception
*
* @return JsonResponse|RedirectResponse * @return JsonResponse|RedirectResponse
*/ */
protected function unauthenticated($request, AuthenticationException $exception): JsonResponse|RedirectResponse protected function unauthenticated($request, AuthenticationException $exception): JsonResponse|RedirectResponse

View File

@ -29,6 +29,7 @@ public function showLoginForm(): View
* Handle a login request to the application. * Handle a login request to the application.
* *
* @param Request $request * @param Request $request
*
* @return Response * @return Response
* *
* @throws ValidationException * @throws ValidationException
@ -67,6 +68,7 @@ public function login(Request $request): Response
* Validate the user login request. * Validate the user login request.
* *
* @param Request $request * @param Request $request
*
* @return void * @return void
* *
* @throws ValidationException * @throws ValidationException
@ -79,10 +81,21 @@ protected function validateLogin(Request $request): void
]); ]);
} }
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username(): string
{
return 'email';
}
/** /**
* Attempt to log the user into the application. * Attempt to log the user into the application.
* *
* @param Request $request * @param Request $request
*
* @return bool * @return bool
*/ */
protected function attemptLogin(Request $request): bool protected function attemptLogin(Request $request): bool
@ -92,10 +105,21 @@ protected function attemptLogin(Request $request): bool
); );
} }
/**
* Get the guard to be used during authentication.
*
* @return StatefulGuard
*/
protected function guard(): StatefulGuard
{
return Auth::guard();
}
/** /**
* Get the needed authorization credentials from the request. * Get the needed authorization credentials from the request.
* *
* @param Request $request * @param Request $request
*
* @return array * @return array
*/ */
protected function credentials(Request $request): array protected function credentials(Request $request): array
@ -107,6 +131,7 @@ protected function credentials(Request $request): array
* Send the response after the user was authenticated. * Send the response after the user was authenticated.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse|RedirectResponse * @return JsonResponse|RedirectResponse
*/ */
protected function sendLoginResponse(Request $request): JsonResponse|RedirectResponse protected function sendLoginResponse(Request $request): JsonResponse|RedirectResponse
@ -124,18 +149,6 @@ protected function sendLoginResponse(Request $request): JsonResponse|RedirectRes
: redirect()->intended($this->redirectPath()); : redirect()->intended($this->redirectPath());
} }
/**
* The user has been authenticated.
*
* @param Request $request
* @param mixed $user
* @return void
*/
protected function authenticated(Request $request, mixed $user): void
{
//
}
/** /**
* Get the failed login response instance. * Get the failed login response instance.
* *
@ -151,20 +164,11 @@ protected function sendFailedLoginResponse(): Response
]); ]);
} }
/**
* Get the login username to be used by the controller.
*
* @return string
*/
public function username(): string
{
return 'email';
}
/** /**
* Log the user out of the application. * Log the user out of the application.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
public function logout(Request $request): JsonResponse|RedirectResponse public function logout(Request $request): JsonResponse|RedirectResponse
@ -184,24 +188,28 @@ public function logout(Request $request): JsonResponse|RedirectResponse
: redirect('/'); : redirect('/');
} }
/**
* The user has been authenticated.
*
* @param Request $request
* @param mixed $user
*
* @return void
*/
protected function authenticated(Request $request, mixed $user): void
{
//
}
/** /**
* The user has logged out of the application. * The user has logged out of the application.
* *
* @param Request $request * @param Request $request
*
* @return void * @return void
*/ */
protected function loggedOut(Request $request): void protected function loggedOut(Request $request): void
{ {
// //
} }
/**
* Get the guard to be used during authentication.
*
* @return StatefulGuard
*/
protected function guard(): StatefulGuard
{
return Auth::guard();
}
} }

View File

@ -25,6 +25,7 @@ public function showConfirmForm(): View
* Confirm the given user's password. * Confirm the given user's password.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
public function confirm(Request $request): JsonResponse|RedirectResponse public function confirm(Request $request): JsonResponse|RedirectResponse
@ -38,17 +39,6 @@ public function confirm(Request $request): JsonResponse|RedirectResponse
: redirect()->intended($this->redirectPath()); : redirect()->intended($this->redirectPath());
} }
/**
* Reset the password confirmation timeout.
*
* @param Request $request
* @return void
*/
protected function resetPasswordConfirmationTimeout(Request $request): void
{
$request->session()->put('auth.password_confirmed_at', time());
}
/** /**
* Get the password confirmation validation rules. * Get the password confirmation validation rules.
* *
@ -70,4 +60,16 @@ protected function validationErrorMessages(): array
{ {
return []; return [];
} }
/**
* Reset the password confirmation timeout.
*
* @param Request $request
*
* @return void
*/
protected function resetPasswordConfirmationTimeout(Request $request): void
{
$request->session()->put('auth.password_confirmed_at', time());
}
} }

View File

@ -28,6 +28,7 @@ public function showRegistrationForm(): View
* Handle a registration request for the application. * Handle a registration request for the application.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
public function register(Request $request): JsonResponse|RedirectResponse public function register(Request $request): JsonResponse|RedirectResponse
@ -62,6 +63,7 @@ protected function guard(): StatefulGuard
* *
* @param Request $request * @param Request $request
* @param mixed $user * @param mixed $user
*
* @return void * @return void
*/ */
protected function registered(Request $request, mixed $user): void protected function registered(Request $request, mixed $user): void

View File

@ -29,6 +29,7 @@ trait ResetsPasswords
* If no token is present, display the link request form. * If no token is present, display the link request form.
* *
* @param Request $request * @param Request $request
*
* @return Factory|View * @return Factory|View
*/ */
public function showResetForm(Request $request): Factory|View public function showResetForm(Request $request): Factory|View
@ -44,6 +45,7 @@ public function showResetForm(Request $request): Factory|View
* Reset the given user's password. * Reset the given user's password.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
public function reset(Request $request): JsonResponse|RedirectResponse public function reset(Request $request): JsonResponse|RedirectResponse
@ -96,10 +98,21 @@ protected function validationErrorMessages(): array
return []; return [];
} }
/**
* Get the broker to be used during password reset.
*
* @return PasswordBroker
*/
public function broker(): PasswordBroker
{
return Password::broker();
}
/** /**
* Get the password reset credentials from the request. * Get the password reset credentials from the request.
* *
* @param Request $request * @param Request $request
*
* @return array * @return array
*/ */
protected function credentials(Request $request): array protected function credentials(Request $request): array
@ -114,6 +127,7 @@ protected function credentials(Request $request): array
* *
* @param CanResetPassword|User $user * @param CanResetPassword|User $user
* @param string $password * @param string $password
*
* @return void * @return void
*/ */
protected function resetPassword(CanResetPassword|User $user, string $password): void protected function resetPassword(CanResetPassword|User $user, string $password): void
@ -134,6 +148,7 @@ protected function resetPassword(CanResetPassword|User $user, string $password):
* *
* @param CanResetPassword $user * @param CanResetPassword $user
* @param string $password * @param string $password
*
* @return void * @return void
*/ */
protected function setUserPassword(CanResetPassword $user, string $password): void protected function setUserPassword(CanResetPassword $user, string $password): void
@ -144,11 +159,22 @@ protected function setUserPassword(CanResetPassword $user, string $password): vo
} }
} }
/**
* Get the guard to be used during password reset.
*
* @return StatefulGuard
*/
protected function guard(): StatefulGuard
{
return Auth::guard();
}
/** /**
* Get the response for a successful password reset. * Get the response for a successful password reset.
* *
* @param Request $request * @param Request $request
* @param string $response * @param string $response
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
protected function sendResetResponse(Request $request, string $response): JsonResponse|RedirectResponse protected function sendResetResponse(Request $request, string $response): JsonResponse|RedirectResponse
@ -166,6 +192,7 @@ protected function sendResetResponse(Request $request, string $response): JsonRe
* *
* @param Request $request * @param Request $request
* @param string $response * @param string $response
*
* @return RedirectResponse * @return RedirectResponse
*/ */
protected function sendResetFailedResponse(Request $request, string $response): RedirectResponse protected function sendResetFailedResponse(Request $request, string $response): RedirectResponse
@ -180,24 +207,4 @@ protected function sendResetFailedResponse(Request $request, string $response):
->withInput($request->only('email')) ->withInput($request->only('email'))
->withErrors(['email' => trans($response)]); ->withErrors(['email' => trans($response)]);
} }
/**
* Get the broker to be used during password reset.
*
* @return PasswordBroker
*/
public function broker(): PasswordBroker
{
return Password::broker();
}
/**
* Get the guard to be used during password reset.
*
* @return StatefulGuard
*/
protected function guard(): StatefulGuard
{
return Auth::guard();
}
} }

View File

@ -26,6 +26,7 @@ public function showLinkRequestForm(): View
* Send a reset link to the given user. * Send a reset link to the given user.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
public function sendResetLinkEmail(Request $request): JsonResponse|RedirectResponse public function sendResetLinkEmail(Request $request): JsonResponse|RedirectResponse
@ -48,6 +49,7 @@ public function sendResetLinkEmail(Request $request): JsonResponse|RedirectRespo
* Validate the email for the given request. * Validate the email for the given request.
* *
* @param Request $request * @param Request $request
*
* @return void * @return void
*/ */
protected function validateEmail(Request $request): void protected function validateEmail(Request $request): void
@ -55,10 +57,21 @@ protected function validateEmail(Request $request): void
$request->validate(['email' => 'required|email']); $request->validate(['email' => 'required|email']);
} }
/**
* Get the broker to be used during password reset.
*
* @return PasswordBroker
*/
public function broker(): PasswordBroker
{
return Password::broker();
}
/** /**
* Get the needed authentication credentials from the request. * Get the needed authentication credentials from the request.
* *
* @param Request $request * @param Request $request
*
* @return array * @return array
*/ */
protected function credentials(Request $request): array protected function credentials(Request $request): array
@ -71,6 +84,7 @@ protected function credentials(Request $request): array
* *
* @param Request $request * @param Request $request
* @param string $response * @param string $response
*
* @return RedirectResponse|JsonResponse * @return RedirectResponse|JsonResponse
*/ */
protected function sendResetLinkResponse(Request $request, string $response): JsonResponse|RedirectResponse protected function sendResetLinkResponse(Request $request, string $response): JsonResponse|RedirectResponse
@ -85,6 +99,7 @@ protected function sendResetLinkResponse(Request $request, string $response): Js
* *
* @param Request $request * @param Request $request
* @param string $response * @param string $response
*
* @return RedirectResponse * @return RedirectResponse
* *
* @throws ValidationException * @throws ValidationException
@ -101,14 +116,4 @@ protected function sendResetLinkFailedResponse(Request $request, string $respons
->withInput($request->only('email')) ->withInput($request->only('email'))
->withErrors(['email' => trans($response)]); ->withErrors(['email' => trans($response)]);
} }
/**
* Get the broker to be used during password reset.
*
* @return PasswordBroker
*/
public function broker(): PasswordBroker
{
return Password::broker();
}
} }

View File

@ -15,6 +15,7 @@ trait ThrottlesLogins
* Determine if the user has too many failed login attempts. * Determine if the user has too many failed login attempts.
* *
* @param Request $request * @param Request $request
*
* @return bool * @return bool
*/ */
protected function hasTooManyLoginAttempts(Request $request): bool protected function hasTooManyLoginAttempts(Request $request): bool
@ -24,10 +25,43 @@ protected function hasTooManyLoginAttempts(Request $request): bool
); );
} }
/**
* Get the rate limiter instance.
*
* @return RateLimiter
*/
protected function limiter(): RateLimiter
{
return app(RateLimiter::class);
}
/**
* Get the throttle key for the given request.
*
* @param Request $request
*
* @return string
*/
protected function throttleKey(Request $request): string
{
return Str::transliterate(Str::lower($request->input($this->username())) . '|' . $request->ip());
}
/**
* Get the maximum number of attempts to allow.
*
* @return int
*/
public function maxAttempts(): int
{
return property_exists($this, 'maxAttempts') ? $this->maxAttempts : 5;
}
/** /**
* Increment the login attempts for the user. * Increment the login attempts for the user.
* *
* @param Request $request * @param Request $request
*
* @return void * @return void
*/ */
protected function incrementLoginAttempts(Request $request): void protected function incrementLoginAttempts(Request $request): void
@ -37,10 +71,21 @@ protected function incrementLoginAttempts(Request $request): void
); );
} }
/**
* Get the number of minutes to throttle for.
*
* @return int
*/
public function decayMinutes(): int
{
return property_exists($this, 'decayMinutes') ? $this->decayMinutes : 1;
}
/** /**
* Redirect the user after determining they are locked out. * Redirect the user after determining they are locked out.
* *
* @param Request $request * @param Request $request
*
* @return ResponseAlias * @return ResponseAlias
* *
* @throws ValidationException * @throws ValidationException
@ -63,6 +108,7 @@ protected function sendLockoutResponse(Request $request): ResponseAlias
* Clear the login locks for the given user credentials. * Clear the login locks for the given user credentials.
* *
* @param Request $request * @param Request $request
*
* @return void * @return void
*/ */
protected function clearLoginAttempts(Request $request): void protected function clearLoginAttempts(Request $request): void
@ -74,51 +120,11 @@ protected function clearLoginAttempts(Request $request): void
* Fire an event when a lockout occurs. * Fire an event when a lockout occurs.
* *
* @param Request $request * @param Request $request
*
* @return void * @return void
*/ */
protected function fireLockoutEvent(Request $request): void protected function fireLockoutEvent(Request $request): void
{ {
event(new Lockout($request)); event(new Lockout($request));
} }
/**
* Get the throttle key for the given request.
*
* @param Request $request
* @return string
*/
protected function throttleKey(Request $request): string
{
return Str::transliterate(Str::lower($request->input($this->username())).'|'.$request->ip());
}
/**
* Get the rate limiter instance.
*
* @return RateLimiter
*/
protected function limiter(): RateLimiter
{
return app(RateLimiter::class);
}
/**
* Get the maximum number of attempts to allow.
*
* @return int
*/
public function maxAttempts(): int
{
return property_exists($this, 'maxAttempts') ? $this->maxAttempts : 5;
}
/**
* Get the number of minutes to throttle for.
*
* @return int
*/
public function decayMinutes(): int
{
return property_exists($this, 'decayMinutes') ? $this->decayMinutes : 1;
}
} }

View File

@ -17,6 +17,7 @@ trait VerifiesEmails
* Show the email verification notice. * Show the email verification notice.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse|View * @return RedirectResponse|View
*/ */
public function show(Request $request): View|RedirectResponse public function show(Request $request): View|RedirectResponse
@ -30,17 +31,18 @@ public function show(Request $request): View|RedirectResponse
* Mark the authenticated user's email address as verified. * Mark the authenticated user's email address as verified.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse|RedirectResponse * @return JsonResponse|RedirectResponse
* *
* @throws AuthorizationException * @throws AuthorizationException
*/ */
public function verify(Request $request): JsonResponse|RedirectResponse public function verify(Request $request): JsonResponse|RedirectResponse
{ {
if (! hash_equals((string) $request->route('id'), (string) $request->user()->getKey())) { if (!hash_equals((string)$request->route('id'), (string)$request->user()->getKey())) {
throw new AuthorizationException; throw new AuthorizationException;
} }
if (! hash_equals((string) $request->route('hash'), sha1($request->user()->getEmailForVerification()))) { if (!hash_equals((string)$request->route('hash'), sha1($request->user()->getEmailForVerification()))) {
throw new AuthorizationException; throw new AuthorizationException;
} }
@ -63,21 +65,11 @@ public function verify(Request $request): JsonResponse|RedirectResponse
: redirect($this->redirectPath())->with('verified', true); : redirect($this->redirectPath())->with('verified', true);
} }
/**
* The user has been verified.
*
* @param Request $request
* @return void
*/
protected function verified(Request $request): void
{
//
}
/** /**
* Resend the email verification notification. * Resend the email verification notification.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse|RedirectResponse * @return JsonResponse|RedirectResponse
*/ */
public function resend(Request $request): JsonResponse|RedirectResponse public function resend(Request $request): JsonResponse|RedirectResponse
@ -94,4 +86,16 @@ public function resend(Request $request): JsonResponse|RedirectResponse
? new JsonResponse([], 202) ? new JsonResponse([], 202)
: back()->with('resent', true); : back()->with('resent', true);
} }
/**
* The user has been verified.
*
* @param Request $request
*
* @return void
*/
protected function verified(Request $request): void
{
//
}
} }

View File

@ -13,7 +13,7 @@ public function await($name, Closure $callback)
if (config('app.env') == 'local') { if (config('app.env') == 'local') {
return $callback(); return $callback();
} }
$lock = Cache::lock('lock_'.$name, 5); $lock = Cache::lock('lock_' . $name, 5);
try { try {
$lock->block(5); $lock->block(5);

View File

@ -27,6 +27,7 @@ public function index(): View
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function store(Request $request): RedirectResponse public function store(Request $request): RedirectResponse
@ -44,7 +45,7 @@ public function store(Request $request): RedirectResponse
'password' => bcrypt($password), 'password' => bcrypt($password),
]); ]);
return redirect()->route('admin.admins.edit', $admin)->with('success', '管理员创建成功,密码为:'.$password.'。'); return redirect()->route('admin.admins.edit', $admin)->with('success', '管理员创建成功,密码为:' . $password . '。');
} }
/** /**
@ -61,6 +62,7 @@ public function create(): View
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param Admin $admin * @param Admin $admin
*
* @return View * @return View
*/ */
public function edit(Admin $admin): View public function edit(Admin $admin): View
@ -73,12 +75,13 @@ public function edit(Admin $admin): View
* *
* @param Request $request * @param Request $request
* @param Admin $admin * @param Admin $admin
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, Admin $admin): RedirectResponse public function update(Request $request, Admin $admin): RedirectResponse
{ {
$request->validate([ $request->validate([
'email' => 'required|email|unique:admins,email,'.$admin->id, 'email' => 'required|email|unique:admins,email,' . $admin->id,
'name' => 'required|string|max:30', 'name' => 'required|string|max:30',
]); ]);
@ -88,7 +91,7 @@ public function update(Request $request, Admin $admin): RedirectResponse
// 随机密码 // 随机密码
$password = Str::random(); $password = Str::random();
$msg .= ',新的密码为:'.$password; $msg .= ',新的密码为:' . $password;
$admin->password = bcrypt($password); $admin->password = bcrypt($password);
} }
@ -107,6 +110,7 @@ public function update(Request $request, Admin $admin): RedirectResponse
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param Admin $admin * @param Admin $admin
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(Admin $admin): RedirectResponse public function destroy(Admin $admin): RedirectResponse

View File

@ -26,6 +26,7 @@ public function index(): View
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return View * @return View
*/ */
public function store(Request $request): View public function store(Request $request): View
@ -59,6 +60,7 @@ public function create(): View
* Display the specified resource. * Display the specified resource.
* *
* @param Application $application * @param Application $application
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function show(Application $application): RedirectResponse public function show(Application $application): RedirectResponse
@ -72,6 +74,7 @@ public function show(Application $application): RedirectResponse
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param Application $application * @param Application $application
*
* @return View * @return View
*/ */
public function edit(Application $application): View public function edit(Application $application): View
@ -86,6 +89,7 @@ public function edit(Application $application): View
* *
* @param Request $request * @param Request $request
* @param Application $application * @param Application $application
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, Application $application): RedirectResponse public function update(Request $request, Application $application): RedirectResponse
@ -95,7 +99,7 @@ public function update(Request $request, Application $application): RedirectResp
$this->validate($request, [ $this->validate($request, [
'name' => 'required', 'name' => 'required',
'description' => 'required', 'description' => 'required',
'api_token' => 'required|unique:applications,api_token,'.$application->id, 'api_token' => 'required|unique:applications,api_token,' . $application->id,
]); ]);
$application->update($request->all()); $application->update($request->all());
@ -107,6 +111,7 @@ public function update(Request $request, Application $application): RedirectResp
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param Application $application * @param Application $application
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(Application $application): RedirectResponse public function destroy(Application $application): RedirectResponse

View File

@ -14,7 +14,7 @@ class AuthController extends Controller
*/ */
public function index(): View|RedirectResponse public function index(): View|RedirectResponse
{ {
if (! auth('admin')->check()) { if (!auth('admin')->check()) {
return view('admin.login'); return view('admin.login');
} else { } else {
return redirect()->route('admin.index'); return redirect()->route('admin.index');
@ -23,6 +23,7 @@ public function index(): View|RedirectResponse
/** /**
* @param Request $request * @param Request $request
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function login(Request $request): RedirectResponse public function login(Request $request): RedirectResponse

View File

@ -51,7 +51,7 @@ public function destroy(Request $request): RedirectResponse
$module_name = explode('.', $username)[0]; $module_name = explode('.', $username)[0];
$this->dispatch(new EMQXKickClientJob(null, $module_name, false)); $this->dispatch(new EMQXKickClientJob(null, $module_name, false));
$this->dispatch(new EMQXKickClientJob(null, $module_name.'.', true)); $this->dispatch(new EMQXKickClientJob(null, $module_name . '.', true));
} }
return back()->with('success', '正在让它们下线。'); return back()->with('success', '正在让它们下线。');

View File

@ -15,6 +15,7 @@ class HostController extends Controller
* *
* *
* @param Request $request * @param Request $request
*
* @return View * @return View
*/ */
public function index(Request $request): View public function index(Request $request): View
@ -24,7 +25,7 @@ public function index(Request $request): View
// 遍历所有的搜索条件 // 遍历所有的搜索条件
foreach (['name', 'module_id', 'status', 'user_id', 'price', 'managed_price', 'created_at', 'updated_at'] as $field) { foreach (['name', 'module_id', 'status', 'user_id', 'price', 'managed_price', 'created_at', 'updated_at'] as $field) {
if ($request->has($field)) { if ($request->has($field)) {
$hosts = $hosts->where($field, 'like', '%'.$request->input($field).'%'); $hosts = $hosts->where($field, 'like', '%' . $request->input($field) . '%');
} }
} }
@ -39,6 +40,7 @@ public function index(Request $request): View
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param Host $host * @param Host $host
*
* @return View * @return View
*/ */
public function edit(Host $host): View public function edit(Host $host): View
@ -51,6 +53,7 @@ public function edit(Host $host): View
* *
* @param Request $request * @param Request $request
* @param Host $host * @param Host $host
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, Host $host): RedirectResponse public function update(Request $request, Host $host): RedirectResponse
@ -71,6 +74,7 @@ public function update(Request $request, Host $host): RedirectResponse
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param Host $host * @param Host $host
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(Host $host): RedirectResponse public function destroy(Host $host): RedirectResponse

View File

@ -17,6 +17,7 @@ class ModuleController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* *
* @param Module $module * @param Module $module
*
* @return View * @return View
*/ */
public function index(Module $module): View public function index(Module $module): View
@ -40,6 +41,7 @@ public function create(): View
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function store(Request $request): RedirectResponse public function store(Request $request): RedirectResponse
@ -80,6 +82,7 @@ private function rules(): array
* Display the specified resource. * Display the specified resource.
* *
* @param Module $module * @param Module $module
*
* @return View * @return View
*/ */
public function show(Module $module): View public function show(Module $module): View
@ -95,6 +98,7 @@ public function show(Module $module): View
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param Module $module * @param Module $module
*
* @return View * @return View
*/ */
public function edit(Module $module): View public function edit(Module $module): View
@ -109,6 +113,7 @@ public function edit(Module $module): View
* *
* @param Request $request * @param Request $request
* @param Module $module * @param Module $module
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, Module $module): RedirectResponse public function update(Request $request, Module $module): RedirectResponse
@ -122,7 +127,7 @@ public function update(Request $request, Module $module): RedirectResponse
$module->status = $request->input('status'); $module->status = $request->input('status');
$module->wecom_key = $request->input('wecom_key'); $module->wecom_key = $request->input('wecom_key');
if (! $request->filled('api_token')) { if (!$request->filled('api_token')) {
$module->api_token = Str::random(60); $module->api_token = Str::random(60);
} else { } else {
$module->api_token = $request->input('api_token'); $module->api_token = $request->input('api_token');
@ -140,17 +145,17 @@ public function update(Request $request, Module $module): RedirectResponse
// 充值或者扣费 // 充值或者扣费
if ($diff > 0) { if ($diff > 0) {
$description = '管理员 '.auth('admin')->user()->name.' 充值 '.$diff.' 元'; $description = '管理员 ' . auth('admin')->user()->name . ' 充值 ' . $diff . ' 元';
$module->charge($diff, 'console', $description); $module->charge($diff, 'console', $description);
} else { } else {
$description = '管理员 '.auth('admin')->user()->name.' 扣除 '.abs($diff).' 元'; $description = '管理员 ' . auth('admin')->user()->name . ' 扣除 ' . abs($diff) . ' 元';
$module->reduce(abs($diff), $description); $module->reduce(abs($diff), $description);
} }
} }
} }
if ($request->input('reset_api_token')) { if ($request->input('reset_api_token')) {
$text .= ', API Token 为 '.$module->api_token.'。'; $text .= ', API Token 为 ' . $module->api_token . '。';
} else { } else {
$text .= '。'; $text .= '。';
} }
@ -162,6 +167,7 @@ public function update(Request $request, Module $module): RedirectResponse
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param Module $module * @param Module $module
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(Module $module): RedirectResponse public function destroy(Module $module): RedirectResponse

View File

@ -18,6 +18,7 @@ class NotificationController extends Controller
* Show the form for creating a new resource. * Show the form for creating a new resource.
* *
* @param Request $request * @param Request $request
*
* @return View * @return View
*/ */
public function create(Request $request): View public function create(Request $request): View
@ -35,26 +36,26 @@ public function query(Request|array $request): User|CachedBuilder|Builder
$request = $request->all(); $request = $request->all();
} }
if (! empty($request['user_id'])) { if (!empty($request['user_id'])) {
$users = (new User)->where('id', $request['user_id']); $users = (new User)->where('id', $request['user_id']);
} else { } else {
$users = User::query(); $users = User::query();
if (! empty($request['user'])) { if (!empty($request['user'])) {
$user = $request['user']; $user = $request['user'];
if ($user == 'active') { if ($user == 'active') {
// 寻找有 host 的用户 // 寻找有 host 的用户
$users = $users->whereHas('hosts'); $users = $users->whereHas('hosts');
} elseif ($user == 'normal') { } else if ($user == 'normal') {
$users = $users->whereNull('banned_at'); $users = $users->whereNull('banned_at');
} elseif ($user == 'banned') { } else if ($user == 'banned') {
$users = $users->whereNotNull('banned_at'); $users = $users->whereNotNull('banned_at');
} }
} }
} }
if (! empty($request['module_id'])) { if (!empty($request['module_id'])) {
// 从 hosts 中找到 module_id然后找到拥有此 host 的用户 // 从 hosts 中找到 module_id然后找到拥有此 host 的用户
$users = $users->whereHas('hosts', function ($query) use ($request) { $users = $users->whereHas('hosts', function ($query) use ($request) {
$query->where('module_id', $request['module_id']); $query->where('module_id', $request['module_id']);
@ -68,6 +69,7 @@ public function query(Request|array $request): User|CachedBuilder|Builder
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function store(Request $request): RedirectResponse public function store(Request $request): RedirectResponse

View File

@ -16,6 +16,7 @@ class ReplyController extends Controller
* *
* @param Request $request * @param Request $request
* @param WorkOrder $work_order * @param WorkOrder $work_order
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function store(Request $request, WorkOrder $work_order): RedirectResponse public function store(Request $request, WorkOrder $work_order): RedirectResponse
@ -42,6 +43,7 @@ public function store(Request $request, WorkOrder $work_order): RedirectResponse
* *
* @param WorkOrder $work_order * @param WorkOrder $work_order
* @param Reply $reply * @param Reply $reply
*
* @return View * @return View
*/ */
public function edit(WorkOrder $work_order, Reply $reply): View public function edit(WorkOrder $work_order, Reply $reply): View
@ -55,6 +57,7 @@ public function edit(WorkOrder $work_order, Reply $reply): View
* @param Request $request * @param Request $request
* @param WorkOrder $work_order * @param WorkOrder $work_order
* @param Reply $reply * @param Reply $reply
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, WorkOrder $work_order, Reply $reply): RedirectResponse public function update(Request $request, WorkOrder $work_order, Reply $reply): RedirectResponse
@ -75,6 +78,7 @@ public function update(Request $request, WorkOrder $work_order, Reply $reply): R
* *
* @param WorkOrder $work_order * @param WorkOrder $work_order
* @param Reply $reply * @param Reply $reply
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(WorkOrder $work_order, Reply $reply): RedirectResponse public function destroy(WorkOrder $work_order, Reply $reply): RedirectResponse

View File

@ -28,15 +28,15 @@ public function index(Request $request): View
} }
if ($request->filled('name')) { if ($request->filled('name')) {
$users = $users->where('name', 'like', '%'.$request->input('name').'%'); $users = $users->where('name', 'like', '%' . $request->input('name') . '%');
} }
if ($request->filled('email')) { if ($request->filled('email')) {
$users = $users->where('email', 'like', '%'.$request->input('email').'%'); $users = $users->where('email', 'like', '%' . $request->input('email') . '%');
} }
if ($request->filled('real_name')) { if ($request->filled('real_name')) {
$users = $users->where('real_name', 'like', '%'.$request->input('real_name').'%'); $users = $users->where('real_name', 'like', '%' . $request->input('real_name') . '%');
} }
if ($request->has('banned_at')) { if ($request->has('banned_at')) {
@ -58,19 +58,21 @@ public function index(Request $request): View
* Display the specified resource. * Display the specified resource.
* *
* @param User $user * @param User $user
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function show(User $user): RedirectResponse public function show(User $user): RedirectResponse
{ {
Auth::guard('web')->login($user); Auth::guard('web')->login($user);
return back()->with('success', '您已切换到用户 '.$user->name.' 的身份。'); return back()->with('success', '您已切换到用户 ' . $user->name . ' 的身份。');
} }
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param User $user * @param User $user
*
* @return View * @return View
*/ */
public function edit(User $user): View public function edit(User $user): View
@ -88,6 +90,7 @@ public function edit(User $user): View
* *
* @param Request $request * @param Request $request
* @param User $user * @param User $user
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, User $user): RedirectResponse public function update(Request $request, User $user): RedirectResponse
@ -115,18 +118,18 @@ public function update(Request $request, User $user): RedirectResponse
if ($request->filled('one_time_action')) { if ($request->filled('one_time_action')) {
if ($one_time_action == 'clear_all_keys') { if ($one_time_action == 'clear_all_keys') {
$user->tokens()->delete(); $user->tokens()->delete();
} elseif ($one_time_action == 'suspend_all_hosts') { } else if ($one_time_action == 'suspend_all_hosts') {
$user->hosts()->update(['status' => 'suspended', 'suspended_at' => now()]); $user->hosts()->update(['status' => 'suspended', 'suspended_at' => now()]);
} elseif ($one_time_action == 'stop_all_hosts') { } else if ($one_time_action == 'stop_all_hosts') {
$user->hosts()->update(['status' => 'stopped', 'suspended_at' => null]); $user->hosts()->update(['status' => 'stopped', 'suspended_at' => null]);
} elseif ($one_time_action == 'add_balance') { } else if ($one_time_action == 'add_balance') {
$description = '管理员 '.$request->user('admin')->name.' 增加。'; $description = '管理员 ' . $request->user('admin')->name . ' 增加。';
$user->charge($request->input('balance'), 'console', $description, [ $user->charge($request->input('balance'), 'console', $description, [
'add_balances_log' => true, 'add_balances_log' => true,
]); ]);
} elseif ($one_time_action == 'reduce_balance') { } else if ($one_time_action == 'reduce_balance') {
$description = '管理员 '.$request->user('admin')->name.' 扣除。'; $description = '管理员 ' . $request->user('admin')->name . ' 扣除。';
$user->reduce($request->input('balance'), $description); $user->reduce($request->input('balance'), $description);
} }
@ -155,6 +158,7 @@ public function update(Request $request, User $user): RedirectResponse
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param User $user * @param User $user
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(User $user): RedirectResponse public function destroy(User $user): RedirectResponse

View File

@ -27,6 +27,7 @@ public function index(): View
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function store(Request $request): RedirectResponse public function store(Request $request): RedirectResponse
@ -64,6 +65,7 @@ public function create(): View
* Display the specified resource. * Display the specified resource.
* *
* @param UserGroup $user_group * @param UserGroup $user_group
*
* @return View * @return View
*/ */
public function show(UserGroup $user_group): View public function show(UserGroup $user_group): View
@ -77,6 +79,7 @@ public function show(UserGroup $user_group): View
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param UserGroup $user_group * @param UserGroup $user_group
*
* @return View * @return View
*/ */
public function edit(UserGroup $user_group): View public function edit(UserGroup $user_group): View
@ -91,6 +94,7 @@ public function edit(UserGroup $user_group): View
* *
* @param Request $request * @param Request $request
* @param UserGroup $user_group * @param UserGroup $user_group
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, UserGroup $user_group): RedirectResponse public function update(Request $request, UserGroup $user_group): RedirectResponse
@ -107,6 +111,7 @@ public function update(Request $request, UserGroup $user_group): RedirectRespons
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param UserGroup $user_group * @param UserGroup $user_group
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(UserGroup $user_group): RedirectResponse public function destroy(UserGroup $user_group): RedirectResponse

View File

@ -17,6 +17,7 @@ class WorkOrderController extends Controller
* *
* @param Request $request * @param Request $request
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return View * @return View
*/ */
public function index(Request $request, WorkOrder $workOrder): View public function index(Request $request, WorkOrder $workOrder): View
@ -36,6 +37,7 @@ public function index(Request $request, WorkOrder $workOrder): View
* Display the specified resource. * Display the specified resource.
* *
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return View * @return View
*/ */
public function show(WorkOrder $workOrder): View public function show(WorkOrder $workOrder): View
@ -51,6 +53,7 @@ public function show(WorkOrder $workOrder): View
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
* *
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return View * @return View
*/ */
public function edit(WorkOrder $workOrder): View public function edit(WorkOrder $workOrder): View
@ -63,6 +66,7 @@ public function edit(WorkOrder $workOrder): View
* *
* @param Request $request * @param Request $request
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function update(Request $request, WorkOrder $workOrder): RedirectResponse public function update(Request $request, WorkOrder $workOrder): RedirectResponse
@ -84,6 +88,7 @@ public function update(Request $request, WorkOrder $workOrder): RedirectResponse
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return RedirectResponse * @return RedirectResponse
*/ */
public function destroy(WorkOrder $workOrder): RedirectResponse public function destroy(WorkOrder $workOrder): RedirectResponse

View File

@ -25,6 +25,7 @@ public function index(): JsonResponse
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse * @return JsonResponse
*/ */
public function store(Request $request): JsonResponse public function store(Request $request): JsonResponse
@ -50,6 +51,7 @@ public function store(Request $request): JsonResponse
* Display the specified resource. * Display the specified resource.
* *
* @param Balance $balance * @param Balance $balance
*
* @return JsonResponse * @return JsonResponse
*/ */
public function show(Balance $balance): JsonResponse public function show(Balance $balance): JsonResponse

View File

@ -4,11 +4,11 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Closure; use Closure;
use function config;
use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\PendingRequest;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use function config;
class ForumController extends Controller class ForumController extends Controller
{ {
@ -19,12 +19,21 @@ class ForumController extends Controller
public function __construct() public function __construct()
{ {
$this->baseUrl = config('settings.forum.base_url'); $this->baseUrl = config('settings.forum.base_url');
$this->http = Http::baseUrl($this->baseUrl.'/api')->throw(); $this->http = Http::baseUrl($this->baseUrl . '/api')->throw();
}
public function tag($tag): JsonResponse
{
$resp = $this->cache($tag, function () use ($tag) {
return $this->get('discussions?filter[tag]=' . $tag . '&page[offset]=0&sort=-createdAt');
});
return $this->resp($resp);
} }
public function cache($tag, Closure $callback) public function cache($tag, Closure $callback)
{ {
return Cache::remember('forum.tag:'.$tag, 60, function () use ($callback) { return Cache::remember('forum.tag:' . $tag, 60, function () use ($callback) {
return $callback(); return $callback();
}); });
} }
@ -40,13 +49,4 @@ public function resp($data): JsonResponse
return $this->success($data); return $this->success($data);
} }
public function tag($tag): JsonResponse
{
$resp = $this->cache($tag, function () use ($tag) {
return $this->get('discussions?filter[tag]='.$tag.'&page[offset]=0&sort=-createdAt');
});
return $this->resp($resp);
}
} }

View File

@ -6,10 +6,10 @@
use App\Http\Requests\User\HostRequest; use App\Http\Requests\User\HostRequest;
use App\Jobs\Host\HostJob; use App\Jobs\Host\HostJob;
use App\Models\Host; use App\Models\Host;
use function auth;
use function dispatch;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use function auth;
use function dispatch;
use function now; use function now;
class HostController extends Controller class HostController extends Controller
@ -37,7 +37,7 @@ public function update(HostRequest $request, Host $host): JsonResponse
$user = $request->user(); $user = $request->user();
if ($user->balance < 0.5) { if ($user->balance < 0.5) {
return $this->error('余额不足,无法开启计费项目。请确保您的余额至少为 0.5 元,您当前有 '.$user->balance.' 元。'); return $this->error('余额不足,无法开启计费项目。请确保您的余额至少为 0.5 元,您当前有 ' . $user->balance . ' 元。');
} }
$host->update([ $host->update([
@ -74,7 +74,7 @@ public function usages(): JsonResponse
{ {
$month = now()->month; $month = now()->month;
$month_cache_key = 'user_'.auth()->id().'_month_'.$month.'_hosts_balances'; $month_cache_key = 'user_' . auth()->id() . '_month_' . $month . '_hosts_balances';
$hosts_balances = Cache::get($month_cache_key, []); $hosts_balances = Cache::get($month_cache_key, []);
return $this->success([ return $this->success([

View File

@ -20,7 +20,7 @@ public function index(): JsonResponse
public function servers(Module $module): JsonResponse public function servers(Module $module): JsonResponse
{ {
$servers = Cache::get('module:'.$module->id.':servers', []); $servers = Cache::get('module:' . $module->id . ':servers', []);
return $this->success($servers); return $this->success($servers);
} }

View File

@ -5,9 +5,9 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\WorkOrder\Reply; use App\Models\WorkOrder\Reply;
use App\Models\WorkOrder\WorkOrder; use App\Models\WorkOrder\WorkOrder;
use function auth;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use function auth;
class ReplyController extends Controller class ReplyController extends Controller
{ {
@ -15,6 +15,7 @@ class ReplyController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* *
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return JsonResponse * @return JsonResponse
*/ */
public function index(WorkOrder $workOrder): JsonResponse public function index(WorkOrder $workOrder): JsonResponse
@ -29,6 +30,7 @@ public function index(WorkOrder $workOrder): JsonResponse
* *
* @param Request $request * @param Request $request
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return JsonResponse * @return JsonResponse
*/ */
public function store(Request $request, WorkOrder $workOrder): JsonResponse public function store(Request $request, WorkOrder $workOrder): JsonResponse
@ -42,7 +44,7 @@ public function store(Request $request, WorkOrder $workOrder): JsonResponse
} }
// 如果工单已经关闭,那么访客不能回复 // 如果工单已经关闭,那么访客不能回复
if ($workOrder->isClosed() && ! auth('sanctum')->check()) { if ($workOrder->isClosed() && !auth('sanctum')->check()) {
return $this->error('工单已关闭,无法进行回复。'); return $this->error('工单已关闭,无法进行回复。');
} }

View File

@ -59,7 +59,7 @@ public function update(Request $request, WorkOrder $workOrder): JsonResponse
]); ]);
// 访客不能关闭 // 访客不能关闭
if ($request->input('status') === 'closed' && ! auth('sanctum')->check()) { if ($request->input('status') === 'closed' && !auth('sanctum')->check()) {
return $this->forbidden('访客不能修改工单状态。'); return $this->forbidden('访客不能修改工单状态。');
} }

View File

@ -24,7 +24,7 @@ public function authentication(Request $request): Response
$module = (new Module)->where('id', $module_id)->first(); $module = (new Module)->where('id', $module_id)->first();
if (! $module) { if (!$module) {
return $this->ignore(); return $this->ignore();
} }
@ -33,7 +33,7 @@ public function authentication(Request $request): Response
} }
// 如果没有设置 device_id那么就是模块自己的连接 // 如果没有设置 device_id那么就是模块自己的连接
if (! $device_id) { if (!$device_id) {
// 让 api_token 可见 // 让 api_token 可见
$module->makeVisible('api_token'); $module->makeVisible('api_token');
@ -118,7 +118,7 @@ public function authorization(Request $request): Response
$module = (new Module)->where('id', $module_id)->first(); $module = (new Module)->where('id', $module_id)->first();
if (! $module) { if (!$module) {
// 不属于我们管理,跳过。 // 不属于我们管理,跳过。
return $this->ignore(); return $this->ignore();
} }
@ -129,7 +129,7 @@ public function authorization(Request $request): Response
// 但是,在拒绝之前,应该检查一下,是否有允许的模块 // 但是,在拒绝之前,应该检查一下,是否有允许的模块
$allow = (new ModuleAllow)->where('module_id', $topics[0])->where('allowed_module_id', $module_id)->exists(); $allow = (new ModuleAllow)->where('module_id', $topics[0])->where('allowed_module_id', $module_id)->exists();
if (! $allow) { if (!$allow) {
return $this->deny(); return $this->deny();
} }
} }

View File

@ -24,7 +24,7 @@ public function store(Request $request): JsonResponse
'module' => $request->user('module')->toArray(), 'module' => $request->user('module')->toArray(),
]; ];
Cache::put('auth_request:'.$token, $data, 120); Cache::put('auth_request:' . $token, $data, 120);
$data['url'] = route('auth_request.show', $token); $data['url'] = route('auth_request.show', $token);
@ -33,13 +33,13 @@ public function store(Request $request): JsonResponse
public function show($token): JsonResponse public function show($token): JsonResponse
{ {
$data = Cache::get('auth_request:'.$token); $data = Cache::get('auth_request:' . $token);
if (empty($data)) { if (empty($data)) {
return $this->error('Token 不存在或已过期。'); return $this->error('Token 不存在或已过期。');
} }
if (! isset($data['user'])) { if (!isset($data['user'])) {
$data['user'] = null; $data['user'] = null;
} }

View File

@ -18,7 +18,7 @@ public function index(Request $request): JsonResponse
try { try {
$clients = $emqx->pagination([ $clients = $emqx->pagination([
'like_username' => $request->user('module')->id.'.', 'like_username' => $request->user('module')->id . '.',
]); ]);
} catch (EmqxSupportException $e) { } catch (EmqxSupportException $e) {
Log::error('emqx connect failed.', [$e]); Log::error('emqx connect failed.', [$e]);

View File

@ -5,13 +5,13 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Host; use App\Models\Host;
use App\Models\User; use App\Models\User;
use function auth;
use Illuminate\Contracts\Pagination\Paginator; use Illuminate\Contracts\Pagination\Paginator;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use function auth;
// use App\Models\User; // use App\Models\User;
@ -29,6 +29,7 @@ public function index(Request $request): Paginator
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return Response|JsonResponse * @return Response|JsonResponse
* *
* @throws ValidationException * @throws ValidationException
@ -73,6 +74,7 @@ public function store(Request $request): Response|JsonResponse
* Display the specified resource. * Display the specified resource.
* *
* @param Host $host * @param Host $host
*
* @return JsonResponse * @return JsonResponse
*/ */
public function show(Host $host): JsonResponse public function show(Host $host): JsonResponse
@ -88,6 +90,7 @@ public function show(Host $host): JsonResponse
* *
* @param Request $request * @param Request $request
* @param Host $host * @param Host $host
*
* @return JsonResponse * @return JsonResponse
* *
* @throws ValidationException * @throws ValidationException
@ -121,12 +124,13 @@ public function update(Request $request, Host $host): JsonResponse
* Remove the specified resource from storage. * Remove the specified resource from storage.
* *
* @param $host * @param $host
*
* @return JsonResponse * @return JsonResponse
*/ */
public function destroy($host): JsonResponse public function destroy($host): JsonResponse
{ {
// if host not instance of HostJob // if host not instance of HostJob
if (! $host instanceof Host) { if (!$host instanceof Host) {
$host = (new Host)->findOrFail($host); $host = (new Host)->findOrFail($host);
} }

View File

@ -14,6 +14,7 @@ class ReplyController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse * @return JsonResponse
*/ */
public function index(Request $request): JsonResponse public function index(Request $request): JsonResponse

View File

@ -18,6 +18,7 @@ class TaskController extends Controller
* Display a listing of the resource. * Display a listing of the resource.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse * @return JsonResponse
*/ */
public function index(Request $request): JsonResponse public function index(Request $request): JsonResponse
@ -31,6 +32,7 @@ public function index(Request $request): JsonResponse
* Store a newly created resource in storage. * Store a newly created resource in storage.
* *
* @param Request $request * @param Request $request
*
* @return JsonResponse * @return JsonResponse
* *
* @throws ValidationException * @throws ValidationException
@ -54,6 +56,7 @@ public function store(Request $request): JsonResponse
* *
* @param Request $request * @param Request $request
* @param Task $task * @param Task $task
*
* @return JsonResponse * @return JsonResponse
* *
* @throws ValidationException * @throws ValidationException

View File

@ -24,15 +24,15 @@ public function index(Request $request): JsonResponse
// 搜索 name, email, balance // 搜索 name, email, balance
if ($request->has('name')) { if ($request->has('name')) {
$users->where('name', 'like', '%'.$request->input('name').'%'); $users->where('name', 'like', '%' . $request->input('name') . '%');
} }
if ($request->has('email')) { if ($request->has('email')) {
$users->where('email', 'like', '%'.$request->input('email').'%'); $users->where('email', 'like', '%' . $request->input('email') . '%');
} }
if ($request->has('balance')) { if ($request->has('balance')) {
$users->where('balance', 'like', '%'.$request->input('balance').'%'); $users->where('balance', 'like', '%' . $request->input('balance') . '%');
} }
$users = $users->simplePaginate(100); $users = $users->simplePaginate(100);

View File

@ -17,7 +17,7 @@ public function verify(Request $request): JsonResponse
{ {
$result = (new RealNameSupport())->verify($request->all()); $result = (new RealNameSupport())->verify($request->all());
if (! $result) { if (!$result) {
Log::warning('实名认证失败', $request->all()); Log::warning('实名认证失败', $request->all());
return $this->error('实名认证失败。'); return $this->error('实名认证失败。');
@ -28,7 +28,7 @@ public function verify(Request $request): JsonResponse
$user->id_card = $result['id_card']; $user->id_card = $result['id_card'];
$user->save(); $user->save();
$user->reduce((string) config('settings.supports.real_name.price'), '实名认证费用。'); $user->reduce((string)config('settings.supports.real_name.price'), '实名认证费用。');
$user->notify(new UserNotification('再次欢迎您!', '再次欢迎您!您的实人认证已通过。', true)); $user->notify(new UserNotification('再次欢迎您!', '再次欢迎您!您的实人认证已通过。', true));

View File

@ -45,6 +45,7 @@ public function __construct()
* Get a validator for an incoming registration request. * Get a validator for an incoming registration request.
* *
* @param array $data * @param array $data
*
* @return \Illuminate\Contracts\Validation\Validator * @return \Illuminate\Contracts\Validation\Validator
*/ */
protected function validator(array $data): \Illuminate\Contracts\Validation\Validator protected function validator(array $data): \Illuminate\Contracts\Validation\Validator
@ -60,6 +61,7 @@ protected function validator(array $data): \Illuminate\Contracts\Validation\Vali
* Create a new user instance after a valid registration. * Create a new user instance after a valid registration.
* *
* @param array $data * @param array $data
*
* @return User * @return User
*/ */
protected function create(array $data): User protected function create(array $data): User

View File

@ -6,13 +6,13 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Notifications\User\UserNotification; use App\Notifications\User\UserNotification;
use function back;
use function config;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\View\View; use Illuminate\View\View;
use function back;
use function config;
use function redirect; use function redirect;
use function session; use function session;
use function view; use function view;
@ -32,13 +32,13 @@ public function index(Request $request): View|RedirectResponse
$dashboardHost = parse_url(config('settings.dashboard.base_url'), PHP_URL_HOST); $dashboardHost = parse_url(config('settings.dashboard.base_url'), PHP_URL_HOST);
if ($callbackHost === $dashboardHost) { if ($callbackHost === $dashboardHost) {
if (! Auth::guard('web')->user()->isRealNamed()) { if (!Auth::guard('web')->user()->isRealNamed()) {
return redirect()->route('real_name.create')->with('status', '重定向已被打断,需要先实人认证。'); return redirect()->route('real_name.create')->with('status', '重定向已被打断,需要先实人认证。');
} }
$token = $request->user()->createToken('Dashboard')->plainTextToken; $token = $request->user()->createToken('Dashboard')->plainTextToken;
return redirect($callback.'?token='.$token); return redirect($callback . '?token=' . $token);
} }
return redirect()->route('confirm_redirect'); return redirect()->route('confirm_redirect');
@ -111,7 +111,7 @@ public function exitSudo(): RedirectResponse
public function showAuthRequest($token): View|RedirectResponse public function showAuthRequest($token): View|RedirectResponse
{ {
$data = Cache::get('auth_request:'.$token); $data = Cache::get('auth_request:' . $token);
if (empty($data)) { if (empty($data)) {
return redirect()->route('index')->with('error', '登录请求的 Token 不存在或已过期。'); return redirect()->route('index')->with('error', '登录请求的 Token 不存在或已过期。');
@ -135,7 +135,7 @@ public function storeAuthRequest(Request $request): RedirectResponse
'token' => 'required|string|max:128', 'token' => 'required|string|max:128',
]); ]);
$data = Cache::get('auth_request:'.$request->input('token')); $data = Cache::get('auth_request:' . $request->input('token'));
if (empty($data)) { if (empty($data)) {
return back()->with('error', '登录请求的 Token 不存在或已过期。'); return back()->with('error', '登录请求的 Token 不存在或已过期。');
@ -147,7 +147,7 @@ public function storeAuthRequest(Request $request): RedirectResponse
$data['user'] = $request->user('web'); $data['user'] = $request->user('web');
Cache::put('auth_request:'.$request->input('token'), $data, 60); Cache::put('auth_request:' . $request->input('token'), $data, 60);
return redirect()->route('index')->with('success', '登录请求已确认。'); return redirect()->route('index')->with('success', '登录请求已确认。');
} }

View File

@ -72,7 +72,7 @@ public function show(Request $request, Balance $balance): RedirectResponse|JsonR
$balance->load('user'); $balance->load('user');
$subject = config('app.display_name').' 充值'; $subject = config('app.display_name') . ' 充值';
$order = [ $order = [
'out_trade_no' => $balance->order_id, 'out_trade_no' => $balance->order_id,
@ -90,10 +90,10 @@ public function show(Request $request, Balance $balance): RedirectResponse|JsonR
$pay = Pay::alipay()->web($order); $pay = Pay::alipay()->web($order);
return view('balances.alipay', ['html' => (string) $pay->getBody()]); return view('balances.alipay', ['html' => (string)$pay->getBody()]);
} }
if (! isset($qr_code)) { if (!isset($qr_code)) {
return redirect()->route('index')->with('error', '支付方式错误。'); return redirect()->route('index')->with('error', '支付方式错误。');
} }
@ -127,7 +127,7 @@ private function xunhu_wechat(
$response = Http::post(config('pay.xunhu.gateway'), $data); $response = Http::post(config('pay.xunhu.gateway'), $data);
if (! $response->successful()) { if (!$response->successful()) {
return redirect()->route('index')->with('error', '支付网关错误。'); return redirect()->route('index')->with('error', '支付网关错误。');
} }
@ -135,7 +135,7 @@ private function xunhu_wechat(
$hash = $this->xunhu_hash($response); $hash = $this->xunhu_hash($response);
if (! isset($response['hash']) || $response['hash'] !== $hash) { if (!isset($response['hash']) || $response['hash'] !== $hash) {
return redirect()->route('index')->with('error', '无法校验支付网关返回数据。'); return redirect()->route('index')->with('error', '无法校验支付网关返回数据。');
} }
@ -169,7 +169,7 @@ private function xunhu_hash(
} }
} }
return md5($arg.config('pay.xunhu.app_secret')); return md5($arg . config('pay.xunhu.app_secret'));
} }
/** /**
@ -182,7 +182,7 @@ public function notify(
if ($payment === 'alipay') { if ($payment === 'alipay') {
$out_trade_no = $request->input('out_trade_no'); $out_trade_no = $request->input('out_trade_no');
} elseif ($payment === 'wechat') { } else if ($payment === 'wechat') {
$out_trade_no = $request->input('trade_order_id'); $out_trade_no = $request->input('trade_order_id');
} else { } else {
abort(400, '支付方式错误'); abort(400, '支付方式错误');
@ -190,7 +190,7 @@ public function notify(
// 检测订单是否存在 // 检测订单是否存在
$balance = (new Balance)->where('order_id', $out_trade_no)->with('user')->first(); $balance = (new Balance)->where('order_id', $out_trade_no)->with('user')->first();
if (! $balance) { if (!$balance) {
abort(404, '找不到订单。'); abort(404, '找不到订单。');
} }
@ -205,7 +205,7 @@ public function notify(
// 处理验证 // 处理验证
if ($payment === 'wechat') { if ($payment === 'wechat') {
if (! ($request->filled('hash') || $request->filled('trade_order_id'))) { if (!($request->filled('hash') || $request->filled('trade_order_id'))) {
return $this->error('参数错误。'); return $this->error('参数错误。');
} }
@ -241,6 +241,7 @@ public function notify(
* 获取交易记录 * 获取交易记录
* *
* @param mixed $request * @param mixed $request
*
* @return View * @return View
*/ */
public function transactions( public function transactions(

View File

@ -25,7 +25,7 @@ public function store(Request $request): RedirectResponse
$birthday = $realNameSupport->getBirthday($request->input('id_card')); $birthday = $realNameSupport->getBirthday($request->input('id_card'));
// 检查年龄是否在区间内 settings.supports.real_name.min_age ~ settings.supports.real_name.max_age // 检查年龄是否在区间内 settings.supports.real_name.min_age ~ settings.supports.real_name.max_age
if (Carbon::now()->diffInYears($birthday) < config('settings.supports.real_name.min_age') || Carbon::now()->diffInYears($birthday) > config('settings.supports.real_name.max_age')) { if (Carbon::now()->diffInYears($birthday) < config('settings.supports.real_name.min_age') || Carbon::now()->diffInYears($birthday) > config('settings.supports.real_name.max_age')) {
$message = '至少需要 '.config('settings.supports.real_name.min_age').' 岁,最大 '.config('settings.supports.real_name.max_age').' 岁。'; $message = '至少需要 ' . config('settings.supports.real_name.min_age') . ' 岁,最大 ' . config('settings.supports.real_name.max_age') . ' 岁。';
return back()->with('error', $message); return back()->with('error', $message);
} }
@ -47,14 +47,14 @@ public function store(Request $request): RedirectResponse
} }
// 标记用户正在实名,缓存 600s // 标记用户正在实名,缓存 600s
if (Cache::has('real_name:user:'.$user->id)) { if (Cache::has('real_name:user:' . $user->id)) {
// 获取缓存 // 获取缓存
$output = Cache::get('real_name:user:'.$user->id); $output = Cache::get('real_name:user:' . $user->id);
return back()->with('error', '因为您有一个正在进行的实名认证,请等待 10 分钟后重试。')->with('output', $output); return back()->with('error', '因为您有一个正在进行的实名认证,请等待 10 分钟后重试。')->with('output', $output);
} }
Cache::set('real_name:user:'.$user->id, $output, 600); Cache::set('real_name:user:' . $user->id, $output, 600);
return redirect($output); return redirect($output);
} }

View File

@ -26,7 +26,7 @@ public function transfer(Request $request): RedirectResponse
]); ]);
$to = (new User)->where('email', $request->input('to'))->first(); $to = (new User)->where('email', $request->input('to'))->first();
if (! $to) { if (!$to) {
return back()->withErrors(['to' => '找不到用户。']); return back()->withErrors(['to' => '找不到用户。']);
} }

View File

@ -13,6 +13,7 @@ class AddHeaders
* *
* @param Request $request * @param Request $request
* @param Closure $next * @param Closure $next
*
* @return mixed * @return mixed
*/ */
public function handle(Request $request, Closure $next): mixed public function handle(Request $request, Closure $next): mixed

View File

@ -15,12 +15,13 @@ class ValidateReferer
* *
* @param Request $request * @param Request $request
* @param Closure(Request): (Response|RedirectResponse) $next * @param Closure(Request): (Response|RedirectResponse) $next
*
* @return Response|RedirectResponse * @return Response|RedirectResponse
*/ */
public function handle(Request $request, Closure $next): Response|RedirectResponse public function handle(Request $request, Closure $next): Response|RedirectResponse
{ {
// 如果 referer 不为空,且不是来自本站的请求,则返回 403 // 如果 referer 不为空,且不是来自本站的请求,则返回 403
if ($request->headers->get('referer') && ! Str::contains($request->headers->get('referer'), config('app.url'))) { if ($request->headers->get('referer') && !Str::contains($request->headers->get('referer'), config('app.url'))) {
abort(403, '来源不属于后台。'); abort(403, '来源不属于后台。');
} else { } else {
return $next($request); return $next($request);

View File

@ -11,11 +11,12 @@ class Authenticate extends Middleware
* Get the path the user should be redirected to when they are not authenticated. * Get the path the user should be redirected to when they are not authenticated.
* *
* @param Request $request * @param Request $request
*
* @return string|null * @return string|null
*/ */
protected function redirectTo($request): ?string protected function redirectTo($request): ?string
{ {
if (! $request->expectsJson()) { if (!$request->expectsJson()) {
return route('index'); return route('index');
} }

View File

@ -14,6 +14,7 @@ class JsonResponse
* *
* @param Request $request * @param Request $request
* @param Closure(Request): (Response|RedirectResponse) $next * @param Closure(Request): (Response|RedirectResponse) $next
*
* @return Response|RedirectResponse|\Illuminate\Http\JsonResponse * @return Response|RedirectResponse|\Illuminate\Http\JsonResponse
*/ */
public function handle(Request $request, Closure $next): Response|\Illuminate\Http\JsonResponse|RedirectResponse public function handle(Request $request, Closure $next): Response|\Illuminate\Http\JsonResponse|RedirectResponse

View File

@ -19,6 +19,7 @@ class RealNamed
* @param Request $request * @param Request $request
* @param Closure $next * @param Closure $next
* @param string $guard * @param string $guard
*
* @return Response|RedirectResponse|JsonResponse * @return Response|RedirectResponse|JsonResponse
*/ */
public function handle(Request $request, Closure $next, string $guard = 'web'): Response|RedirectResponse|JsonResponse public function handle(Request $request, Closure $next, string $guard = 'web'): Response|RedirectResponse|JsonResponse

View File

@ -17,6 +17,7 @@ class RedirectIfAuthenticated
* @param Request $request * @param Request $request
* @param Closure(Request): (Response|RedirectResponse) $next * @param Closure(Request): (Response|RedirectResponse) $next
* @param string|null ...$guards * @param string|null ...$guards
*
* @return Response|RedirectResponse * @return Response|RedirectResponse
*/ */
public function handle(Request $request, Closure $next, ...$guards): Response|RedirectResponse public function handle(Request $request, Closure $next, ...$guards): Response|RedirectResponse

View File

@ -15,6 +15,7 @@ class ValidateUserIfBanned
* *
* @param Request $request * @param Request $request
* @param Closure $next * @param Closure $next
*
* @return Response|RedirectResponse|JsonResponse * @return Response|RedirectResponse|JsonResponse
*/ */
public function handle(Request $request, Closure $next): Response|RedirectResponse|JsonResponse public function handle(Request $request, Closure $next): Response|RedirectResponse|JsonResponse

View File

@ -13,10 +13,10 @@ class BaseRequest extends HttpRequest
public function json($key = null, $default = null) public function json($key = null, $default = null)
{ {
if (! isset($this->json)) { if (!isset($this->json)) {
$content = $this->getContent(); $content = $this->getContent();
$parameters = Str::length($content) > static::JSON_MAX_LENGTH ? [] : (array) json_decode($content, true); $parameters = Str::length($content) > static::JSON_MAX_LENGTH ? [] : (array)json_decode($content, true);
$this->json = new ParameterBag($parameters); $this->json = new ParameterBag($parameters);
} }

View File

@ -16,7 +16,7 @@ public function authorize(): bool
{ {
$host = $this->route('host'); $host = $this->route('host');
if (! ($host instanceof Host)) { if (!($host instanceof Host)) {
$host = (new Host)->where('id', $host)->first(); $host = (new Host)->where('id', $host)->first();
} }

View File

@ -42,7 +42,7 @@ public function __construct(HostModel $host, $type = 'post', $pass_unavailable =
*/ */
public function handle(): void public function handle(): void
{ {
if (! isset($this->host)) { if (!isset($this->host)) {
return; return;
} }
@ -66,7 +66,7 @@ public function handle(): void
switch ($this->type) { switch ($this->type) {
case 'patch': case 'patch':
$response = $host->module->http()->patch('hosts/'.$host->id, $host->toArray()); $response = $host->module->http()->patch('hosts/' . $host->id, $host->toArray());
break; break;
case 'post': case 'post':
@ -74,7 +74,7 @@ public function handle(): void
break; break;
case 'delete': case 'delete':
$response = $host->module->baseRequest('delete', 'hosts/'.$host->id); $response = $host->module->baseRequest('delete', 'hosts/' . $host->id);
// if successful // if successful
if ($response['status'] === 404) { if ($response['status'] === 404) {
@ -85,7 +85,7 @@ public function handle(): void
} }
if ($this->type !== 'delete') { if ($this->type !== 'delete') {
if (! $response->successful()) { if (!$response->successful()) {
$host->status = 'error'; $host->status = 'error';
} }

View File

@ -38,7 +38,7 @@ public function handle(): void
$response = $host->module->http()->post('hosts', $host->toArray()); $response = $host->module->http()->post('hosts', $host->toArray());
if (! $response->successful()) { if (!$response->successful()) {
$host->status = 'error'; $host->status = 'error';
} }

View File

@ -36,14 +36,14 @@ public function handle(): void
{ {
$host = $this->host; $host = $this->host;
$response = $host->module->baseRequest('get', 'hosts/'.$host->id); $response = $host->module->baseRequest('get', 'hosts/' . $host->id);
if ($response['status'] === 200) { if ($response['status'] === 200) {
Log::debug($host->module->name.' '.$host->name.' '.$host->id.' 更新成功。', $response['json']); Log::debug($host->module->name . ' ' . $host->name . ' ' . $host->id . ' 更新成功。', $response['json']);
$host->update(Arr::except($response['json'], ['id', 'user_id', 'module_id', 'created_at', 'updated_at'])); $host->update(Arr::except($response['json'], ['id', 'user_id', 'module_id', 'created_at', 'updated_at']));
} elseif ($response['status'] === 404) { } else if ($response['status'] === 404) {
if ($host->status !== 'unavailable') { if ($host->status !== 'unavailable') {
Log::warning($host->module->name.' '.$host->name.' '.$host->id.' 不存在,标记为不可用。'); Log::warning($host->module->name . ' ' . $host->name . ' ' . $host->id . ' 不存在,标记为不可用。');
$host->status = 'unavailable'; $host->status = 'unavailable';
$host->save(); $host->save();
} }

View File

@ -37,7 +37,7 @@ private function send(Module $module): void
{ {
$data = $module->calculate(); $data = $module->calculate();
if (! $data) { if (!$data) {
return; return;
} }
@ -68,7 +68,7 @@ private function send(Module $module): void
} }
} }
$resp = Http::post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='.$wecom_key, [ $resp = Http::post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=' . $wecom_key, [
'msgtype' => 'markdown', 'msgtype' => 'markdown',
'markdown' => [ 'markdown' => [
'content' => $text, 'content' => $text,

View File

@ -43,7 +43,7 @@ public function handle(): void
$emqx = new EmqxSupport(); $emqx = new EmqxSupport();
if ($this->client_id) { if ($this->client_id) {
$emqx->api()->delete('/clients/'.$this->client_id); $emqx->api()->delete('/clients/' . $this->client_id);
} }
if ($this->username) { if ($this->username) {

View File

@ -31,7 +31,7 @@ public function handle(): void
{ {
(new Balance)->where('paid_at', null)->chunk(100, function ($balances) { (new Balance)->where('paid_at', null)->chunk(100, function ($balances) {
foreach ($balances as $balance) { foreach ($balances as $balance) {
if (! $this->checkAndCharge($balance, true)) { if (!$this->checkAndCharge($balance, true)) {
if (now()->diffInDays($balance->created_at) > 1) { if (now()->diffInDays($balance->created_at) > 1) {
$balance->delete(); $balance->delete();
} }

View File

@ -34,7 +34,7 @@ public function handle(): void
{ {
$birthday_group = (new UserGroup)->find(config('settings.user_groups.birthday_group_id')); $birthday_group = (new UserGroup)->find(config('settings.user_groups.birthday_group_id'));
if (! $birthday_group) { if (!$birthday_group) {
return; return;
} }

View File

@ -57,7 +57,7 @@ public function handle(): void
try { try {
$response = $workOrder->module->http()->retry(3, 100)->post('work-orders', $workOrder->toArray()); $response = $workOrder->module->http()->retry(3, 100)->post('work-orders', $workOrder->toArray());
if (! $response->successful()) { if (!$response->successful()) {
Log::warning('推送工单失败', [ Log::warning('推送工单失败', [
'work_order_id' => $workOrder->id, 'work_order_id' => $workOrder->id,
'response' => $response->body(), 'response' => $response->body(),
@ -69,7 +69,7 @@ public function handle(): void
Log::warning($e->getMessage()); Log::warning($e->getMessage());
} }
if (! $success) { if (!$success) {
$workOrder->status = 'error'; $workOrder->status = 'error';
} }

View File

@ -47,7 +47,7 @@ public function handle(): void
$reply = $this->reply->toArray(); $reply = $this->reply->toArray();
if ($this->type == 'post') { if ($this->type == 'post') {
$response = $this->reply->workOrder->module->http()->post('work-orders/'.$this->reply->workOrder->id.'/replies', $reply); $response = $this->reply->workOrder->module->http()->post('work-orders/' . $this->reply->workOrder->id . '/replies', $reply);
if ($response->successful()) { if ($response->successful()) {
$this->reply->update([ $this->reply->update([
@ -58,7 +58,7 @@ public function handle(): void
'is_pending' => true, 'is_pending' => true,
]); ]);
} }
} elseif ($this->type == 'patch') { } else if ($this->type == 'patch') {
// 不更新 is_pending // 不更新 is_pending
if ($this->reply->workOrder->isPlatform()) { if ($this->reply->workOrder->isPlatform()) {
$this->reply->update([ $this->reply->update([
@ -68,9 +68,9 @@ public function handle(): void
return; return;
} }
$this->reply->workOrder->module->http()->patch('work-orders/'.$this->reply->workOrder->id.'/replies/'.$this->reply->id, $reply); $this->reply->workOrder->module->http()->patch('work-orders/' . $this->reply->workOrder->id . '/replies/' . $this->reply->id, $reply);
} elseif ($this->type == 'delete') { } else if ($this->type == 'delete') {
$response = $this->reply->workOrder->module->http()->delete('work-orders/'.$this->reply->workOrder->id.'/replies/'.$this->reply->id); $response = $this->reply->workOrder->module->http()->delete('work-orders/' . $this->reply->workOrder->id . '/replies/' . $this->reply->id);
if ($response->successful()) { if ($response->successful()) {
$this->reply->delete(); $this->reply->delete();

View File

@ -47,17 +47,17 @@ public function handle(): void
if ($this->type == 'post') { if ($this->type == 'post') {
$response = $this->workOrder->module->http()->post('work-orders', $this->workOrder->toArray()); $response = $this->workOrder->module->http()->post('work-orders', $this->workOrder->toArray());
} elseif ($this->type == 'put') { } else if ($this->type == 'put') {
$response = $this->workOrder->module->http()->put('work-orders/'.$this->workOrder->id, $this->workOrder->toArray()); $response = $this->workOrder->module->http()->put('work-orders/' . $this->workOrder->id, $this->workOrder->toArray());
} else { } else {
$response = $this->workOrder->module->http()->delete('work-orders/'.$this->workOrder->id); $response = $this->workOrder->module->http()->delete('work-orders/' . $this->workOrder->id);
if ($response->successful()) { if ($response->successful()) {
$this->workOrder->delete(); $this->workOrder->delete();
} }
} }
if (! $response->successful()) { if (!$response->successful()) {
Log::debug('WorkOrder push failed', [ Log::debug('WorkOrder push failed', [
'type' => $this->type, 'type' => $this->type,
'response' => $response->json(), 'response' => $response->json(),

View File

@ -4,11 +4,11 @@
use App\Events\Users; use App\Events\Users;
use App\Notifications\User\UserCharged; use App\Notifications\User\UserCharged;
use function auth;
use GeneaLabs\LaravelModelCaching\Traits\Cachable; use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo as BelongsToAlias; use Illuminate\Database\Eloquent\Relations\BelongsTo as BelongsToAlias;
use Illuminate\Notifications\Notifiable; use Illuminate\Notifications\Notifiable;
use function auth;
class Balance extends Model class Balance extends Model
{ {
@ -36,7 +36,7 @@ protected static function boot()
// $balance->remaining_amount = $balance->amount; // $balance->remaining_amount = $balance->amount;
$balance->remaining_amount = 0; $balance->remaining_amount = 0;
$balance->order_id = date('YmdHis').$balance->id.rand(1000, 9999); $balance->order_id = date('YmdHis') . $balance->id . rand(1000, 9999);
}); });
static::created(function (self $balance) { static::created(function (self $balance) {
@ -67,7 +67,7 @@ public function scopeThisUser($query)
public function canPay(): bool public function canPay(): bool
{ {
return ! $this->isPaid() && ! $this->isOverdue(); return !$this->isPaid() && !$this->isOverdue();
} }
public function isPaid(): bool public function isPaid(): bool
@ -77,6 +77,6 @@ public function isPaid(): bool
public function isOverdue(): bool public function isOverdue(): bool
{ {
return $this->created_at->diffInDays(now()) > 1 && ! $this->isPaid(); return $this->created_at->diffInDays(now()) > 1 && !$this->isPaid();
} }
} }

View File

@ -102,13 +102,13 @@ protected static function boot()
// }); // });
static::deleting(function ($model) { static::deleting(function ($model) {
Cache::forget('user_tasks_'.$model->user_id); Cache::forget('user_tasks_' . $model->user_id);
}); });
static::deleted(function ($model) { static::deleted(function ($model) {
broadcast(new Users($model->user_id, 'hosts.deleted', $model)); broadcast(new Users($model->user_id, 'hosts.deleted', $model));
Cache::forget('user_tasks_'.$model->user_id); Cache::forget('user_tasks_' . $model->user_id);
Cache::forget('user_hosts_'.$model->user_id); Cache::forget('user_hosts_' . $model->user_id);
}); });
} }
@ -184,7 +184,7 @@ public function cost(string $amount = null, $auto = true): bool
$real_price = $amount ?? $this->price; $real_price = $amount ?? $this->price;
if (! $amount) { if (!$amount) {
if ($this->managed_price) { if ($this->managed_price) {
$real_price = $this->managed_price; $real_price = $this->managed_price;
} }
@ -195,7 +195,7 @@ public function cost(string $amount = null, $auto = true): bool
if ($user_group->discount !== 100 && $user_group->discount !== null) { if ($user_group->discount !== 100 && $user_group->discount !== null) {
$real_price = bcmul($real_price, bcdiv($user_group->discount, '100', 4), 4); $real_price = bcmul($real_price, bcdiv($user_group->discount, '100', 4), 4);
$append_description = ' (折扣 '.$user_group->discount.'%)'; $append_description = ' (折扣 ' . $user_group->discount . '%)';
} }
} }
@ -223,7 +223,7 @@ public function cost(string $amount = null, $auto = true): bool
$month = now()->month; $month = now()->month;
$month_cache_key = 'user_'.$this->user_id.'_month_'.$month.'_hosts_balances'; $month_cache_key = 'user_' . $this->user_id . '_month_' . $month . '_hosts_balances';
$hosts_balances = Cache::get($month_cache_key, []); $hosts_balances = Cache::get($month_cache_key, []);
// 统计 Host 消耗的 Balance // 统计 Host 消耗的 Balance
@ -277,7 +277,7 @@ public function addLog(string $amount = '0'): bool
$current_month = now()->month; $current_month = now()->month;
$current_year = now()->year; $current_year = now()->year;
$cache_key = 'module_earning_'.$this->module_id; $cache_key = 'module_earning_' . $this->module_id;
// 应支付的提成 // 应支付的提成
$commission = config('settings.billing.commission'); $commission = config('settings.billing.commission');
@ -292,7 +292,7 @@ public function addLog(string $amount = '0'): bool
$earnings = Cache::get($cache_key, []); $earnings = Cache::get($cache_key, []);
if (! isset($earnings[$current_year])) { if (!isset($earnings[$current_year])) {
$earnings[$current_year] = []; $earnings[$current_year] = [];
} }

View File

@ -17,13 +17,14 @@ class PersonalAccessToken extends SanctumPersonalAccessToken
* since we aren't going to use that column for anything. * since we aren't going to use that column for anything.
* *
* @param array $options * @param array $options
*
* @return bool * @return bool
*/ */
public function save(array $options = []): bool public function save(array $options = []): bool
{ {
$changes = $this->getDirty(); $changes = $this->getDirty();
// Check for 2 changed values because one is always the updated_at column // Check for 2 changed values because one is always the updated_at column
if (! array_key_exists('last_used_at', $changes) || count($changes) > 2) { if (!array_key_exists('last_used_at', $changes) || count($changes) > 2) {
parent::save(); parent::save();
} }

View File

@ -4,11 +4,11 @@
use App\Events\Users; use App\Events\Users;
use App\Exceptions\CommonException; use App\Exceptions\CommonException;
use function auth;
use function broadcast;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Ramsey\Uuid\Uuid; use Ramsey\Uuid\Uuid;
use function auth;
use function broadcast;
class Task extends Model class Task extends Model
{ {
@ -42,7 +42,7 @@ protected static function boot()
} }
// host_id 和 user_id 至少存在一个 // host_id 和 user_id 至少存在一个
if (! $model->host_id && ! $model->user_id) { if (!$model->host_id && !$model->user_id) {
throw new CommonException('host_id 和 user_id 至少存在一个'); throw new CommonException('host_id 和 user_id 至少存在一个');
} }

View File

@ -132,11 +132,11 @@ private function getBirthdayFromIdCard(): string
$idCard = $this->id_card; $idCard = $this->id_card;
$bir = substr($idCard, 6, 8); $bir = substr($idCard, 6, 8);
$year = (int) substr($bir, 0, 4); $year = (int)substr($bir, 0, 4);
$month = (int) substr($bir, 4, 2); $month = (int)substr($bir, 4, 2);
$day = (int) substr($bir, 6, 2); $day = (int)substr($bir, 6, 2);
return $year.'-'.$month.'-'.$day; return $year . '-' . $month . '-' . $day;
} }
public function hasBalance(string $amount = '0.01'): bool public function hasBalance(string $amount = '0.01'): bool
@ -202,6 +202,7 @@ public function startTransfer(self $to, string $amount, string|null $description
* @param string $description * @param string $description
* @param bool $fail * @param bool $fail
* @param array $options * @param array $options
*
* @return string * @return string
*/ */
public function reduce(string|null $amount = '0', string $description = '消费', bool $fail = false, array $options = []): string public function reduce(string|null $amount = '0', string $description = '消费', bool $fail = false, array $options = []): string
@ -210,7 +211,7 @@ public function reduce(string|null $amount = '0', string $description = '消费'
return $this->balance; return $this->balance;
} }
Cache::lock('user_balance_'.$this->id, 10)->block(10, function () use ($amount, $fail, $description, $options) { Cache::lock('user_balance_' . $this->id, 10)->block(10, function () use ($amount, $fail, $description, $options) {
$this->refresh(); $this->refresh();
if ($this->balance < $amount) { if ($this->balance < $amount) {
@ -247,6 +248,7 @@ public function reduce(string|null $amount = '0', string $description = '消费'
* @param string $payment * @param string $payment
* @param string $description * @param string $description
* @param array $options * @param array $options
*
* @return string * @return string
*/ */
public function charge(string|null $amount = '0', string $payment = 'console', string $description = '充值', array $options = []): string public function charge(string|null $amount = '0', string $payment = 'console', string $description = '充值', array $options = []): string
@ -255,7 +257,7 @@ public function charge(string|null $amount = '0', string $payment = 'console', s
return $this->balance; return $this->balance;
} }
Cache::lock('user_balance_'.$this->id, 10)->block(10, function () use ($amount, $description, $payment, $options) { Cache::lock('user_balance_' . $this->id, 10)->block(10, function () use ($amount, $description, $payment, $options) {
$this->refresh(); $this->refresh();
$this->balance = bcadd($this->balance, $amount, 4); $this->balance = bcadd($this->balance, $amount, 4);
$this->save(); $this->save();

View File

@ -35,6 +35,7 @@ public function users(): HasMany
* @param User $user * @param User $user
* @param UserGroup $group * @param UserGroup $group
* @param Carbon $expired_at * @param Carbon $expired_at
*
* @return User * @return User
*/ */
public function setTempGroup(User $user, self $group, Carbon $expired_at): User public function setTempGroup(User $user, self $group, Carbon $expired_at): User

View File

@ -49,11 +49,11 @@ protected static function boot()
if (auth('admin')->check()) { if (auth('admin')->check()) {
$model->role = 'admin'; $model->role = 'admin';
$model->workOrder->status = 'replied'; $model->workOrder->status = 'replied';
} elseif (auth('sanctum')->check()) { } else if (auth('sanctum')->check()) {
$model->user_id = auth('sanctum')->id(); $model->user_id = auth('sanctum')->id();
$model->role = 'user'; $model->role = 'user';
$model->workOrder->status = 'user_replied'; $model->workOrder->status = 'user_replied';
} elseif (auth('module')->check()) { } else if (auth('module')->check()) {
$model->user_id = null; $model->user_id = null;
$model->role = 'module'; $model->role = 'module';
$model->workOrder->status = 'replied'; $model->workOrder->status = 'replied';

View File

@ -55,12 +55,12 @@ protected static function boot()
$model->user_id = auth()->id(); $model->user_id = auth()->id();
if ($model->host_id) { if ($model->host_id) {
if (! $model->user_id == $model->host->user_id) { if (!$model->user_id == $model->host->user_id) {
throw new CommonException('user_id not match host user_id'); throw new CommonException('user_id not match host user_id');
} }
} }
} else { } else {
if (! $model->user_id) { if (!$model->user_id) {
throw new CommonException('user_id is required'); throw new CommonException('user_id is required');
} }
} }
@ -136,19 +136,9 @@ public function isClosed(): bool
return $this->status === 'closed'; return $this->status === 'closed';
} }
public function isWaitingForResponse(): bool
{
return $this->status === 'replied' || $this->status === 'user_replied';
}
public function isPlatform(): bool
{
return $this->module_id === null && $this->host_id === null;
}
public function markAsRead(): bool public function markAsRead(): bool
{ {
if (! $this->isWaitingForResponse()) { if (!$this->isWaitingForResponse()) {
return false; return false;
} }
@ -163,6 +153,11 @@ public function markAsRead(): bool
return true; return true;
} }
public function isWaitingForResponse(): bool
{
return $this->status === 'replied' || $this->status === 'user_replied';
}
/** /**
* @throws CommonException * @throws CommonException
*/ */
@ -181,6 +176,11 @@ public function safeDelete(): bool
return true; return true;
} }
public function isPlatform(): bool
{
return $this->module_id === null && $this->host_id === null;
}
public function routeNotificationForMail(): array public function routeNotificationForMail(): array
{ {
$user = $this->user; $user = $this->user;

View File

@ -16,24 +16,25 @@ class WeComChannel extends Notification
* *
* @param mixed $notifiable * @param mixed $notifiable
* @param Notification $notification * @param Notification $notification
*
* @return void * @return void
*/ */
public function send(mixed $notifiable, Notification $notification): void public function send(mixed $notifiable, Notification $notification): void
{ {
$data = $notification->toWeCom($notifiable); $data = $notification->toWeCom($notifiable);
if (! $data) { if (!$data) {
return; return;
} }
$view = $data['view']; $view = $data['view'];
$key = $data['wecom_key'] ?? null; $key = $data['wecom_key'] ?? null;
if (! $key) { if (!$key) {
$key = config('settings.wecom.robot_hook.default'); $key = config('settings.wecom.robot_hook.default');
} }
$resp = Http::post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='.$key, [ $resp = Http::post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=' . $key, [
'msgtype' => 'markdown', 'msgtype' => 'markdown',
'markdown' => [ 'markdown' => [
'content' => view($view, [ 'content' => view($view, [
@ -42,7 +43,7 @@ public function send(mixed $notifiable, Notification $notification): void
], ],
]); ]);
if (! $resp->successful()) { if (!$resp->successful()) {
Log::error('企业微信机器人发送失败', $data['data']); Log::error('企业微信机器人发送失败', $data['data']);
} }
} }

View File

@ -16,13 +16,14 @@ class WebChannel extends Notification
* *
* @param mixed $notifiable * @param mixed $notifiable
* @param Notification $notification * @param Notification $notification
*
* @return void * @return void
*/ */
public function send(mixed $notifiable, Notification $notification): void public function send(mixed $notifiable, Notification $notification): void
{ {
$data = $notification->toArray($notifiable); $data = $notification->toArray($notifiable);
if (! $data) { if (!$data) {
return; return;
} }

View File

@ -84,7 +84,7 @@ public function toMail(): MailMessage
$email->line('生日快乐🎂') $email->line('生日快乐🎂')
->line('在生日当天,我们还为您提供了专属用户组,您可以前往仪表盘查看。') ->line('在生日当天,我们还为您提供了专属用户组,您可以前往仪表盘查看。')
->action('前往仪表盘', $url) ->action('前往仪表盘', $url)
->line('感谢您继续使用 '.config('app.display_name').'。'); ->line('感谢您继续使用 ' . config('app.display_name') . '。');
return $email; return $email;
} }

View File

@ -31,6 +31,7 @@ public function __construct(WorkOrderModel $work_order)
* *
* *
* @param WorkOrderModel $workOrder * @param WorkOrderModel $workOrder
*
* @return array * @return array
*/ */
public function via(WorkOrderModel $workOrder): array public function via(WorkOrderModel $workOrder): array
@ -49,12 +50,13 @@ public function via(WorkOrderModel $workOrder): array
* *
* *
* @param WorkOrderModel $workOrder * @param WorkOrderModel $workOrder
*
* @return MailMessage * @return MailMessage
*/ */
public function toMail(WorkOrderModel $workOrder): MailMessage public function toMail(WorkOrderModel $workOrder): MailMessage
{ {
return (new MailMessage) return (new MailMessage)
->subject('工单: '.$workOrder->title.' 状态更新。') ->subject('工单: ' . $workOrder->title . ' 状态更新。')
->line('我们查阅了您的工单并做出了相应处理。') ->line('我们查阅了您的工单并做出了相应处理。')
->line('请前往我们的仪表盘继续跟进问题。'); ->line('请前往我们的仪表盘继续跟进问题。');
} }
@ -64,13 +66,14 @@ public function toMail(WorkOrderModel $workOrder): MailMessage
* *
* *
* @param WorkOrderModel $workOrder * @param WorkOrderModel $workOrder
*
* @return array * @return array
*/ */
public function toArray(WorkOrderModel $workOrder): array public function toArray(WorkOrderModel $workOrder): array
{ {
$array = $workOrder->toArray(); $array = $workOrder->toArray();
$array['event'] = 'work-order.'.$workOrder->status; $array['event'] = 'work-order.' . $workOrder->status;
return $array; return $array;
} }

View File

@ -17,6 +17,7 @@ class WorkOrderPolicy
* *
* @param User|Module $user * @param User|Module $user
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return Response|bool * @return Response|bool
*/ */
public function view(User|Module $user, WorkOrder $workOrder): Response|bool public function view(User|Module $user, WorkOrder $workOrder): Response|bool
@ -33,6 +34,7 @@ public function view(User|Module $user, WorkOrder $workOrder): Response|bool
* *
* @param User|Module $user * @param User|Module $user
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return Response|bool * @return Response|bool
*/ */
public function update(User|Module $user, WorkOrder $workOrder): Response|bool public function update(User|Module $user, WorkOrder $workOrder): Response|bool
@ -49,6 +51,7 @@ public function update(User|Module $user, WorkOrder $workOrder): Response|bool
* *
* @param User|Module $user * @param User|Module $user
* @param WorkOrder $workOrder * @param WorkOrder $workOrder
*
* @return Response|bool * @return Response|bool
*/ */
public function delete(User|Module $user, WorkOrder $workOrder): Response|bool public function delete(User|Module $user, WorkOrder $workOrder): Response|bool

View File

@ -60,13 +60,14 @@ public static function registerThisNode($report = true): void
public static function hset($key, $value, $data = []): void public static function hset($key, $value, $data = []): void
{ {
/** @noinspection PhpUndefinedMethodInspection */ /** @noinspection PhpUndefinedMethodInspection */
Redis::hset(self::$prefix.$key, $value, json_encode($data)); Redis::hset(self::$prefix . $key, $value, json_encode($data));
} }
/** /**
* @param string|array $events 事件名称 * @param string|array $events 事件名称
* @param $callback callable 回调函数,接收一个参数,为事件数据。 * @param $callback callable 回调函数,接收一个参数,为事件数据。
* @param $ignore_self bool 是否忽略此节点的消息。 * @param $ignore_self bool 是否忽略此节点的消息。
*
* @return void * @return void
*/ */
public static function listen(string|array $events, callable $callback, bool $ignore_self = true): void public static function listen(string|array $events, callable $callback, bool $ignore_self = true): void
@ -96,13 +97,13 @@ public static function listen(string|array $events, callable $callback, bool $ig
public static function get($key, $default = null): string|array|null public static function get($key, $default = null): string|array|null
{ {
/** @noinspection PhpUndefinedMethodInspection */ /** @noinspection PhpUndefinedMethodInspection */
return Redis::get(self::$prefix.$key, $default); return Redis::get(self::$prefix . $key, $default);
} }
public static function forget($key): void public static function forget($key): void
{ {
/** @noinspection PhpUndefinedMethodInspection */ /** @noinspection PhpUndefinedMethodInspection */
Redis::forget(self::$prefix.$key); Redis::forget(self::$prefix . $key);
} }
// forever // forever
@ -114,13 +115,13 @@ public static function forever($key, $value): void
public static function set($key, $value, $ttl = null): void public static function set($key, $value, $ttl = null): void
{ {
/** @noinspection PhpUndefinedMethodInspection */ /** @noinspection PhpUndefinedMethodInspection */
Redis::set(self::$prefix.$key, $value, $ttl); Redis::set(self::$prefix . $key, $value, $ttl);
} }
public static function hget($key, $hashKey, $default = []): string|array|null public static function hget($key, $hashKey, $default = []): string|array|null
{ {
/** @noinspection PhpUndefinedMethodInspection */ /** @noinspection PhpUndefinedMethodInspection */
$value = Redis::hget(self::$prefix.$key, $hashKey); $value = Redis::hget(self::$prefix . $key, $hashKey);
return $value ?: $default; return $value ?: $default;
} }
@ -147,7 +148,7 @@ public static function nodes($hide_ip = false): array
public static function hgetAll($hashKey, $default = []): array public static function hgetAll($hashKey, $default = []): array
{ {
/** @noinspection PhpUndefinedMethodInspection */ /** @noinspection PhpUndefinedMethodInspection */
$value = Redis::hgetall(self::$prefix.$hashKey); $value = Redis::hgetall(self::$prefix . $hashKey);
return $value ?: $default; return $value ?: $default;
} }

View File

@ -26,7 +26,7 @@ public function kickClient($client_id = null, $username = null, bool $like_usern
} }
if ($client_id) { if ($client_id) {
$this->api()->delete('/clients/'.$client_id); $this->api()->delete('/clients/' . $client_id);
} }
if ($username) { if ($username) {
@ -44,7 +44,7 @@ public function api(): PendingRequest
*/ */
public function client(string $client_id) public function client(string $client_id)
{ {
$response = $this->api()->get('clients/'.$client_id); $response = $this->api()->get('clients/' . $client_id);
if ($response->successful()) { if ($response->successful()) {
return $response->json(); return $response->json();
@ -89,7 +89,7 @@ public function clients($params = [])
$response = $this->api()->get('clients', $params); $response = $this->api()->get('clients', $params);
} /** @noinspection PhpRedundantCatchClauseInspection */ catch (ConnectionException $e) { } /** @noinspection PhpRedundantCatchClauseInspection */ catch (ConnectionException $e) {
Log::error('emqx connect failed.', [$e]); Log::error('emqx connect failed.', [$e]);
throw new EmqxSupportException('EMQX API 无法连接。'.$e->getMessage()); throw new EmqxSupportException('EMQX API 无法连接。' . $e->getMessage());
} }
if ($response->successful()) { if ($response->successful()) {

View File

@ -25,7 +25,7 @@ public function __construct()
$this->app_code = config('settings.supports.real_name.code'); $this->app_code = config('settings.supports.real_name.code');
$this->http = Http::withHeaders([ $this->http = Http::withHeaders([
'Authorization' => 'APPCODE '.$this->app_code, 'Authorization' => 'APPCODE ' . $this->app_code,
'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8', 'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8',
'Accept' => 'application/json', 'Accept' => 'application/json',
])->baseUrl($this->url); ])->baseUrl($this->url);
@ -45,7 +45,7 @@ public function create($user_id, $name, $id_card): string
{ {
$id = Str::random(32); $id = Str::random(32);
Cache::remember('real_name:'.$id, 600, function () use ($user_id, $name, $id_card) { Cache::remember('real_name:' . $id, 600, function () use ($user_id, $name, $id_card) {
return [ return [
'user_id' => $user_id, 'user_id' => $user_id,
'name' => $name, 'name' => $name,
@ -65,9 +65,9 @@ public function create($user_id, $name, $id_card): string
*/ */
private function submit(string $id): string private function submit(string $id): string
{ {
$real_name = Cache::get('real_name:'.$id); $real_name = Cache::get('real_name:' . $id);
if (! $real_name) { if (!$real_name) {
abort(404, '找不到实名认证请求'); abort(404, '找不到实名认证请求');
} }
@ -75,7 +75,7 @@ private function submit(string $id): string
'bizNo' => $id, 'bizNo' => $id,
'idNumber' => $real_name['id_card'], 'idNumber' => $real_name['id_card'],
'idName' => $real_name['name'], 'idName' => $real_name['name'],
'pageTitle' => config('app.display_name').' 实名认证', 'pageTitle' => config('app.display_name') . ' 实名认证',
'notifyUrl' => route('public.real-name.notify'), 'notifyUrl' => route('public.real-name.notify'),
'procedureType' => 'video', 'procedureType' => 'video',
'txtBgColor' => '#cccccc', 'txtBgColor' => '#cccccc',
@ -90,7 +90,7 @@ private function submit(string $id): string
$resp = $this->http->asForm()->post('/edis_ctid_id_name_video_ocr_h5', $data)->json(); $resp = $this->http->asForm()->post('/edis_ctid_id_name_video_ocr_h5', $data)->json();
if (! $resp || $resp['code'] !== '0000') { if (!$resp || $resp['code'] !== '0000') {
throw new CommonException('调用远程服务器时出现了问题,请检查身份证号码是否正确。'); throw new CommonException('调用远程服务器时出现了问题,请检查身份证号码是否正确。');
} }
@ -101,6 +101,7 @@ private function submit(string $id): string
* 验证实名认证请求 * 验证实名认证请求
* *
* @param array $request * @param array $request
*
* @return array|bool * @return array|bool
*/ */
public function verify(array $request): array|bool public function verify(array $request): array|bool
@ -111,7 +112,7 @@ public function verify(array $request): array|bool
$verify = $this->verifyIfSuccess($request['data'], $request['sign']); $verify = $this->verifyIfSuccess($request['data'], $request['sign']);
if (! $verify) { if (!$verify) {
Log::debug('实名认证签名验证失败', $request); Log::debug('实名认证签名验证失败', $request);
return false; return false;
@ -121,9 +122,9 @@ public function verify(array $request): array|bool
return false; return false;
} }
$return = Cache::get('real_name:'.$data['bizNo'], false); $return = Cache::get('real_name:' . $data['bizNo'], false);
Cache::forget('real_name:'.$data['bizNo']); Cache::forget('real_name:' . $data['bizNo']);
return $return; return $return;
} }
@ -140,7 +141,7 @@ private function verifyIfSuccess(string $request, string $sign): bool
$public_key = openssl_pkey_get_public($public_key); $public_key = openssl_pkey_get_public($public_key);
if (! $public_key) { if (!$public_key) {
abort(500, '公钥错误'); abort(500, '公钥错误');
} }
@ -155,6 +156,6 @@ public function getBirthday(string $id_card): string
$month = substr($id_card, 10, 2); $month = substr($id_card, 10, 2);
$day = substr($id_card, 12, 2); $day = substr($id_card, 12, 2);
return $year.'-'.$month.'-'.$day; return $year . '-' . $month . '-' . $day;
} }
} }