mirror of
				https://github.com/v2board/v2board.git
				synced 2025-10-31 17:31:49 +08:00 
			
		
		
		
	update: new auth
This commit is contained in:
		| @@ -1,53 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| namespace App\Console\Commands; |  | ||||||
|  |  | ||||||
| use App\Models\User; |  | ||||||
| use Illuminate\Console\Command; |  | ||||||
|  |  | ||||||
| class CheckUser extends Command |  | ||||||
| { |  | ||||||
|     /** |  | ||||||
|      * The name and signature of the console command. |  | ||||||
|      * |  | ||||||
|      * @var string |  | ||||||
|      */ |  | ||||||
|     protected $signature = 'check:user'; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * The console command description. |  | ||||||
|      * |  | ||||||
|      * @var string |  | ||||||
|      */ |  | ||||||
|     protected $description = '用户检查任务'; |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Create a new command instance. |  | ||||||
|      * |  | ||||||
|      * @return void |  | ||||||
|      */ |  | ||||||
|     public function __construct() |  | ||||||
|     { |  | ||||||
|         parent::__construct(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Execute the console command. |  | ||||||
|      * |  | ||||||
|      * @return mixed |  | ||||||
|      */ |  | ||||||
|     public function handle() |  | ||||||
|     { |  | ||||||
|         $this->resetExpiredUserPlan(); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private function resetExpiredUserPlan($day = 14) |  | ||||||
|     { |  | ||||||
|         User::where('expired_at', '<', $day * 86400) |  | ||||||
|             ->whereNotNull('expired_at') |  | ||||||
|             ->update([ |  | ||||||
|             'plan_id' => NULL, |  | ||||||
|             'group_id' => NULL |  | ||||||
|         ]); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @@ -33,7 +33,6 @@ class Kernel extends ConsoleKernel | |||||||
|         $schedule->command('check:order')->everyMinute(); |         $schedule->command('check:order')->everyMinute(); | ||||||
|         $schedule->command('check:commission')->everyMinute(); |         $schedule->command('check:commission')->everyMinute(); | ||||||
|         $schedule->command('check:ticket')->everyMinute(); |         $schedule->command('check:ticket')->everyMinute(); | ||||||
|         $schedule->command('check:user')->daily(); |  | ||||||
|         // reset |         // reset | ||||||
|         $schedule->command('reset:traffic')->daily(); |         $schedule->command('reset:traffic')->daily(); | ||||||
|         $schedule->command('reset:log')->daily(); |         $schedule->command('reset:log')->daily(); | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ class ConfigController extends Controller | |||||||
|     public function testSendMail(Request $request) |     public function testSendMail(Request $request) | ||||||
|     { |     { | ||||||
|         $obj = new SendEmailJob([ |         $obj = new SendEmailJob([ | ||||||
|             'email' => $request->user->email, |             'email' => $request->user['email'], | ||||||
|             'subject' => 'This is v2board test email', |             'subject' => 'This is v2board test email', | ||||||
|             'template_name' => 'notify', |             'template_name' => 'notify', | ||||||
|             'template_value' => [ |             'template_value' => [ | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin; | |||||||
| use App\Http\Requests\Admin\PlanSave; | use App\Http\Requests\Admin\PlanSave; | ||||||
| use App\Http\Requests\Admin\PlanSort; | use App\Http\Requests\Admin\PlanSort; | ||||||
| use App\Http\Requests\Admin\PlanUpdate; | use App\Http\Requests\Admin\PlanUpdate; | ||||||
|  | use App\Services\PlanService; | ||||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||||
| use App\Http\Controllers\Controller; | use App\Http\Controllers\Controller; | ||||||
| use App\Models\Plan; | use App\Models\Plan; | ||||||
| @@ -16,17 +17,7 @@ class PlanController extends Controller | |||||||
| { | { | ||||||
|     public function fetch(Request $request) |     public function fetch(Request $request) | ||||||
|     { |     { | ||||||
|         $counts = User::select( |         $counts = PlanService::countActiveUsers(); | ||||||
|             DB::raw("plan_id"), |  | ||||||
|             DB::raw("count(*) as count") |  | ||||||
|         ) |  | ||||||
|             ->where('plan_id', '!=', NULL) |  | ||||||
|             ->where(function ($query) { |  | ||||||
|                 $query->where('expired_at', '>=', time()) |  | ||||||
|                     ->orWhere('expired_at', NULL); |  | ||||||
|             }) |  | ||||||
|             ->groupBy("plan_id") |  | ||||||
|             ->get(); |  | ||||||
|         $plans = Plan::orderBy('sort', 'ASC')->get(); |         $plans = Plan::orderBy('sort', 'ASC')->get(); | ||||||
|         foreach ($plans as $k => $v) { |         foreach ($plans as $k => $v) { | ||||||
|             $plans[$k]->count = 0; |             $plans[$k]->count = 0; | ||||||
|   | |||||||
| @@ -68,7 +68,7 @@ class TicketController extends Controller | |||||||
|         $ticketService->replyByAdmin( |         $ticketService->replyByAdmin( | ||||||
|             $request->input('id'), |             $request->input('id'), | ||||||
|             $request->input('message'), |             $request->input('message'), | ||||||
|             $request->user->id |             $request->user['id'] | ||||||
|         ); |         ); | ||||||
|         return response([ |         return response([ | ||||||
|             'data' => true |             'data' => true | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ class TicketController extends Controller | |||||||
|         $ticketService->replyByAdmin( |         $ticketService->replyByAdmin( | ||||||
|             $request->input('id'), |             $request->input('id'), | ||||||
|             $request->input('message'), |             $request->input('message'), | ||||||
|             $request->user->id |             $request->user['id'] | ||||||
|         ); |         ); | ||||||
|         return response([ |         return response([ | ||||||
|             'data' => true |             'data' => true | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ class CouponController extends Controller | |||||||
|         } |         } | ||||||
|         $couponService = new CouponService($request->input('code')); |         $couponService = new CouponService($request->input('code')); | ||||||
|         $couponService->setPlanId($request->input('plan_id')); |         $couponService->setPlanId($request->input('plan_id')); | ||||||
|         $couponService->setUserId($request->user->id); |         $couponService->setUserId($request->user['id']); | ||||||
|         $couponService->check(); |         $couponService->check(); | ||||||
|         return response([ |         return response([ | ||||||
|             'data' => $couponService->getCoupon() |             'data' => $couponService->getCoupon() | ||||||
|   | |||||||
| @@ -14,11 +14,11 @@ class InviteController extends Controller | |||||||
| { | { | ||||||
|     public function save(Request $request) |     public function save(Request $request) | ||||||
|     { |     { | ||||||
|         if (InviteCode::where('user_id', $request->user->id)->where('status', 0)->count() >= config('v2board.invite_gen_limit', 5)) { |         if (InviteCode::where('user_id', $request->user['id'])->where('status', 0)->count() >= config('v2board.invite_gen_limit', 5)) { | ||||||
|             abort(500, __('The maximum number of creations has been reached')); |             abort(500, __('The maximum number of creations has been reached')); | ||||||
|         } |         } | ||||||
|         $inviteCode = new InviteCode(); |         $inviteCode = new InviteCode(); | ||||||
|         $inviteCode->user_id = $request->user->id; |         $inviteCode->user_id = $request->user['id']; | ||||||
|         $inviteCode->code = Helper::randomChar(8); |         $inviteCode->code = Helper::randomChar(8); | ||||||
|         return response([ |         return response([ | ||||||
|             'data' => $inviteCode->save() |             'data' => $inviteCode->save() | ||||||
| @@ -28,7 +28,7 @@ class InviteController extends Controller | |||||||
|     public function details(Request $request) |     public function details(Request $request) | ||||||
|     { |     { | ||||||
|         return response([ |         return response([ | ||||||
|             'data' => CommissionLog::where('invite_user_id', $request->user->id) |             'data' => CommissionLog::where('invite_user_id', $request->user['id']) | ||||||
|                 ->where('get_amount', '>', 0) |                 ->where('get_amount', '>', 0) | ||||||
|                 ->select([ |                 ->select([ | ||||||
|                     'id', |                     'id', | ||||||
| @@ -43,26 +43,26 @@ class InviteController extends Controller | |||||||
|  |  | ||||||
|     public function fetch(Request $request) |     public function fetch(Request $request) | ||||||
|     { |     { | ||||||
|         $codes = InviteCode::where('user_id', $request->user->id) |         $codes = InviteCode::where('user_id', $request->user['id']) | ||||||
|             ->where('status', 0) |             ->where('status', 0) | ||||||
|             ->get(); |             ->get(); | ||||||
|         $commission_rate = config('v2board.invite_commission', 10); |         $commission_rate = config('v2board.invite_commission', 10); | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if ($user->commission_rate) { |         if ($user->commission_rate) { | ||||||
|             $commission_rate = $user->commission_rate; |             $commission_rate = $user->commission_rate; | ||||||
|         } |         } | ||||||
|         $stat = [ |         $stat = [ | ||||||
|             //已注册用户数 |             //已注册用户数 | ||||||
|             (int)User::where('invite_user_id', $request->user->id)->count(), |             (int)User::where('invite_user_id', $request->user['id'])->count(), | ||||||
|             //有效的佣金 |             //有效的佣金 | ||||||
|             (int)Order::where('status', 3) |             (int)Order::where('status', 3) | ||||||
|                 ->where('commission_status', 2) |                 ->where('commission_status', 2) | ||||||
|                 ->where('invite_user_id', $request->user->id) |                 ->where('invite_user_id', $request->user['id']) | ||||||
|                 ->sum('commission_balance'), |                 ->sum('commission_balance'), | ||||||
|             //确认中的佣金 |             //确认中的佣金 | ||||||
|             (int)Order::where('status', 3) |             (int)Order::where('status', 3) | ||||||
|                 ->where('commission_status', 0) |                 ->where('commission_status', 0) | ||||||
|                 ->where('invite_user_id', $request->user->id) |                 ->where('invite_user_id', $request->user['id']) | ||||||
|                 ->sum('commission_balance'), |                 ->sum('commission_balance'), | ||||||
|             //佣金比例 |             //佣金比例 | ||||||
|             (int)$commission_rate, |             (int)$commission_rate, | ||||||
|   | |||||||
| @@ -19,14 +19,9 @@ class KnowledgeController extends Controller | |||||||
|                 ->first() |                 ->first() | ||||||
|                 ->toArray(); |                 ->toArray(); | ||||||
|             if (!$knowledge) abort(500, __('Article does not exist')); |             if (!$knowledge) abort(500, __('Article does not exist')); | ||||||
|             $user = User::find($request->user->id); |             $user = User::find($request->user['id']); | ||||||
|             $userService = new UserService(); |             $userService = new UserService(); | ||||||
|             if ($userService->isAvailable($user)) { |             if (!$userService->isAvailable($user)) { | ||||||
|                 $appleId = config('v2board.apple_id'); |  | ||||||
|                 $appleIdPassword = config('v2board.apple_id_password'); |  | ||||||
|             } else { |  | ||||||
|                 $appleId = __('No active subscription. Unable to use our provided Apple ID'); |  | ||||||
|                 $appleIdPassword = __('No active subscription. Unable to use our provided Apple ID'); |  | ||||||
|                 $this->formatAccessData($knowledge['body']); |                 $this->formatAccessData($knowledge['body']); | ||||||
|             } |             } | ||||||
|             $subscribeUrl = Helper::getSubscribeUrl("/api/v1/client/subscribe?token={$user['token']}"); |             $subscribeUrl = Helper::getSubscribeUrl("/api/v1/client/subscribe?token={$user['token']}"); | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ class OrderController extends Controller | |||||||
| { | { | ||||||
|     public function fetch(Request $request) |     public function fetch(Request $request) | ||||||
|     { |     { | ||||||
|         $model = Order::where('user_id', $request->user->id) |         $model = Order::where('user_id', $request->user['id']) | ||||||
|             ->orderBy('created_at', 'DESC'); |             ->orderBy('created_at', 'DESC'); | ||||||
|         if ($request->input('status') !== null) { |         if ($request->input('status') !== null) { | ||||||
|             $model->where('status', $request->input('status')); |             $model->where('status', $request->input('status')); | ||||||
| @@ -50,7 +50,7 @@ class OrderController extends Controller | |||||||
|  |  | ||||||
|     public function detail(Request $request) |     public function detail(Request $request) | ||||||
|     { |     { | ||||||
|         $order = Order::where('user_id', $request->user->id) |         $order = Order::where('user_id', $request->user['id']) | ||||||
|             ->where('trade_no', $request->input('trade_no')) |             ->where('trade_no', $request->input('trade_no')) | ||||||
|             ->first(); |             ->first(); | ||||||
|         if (!$order) { |         if (!$order) { | ||||||
| @@ -72,14 +72,14 @@ class OrderController extends Controller | |||||||
|     public function save(OrderSave $request) |     public function save(OrderSave $request) | ||||||
|     { |     { | ||||||
|         $userService = new UserService(); |         $userService = new UserService(); | ||||||
|         if ($userService->isNotCompleteOrderByUserId($request->user->id)) { |         if ($userService->isNotCompleteOrderByUserId($request->user['id'])) { | ||||||
|             abort(500, __('You have an unpaid or pending order, please try again later or cancel it')); |             abort(500, __('You have an unpaid or pending order, please try again later or cancel it')); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $planService = new PlanService($request->input('plan_id')); |         $planService = new PlanService($request->input('plan_id')); | ||||||
|  |  | ||||||
|         $plan = $planService->plan; |         $plan = $planService->plan; | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|  |  | ||||||
|         if (!$plan) { |         if (!$plan) { | ||||||
|             abort(500, __('Subscription plan does not exist')); |             abort(500, __('Subscription plan does not exist')); | ||||||
| @@ -94,7 +94,7 @@ class OrderController extends Controller | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         if ($request->input('period') === 'reset_price') { |         if ($request->input('period') === 'reset_price') { | ||||||
|             if (!$user->plan_id) { |             if (!$user->plan_id || $user->expired_at < time() || $user->expired_at !== NULL) { | ||||||
|                 abort(500, __('Subscription has expired or no active subscription, unable to purchase Data Reset Package')); |                 abort(500, __('Subscription has expired or no active subscription, unable to purchase Data Reset Package')); | ||||||
|             } else { |             } else { | ||||||
|                 if ($user->plan_id !== $plan->id) { |                 if ($user->plan_id !== $plan->id) { | ||||||
| @@ -121,7 +121,7 @@ class OrderController extends Controller | |||||||
|         DB::beginTransaction(); |         DB::beginTransaction(); | ||||||
|         $order = new Order(); |         $order = new Order(); | ||||||
|         $orderService = new OrderService($order); |         $orderService = new OrderService($order); | ||||||
|         $order->user_id = $request->user->id; |         $order->user_id = $request->user['id']; | ||||||
|         $order->plan_id = $plan->id; |         $order->plan_id = $plan->id; | ||||||
|         $order->period = $request->input('period'); |         $order->period = $request->input('period'); | ||||||
|         $order->trade_no = Helper::generateOrderNo(); |         $order->trade_no = Helper::generateOrderNo(); | ||||||
| @@ -177,7 +177,7 @@ class OrderController extends Controller | |||||||
|         $tradeNo = $request->input('trade_no'); |         $tradeNo = $request->input('trade_no'); | ||||||
|         $method = $request->input('method'); |         $method = $request->input('method'); | ||||||
|         $order = Order::where('trade_no', $tradeNo) |         $order = Order::where('trade_no', $tradeNo) | ||||||
|             ->where('user_id', $request->user->id) |             ->where('user_id', $request->user['id']) | ||||||
|             ->where('status', 0) |             ->where('status', 0) | ||||||
|             ->first(); |             ->first(); | ||||||
|         if (!$order) { |         if (!$order) { | ||||||
| @@ -216,7 +216,7 @@ class OrderController extends Controller | |||||||
|     { |     { | ||||||
|         $tradeNo = $request->input('trade_no'); |         $tradeNo = $request->input('trade_no'); | ||||||
|         $order = Order::where('trade_no', $tradeNo) |         $order = Order::where('trade_no', $tradeNo) | ||||||
|             ->where('user_id', $request->user->id) |             ->where('user_id', $request->user['id']) | ||||||
|             ->first(); |             ->first(); | ||||||
|         if (!$order) { |         if (!$order) { | ||||||
|             abort(500, __('Order does not exist')); |             abort(500, __('Order does not exist')); | ||||||
| @@ -249,7 +249,7 @@ class OrderController extends Controller | |||||||
|             abort(500, __('Invalid parameter')); |             abort(500, __('Invalid parameter')); | ||||||
|         } |         } | ||||||
|         $order = Order::where('trade_no', $request->input('trade_no')) |         $order = Order::where('trade_no', $request->input('trade_no')) | ||||||
|             ->where('user_id', $request->user->id) |             ->where('user_id', $request->user['id']) | ||||||
|             ->first(); |             ->first(); | ||||||
|         if (!$order) { |         if (!$order) { | ||||||
|             abort(500, __('Order does not exist')); |             abort(500, __('Order does not exist')); | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ namespace App\Http\Controllers\User; | |||||||
|  |  | ||||||
| use App\Http\Controllers\Controller; | use App\Http\Controllers\Controller; | ||||||
| use App\Models\User; | use App\Models\User; | ||||||
|  | use App\Services\PlanService; | ||||||
| use Illuminate\Http\Request; | use Illuminate\Http\Request; | ||||||
| use App\Models\Plan; | use App\Models\Plan; | ||||||
| use Illuminate\Support\Facades\DB; | use Illuminate\Support\Facades\DB; | ||||||
| @@ -12,7 +13,7 @@ class PlanController extends Controller | |||||||
| { | { | ||||||
|     public function fetch(Request $request) |     public function fetch(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if ($request->input('id')) { |         if ($request->input('id')) { | ||||||
|             $plan = Plan::where('id', $request->input('id'))->first(); |             $plan = Plan::where('id', $request->input('id'))->first(); | ||||||
|             if (!$plan) { |             if (!$plan) { | ||||||
| @@ -24,29 +25,16 @@ class PlanController extends Controller | |||||||
|             return response([ |             return response([ | ||||||
|                 'data' => $plan |                 'data' => $plan | ||||||
|             ]); |             ]); | ||||||
|         } else { |  | ||||||
|             $counts = User::select( |  | ||||||
|                 DB::raw("plan_id"), |  | ||||||
|                 DB::raw("count(*) as count") |  | ||||||
|             ) |  | ||||||
|                 ->where('plan_id', '!=', NULL) |  | ||||||
|                 ->where(function ($query) { |  | ||||||
|                     $query->where('expired_at', '>=', time()) |  | ||||||
|                         ->orWhere('expired_at', NULL); |  | ||||||
|                 }) |  | ||||||
|                 ->groupBy("plan_id") |  | ||||||
|                 ->get() |  | ||||||
|                 ->keyBy('plan_id'); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         $counts = PlanService::countActiveUsers(); | ||||||
|         $plans = Plan::where('show', 1) |         $plans = Plan::where('show', 1) | ||||||
|             ->orderBy('sort', 'ASC') |             ->orderBy('sort', 'ASC') | ||||||
|             ->get(); |             ->get(); | ||||||
|         if (isset($counts)) { |         foreach ($plans as $k => $v) { | ||||||
|             foreach ($plans as $k => $v) { |             if ($plans[$k]->capacity_limit === NULL) continue; | ||||||
|                 if ($plans[$k]->capacity_limit === NULL) continue; |             if (!isset($counts[$plans[$k]->id])) continue; | ||||||
|                 if (!isset($counts[$plans[$k]->id])) continue; |             $plans[$k]->capacity_limit = $plans[$k]->capacity_limit - $counts[$plans[$k]->id]->count; | ||||||
|                 $plans[$k]->capacity_limit = $plans[$k]->capacity_limit - $counts[$plans[$k]->id]->count; |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|         return response([ |         return response([ | ||||||
|             'data' => $plans |             'data' => $plans | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ class ServerController extends Controller | |||||||
| { | { | ||||||
|     public function fetch(Request $request) |     public function fetch(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         $servers = []; |         $servers = []; | ||||||
|         $userService = new UserService(); |         $userService = new UserService(); | ||||||
|         if ($userService->isAvailable($user)) { |         if ($userService->isAvailable($user)) { | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ class StatController extends Controller | |||||||
|             'user_id', |             'user_id', | ||||||
|             'server_rate' |             'server_rate' | ||||||
|         ]) |         ]) | ||||||
|             ->where('user_id', $request->user->id) |             ->where('user_id', $request->user['id']) | ||||||
|             ->where('record_at', '>=', strtotime(date('Y-m-1'))) |             ->where('record_at', '>=', strtotime(date('Y-m-1'))) | ||||||
|             ->orderBy('record_at', 'DESC'); |             ->orderBy('record_at', 'DESC'); | ||||||
|         return response([ |         return response([ | ||||||
|   | |||||||
| @@ -22,6 +22,6 @@ class TelegramController extends Controller | |||||||
|  |  | ||||||
|     public function unbind(Request $request) |     public function unbind(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::where('user_id', $request->user->id)->first(); |         $user = User::where('user_id', $request->user['id'])->first(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ class TicketController extends Controller | |||||||
|     { |     { | ||||||
|         if ($request->input('id')) { |         if ($request->input('id')) { | ||||||
|             $ticket = Ticket::where('id', $request->input('id')) |             $ticket = Ticket::where('id', $request->input('id')) | ||||||
|                 ->where('user_id', $request->user->id) |                 ->where('user_id', $request->user['id']) | ||||||
|                 ->first(); |                 ->first(); | ||||||
|             if (!$ticket) { |             if (!$ticket) { | ||||||
|                 abort(500, __('Ticket does not exist')); |                 abort(500, __('Ticket does not exist')); | ||||||
| @@ -38,7 +38,7 @@ class TicketController extends Controller | |||||||
|                 'data' => $ticket |                 'data' => $ticket | ||||||
|             ]); |             ]); | ||||||
|         } |         } | ||||||
|         $ticket = Ticket::where('user_id', $request->user->id) |         $ticket = Ticket::where('user_id', $request->user['id']) | ||||||
|             ->orderBy('created_at', 'DESC') |             ->orderBy('created_at', 'DESC') | ||||||
|             ->get(); |             ->get(); | ||||||
|         return response([ |         return response([ | ||||||
| @@ -49,21 +49,21 @@ class TicketController extends Controller | |||||||
|     public function save(TicketSave $request) |     public function save(TicketSave $request) | ||||||
|     { |     { | ||||||
|         DB::beginTransaction(); |         DB::beginTransaction(); | ||||||
|         if ((int)Ticket::where('status', 0)->where('user_id', $request->user->id)->lockForUpdate()->count()) { |         if ((int)Ticket::where('status', 0)->where('user_id', $request->user['id'])->lockForUpdate()->count()) { | ||||||
|             abort(500, __('There are other unresolved tickets')); |             abort(500, __('There are other unresolved tickets')); | ||||||
|         } |         } | ||||||
|         $ticket = Ticket::create(array_merge($request->only([ |         $ticket = Ticket::create(array_merge($request->only([ | ||||||
|             'subject', |             'subject', | ||||||
|             'level' |             'level' | ||||||
|         ]), [ |         ]), [ | ||||||
|             'user_id' => $request->user->id |             'user_id' => $request->user['id'] | ||||||
|         ])); |         ])); | ||||||
|         if (!$ticket) { |         if (!$ticket) { | ||||||
|             DB::rollback(); |             DB::rollback(); | ||||||
|             abort(500, __('Failed to open ticket')); |             abort(500, __('Failed to open ticket')); | ||||||
|         } |         } | ||||||
|         $ticketMessage = TicketMessage::create([ |         $ticketMessage = TicketMessage::create([ | ||||||
|             'user_id' => $request->user->id, |             'user_id' => $request->user['id'], | ||||||
|             'ticket_id' => $ticket->id, |             'ticket_id' => $ticket->id, | ||||||
|             'message' => $request->input('message') |             'message' => $request->input('message') | ||||||
|         ]); |         ]); | ||||||
| @@ -87,7 +87,7 @@ class TicketController extends Controller | |||||||
|             abort(500, __('Message cannot be empty')); |             abort(500, __('Message cannot be empty')); | ||||||
|         } |         } | ||||||
|         $ticket = Ticket::where('id', $request->input('id')) |         $ticket = Ticket::where('id', $request->input('id')) | ||||||
|             ->where('user_id', $request->user->id) |             ->where('user_id', $request->user['id']) | ||||||
|             ->first(); |             ->first(); | ||||||
|         if (!$ticket) { |         if (!$ticket) { | ||||||
|             abort(500, __('Ticket does not exist')); |             abort(500, __('Ticket does not exist')); | ||||||
| @@ -95,14 +95,14 @@ class TicketController extends Controller | |||||||
|         if ($ticket->status) { |         if ($ticket->status) { | ||||||
|             abort(500, __('The ticket is closed and cannot be replied')); |             abort(500, __('The ticket is closed and cannot be replied')); | ||||||
|         } |         } | ||||||
|         if ($request->user->id == $this->getLastMessage($ticket->id)->user_id) { |         if ($request->user['id'] == $this->getLastMessage($ticket->id)->user_id) { | ||||||
|             abort(500, __('Please wait for the technical enginneer to reply')); |             abort(500, __('Please wait for the technical enginneer to reply')); | ||||||
|         } |         } | ||||||
|         $ticketService = new TicketService(); |         $ticketService = new TicketService(); | ||||||
|         if (!$ticketService->reply( |         if (!$ticketService->reply( | ||||||
|             $ticket, |             $ticket, | ||||||
|             $request->input('message'), |             $request->input('message'), | ||||||
|             $request->user->id |             $request->user['id'] | ||||||
|         )) { |         )) { | ||||||
|             abort(500, __('Ticket reply failed')); |             abort(500, __('Ticket reply failed')); | ||||||
|         } |         } | ||||||
| @@ -119,7 +119,7 @@ class TicketController extends Controller | |||||||
|             abort(500, __('Invalid parameter')); |             abort(500, __('Invalid parameter')); | ||||||
|         } |         } | ||||||
|         $ticket = Ticket::where('id', $request->input('id')) |         $ticket = Ticket::where('id', $request->input('id')) | ||||||
|             ->where('user_id', $request->user->id) |             ->where('user_id', $request->user['id']) | ||||||
|             ->first(); |             ->first(); | ||||||
|         if (!$ticket) { |         if (!$ticket) { | ||||||
|             abort(500, __('Ticket does not exist')); |             abort(500, __('Ticket does not exist')); | ||||||
| @@ -154,7 +154,7 @@ class TicketController extends Controller | |||||||
|         )) { |         )) { | ||||||
|             abort(500, __('Unsupported withdrawal method')); |             abort(500, __('Unsupported withdrawal method')); | ||||||
|         } |         } | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         $limit = config('v2board.commission_withdraw_limit', 100); |         $limit = config('v2board.commission_withdraw_limit', 100); | ||||||
|         if ($limit > ($user->commission_balance / 100)) { |         if ($limit > ($user->commission_balance / 100)) { | ||||||
|             abort(500, __('The current required minimum withdrawal commission is :limit', ['limit' => $limit])); |             abort(500, __('The current required minimum withdrawal commission is :limit', ['limit' => $limit])); | ||||||
| @@ -164,7 +164,7 @@ class TicketController extends Controller | |||||||
|         $ticket = Ticket::create([ |         $ticket = Ticket::create([ | ||||||
|             'subject' => $subject, |             'subject' => $subject, | ||||||
|             'level' => 2, |             'level' => 2, | ||||||
|             'user_id' => $request->user->id |             'user_id' => $request->user['id'] | ||||||
|         ]); |         ]); | ||||||
|         if (!$ticket) { |         if (!$ticket) { | ||||||
|             DB::rollback(); |             DB::rollback(); | ||||||
| @@ -175,7 +175,7 @@ class TicketController extends Controller | |||||||
|             __('Withdrawal account') . ":" . $request->input('withdraw_account') |             __('Withdrawal account') . ":" . $request->input('withdraw_account') | ||||||
|         ); |         ); | ||||||
|         $ticketMessage = TicketMessage::create([ |         $ticketMessage = TicketMessage::create([ | ||||||
|             'user_id' => $request->user->id, |             'user_id' => $request->user['id'], | ||||||
|             'ticket_id' => $ticket->id, |             'ticket_id' => $ticket->id, | ||||||
|             'message' => $message |             'message' => $message | ||||||
|         ]); |         ]); | ||||||
|   | |||||||
| @@ -21,9 +21,9 @@ class UserController extends Controller | |||||||
|     public function checkLogin(Request $request) |     public function checkLogin(Request $request) | ||||||
|     { |     { | ||||||
|         $data = [ |         $data = [ | ||||||
|             'is_login' => $request->user->id ? true : false |             'is_login' => $request->user['id'] ? true : false | ||||||
|         ]; |         ]; | ||||||
|         if ($request->user->is_admin) { |         if ($request->user['is_admin']) { | ||||||
|             $data['is_admin'] = true; |             $data['is_admin'] = true; | ||||||
|         } |         } | ||||||
|         return response([ |         return response([ | ||||||
| @@ -33,7 +33,7 @@ class UserController extends Controller | |||||||
|  |  | ||||||
|     public function changePassword(UserChangePassword $request) |     public function changePassword(UserChangePassword $request) | ||||||
|     { |     { | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if (!$user) { |         if (!$user) { | ||||||
|             abort(500, __('The user does not exist')); |             abort(500, __('The user does not exist')); | ||||||
|         } |         } | ||||||
| @@ -58,7 +58,7 @@ class UserController extends Controller | |||||||
|  |  | ||||||
|     public function info(Request $request) |     public function info(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::where('id', $request->user->id) |         $user = User::where('id', $request->user['id']) | ||||||
|             ->select([ |             ->select([ | ||||||
|                 'email', |                 'email', | ||||||
|                 'transfer_enable', |                 'transfer_enable', | ||||||
| @@ -90,12 +90,12 @@ class UserController extends Controller | |||||||
|     { |     { | ||||||
|         $stat = [ |         $stat = [ | ||||||
|             Order::where('status', 0) |             Order::where('status', 0) | ||||||
|                 ->where('user_id', $request->user->id) |                 ->where('user_id', $request->user['id']) | ||||||
|                 ->count(), |                 ->count(), | ||||||
|             Ticket::where('status', 0) |             Ticket::where('status', 0) | ||||||
|                 ->where('user_id', $request->user->id) |                 ->where('user_id', $request->user['id']) | ||||||
|                 ->count(), |                 ->count(), | ||||||
|             User::where('invite_user_id', $request->user->id) |             User::where('invite_user_id', $request->user['id']) | ||||||
|                 ->count() |                 ->count() | ||||||
|         ]; |         ]; | ||||||
|         return response([ |         return response([ | ||||||
| @@ -105,7 +105,7 @@ class UserController extends Controller | |||||||
|  |  | ||||||
|     public function getSubscribe(Request $request) |     public function getSubscribe(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::where('id', $request->user->id) |         $user = User::where('id', $request->user['id']) | ||||||
|             ->select([ |             ->select([ | ||||||
|                 'plan_id', |                 'plan_id', | ||||||
|                 'token', |                 'token', | ||||||
| @@ -135,7 +135,7 @@ class UserController extends Controller | |||||||
|  |  | ||||||
|     public function resetSecurity(Request $request) |     public function resetSecurity(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if (!$user) { |         if (!$user) { | ||||||
|             abort(500, __('The user does not exist')); |             abort(500, __('The user does not exist')); | ||||||
|         } |         } | ||||||
| @@ -156,7 +156,7 @@ class UserController extends Controller | |||||||
|             'remind_traffic' |             'remind_traffic' | ||||||
|         ]); |         ]); | ||||||
|  |  | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if (!$user) { |         if (!$user) { | ||||||
|             abort(500, __('The user does not exist')); |             abort(500, __('The user does not exist')); | ||||||
|         } |         } | ||||||
| @@ -173,7 +173,7 @@ class UserController extends Controller | |||||||
|  |  | ||||||
|     public function transfer(UserTransfer $request) |     public function transfer(UserTransfer $request) | ||||||
|     { |     { | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if (!$user) { |         if (!$user) { | ||||||
|             abort(500, __('The user does not exist')); |             abort(500, __('The user does not exist')); | ||||||
|         } |         } | ||||||
| @@ -192,7 +192,7 @@ class UserController extends Controller | |||||||
|  |  | ||||||
|     public function getQuickLoginUrl(Request $request) |     public function getQuickLoginUrl(Request $request) | ||||||
|     { |     { | ||||||
|         $user = User::find($request->user->id); |         $user = User::find($request->user['id']); | ||||||
|         if (!$user) { |         if (!$user) { | ||||||
|             abort(500, __('The user does not exist')); |             abort(500, __('The user does not exist')); | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -34,9 +34,9 @@ class Kernel extends HttpKernel | |||||||
| //            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, | //            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, | ||||||
| //            \Illuminate\Session\Middleware\StartSession::class, | //            \Illuminate\Session\Middleware\StartSession::class, | ||||||
|             // \Illuminate\Session\Middleware\AuthenticateSession::class, |             // \Illuminate\Session\Middleware\AuthenticateSession::class, | ||||||
|             \Illuminate\View\Middleware\ShareErrorsFromSession::class, | //            \Illuminate\View\Middleware\ShareErrorsFromSession::class, | ||||||
|             \App\Http\Middleware\VerifyCsrfToken::class, | //            \App\Http\Middleware\VerifyCsrfToken::class, | ||||||
|             \Illuminate\Routing\Middleware\SubstituteBindings::class, | //            \Illuminate\Routing\Middleware\SubstituteBindings::class, | ||||||
|         ], |         ], | ||||||
|  |  | ||||||
|         'api' => [ |         'api' => [ | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ | |||||||
| namespace App\Http\Middleware; | namespace App\Http\Middleware; | ||||||
|  |  | ||||||
| use Closure; | use Closure; | ||||||
| use Laravel\Horizon\Horizon; | use Illuminate\Support\Facades\Cache; | ||||||
|  |  | ||||||
| class Admin | class Admin | ||||||
| { | { | ||||||
| @@ -20,14 +20,23 @@ class Admin | |||||||
|         if (!$authorization) abort(403, '未登录或登陆已过期'); |         if (!$authorization) abort(403, '未登录或登陆已过期'); | ||||||
|  |  | ||||||
|         $authData = explode(':', base64_decode($authorization)); |         $authData = explode(':', base64_decode($authorization)); | ||||||
|         if (!isset($authData[1]) || !isset($authData[0])) abort(403, '鉴权失败,请重新登入'); |         if (!Cache::has($authorization)) { | ||||||
|         $user = \App\Models\User::where('password', $authData[1]) |             if (!isset($authData[1]) || !isset($authData[0])) abort(403, '鉴权失败,请重新登入'); | ||||||
|             ->where('email', $authData[0]) |             $user = \App\Models\User::where('password', $authData[1]) | ||||||
|             ->first(); |                 ->where('email', $authData[0]) | ||||||
|         if (!$user) abort(403, '鉴权失败,请重新登入'); |                 ->select([ | ||||||
|         if (!$user->is_admin) abort(403, '未登录或登陆已过期'); |                     'id', | ||||||
|  |                     'email', | ||||||
|  |                     'is_admin', | ||||||
|  |                     'is_staff' | ||||||
|  |                 ]) | ||||||
|  |                 ->first(); | ||||||
|  |             if (!$user) abort(403, '鉴权失败,请重新登入'); | ||||||
|  |             if (!$user->is_admin) abort(403, '鉴权失败,请重新登入'); | ||||||
|  |             Cache::put($authorization, $user->toArray(), 3600); | ||||||
|  |         } | ||||||
|         $request->merge([ |         $request->merge([ | ||||||
|             'user' => $user |             'user' => Cache::get($authorization) | ||||||
|         ]); |         ]); | ||||||
|         return $next($request); |         return $next($request); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -3,6 +3,7 @@ | |||||||
| namespace App\Http\Middleware; | namespace App\Http\Middleware; | ||||||
|  |  | ||||||
| use Closure; | use Closure; | ||||||
|  | use Illuminate\Support\Facades\Cache; | ||||||
|  |  | ||||||
| class Staff | class Staff | ||||||
| { | { | ||||||
| @@ -19,14 +20,23 @@ class Staff | |||||||
|         if (!$authorization) abort(403, '未登录或登陆已过期'); |         if (!$authorization) abort(403, '未登录或登陆已过期'); | ||||||
|  |  | ||||||
|         $authData = explode(':', base64_decode($authorization)); |         $authData = explode(':', base64_decode($authorization)); | ||||||
|         if (!isset($authData[1]) || !isset($authData[0])) abort(403, '鉴权失败,请重新登入'); |         if (!Cache::has($authorization)) { | ||||||
|         $user = \App\Models\User::where('password', $authData[1]) |             if (!isset($authData[1]) || !isset($authData[0])) abort(403, '鉴权失败,请重新登入'); | ||||||
|             ->where('email', $authData[0]) |             $user = \App\Models\User::where('password', $authData[1]) | ||||||
|             ->first(); |                 ->where('email', $authData[0]) | ||||||
|         if (!$user) abort(403, '鉴权失败,请重新登入'); |                 ->select([ | ||||||
|         if (!$user->is_staff) abort(403, '未登录或登陆已过期'); |                     'id', | ||||||
|  |                     'email', | ||||||
|  |                     'is_admin', | ||||||
|  |                     'is_staff' | ||||||
|  |                 ]) | ||||||
|  |                 ->first(); | ||||||
|  |             if (!$user) abort(403, '鉴权失败,请重新登入'); | ||||||
|  |             if (!$user->is_staff) abort(403, '鉴权失败,请重新登入'); | ||||||
|  |             Cache::put($authorization, $user->toArray(), 3600); | ||||||
|  |         } | ||||||
|         $request->merge([ |         $request->merge([ | ||||||
|             'user' => $user |             'user' => Cache::get($authorization) | ||||||
|         ]); |         ]); | ||||||
|         return $next($request); |         return $next($request); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -2,8 +2,8 @@ | |||||||
|  |  | ||||||
| namespace App\Http\Middleware; | namespace App\Http\Middleware; | ||||||
|  |  | ||||||
| use App\Utils\Helper; |  | ||||||
| use Closure; | use Closure; | ||||||
|  | use Illuminate\Support\Facades\Cache; | ||||||
|  |  | ||||||
| class User | class User | ||||||
| { | { | ||||||
| @@ -20,13 +20,22 @@ class User | |||||||
|         if (!$authorization) abort(403, '未登录或登陆已过期'); |         if (!$authorization) abort(403, '未登录或登陆已过期'); | ||||||
|  |  | ||||||
|         $authData = explode(':', base64_decode($authorization)); |         $authData = explode(':', base64_decode($authorization)); | ||||||
|         if (!isset($authData[1]) || !isset($authData[0])) abort(403, '鉴权失败,请重新登入'); |         if (!Cache::has($authorization)) { | ||||||
|         $user = \App\Models\User::where('password', $authData[1]) |             if (!isset($authData[1]) || !isset($authData[0])) abort(403, '鉴权失败,请重新登入'); | ||||||
|             ->where('email', $authData[0]) |             $user = \App\Models\User::where('password', $authData[1]) | ||||||
|             ->first(); |                 ->where('email', $authData[0]) | ||||||
|         if (!$user) abort(403, '鉴权失败,请重新登入'); |                 ->select([ | ||||||
|  |                     'id', | ||||||
|  |                     'email', | ||||||
|  |                     'is_admin', | ||||||
|  |                     'is_staff' | ||||||
|  |                 ]) | ||||||
|  |                 ->first(); | ||||||
|  |             if (!$user) abort(403, '鉴权失败,请重新登入'); | ||||||
|  |             Cache::put($authorization, $user->toArray(), 3600); | ||||||
|  |         } | ||||||
|         $request->merge([ |         $request->merge([ | ||||||
|             'user' => $user |             'user' => Cache::get($authorization) | ||||||
|         ]); |         ]); | ||||||
|         return $next($request); |         return $next($request); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -48,10 +48,10 @@ class StatServerJob implements ShouldQueue | |||||||
|             // |             // | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $data = StatServer::where('record_at', $recordAt) |         $data = StatServer::lockForUpdate() | ||||||
|  |             ->where('record_at', $recordAt) | ||||||
|             ->where('server_id', $this->server->id) |             ->where('server_id', $this->server->id) | ||||||
|             ->where('server_type', $this->protocol) |             ->where('server_type', $this->protocol) | ||||||
|             ->lockForUpdate() |  | ||||||
|             ->first(); |             ->first(); | ||||||
|         if ($data) { |         if ($data) { | ||||||
|             try { |             try { | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ namespace App\Services; | |||||||
|  |  | ||||||
| use App\Models\Plan; | use App\Models\Plan; | ||||||
| use App\Models\User; | use App\Models\User; | ||||||
|  | use Illuminate\Support\Facades\DB; | ||||||
|  |  | ||||||
| class PlanService | class PlanService | ||||||
| { | { | ||||||
| @@ -20,4 +21,20 @@ class PlanService | |||||||
|         $count = User::where('plan_id', $this->plan->plan_id)->count(); |         $count = User::where('plan_id', $this->plan->plan_id)->count(); | ||||||
|         return $this->plan->capacity_limit - $count; |         return $this->plan->capacity_limit - $count; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static function countActiveUsers() | ||||||
|  |     { | ||||||
|  |         return User::select( | ||||||
|  |             DB::raw("plan_id"), | ||||||
|  |             DB::raw("count(*) as count") | ||||||
|  |         ) | ||||||
|  |             ->where('plan_id', '!=', NULL) | ||||||
|  |             ->where(function ($query) { | ||||||
|  |                 $query->where('expired_at', '>=', time()) | ||||||
|  |                     ->orWhere('expired_at', NULL); | ||||||
|  |             }) | ||||||
|  |             ->groupBy("plan_id") | ||||||
|  |             ->get() | ||||||
|  |             ->keyBy('plan_id'); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user