2023-01-14 21:37:25 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Public;
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
use App\Models\User;
|
2023-02-05 18:56:30 +00:00
|
|
|
use App\Notifications\User\UserNotification;
|
2023-01-14 21:37:25 +00:00
|
|
|
use App\Support\RealNameSupport;
|
2023-01-16 20:36:43 +00:00
|
|
|
use Illuminate\Http\JsonResponse;
|
2023-01-14 21:37:25 +00:00
|
|
|
use Illuminate\Http\Request;
|
2023-02-10 13:23:09 +00:00
|
|
|
use Illuminate\Support\Facades\Cache;
|
2023-01-15 02:09:24 +00:00
|
|
|
use Illuminate\Support\Facades\Log;
|
2023-01-16 20:36:43 +00:00
|
|
|
use Illuminate\View\View;
|
2023-01-14 21:37:25 +00:00
|
|
|
|
|
|
|
class RealNameController extends Controller
|
|
|
|
{
|
2023-01-16 20:36:43 +00:00
|
|
|
public function verify(Request $request): JsonResponse
|
2023-01-14 21:37:25 +00:00
|
|
|
{
|
2023-02-10 05:06:42 +00:00
|
|
|
Log::debug('实名认证回调', $request->all());
|
|
|
|
|
|
|
|
return $this->validateOrSave($request)
|
|
|
|
? $this->success()
|
|
|
|
: $this->failed();
|
|
|
|
}
|
|
|
|
|
|
|
|
public function validateOrSave(Request $request): bool
|
|
|
|
{
|
|
|
|
Log::debug('实名认证回调', $request->all());
|
|
|
|
|
2023-01-14 21:37:25 +00:00
|
|
|
$result = (new RealNameSupport())->verify($request->all());
|
|
|
|
|
2023-02-07 09:04:11 +00:00
|
|
|
if (! $result) {
|
2023-01-15 02:09:24 +00:00
|
|
|
Log::warning('实名认证失败', $request->all());
|
2023-01-30 16:14:07 +00:00
|
|
|
|
2023-02-10 05:06:42 +00:00
|
|
|
return false;
|
2023-01-14 21:37:25 +00:00
|
|
|
}
|
|
|
|
|
2023-02-10 18:17:59 +00:00
|
|
|
Cache::lock('user_realname', 60)->get(function () use ($result) {
|
2023-02-10 13:23:09 +00:00
|
|
|
$user = (new User)->find($result['user_id']);
|
|
|
|
|
|
|
|
if ($user->real_name_verified_at) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
$user->real_name = $result['name'];
|
|
|
|
$user->id_card = $result['id_card'];
|
|
|
|
$user->save();
|
|
|
|
|
|
|
|
$user->reduce((string) config('settings.supports.real_name.price'), '实名认证费用。');
|
2023-01-14 21:37:25 +00:00
|
|
|
|
2023-02-10 13:23:09 +00:00
|
|
|
$user->notify(new UserNotification('再次欢迎您!', '再次欢迎您!您的实人认证已通过。'));
|
2023-02-05 18:56:30 +00:00
|
|
|
|
2023-02-10 13:23:09 +00:00
|
|
|
return true;
|
|
|
|
});
|
2023-01-14 21:37:25 +00:00
|
|
|
|
2023-02-10 05:06:42 +00:00
|
|
|
return true;
|
2023-01-14 21:37:25 +00:00
|
|
|
}
|
2023-02-12 19:12:26 +00:00
|
|
|
|
|
|
|
public function process(Request $request): View
|
|
|
|
{
|
|
|
|
Log::debug('实名认证回调', $request->all());
|
|
|
|
|
|
|
|
return $this->validateOrSave($request)
|
|
|
|
? view('real_name.success')
|
|
|
|
: view('real_name.failed');
|
|
|
|
}
|
2023-01-14 21:37:25 +00:00
|
|
|
}
|