Files
ProxyPanel/app/Models/Node.php
兔姬桑 ce9618236f 2.5.a 管理路由全面改写 与 代码拆分
1. 全面改写项目-管理面板的路由;
2. 拆分过于Contoller;
3. 优化了按钮过多的图表的显示;
4. 初步应用 Laravel的 表单验证功能;
5. 初步应用 Laravel的 component 功能 拆分/模块化前端代码;
6. 优化部分系统的判断逻辑;
7. 针对2.4.0以前的面板,追加辅助矫正数据库的sql文件;
2020-10-01 12:34:19 +08:00

114 lines
2.6 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
/**
* 节点配置信息
*/
class Node extends Model
{
protected $table = 'ss_node';
protected $guarded = ['id', 'created_at'];
public function labels(): HasMany
{
return $this->hasMany(NodeLabel::class);
}
public function heartBeats(): HasMany
{
return $this->hasMany(NodeHeartBeat::class);
}
public function onlineLogs(): HasMany
{
return $this->hasMany(NodeOnlineLog::class);
}
public function pingLogs(): HasMany
{
return $this->hasMany(NodePing::class);
}
public function dailyDataFlows(): HasMany
{
return $this->hasMany(NodeDailyDataFlow::class);
}
public function hourlyDataFlows(): HasMany
{
return $this->hasMany(NodeHourlyDataFlow::class);
}
public function rules(): hasMany
{
return $this->hasMany(NodeRule::class);
}
public function ruleGroup(): hasOne
{
return $this->hasOne(RuleGroupNode::class);
}
public function auth(): HasOne
{
return $this->hasOne(NodeAuth::class);
}
public function level_table(): HasOne
{
return $this->hasOne(Level::class, 'level', 'level');
}
public function scopeUserAllowNodes($query, $user_group_id, $user_level)
{
$userGroup = UserGroup::find($user_group_id);
if ($userGroup) {
$query->whereIn('id', $userGroup->nodes);
}
return $query->whereStatus(1)->where('level', '<=', $user_level ?: 0);
}
public function getSpeedLimitAttribute($value)
{
return $value / Mbps;
}
public function setSpeedLimitAttribute($value)
{
return $this->attributes['speed_limit'] = $value * Mbps;
}
public function getNodeAccessUsersAttribute()
{
return User::nodeAllowUsers($this->attributes['id'], $this->attributes['level'])->get();
}
public function getTypeLabelAttribute(): string
{
switch ($this->attributes['type']) {
case 1:
$type_label = 'ShadowsocksR';
break;
case 2:
$type_label = 'V2Ray';
break;
case 3:
$type_label = 'Trojan';
break;
case 4:
$type_label = 'VNet';
break;
default:
$type_label = 'UnKnown';
}
return $type_label;
}
}