Node.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Database\Eloquent\Relations\HasMany;
  5. use Illuminate\Database\Eloquent\Relations\HasOne;
  6. /**
  7. * 节点配置信息
  8. */
  9. class Node extends Model {
  10. protected $table = 'ss_node';
  11. protected $guarded = ['id', 'created_at'];
  12. public function labels(): HasMany {
  13. return $this->hasMany(NodeLabel::class);
  14. }
  15. public function heartBeats(): HasMany {
  16. return $this->hasMany(NodeHeartBeat::class);
  17. }
  18. public function onlineLogs(): HasMany {
  19. return $this->hasMany(NodeOnlineLog::class);
  20. }
  21. public function pingLogs(): HasMany {
  22. return $this->hasMany(NodePing::class);
  23. }
  24. public function dailyDataFlows(): HasMany {
  25. return $this->hasMany(NodeDailyDataFlow::class);
  26. }
  27. public function hourlyDataFlows(): HasMany {
  28. return $this->hasMany(NodeHourlyDataFlow::class);
  29. }
  30. public function rules(): hasMany {
  31. return $this->hasMany(NodeRule::class);
  32. }
  33. public function ruleGroup(): hasOne {
  34. return $this->hasOne(RuleGroupNode::class);
  35. }
  36. public function auth(): HasOne {
  37. return $this->hasOne(NodeAuth::class);
  38. }
  39. public function level_table(): HasOne {
  40. return $this->hasOne(Level::class, 'level', 'level');
  41. }
  42. public function scopeUserAllowNodes($query, $user_group_id, $user_level) {
  43. $userGroup = UserGroup::find($user_group_id);
  44. if($userGroup){
  45. $query->whereIn('id', $userGroup->nodes);
  46. }
  47. return $query->whereStatus(1)->where('level', '<=', $user_level?: 0);
  48. }
  49. public function getNodeAccessUsersAttribute() {
  50. return User::nodeAllowUsers($this->attributes['id'], $this->attributes['level'])->get();
  51. }
  52. public function getTypeLabelAttribute(): string {
  53. switch($this->attributes['type']){
  54. case 1:
  55. $type_label = 'ShadowsocksR';
  56. break;
  57. case 2:
  58. $type_label = 'V2Ray';
  59. break;
  60. case 3:
  61. $type_label = 'Trojan';
  62. break;
  63. case 4:
  64. $type_label = 'VNet';
  65. break;
  66. default:
  67. $type_label = 'UnKnown';
  68. }
  69. return $type_label;
  70. }
  71. }