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

64 lines
2.1 KiB
PHP

<?php
namespace App\Http\Middleware\App;
use Closure;
use App\Http\Response\ResponseJson;
use App\Models\UserPreview;
class CheckAppRankLimit
{
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();
if (empty($user)) {
$user = $this->authCheck();
}
if (empty($user)) {
return $this->failure('你的账号还没登录');
}
if ($user->type != 'single' || $user->live_match_maker) {
return $next($request);
}
//检查自己是否是否是会员
$is_super_rank = $user->isSuperRank();
if (empty($is_super_rank)) {
$type = 'rank';
//如果是查看用户详情,普通用户可以每天查看七个
if ($request->route()->getName() === 'other_user_infor') {
$count = 7;
$other_user_id = $request->id;
$result = $this->checkPreview($user, $count, $other_user_id);
if (empty($result)) {
return $this->failv2('普通用户每天只可查看'.$count.'位用户,升级会员可查看更多!', compact('type'));
}else{
return $next($request);
}
}
return $this->failv2('购买超级会员获得更多用户权限', compact('type'));
}
return $next($request);
}
//如果是查看用户详情,普通用户可以每天查看七个
public function checkPreview($user, $count, $other_user_id)
{
$start_time = date('Y-m-d');
//普通用户可以查看7个用户
$history_count = UserPreview::where('preview_user_id', $user->id)->where('preview_time', '>', $start_time)->distinct('user_id')->pluck('user_id')->toArray();
$in_preview = in_array($other_user_id, $history_count);
if (count($history_count) >= $count && empty($in_preview)) {
return false;
}
return true;
}
}