Browse Source

优化查表

兔姬桑 4 years ago
parent
commit
8be722771f

+ 3 - 9
app/Console/Commands/AutoJob.php

@@ -221,7 +221,7 @@ class AutoJob extends Command {
 	private function blockUsers(): void {
 		// 封禁1小时内流量异常账号
 		if(self::$systemConfig['is_traffic_ban']){
-			$userList = User::query()->whereEnable(1)->where('status', '>=', 0)->whereBanTime(0)->get();
+			$userList = User::query()->activeUser()->whereBanTime(0)->get();
 			foreach($userList as $user){
 				// 对管理员豁免
 				if($user->is_admin){
@@ -246,12 +246,7 @@ class AutoJob extends Command {
 		}
 
 		// 禁用流量超限用户
-		$userList = User::query()
-		                ->whereEnable(1)
-		                ->where('status', '>=', 0)
-		                ->whereBanTime(0)
-		                ->whereRaw("u + d >= transfer_enable")
-		                ->get();
+		$userList = User::query()->activeUser()->whereBanTime(0)->whereRaw("u + d >= transfer_enable")->get();
 		foreach($userList as $user){
 			User::query()->whereId($user->id)->update(['enable' => 0]);
 
@@ -293,8 +288,7 @@ class AutoJob extends Command {
 	private function dispatchPort(): void {
 		if(self::$systemConfig['auto_release_port']){
 			## 自动分配端口
-			$userList = User::query()->whereEnable(1)->where('status', '>=', 0)->wherePort(0)->get();
-			foreach($userList as $user){
+			foreach(User::query()->activeUser()->wherePort(0)->get() as $user){
 				$port = self::$systemConfig['is_rand_port']? Helpers::getRandPort() : Helpers::getOnlyPort();
 
 				User::query()->whereId($user->id)->update(['port' => $port]);

+ 1 - 5
app/Console/Commands/DailyJob.php

@@ -44,11 +44,7 @@ class DailyJob extends Command {
 
 	private function expireUser(): void {
 		// 过期用户处理
-		$userList = User::query()
-		                ->where('status', '>=', 0)
-		                ->whereEnable(1)
-		                ->where('expire_time', '<', date('Y-m-d'))
-		                ->get();
+		$userList = User::query()->activeUser()->where('expire_time', '<', date('Y-m-d'))->get();
 		foreach($userList as $user){
 			if(self::$systemConfig['is_ban_status']){
 				User::query()->whereId($user->id)->update([

+ 4 - 4
app/Console/Commands/fixDailyTrafficLogError.php

@@ -25,7 +25,7 @@ class fixDailyTrafficLogError extends Command {
 			]);
 		}
 
-		foreach(SsNode::query()->whereStatus(1)->orderBy('id')->get() as $node){
+		foreach(SsNode::all() as $node){
 			$query = UserTrafficLog::query()
 			                       ->whereNodeId($node->id)
 			                       ->whereBetween('log_time',
@@ -54,8 +54,8 @@ class fixDailyTrafficLogError extends Command {
 				'created_at' => date('Y-m-d H:i:s', strtotime("-1 days", strtotime($log->created_at)))
 			]);
 		}
-
-		foreach(User::query()->activeUser()->get() as $user){
+		Log::info('----------------------------【用户个人流量日志修正】开始----------------------------');
+		foreach(User::query()->whereIn('id',UserTrafficLog::query()->distinct()->pluck('user_id')->toArray())->get() as $user){
 			// 统计一次所有节点的总和
 			$this->statisticsByUser($user->id);
 
@@ -64,7 +64,7 @@ class fixDailyTrafficLogError extends Command {
 				$this->statisticsByUser($user->id, $node->id);
 			}
 		}
-
+		Log::info('----------------------------【用户个人流量日志修正】结束----------------------------');
 		Log::info('----------------------------【用户流量日志修正】结束----------------------------');
 		Log::info('----------------------------【修复原版本的每日流量计算错误】结束----------------------------');
 	}

+ 1 - 2
app/Http/Controllers/Api/WebApi/TrojanController.php

@@ -29,8 +29,7 @@ class TrojanController extends BaseController {
 	public function getUserList($id): JsonResponse {
 		$node = SsNode::find($id);
 		$users = User::query()
-		             ->where('status', '<>', -1)
-		             ->whereEnable(1)
+		             ->activeUser()
 		             ->groupUserPermit($node->id)
 		             ->where('level', '>=', $node->level)
 		             ->get();

+ 1 - 2
app/Http/Controllers/Api/WebApi/V2RayController.php

@@ -42,8 +42,7 @@ class V2RayController extends BaseController {
 	public function getUserList($id): JsonResponse {
 		$node = SsNode::find($id);
 		$users = User::query()
-		             ->where('status', '<>', -1)
-		             ->whereEnable(1)
+		             ->activeUser()
 		             ->groupUserPermit($node->id)
 		             ->where('level', '>=', $node->level)
 		             ->get();

+ 1 - 2
app/Http/Controllers/Api/WebApi/VNetController.php

@@ -34,8 +34,7 @@ class VNetController extends BaseController {
 	public function getUserList($id): JsonResponse {
 		$node = SsNode::find($id);
 		$users = User::query()
-		             ->where('status', '<>', -1)
-		             ->whereEnable(1)
+		             ->activeUser()
 		             ->groupUserPermit($node->id)
 		             ->where('level', '>=', $node->level)
 		             ->get();

+ 1 - 1
app/Models/User.php

@@ -161,6 +161,6 @@ class User extends Authenticatable {
 	}
 
 	public function scopeActiveUser($query) {
-		return $query->where('status', '>=', 0)->whereEnable(1);
+		return $query->where('status', '<>', -1)->whereEnable(1);
 	}
 }

+ 2 - 2
sql/db.sql

@@ -991,7 +991,7 @@ CREATE TABLE `user_subscribe`
 -- ----------------------------
 -- Records of user_subscribe
 -- ----------------------------
-INSERT INTO `user_subscribe`(`id`, `user_id`, `code`) VALUES ('1', '1', 'SsXa1');
+INSERT INTO `user_subscribe`(`id`, `user_id`, `code`,`created_at`,`updated_at`) VALUES ('1', '1', 'SsXa1', Now(), Now());
 
 
 -- ----------------------------
@@ -1330,7 +1330,7 @@ CREATE TABLE `rule_group`
 -- Records of rule_group
 -- ----------------------------
 INSERT INTO `rule_group`(`id`, `type`, `name`, `rules`, `nodes`, `created_at`, `updated_at`)
-VALUES (1, 1, '默认', '1,2,3,4,5,6,7,8,9,10,11,12,13,14', NULL, '2019-10-26 15:29:48', '2019-10-26 15:29:48');
+VALUES (1, 1, '默认', '1,2,3,4,5,6,7,8,9,10,11,12,13,14', NULL, Now(), Now());
 
 
 -- ----------------------------