love_php/app/Http/Middleware/CheckCommunity.php

102 lines
2.7 KiB
PHP
Raw Normal View History

2026-04-02 09:20:51 +08:00
<?php
namespace App\Http\Middleware;
use Closure;
use App\Models\Live\Viewer;
use App\Models\User;
use App\Services\UserService;
class CheckCommunity
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$wechatUser = session('wechat.oauth_user.new');
if(empty($wechatUser)){
$openid = $request->openid;
}else{
$openid = $wechatUser->getId();
}
$viewer = Viewer::with('referrer:id,openid')->where('openid', $openid)->first();
if(empty($viewer->mobile)){
$is_auth = 0;
return $this->failure('');
}
$user = User::where('mobile', $viewer->mobile)->first();
if(empty($user)){
$request->merge([
'mobile'=>$viewer->mobile,
'nickname'=>$viewer->nickname,
'name'=>$viewer->nickname,
'from_official_openid'=>$viewer->referrer ? $viewer->referrer->openid : '',
'sex'=>$viewer->sex,
'avatar'=>$viewer->avatar,
'type'=>'single',
'passworde'=>bcrypt($viewer->mobile),
]);
$userCon = New UserService();
//注册新用户
$user = $userCon->loginByMobile($request);
}
$request->merge(['user'=>$user]);
//同步nickname、avatar
if($user->nickname != $viewer->nickname){
$user->nickname = $viewer->nickname;
}
if($user->circle_avatar != $viewer->avatar){
$user->circle_avatar = $viewer->avatar;
}
$user->save();
return $next($request);
}
public function success($msg, $data=[]){
$result = [
'code'=> 0,
'message'=> $msg,
'data'=> $data,
];
$response = Response()->json($result);
return $response;
}
//接口返回失败
public function failure($msg, $data=[], $jsonp=false){
$result = [
'code'=> 1,
'message'=> $msg,
'data'=> $data,
];
if($jsonp){
return Response()->jsonp('callback', $result);
}else{
return Response()->json($result);
}
}
//接口返回失败
public function fail($msg, $data=[], $jsonp=false){
$result = [
'code'=> 2,
'message'=> $msg,
'data'=> $data,
];
if($jsonp){
return Response()->jsonp('callback', $result);
}else{
return Response()->json($result);
}
}
}