love_php/app/Http/Middleware/CheckSendChatMessage.php
2026-04-02 09:20:51 +08:00

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);
}
}