This commit is contained in:
Tokumeikoi
2020-04-25 19:44:47 +08:00
parent c17b614e13
commit 867f1760d3
15 changed files with 10537 additions and 553 deletions

View File

@ -150,7 +150,6 @@ class ClientController extends Controller
private function clash($user, $server)
{
$proxy = [];
$proxyGroup = [];
$proxies = [];
$rules = [];
foreach ($server as $item) {
@ -180,28 +179,80 @@ class ClientController extends Controller
array_push($proxies, $item->name);
}
array_push($proxyGroup, [
'name' => 'auto',
'type' => 'url-test',
'proxies' => $proxies,
'url' => 'https://www.bing.com',
'interval' => 300
]);
array_push($proxyGroup, [
'name' => 'fallback-auto',
'type' => 'fallback',
'proxies' => $proxies,
'url' => 'https://www.bing.com',
'interval' => 300
]);
array_push($proxyGroup, [
'name' => 'select',
'type' => 'select',
'proxies' => array_merge($proxies, [
'auto',
'fallback-auto'
])
]);
$proxyGroup = [
[
'name' => '🔰 节点选择',
'type' => 'select',
'proxies' => array_merge([
'♻️ 自动选择',
'🎯 全球直连'
], $proxies)
], [
'name' => '♻️ 自动选择',
'type' => 'url-test',
'url' => 'http://www.gstatic.com/generate_204',
'interval' => 300,
'proxies' => $proxies
], [
'name' => '🌍 国外媒体',
'type' => 'select',
'proxies' => array_merge([
'🔰 节点选择',
'♻️ 自动选择',
'🎯 全球直连'
], $proxies)
], [
'name' => '🌏 国内媒体',
'type' => 'select',
'proxies' => array_merge([
'🎯 全球直连',
'🔰 节点选择'
], $proxies)
], [
'name' => 'Ⓜ️ 微软服务',
'type' => 'select',
'proxies' => array_merge([
'🎯 全球直连',
'🔰 节点选择'
], $proxies)
], [
'name' => '📲 电报信息',
'type' => 'select',
'proxies' => array_merge([
'🎯 全球直连',
'🔰 节点选择'
], $proxies)
], [
'name' => '🍎 苹果服务',
'type' => 'select',
'proxies' => array_merge([
'🔰 节点选择',
'♻️ 自动选择',
'🎯 全球直连'
], $proxies)
], [
'name' => '🎯 全球直连',
'type' => 'select',
'proxies' => [
'DIRECT'
]
], [
'name' => '🛑 全球拦截',
'type' => 'select',
'proxies' => [
'REJECT',
'DIRECT'
]
], [
'name' => '🐟 漏网之鱼',
'type' => 'select',
'proxies' => array_merge([
'🔰 节点选择',
'♻️ 自动选择',
'🎯 全球直连'
], $proxies)
]
];
try {
$rules = [];

View File

@ -3,11 +3,13 @@
namespace App\Http\Controllers\Server;
use App\Services\ServerService;
use App\Services\UserService;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Models\Server;
use App\Models\ServerLog;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Cache;
@ -63,28 +65,31 @@ class DeepbworkController extends Controller
$server = Server::find($request->input('node_id'));
if (!$server) {
return response([
'ret' => 1,
'msg' => 'ok'
'ret' => 0,
'msg' => 'server is not found'
]);
}
$data = file_get_contents('php://input');
$data = json_decode($data, true);
$serverService = new ServerService();
$userService = new UserService();
foreach ($data as $item) {
$u = $item['u'] * $server->rate;
$d = $item['d'] * $server->rate;
$user = User::find($item['user_id']);
$user->t = time();
$user->u = $user->u + $u;
$user->d = $user->d + $d;
$user->save();
if (!$userService->trafficFetch($u, $d, $item['user_id'])) {
return response([
'ret' => 0,
'msg' => 'user fetch fail'
]);
}
$serverLog = new ServerLog();
$serverLog->user_id = $item['user_id'];
$serverLog->server_id = $request->input('node_id');
$serverLog->u = $item['u'];
$serverLog->d = $item['d'];
$serverLog->rate = $server->rate;
$serverLog->save();
$serverService->log(
$item['user_id'],
$request->input('node_id'),
$u,
$d,
$server->rate
);
}
return response([

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers\Server;
use App\Services\ServerService;
use App\Services\UserService;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
@ -58,22 +59,25 @@ class PoseidonController extends Controller
}
$data = file_get_contents('php://input');
$data = json_decode($data, true);
$serverService = new ServerService();
$userService = new UserService();
foreach ($data as $item) {
$u = $item['u'] * $server->rate;
$d = $item['d'] * $server->rate;
$user = User::find($item['user_id']);
$user->t = time();
$user->u = $user->u + $u;
$user->d = $user->d + $d;
$user->save();
if (!$userService->trafficFetch($u, $d, $item['user_id'])) {
return response([
'ret' => 0,
'msg' => 'user fetch fail'
]);
}
$serverLog = new ServerLog();
$serverLog->user_id = $item['user_id'];
$serverLog->server_id = $request->input('node_id');
$serverLog->u = $item['u'];
$serverLog->d = $item['d'];
$serverLog->rate = $server->rate;
$serverLog->save();
$serverService->log(
$item['user_id'],
$request->input('node_id'),
$u,
$d,
$server->rate
);
}
return $this->success('');

View File

@ -89,6 +89,10 @@ class OrderController extends Controller
abort(500, '该订阅周期无法进行购买,请选择其他周期');
}
if ($request->input('cycle') === 'reset_price' && !$user->plan_id) {
abort(500, '必须存在订阅才可以购买流量重置包');
}
DB::beginTransaction();
$order = new Order();
$orderService = new OrderService($order);

View File

@ -15,7 +15,8 @@ class PlanSave extends FormRequest
'quarter_price' => 'nullable|integer',
'half_year_price' => 'nullable|integer',
'year_price' => 'nullable|integer',
'onetime_price' => 'nullable|integer'
'onetime_price' => 'nullable|integer',
'reset_price' => 'nullable|reset_price'
];
/**
* Get the validation rules that apply to the request.
@ -39,7 +40,8 @@ class PlanSave extends FormRequest
'quarter_price.integer' => '季付金额格式有误',
'half_year_price.integer' => '半年付金额格式有误',
'year_price.integer' => '年付金额格式有误',
'onetime_price.integer' => '一次性金额有误'
'onetime_price.integer' => '一次性金额有误',
'reset_price.integer' => '流量重置包金额有误'
];
}
}

View File

@ -15,7 +15,7 @@ class OrderSave extends FormRequest
{
return [
'plan_id' => 'required',
'cycle' => 'required|in:month_price,quarter_price,half_year_price,year_price,onetime_price'
'cycle' => 'required|in:month_price,quarter_price,half_year_price,year_price,onetime_price,reset_price'
];
}