50 lines
1.7 KiB
PHP
50 lines
1.7 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Middleware;
|
||
|
|
|
||
|
|
use Closure;
|
||
|
|
use App\Services\UserService;
|
||
|
|
use App\Http\Response\ResponseJson;
|
||
|
|
use App\Models\ChatMessage;
|
||
|
|
use App\Models\User;
|
||
|
|
use App\Models\UserInfo;
|
||
|
|
class CheckSendChatMessage
|
||
|
|
{
|
||
|
|
use ResponseJson;
|
||
|
|
/**
|
||
|
|
* Handle an incoming request.
|
||
|
|
*
|
||
|
|
* @param \Illuminate\Http\Request $request
|
||
|
|
* @param \Closure $next
|
||
|
|
* @return mixed
|
||
|
|
*/
|
||
|
|
public function handle($request, Closure $next)
|
||
|
|
{
|
||
|
|
$user = auth()->user();
|
||
|
|
$is_super_rank = $user->isSuperRank();
|
||
|
|
$is_temp_rank = $user->isTempMember();
|
||
|
|
//是否是好友
|
||
|
|
$other_user = $request->user?:null;
|
||
|
|
$other_user = User::where('id',$other_user)->first();
|
||
|
|
$servicer_ids = UserInfo::where('is_service_client', 1)->pluck('user_id')->toArray();
|
||
|
|
if ($other_user) {
|
||
|
|
//是否是客服
|
||
|
|
if (in_array($other_user->id, $servicer_ids)) return $next($request);
|
||
|
|
if (in_array($user->id, $servicer_ids)) return $next($request);
|
||
|
|
// 是否是好友
|
||
|
|
$result = $user->isIMFriend($other_user->id);
|
||
|
|
$result = $user->isFriend($other_user);
|
||
|
|
if (empty($result)) return $this->failure('该用户还不是你的好友。');
|
||
|
|
$client = $request->header('client-os');
|
||
|
|
if ($client == 'IOS') return $next($request);
|
||
|
|
if (empty($is_temp_rank) && empty($is_super_rank)) {//如果不是会员 可以聊三句
|
||
|
|
$count = $user->chatMessageCountWithUser($other_user->id);
|
||
|
|
$type = 'vip';
|
||
|
|
if ($count >= 3) return $this->failv2('非超级会员聊天限制', compact('type'));
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return $next($request);
|
||
|
|
}
|
||
|
|
}
|