Skip to content

Commit a30271b

Browse files
author
zhangjiangbin
committed
用户与节点通过标签进行分组关联
1 parent 7b556dc commit a30271b

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

app/Http/Controllers/SubscribeController.php

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
namespace App\Http\Controllers;
44

5-
use App\Http\Models\SsGroup;
6-
use App\Http\Models\SsGroupNode;
7-
use App\Http\Models\SsNode;
85
use App\Http\Models\User;
6+
use App\Http\Models\UserLabel;
97
use App\Http\Models\UserSubscribe;
108
use App\Http\Models\UserSubscribeLog;
119
use Illuminate\Http\Request;
1210
use Redirect;
11+
use DB;
1312

1413
/**
1514
* 订阅控制器
@@ -33,14 +32,14 @@ public function index(Request $request, $code)
3332
}
3433

3534
// 校验合法性
36-
$subscribe = UserSubscribe::query()->where('code', $code)->where('status', 1)->with('user')->first();
35+
$subscribe = UserSubscribe::query()->with('user')->where('code', $code)->where('status', 1)->first();
3736
if (empty($subscribe)) {
38-
exit('非法请求或已被封禁,请联系管理员');
37+
exit('订阅地址不存在或被封禁,请联系管理员');
3938
}
4039

4140
$user = User::query()->where('id', $subscribe->user_id)->whereIn('status', [0, 1])->where('enable', 1)->first();
4241
if (empty($user)) {
43-
exit('非法请求或已被封禁,请联系管理员');
42+
exit('您的账号已被封禁,请联系管理员');
4443
}
4544

4645
// 更新访问次数
@@ -55,13 +54,18 @@ public function index(Request $request, $code)
5554
$log->save();
5655

5756
// 获取这个账号可用节点
58-
$group_ids = SsGroup::query()->where('level', '<=', $user->level)->select(['id'])->get();
59-
if (empty($group_ids)) {
60-
exit();
57+
$userLabelIds = UserLabel::query()->where('user_id', $user->id)->pluck(['label_id']);
58+
$nodeList = DB::table('ss_node')
59+
->leftJoin('ss_node_label', 'ss_node.id', '=', 'ss_node_label.node_id')
60+
->whereIn('ss_node_label.label_id', $userLabelIds)
61+
->where('ss_node.status', 1)
62+
->groupBy('ss_node.id')
63+
->get();
64+
65+
if ($nodeList->isEmpty()) {
66+
exit('没有可用节点');
6167
}
6268

63-
$node_ids = SsGroupNode::query()->whereIn('group_id', $group_ids)->select(['node_id'])->get();
64-
$nodeList = SsNode::query()->where('status', 1)->whereIn('id', $node_ids)->get();
6569
$scheme = self::$config['subscribe_max'] > 0 ? 'MAX=' . self::$config['subscribe_max'] . "\n" : '';
6670
foreach ($nodeList as $node) {
6771
$obfs_param = $node->single ? '' : $user->obfs_param;

app/Http/Controllers/UserController.php

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use App\Http\Models\TicketReply;
1717
use App\Http\Models\User;
1818
use App\Http\Models\UserBalanceLog;
19+
use App\Http\Models\UserLabel;
1920
use App\Http\Models\UserScoreLog;
2021
use App\Http\Models\UserSubscribe;
2122
use App\Http\Models\UserTrafficDaily;
@@ -63,12 +64,12 @@ public function index(Request $request)
6364
}
6465

6566
// 节点列表
66-
$nodeList = DB::table('ss_group_node')
67-
->leftJoin('ss_group', 'ss_group.id', '=', 'ss_group_node.group_id')
68-
->leftJoin('ss_node', 'ss_node.id', '=', 'ss_group_node.node_id')
69-
->where('ss_group.level', '<=', $user->level)
67+
$userLabelIds = UserLabel::query()->where('user_id', $user['id'])->pluck(['label_id']);
68+
$nodeList = DB::table('ss_node')
69+
->leftJoin('ss_node_label', 'ss_node.id', '=', 'ss_node_label.node_id')
70+
->whereIn('ss_node_label.label_id', $userLabelIds)
7071
->where('ss_node.status', 1)
71-
->orderBy('ss_node.sort', 'desc')
72+
->groupBy('ss_node.id')
7273
->get();
7374

7475
foreach ($nodeList as &$node) {

0 commit comments

Comments
 (0)