first
This commit is contained in:
114
modules/User/Http/Controllers/Api/Auth/SmsController.php
Normal file
114
modules/User/Http/Controllers/Api/Auth/SmsController.php
Normal file
@@ -0,0 +1,114 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\User\Http\Controllers\Api\Auth;
|
||||
|
||||
use App\Api\Controllers\Controller;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Jason\Api\Api;
|
||||
use Modules\User\Events\UserLoginSuccess;
|
||||
use Modules\User\Facades\Sms;
|
||||
use Modules\User\Http\Requests\LoginSmsRequest;
|
||||
use Modules\User\Http\Requests\SmsRequest;
|
||||
use Modules\User\Models\User;
|
||||
|
||||
class SmsController extends Controller
|
||||
{
|
||||
|
||||
/**
|
||||
* Notes : 获取登录短信验证码
|
||||
*
|
||||
* @Date : 2021/5/26 4:59 下午
|
||||
* @Author : <Jason.C>
|
||||
* @param SmsRequest $request
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function send(SmsRequest $request): JsonResponse
|
||||
{
|
||||
$mobile = $request->mobileNo;
|
||||
|
||||
try {
|
||||
Sms::sendVerificationCode($mobile);
|
||||
$isExists = User::where('username', $mobile)->exists();
|
||||
return $this->success([
|
||||
'new' => ! $isExists,
|
||||
'message' => '短信发送成功',
|
||||
]);
|
||||
} catch (Exception $exception) {
|
||||
return $this->failed($exception->getException('aliyun')->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Notes : 短信验证码登录
|
||||
*
|
||||
* @Date : 2021/7/20 10:15 上午
|
||||
* @Author : <Jason.C>
|
||||
* @param LoginSmsRequest $request
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function login(LoginSmsRequest $request): JsonResponse
|
||||
{
|
||||
$mobileNo = $request->mobileNo;
|
||||
$code = $request->code;
|
||||
$invite_code = $request->invite ?? '';
|
||||
$channel_code = $request->channel ?? '';//渠道
|
||||
$channel = '';
|
||||
if ($channel_code) {
|
||||
$channel = UserChannel::query()
|
||||
->where('code', $channel_code)
|
||||
->first();
|
||||
}
|
||||
|
||||
$parent = 0;
|
||||
|
||||
if ($invite_code) {
|
||||
$invite = Hashids::connection('code')->decode($invite_code);
|
||||
|
||||
if (empty($invite)) {
|
||||
return $this->failed('邀请码不正确');
|
||||
}
|
||||
$parent = $invite[0];
|
||||
$parentUser = User::find($parent);
|
||||
|
||||
//普通用户无法分享
|
||||
if ($parentUser && $parentUser->identityFirst()->id == 1) {
|
||||
$parent = 0;
|
||||
}
|
||||
}
|
||||
|
||||
$check = Sms::checkCode($mobileNo, $code);
|
||||
if ($check == false) {
|
||||
return $this->failed('验证码不正确', 422);
|
||||
}
|
||||
$user = User::firstOrCreate([
|
||||
'username' => $mobileNo,
|
||||
], [
|
||||
'parent_id' => $parent,
|
||||
'password' => 111111,
|
||||
]);
|
||||
|
||||
$is_new = $user->wasRecentlyCreated;
|
||||
|
||||
$message = '';
|
||||
if ($is_new) {
|
||||
if ($user->parent && $parent && $user->parent->id != $parent) {
|
||||
$message = "您已与用户{$user->parent->info->nickname}绑定隶属关系,此次邀请码无效";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
$token = Api::login($user);
|
||||
|
||||
event(new UserLoginSuccess($user, $request, '手机验证码'));
|
||||
|
||||
return $this->success([
|
||||
'token_type' => 'Bearer',
|
||||
'access_token' => $token,
|
||||
'message' => $message,
|
||||
'is_new' => $is_new,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user