CheckSiteOpenMiddleware.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020/7/23
  7. *
  8. *
  9. */
  10. namespace app\common\middleware;
  11. use app\common\repositories\user\UserRepository;
  12. use app\common\repositories\user\UserVisitDayRepository;
  13. use app\Request;
  14. use crmeb\exceptions\ApiException;
  15. use crmeb\exceptions\AuthException;
  16. use crmeb\interfaces\MiddlewareInterface;
  17. use crmeb\services\JwtTokenService;
  18. use think\cache\driver\Redis;
  19. use think\facade\Cache;
  20. use think\facade\Db;
  21. use think\Response;
  22. class CheckSiteOpenMiddleware implements MiddlewareInterface
  23. {
  24. public function handle(Request $request, \Closure $next): Response
  25. {
  26. if (systemConfig('site_open') === '0') {
  27. return app('json')->make(501, '站点已关闭');
  28. }
  29. if($request->header('source')=='yhc') {
  30. try {
  31. $token = trim($request->header('X-Token'));
  32. if (strpos($token, 'Bearer') === 0) {
  33. $token = trim(substr($token, 6));
  34. if ($token) {
  35. $repository = app()->make(UserRepository::class);
  36. $service = new JwtTokenService();
  37. try {
  38. $payload = $service->parseToken($token);
  39. if ('user' == $payload->jti[1]) {
  40. $user = $repository->get($payload->jti[0]);
  41. if ($user) {
  42. $merId = $request->header('merId');
  43. $enterprise_user = Db::name("enterprise_user")->where(['uid' => $user['uid'], 'mer_id' => $merId])->find();
  44. if ($enterprise_user && $enterprise_user['status'] == 1) {
  45. throw new AuthException('账号已被禁用,请联系公司客服处理~',41000);
  46. }
  47. }
  48. // var_dump($user['uid']);
  49. }
  50. } catch (ApiException $e) {//Token 过期
  51. // throw new AuthException('token 已过期');
  52. }
  53. }
  54. }
  55. }catch (ApiException $e) {//Token 过期
  56. // throw new AuthException('token 已过期');
  57. }
  58. }
  59. /**
  60. * @var $redis Redis
  61. */
  62. // 记录浏览量
  63. // $userVisitDayRepository = app()->make(UserVisitDayRepository::class);
  64. // $userVisitDayRepository->incrUserVisitDay(date('Y-m-d'));
  65. $redis = Cache::store('redis')->handler();
  66. $redis->incr('user_visit_day');
  67. $ip = $request->header('x-forwarded-for');
  68. if (!empty($ip)) {
  69. $redis->lpush('user_visit', $ip);
  70. }
  71. return $next($request);
  72. }
  73. }