Ver Fonte

Changes

alroyso há 1 ano atrás
pai
commit
6ff3e778ae
100 ficheiros alterados com 1601 adições e 1342 exclusões
  1. 1 1
      .env
  2. 25 0
      app/Http/Controllers/UserController.php
  3. 18 0
      app/Models/AppUpdate.php
  4. 29 0
      app/Models/Article.php
  5. 9 0
      app/Models/Config.php
  6. 11 0
      app/Models/Country.php
  7. 37 0
      app/Models/Coupon.php
  8. 17 0
      app/Models/CouponLog.php
  9. 11 0
      app/Models/EmailFilter.php
  10. 52 0
      app/Models/Goods.php
  11. 30 0
      app/Models/Invite.php
  12. 13 0
      app/Models/Label.php
  13. 13 0
      app/Models/Level.php
  14. 24 0
      app/Models/Marketing.php
  15. 125 0
      app/Models/Node.php
  16. 18 0
      app/Models/NodeAuth.php
  17. 17 0
      app/Models/NodeCertificate.php
  18. 20 0
      app/Models/NodeDailyDataFlow.php
  19. 16 0
      app/Models/NodeHeartbeat.php
  20. 20 0
      app/Models/NodeHourlyDataFlow.php
  21. 21 0
      app/Models/NodeOnlineIp.php
  22. 13 0
      app/Models/NodeOnlineLog.php
  23. 23 0
      app/Models/NotificationLog.php
  24. 49 0
      app/Models/Order.php
  25. 29 0
      app/Models/Payment.php
  26. 20 0
      app/Models/PaymentCallback.php
  27. 19 0
      app/Models/ProductsPool.php
  28. 30 0
      app/Models/ReferralApply.php
  29. 28 0
      app/Models/ReferralLog.php
  30. 17 0
      app/Models/Rule.php
  31. 18 0
      app/Models/RuleGroup.php
  32. 20 0
      app/Models/RuleLog.php
  33. 22 0
      app/Models/Sms.php
  34. 17 0
      app/Models/SsConfig.php
  35. 27 0
      app/Models/Ticket.php
  36. 22 0
      app/Models/TicketReply.php
  37. 130 0
      app/Models/User.php
  38. 20 0
      app/Models/UserBanedLog.php
  39. 23 0
      app/Models/UserCreditLog.php
  40. 24 0
      app/Models/UserDailyDataFlow.php
  41. 23 0
      app/Models/UserDataFlowLog.php
  42. 21 0
      app/Models/UserDataModifyLog.php
  43. 13 0
      app/Models/UserGroup.php
  44. 25 0
      app/Models/UserHourlyDataFlow.php
  45. 26 0
      app/Models/UserLoginLog.php
  46. 27 0
      app/Models/UserSubscribe.php
  47. 17 0
      app/Models/UserSubscribeLog.php
  48. 21 0
      app/Models/Verify.php
  49. 18 0
      app/Models/VerifyCode.php
  50. 1 0
      composer.json
  51. BIN
      composer.phar
  52. 0 35
      database/migrations/2020_08_21_145711_create_node_rule_table.php
  53. 0 34
      database/migrations/2020_08_21_145711_create_rule_group_node_table.php
  54. 0 36
      database/migrations/2020_08_21_145711_create_rule_group_table.php
  55. 0 35
      database/migrations/2020_09_24_184434_add_strip_config.php
  56. 0 44
      database/migrations/2020_10_11_000217_add_ddns_to_config_table.php
  57. 0 110
      database/migrations/2020_11_06_145018_create_permission_tables.php
  58. 0 450
      database/migrations/2020_11_10_075555_improve_table.php
  59. 0 176
      database/migrations/2020_12_07_120247_permission_data.php
  60. 0 188
      database/migrations/2020_12_24_074739_table_improvement.php
  61. 0 22
      database/migrations/2021_01_04_094946_drop_node_ping.php
  62. 0 34
      database/migrations/2021_01_04_172833_add-paybeaver-payment.php
  63. 0 70
      database/migrations/2021_01_15_065207_create_notifications_table.php
  64. 0 38
      database/migrations/5.6/2020_08_21_145711_create_referral_apply_table.php
  65. 34 0
      database/migrations/7.4/2024_02_26_161057_create_appupdate_table.php
  66. 1 1
      database/migrations/7.4/2024_02_26_161057_create_article_table.php
  67. 1 1
      database/migrations/7.4/2024_02_26_161057_create_config_table.php
  68. 0 0
      database/migrations/7.4/2024_02_26_161057_create_country_table.php
  69. 3 3
      database/migrations/7.4/2024_02_26_161057_create_coupon_log_table.php
  70. 2 2
      database/migrations/7.4/2024_02_26_161057_create_coupon_table.php
  71. 3 1
      database/migrations/7.4/2024_02_26_161057_create_email_filter_table.php
  72. 0 0
      database/migrations/7.4/2024_02_26_161057_create_failed_jobs_table.php
  73. 3 3
      database/migrations/7.4/2024_02_26_161057_create_goods_table.php
  74. 3 3
      database/migrations/7.4/2024_02_26_161057_create_invite_table.php
  75. 0 0
      database/migrations/7.4/2024_02_26_161057_create_jobs_table.php
  76. 6 4
      database/migrations/7.4/2024_02_26_161057_create_label_node_table.php
  77. 0 0
      database/migrations/7.4/2024_02_26_161057_create_label_table.php
  78. 1 1
      database/migrations/7.4/2024_02_26_161057_create_level_table.php
  79. 0 0
      database/migrations/7.4/2024_02_26_161057_create_marketing_table.php
  80. 35 0
      database/migrations/7.4/2024_02_26_161057_create_model_has_permissions_table.php
  81. 35 0
      database/migrations/7.4/2024_02_26_161057_create_model_has_roles_table.php
  82. 1 1
      database/migrations/7.4/2024_02_26_161057_create_node_auth_table.php
  83. 1 1
      database/migrations/7.4/2024_02_26_161057_create_node_certificate_table.php
  84. 0 0
      database/migrations/7.4/2024_02_26_161057_create_node_daily_data_flow_table.php
  85. 4 4
      database/migrations/7.4/2024_02_26_161057_create_node_heartbeat_table.php
  86. 0 0
      database/migrations/7.4/2024_02_26_161057_create_node_hourly_data_flow_table.php
  87. 6 6
      database/migrations/7.4/2024_02_26_161057_create_node_online_ip_table.php
  88. 4 4
      database/migrations/7.4/2024_02_26_161057_create_node_online_log_table.php
  89. 22 16
      database/migrations/7.4/2024_02_26_161057_create_node_table.php
  90. 34 0
      database/migrations/7.4/2024_02_26_161057_create_node_user_group_table.php
  91. 2 2
      database/migrations/7.4/2024_02_26_161057_create_notification_log_table.php
  92. 38 0
      database/migrations/7.4/2024_02_26_161057_create_notifications_table.php
  93. 8 7
      database/migrations/7.4/2024_02_26_161057_create_order_table.php
  94. 1 1
      database/migrations/7.4/2024_02_26_161057_create_payment_callback_table.php
  95. 4 2
      database/migrations/7.4/2024_02_26_161057_create_payment_table.php
  96. 34 0
      database/migrations/7.4/2024_02_26_161057_create_permissions_table.php
  97. 1 1
      database/migrations/7.4/2024_02_26_161057_create_products_pool_table.php
  98. 6 2
      database/migrations/7.4/2024_02_26_161057_create_referral_apply_table.php
  99. 5 3
      database/migrations/7.4/2024_02_26_161057_create_referral_log_table.php
  100. 33 0
      database/migrations/7.4/2024_02_26_161057_create_role_has_permissions_table.php

+ 1 - 1
.env

@@ -19,7 +19,7 @@ DB_PASSWORD=KrkLMazMxthyxepe
 DB_STRICT=false
 
 BROADCAST_DRIVER=redis
-CACHE_DRIVER=file
+CACHE_DRIVER=array
 QUEUE_CONNECTION=redis
 SESSION_DRIVER=redis
 SESSION_LIFETIME=120

+ 25 - 0
app/Http/Controllers/UserController.php

@@ -229,6 +229,25 @@ class UserController extends Controller
         ]);
     }
 
+     // 商品列表
+    public function services2(Request $request)
+    {
+        $user = auth()->user();
+        // 余额充值商品,只取10个
+        $renewOrder = Order::userActivePlan($user->id)->first();
+        $renewPrice = $renewOrder->goods ?? 0;
+        // 有重置日时按照重置日为标准,否者就以过期日为标准
+        $dataPlusDays = $user->reset_time ?? $user->expired_at;
+
+        return view('user.services2', [
+            'chargeGoodsList' => Goods::type(3)->whereStatus(1)->orderBy('price')->limit(10)->get(),
+            'goodsList'       => Goods::whereStatus(1)->where('type', '<=', '2')->orderByDesc('type')->orderByDesc('sort')->paginate(10)->appends($request->except('page')),
+            'renewTraffic'    => $renewPrice->renew ?? 0,
+            'dataPlusDays'    => $dataPlusDays > date('Y-m-d') ? Helpers::daysToNow($dataPlusDays) : 0,
+            'username'        => $user->profile()["account"],
+        ]);
+    }
+
     //重置流量
     public function resetUserTraffic(): ?JsonResponse
     {
@@ -252,8 +271,14 @@ class UserController extends Controller
     // 工单中间网页
     public function ticketop(Request $request)
     {
+        $user = auth()->user();
+        $ret = $user->profile();
+        $email = $ret['account'];
+        $uuid = $ret['uuid'];
         return view('user.ticketop', [
             'onurl' => "http://www.baidu.com",
+            'uuid' => $uuid,
+            'email' => $email,
             'tickets' => route('ticket1'),
         ]);
     }

+ 18 - 0
app/Models/AppUpdate.php

@@ -6,6 +6,24 @@ namespace App\Models;
 
 use Illuminate\Database\Eloquent\Model;
 
+/**
+ * App\Models\AppUpdate
+ *
+ * @property int $id
+ * @property string $appname app 名称
+ * @property string $appversion
+ * @property string $appdownload app下载地址
+ * @property string $appmsg
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate query()
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate whereAppdownload($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate whereAppmsg($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate whereAppname($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate whereAppversion($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|AppUpdate whereId($value)
+ * @mixin \Eloquent
+ */
 class AppUpdate extends Model
 {
     protected $table = 'appupdate';

+ 29 - 0
app/Models/Article.php

@@ -7,6 +7,35 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * 文章.
+ *
+ * @property int $id
+ * @property int $type 类型:1-文章、2-站内公告、3-站外公告
+ * @property string $title 标题
+ * @property string|null $summary 简介
+ * @property string|null $logo LOGO
+ * @property string|null $content 内容
+ * @property int $sort 排序
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property \Illuminate\Support\Carbon|null $deleted_at 删除时间
+ * @method static \Illuminate\Database\Eloquent\Builder|Article newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Article newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Article onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Article query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Article type($type)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereContent($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereLogo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereSummary($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Article whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|Article withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Article withoutTrashed()
+ * @mixin \Eloquent
  */
 class Article extends Model
 {

+ 9 - 0
app/Models/Config.php

@@ -6,6 +6,15 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 系统配置.
+ *
+ * @property string $name 配置名
+ * @property string|null $value 配置值
+ * @method static \Illuminate\Database\Eloquent\Builder|Config newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Config newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Config query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Config whereValue($value)
+ * @mixin \Eloquent
  */
 class Config extends Model
 {

+ 11 - 0
app/Models/Country.php

@@ -6,6 +6,17 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 国家/地区.
+ *
+ * @property string $code ISO国家代码
+ * @property string $name 名称
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Node[] $nodes
+ * @property-read int|null $nodes_count
+ * @method static \Illuminate\Database\Eloquent\Builder|Country newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Country newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Country query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Country whereCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Country whereName($value)
+ * @mixin \Eloquent
  */
 class Country extends Model
 {

+ 37 - 0
app/Models/Coupon.php

@@ -7,6 +7,43 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * 优惠券.
+ *
+ * @property int $id
+ * @property string $name 优惠券名称
+ * @property string|null $logo 优惠券LOGO
+ * @property string $sn 优惠券码
+ * @property int $type 类型:1-抵用券、2-折扣券、3-充值券
+ * @property int|null $usable_times 可使用次数
+ * @property int $value 折扣金额(元)/折扣力度
+ * @property int|null $rule 使用限制(元)
+ * @property mixed $start_time 有效期开始
+ * @property mixed $end_time 有效期结束
+ * @property int $status 状态:0-未使用、1-已使用、2-已失效
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property \Illuminate\Support\Carbon|null $deleted_at 删除时间
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Coupon onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon type($type)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereEndTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereLogo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereRule($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereSn($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereStartTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereUsableTimes($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Coupon whereValue($value)
+ * @method static \Illuminate\Database\Query\Builder|Coupon withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Coupon withoutTrashed()
+ * @mixin \Eloquent
  */
 class Coupon extends Model
 {

+ 17 - 0
app/Models/CouponLog.php

@@ -6,6 +6,23 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 优惠券使用日志.
+ *
+ * @property int $id
+ * @property int|null $coupon_id 优惠券ID
+ * @property int|null $goods_id 商品ID
+ * @property int|null $order_id 订单ID
+ * @property string|null $description 备注
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog whereCouponId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog whereDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog whereGoodsId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|CouponLog whereOrderId($value)
+ * @mixin \Eloquent
  */
 class CouponLog extends Model
 {

+ 11 - 0
app/Models/EmailFilter.php

@@ -6,6 +6,17 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 邮箱后缀过滤.
+ *
+ * @property int $id
+ * @property int $type 类型:1-黑名单、2-白名单
+ * @property string $words 敏感词
+ * @method static \Illuminate\Database\Eloquent\Builder|EmailFilter newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|EmailFilter newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|EmailFilter query()
+ * @method static \Illuminate\Database\Eloquent\Builder|EmailFilter whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|EmailFilter whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|EmailFilter whereWords($value)
+ * @mixin \Eloquent
  */
 class EmailFilter extends Model
 {

+ 52 - 0
app/Models/Goods.php

@@ -7,6 +7,58 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * 商品
+ *
+ * @property int $id
+ * @property string $name 商品名称
+ * @property string|null $logo 商品图片地址
+ * @property int $traffic 商品内含多少流量,单位MiB
+ * @property int $type 商品类型:1-流量包、2-套餐
+ * @property int $price 售价,单位分
+ * @property int $level 购买后给用户授权的等级
+ * @property int|null $renew 流量重置价格,单位分
+ * @property int|null $period 流量自动重置周期
+ * @property string|null $info 商品信息
+ * @property string|null $description 商品描述
+ * @property int $days 有效期
+ * @property int|null $invite_num 赠送邀请码数
+ * @property int|null $limit_num 限购数量,默认为null不限购
+ * @property string $color 商品颜色
+ * @property int $sort 排序
+ * @property int $is_hot 是否热销:0-否、1-是
+ * @property int $status 状态:0-下架、1-上架
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property \Illuminate\Support\Carbon|null $deleted_at 删除时间
+ * @property-read mixed $traffic_label
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Goods onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods type($type)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereColor($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDays($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereInfo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereInviteNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereIsHot($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereLevel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereLimitNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereLogo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods wherePeriod($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods wherePrice($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereRenew($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereTraffic($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Goods whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|Goods withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Goods withoutTrashed()
+ * @mixin \Eloquent
  */
 class Goods extends Model
 {

+ 30 - 0
app/Models/Invite.php

@@ -9,6 +9,36 @@ use Illuminate\Database\Eloquent\SoftDeletes;
 
 /**
  * 邀请码
+ *
+ * @property int $id
+ * @property int|null $inviter_id 邀请ID
+ * @property int|null $invitee_id 受邀ID
+ * @property string $code 邀请码
+ * @property int $status 邀请码状态:0-未使用、1-已使用、2-已过期
+ * @property \Illuminate\Support\Carbon $dateline 有效期至
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property \Illuminate\Support\Carbon|null $deleted_at 删除时间
+ * @property-read string $status_label
+ * @property-read \App\Models\User|null $invitee
+ * @property-read \App\Models\User|null $inviter
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite newQuery()
+ * @method static \Illuminate\Database\Query\Builder|Invite onlyTrashed()
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite uid()
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereDateline($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereDeletedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereInviteeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereInviterId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Invite whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Query\Builder|Invite withTrashed()
+ * @method static \Illuminate\Database\Query\Builder|Invite withoutTrashed()
+ * @mixin \Eloquent
  */
 class Invite extends Model
 {

+ 13 - 0
app/Models/Label.php

@@ -7,6 +7,19 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
 
 /**
  * 标签.
+ *
+ * @property int $id
+ * @property string $name 名称
+ * @property int $sort 排序值
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Node[] $nodes
+ * @property-read int|null $nodes_count
+ * @method static \Illuminate\Database\Eloquent\Builder|Label newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Label newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Label query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Label whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Label whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Label whereSort($value)
+ * @mixin \Eloquent
  */
 class Label extends Model
 {

+ 13 - 0
app/Models/Level.php

@@ -6,6 +6,19 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 等级.
+ *
+ * @property int $id
+ * @property int $level 等级
+ * @property string $name 等级名称
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $users
+ * @property-read int|null $users_count
+ * @method static \Illuminate\Database\Eloquent\Builder|Level newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Level newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Level query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Level whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Level whereLevel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Level whereName($value)
+ * @mixin \Eloquent
  */
 class Level extends Model
 {

+ 24 - 0
app/Models/Marketing.php

@@ -6,6 +6,30 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 营销
+ *
+ * @property int $id
+ * @property int $type 类型:1-邮件群发
+ * @property string $receiver 接收者
+ * @property string $title 标题
+ * @property string $content 内容
+ * @property string|null $error 错误信息
+ * @property int $status 状态:-1-失败、0-待发送、1-成功
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read string $status_label
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereContent($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereError($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereReceiver($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Marketing whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class Marketing extends Model
 {

+ 125 - 0
app/Models/Node.php

@@ -11,6 +11,131 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
 
 /**
  * 节点配置信息.
+ *
+ * @property int $id
+ * @property int $type 服务类型:1-Shadowsocks(R)、2-V2ray、3-Trojan、4-VNet
+ * @property string $name 名称
+ * @property string $country_code 国家代码
+ * @property string|null $server 服务器域名地址
+ * @property string|null $ip 服务器IPV4地址
+ * @property string|null $ipv6 服务器IPV6地址
+ * @property int $level 等级:0-无等级,全部可见
+ * @property int|null $rule_group_id 从属规则分组ID
+ * @property int $speed_limit 节点限速,为0表示不限速,单位Byte
+ * @property int $client_limit 设备数限制
+ * @property string|null $relay_server 中转地址
+ * @property int|null $relay_port 中转端口
+ * @property string|null $description 节点简单描述
+ * @property string|null $geo 节点地理位置
+ * @property string $method 加密方式
+ * @property string $protocol 协议
+ * @property string|null $protocol_param 协议参数
+ * @property string $obfs 混淆
+ * @property string|null $obfs_param 混淆参数
+ * @property float $traffic_rate 流量比率
+ * @property int $is_subscribe 是否允许用户订阅该节点:0-否、1-是
+ * @property int $is_ddns 是否使用DDNS:0-否、1-是
+ * @property int $is_relay 是否中转节点:0-否、1-是
+ * @property int $is_udp 是否启用UDP:0-不启用、1-启用
+ * @property int $push_port 消息推送端口
+ * @property int $detection_type 节点检测: 0-关闭、1-只检测TCP、2-只检测ICMP、3-检测全部
+ * @property int $compatible 兼容SS
+ * @property int $single 启用单端口功能:0-否、1-是
+ * @property int|null $port 单端口的端口号或连接端口号
+ * @property string|null $passwd 单端口的连接密码
+ * @property int $sort 排序值,值越大越靠前显示
+ * @property int $status 状态:0-维护、1-正常
+ * @property int $v2_alter_id V2Ray额外ID
+ * @property int $v2_port V2Ray服务端口
+ * @property string $v2_method V2Ray加密方式
+ * @property string $v2_net V2Ray传输协议
+ * @property string $v2_type V2Ray伪装类型
+ * @property string|null $v2_host V2Ray伪装的域名
+ * @property string|null $v2_path V2Ray的WS/H2路径
+ * @property int $v2_tls V2Ray连接TLS:0-未开启、1-开启
+ * @property string|null $tls_provider V2Ray节点的TLS提供商授权信息
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property string|null $v2_sni
+ * @property int|null $vless
+ * @property string|null $vless_privateKey 密钥key
+ * @property string|null $vless_pulkey 公钥
+ * @property string|null $shortIds
+ * @property-read \App\Models\NodeAuth|null $auth
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\NodeDailyDataFlow[] $dailyDataFlows
+ * @property-read int|null $daily_data_flows_count
+ * @property-read string $type_label
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\NodeHeartbeat[] $heartbeats
+ * @property-read int|null $heartbeats_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\NodeHourlyDataFlow[] $hourlyDataFlows
+ * @property-read int|null $hourly_data_flows_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Label[] $labels
+ * @property-read int|null $labels_count
+ * @property-read \App\Models\Level|null $level_table
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\NodeOnlineIp[] $onlineIps
+ * @property-read int|null $online_ips_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\NodeOnlineLog[] $onlineLogs
+ * @property-read int|null $online_logs_count
+ * @property-read \App\Models\RuleGroup|null $ruleGroup
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\RuleLog[] $ruleLogs
+ * @property-read int|null $rule_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserDataFlowLog[] $userDataFlowLogs
+ * @property-read int|null $user_data_flow_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserGroup[] $userGroups
+ * @property-read int|null $user_groups_count
+ * @method static \Illuminate\Database\Eloquent\Builder|Node newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Node newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Node query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereClientLimit($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereCompatible($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereCountryCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereDetectionType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereGeo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereIpv6($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereIsDdns($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereIsRelay($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereIsSubscribe($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereIsUdp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereLevel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereMethod($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereObfs($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereObfsParam($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node wherePasswd($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node wherePort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereProtocol($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereProtocolParam($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node wherePushPort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereRelayPort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereRelayServer($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereRuleGroupId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereServer($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereShortIds($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereSingle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereSpeedLimit($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereTlsProvider($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereTrafficRate($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2AlterId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Host($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Method($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Net($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Path($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Port($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Sni($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Tls($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereV2Type($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereVless($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereVlessPrivateKey($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Node whereVlessPulkey($value)
+ * @mixin \Eloquent
  */
 class Node extends Model
 {

+ 18 - 0
app/Models/NodeAuth.php

@@ -7,6 +7,24 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 节点授权密钥.
+ *
+ * @property int $id
+ * @property int $node_id 授权节点ID
+ * @property string $key 认证KEY
+ * @property string $secret 通信密钥
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\Node $node
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth whereKey($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth whereSecret($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeAuth whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class NodeAuth extends Model
 {

+ 17 - 0
app/Models/NodeCertificate.php

@@ -6,6 +6,23 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 伪装域名证书.
+ *
+ * @property int $id
+ * @property string $domain 域名
+ * @property string|null $key 域名证书KEY
+ * @property string|null $pem 域名证书PEM
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate whereDomain($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate whereKey($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate wherePem($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeCertificate whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class NodeCertificate extends Model
 {

+ 20 - 0
app/Models/NodeDailyDataFlow.php

@@ -7,6 +7,26 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 节点每日流量统计
+ *
+ * @property int $id
+ * @property int $node_id 节点ID
+ * @property int $u 上传流量
+ * @property int $d 下载流量
+ * @property int $total 总流量
+ * @property string|null $traffic 总流量(带单位)
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Node $node
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereD($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereTotal($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereTraffic($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeDailyDataFlow whereU($value)
+ * @mixin \Eloquent
  */
 class NodeDailyDataFlow extends Model
 {

+ 16 - 0
app/Models/NodeHeartbeat.php

@@ -6,6 +6,22 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 节点负载信息.
+ *
+ * @property int $id
+ * @property int $node_id 节点ID
+ * @property int $uptime 后端存活时长,单位秒
+ * @property string $load 负载
+ * @property int $log_time 记录时间
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat recently()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat whereLoad($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat whereLogTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHeartbeat whereUptime($value)
+ * @mixin \Eloquent
  */
 class NodeHeartbeat extends Model
 {

+ 20 - 0
app/Models/NodeHourlyDataFlow.php

@@ -7,6 +7,26 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 节点每日流量统计
+ *
+ * @property int $id
+ * @property int $node_id 节点ID
+ * @property int $u 上传流量
+ * @property int $d 下载流量
+ * @property int $total 总流量
+ * @property string|null $traffic 总流量(带单位)
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Node $node
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereD($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereTotal($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereTraffic($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeHourlyDataFlow whereU($value)
+ * @mixin \Eloquent
  */
 class NodeHourlyDataFlow extends Model
 {

+ 21 - 0
app/Models/NodeOnlineIp.php

@@ -7,6 +7,27 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 节点在线用户IP信息.
+ *
+ * @property int $id
+ * @property int $node_id 节点ID
+ * @property int|null $user_id 用户ID
+ * @property int $port 端口
+ * @property string $type 类型:all、tcp、udp
+ * @property string|null $ip 连接IP:每个IP用,号隔开
+ * @property int $created_at 上报时间
+ * @property-read \App\Models\Node $node
+ * @property-read \App\Models\User|null $user
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp whereIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp wherePort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineIp whereUserId($value)
+ * @mixin \Eloquent
  */
 class NodeOnlineIp extends Model
 {

+ 13 - 0
app/Models/NodeOnlineLog.php

@@ -6,6 +6,19 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 节点用户在线情况.
+ *
+ * @property int $id
+ * @property int $node_id 节点ID
+ * @property int $online_user 在线用户数
+ * @property int $log_time 记录时间
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog whereLogTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NodeOnlineLog whereOnlineUser($value)
+ * @mixin \Eloquent
  */
 class NodeOnlineLog extends Model
 {

+ 23 - 0
app/Models/NotificationLog.php

@@ -6,6 +6,29 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 推送通知日志.
+ *
+ * @property int $id
+ * @property int $type 类型:1-邮件、2-ServerChan、3-Bark、4-Telegram
+ * @property string $address 收信地址
+ * @property string $title 标题
+ * @property string $content 内容
+ * @property int $status 状态:-1发送失败、0-等待发送、1-发送成功
+ * @property string|null $error 发送失败抛出的异常信息
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereAddress($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereContent($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereError($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|NotificationLog whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class NotificationLog extends Model
 {

+ 49 - 0
app/Models/Order.php

@@ -9,6 +9,55 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
 
 /**
  * 订单.
+ *
+ * @property int $id
+ * @property string $sn 订单编号
+ * @property int $user_id 购买者ID
+ * @property int|null $goods_id 商品ID
+ * @property int|null $coupon_id 优惠券ID
+ * @property int $origin_amount 订单原始总价,单位分
+ * @property int $amount 订单总价,单位分
+ * @property \Illuminate\Support\Carbon|null $expired_at 过期时间
+ * @property int $is_expire 是否已过期:0-未过期、1-已过期
+ * @property int $pay_type 支付渠道:0-余额、1-支付宝、2-QQ、3-微信、4-虚拟货币、5-paypal
+ * @property string $pay_way 支付方式:balance、f2fpay、codepay、payjs、bitpayx等
+ * @property int $status 订单状态:-1-已关闭、0-待支付、1-已支付待确认、2-已完成
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\Coupon|null $coupon
+ * @property-read string $pay_type_icon
+ * @property-read string $pay_type_label
+ * @property-read string $pay_way_label
+ * @property-read string $status_label
+ * @property-read \App\Models\Goods|null $goods
+ * @property-read \App\Models\Payment|null $payment
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|Order active()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order activePackage()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order activePlan()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order recentUnPay()
+ * @method static \Illuminate\Database\Eloquent\Builder|Order uid($uid = null)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order userActivePackage($uid = null)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order userActivePlan($uid = null)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order userPrepay($uid = null)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereCouponId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereExpiredAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereGoodsId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereIsExpire($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereOriginAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order wherePayType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order wherePayWay($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereSn($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Order whereUserId($value)
+ * @mixin \Eloquent
  */
 class Order extends Model
 {

+ 29 - 0
app/Models/Payment.php

@@ -8,6 +8,35 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 支付单.
+ *
+ * @property int $id
+ * @property string $trade_no 支付单号(本地订单号)
+ * @property int $user_id 用户ID
+ * @property int $order_id 本地订单ID
+ * @property int $amount 金额,单位分
+ * @property string|null $qr_code 支付二维码
+ * @property string|null $url 支付链接
+ * @property int $status 支付状态:-1-支付失败、0-等待支付、1-支付成功
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read string $status_label
+ * @property-read \App\Models\Order $order
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment uid()
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereOrderId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereQrCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereTradeNo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereUrl($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Payment whereUserId($value)
+ * @mixin \Eloquent
  */
 class Payment extends Model
 {

+ 20 - 0
app/Models/PaymentCallback.php

@@ -6,6 +6,26 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 支付回调日志.
+ *
+ * @property int $id
+ * @property string $trade_no 本地订单号
+ * @property string $out_trade_no 外部订单号(支付平台)
+ * @property string $amount 交易金额,单位分
+ * @property int $status 交易状态:0-失败、1-成功
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read string $status_label
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback query()
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereOutTradeNo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereTradeNo($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|PaymentCallback whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class PaymentCallback extends Model
 {

+ 19 - 0
app/Models/ProductsPool.php

@@ -6,6 +6,25 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 产品名称池.
+ *
+ * @property int $id
+ * @property string $name 名称
+ * @property int $min_amount 适用最小金额,单位分
+ * @property int $max_amount 适用最大金额,单位分
+ * @property int $status 状态:0-未启用、1-已启用
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereMaxAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereMinAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ProductsPool whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class ProductsPool extends Model
 {

+ 30 - 0
app/Models/ReferralApply.php

@@ -8,6 +8,36 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 返利申请.
+ *
+ * @property int $id
+ * @property int $user_id 申请者ID
+ * @property int $before 操作前可提现金额,单位分
+ * @property int $after 操作后可提现金额,单位分
+ * @property int $amount 本次提现金额,单位分
+ * @property array $link_logs 关联返利日志ID,例如:1,3,4
+ * @property int $status 状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property string|null $zfb_name 支付宝姓名
+ * @property string|null $zfb_card 支付宝账号
+ * @property-read string $status_label
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply uid()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereAfter($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereBefore($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereLinkLogs($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereUserId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereZfbCard($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralApply whereZfbName($value)
+ * @mixin \Eloquent
  */
 class ReferralApply extends Model
 {

+ 28 - 0
app/Models/ReferralLog.php

@@ -8,6 +8,34 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 返利日志.
+ *
+ * @property int $id
+ * @property int|null $invitee_id 用户ID
+ * @property int $inviter_id 推广人ID
+ * @property int|null $order_id 关联订单ID
+ * @property int $amount 消费金额,单位分
+ * @property int $commission 返利金额
+ * @property int $status 状态:0-未提现、1-审核中、2-已提现
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read string $status_label
+ * @property-read \App\Models\User|null $invitee
+ * @property-read \App\Models\User $inviter
+ * @property-read \App\Models\Order|null $order
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog uid()
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereCommission($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereInviteeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereInviterId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereOrderId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|ReferralLog whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class ReferralLog extends Model
 {

+ 17 - 0
app/Models/Rule.php

@@ -6,6 +6,23 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 审计规则.
+ *
+ * @property int $id
+ * @property int $type 类型:1-正则表达式、2-域名、3-IP、4-协议
+ * @property string $name 规则描述
+ * @property string $pattern 规则值
+ * @property-read string $type_api_label
+ * @property-read string $type_label
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\RuleGroup[] $rule_groups
+ * @property-read int|null $rule_groups_count
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule wherePattern($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Rule whereType($value)
+ * @mixin \Eloquent
  */
 class Rule extends Model
 {

+ 18 - 0
app/Models/RuleGroup.php

@@ -6,6 +6,24 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 审计规则分组.
+ *
+ * @property int $id
+ * @property int $type 模式:1-阻断、0-放行
+ * @property string $name 分组名称
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read string $type_label
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Rule[] $rules
+ * @property-read int|null $rules_count
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup query()
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleGroup whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class RuleGroup extends Model
 {

+ 20 - 0
app/Models/RuleLog.php

@@ -7,6 +7,26 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 触发审计规则日志.
+ *
+ * @property int $id
+ * @property int $user_id 触发者ID
+ * @property int|null $node_id 节点ID
+ * @property int|null $rule_id 规则ID,0表示白名单模式下访问访问了非规则允许的网址
+ * @property string|null $reason 触发原因
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Node|null $node
+ * @property-read \App\Models\Rule|null $rule
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog whereReason($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog whereRuleId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|RuleLog whereUserId($value)
+ * @mixin \Eloquent
  */
 class RuleLog extends Model
 {

+ 22 - 0
app/Models/Sms.php

@@ -6,6 +6,28 @@ namespace App\Models;
 
 use Illuminate\Database\Eloquent\Model;
 
+/**
+ * App\Models\Sms
+ *
+ * @property int $id
+ * @property string|null $fromNumber
+ * @property string|null $codetext
+ * @property string|null $codetime
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @property string|null $toPhone
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereCodetext($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereCodetime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereFromNumber($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereToPhone($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Sms whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
 class Sms extends Model
 {
     // 加上对应的字段

+ 17 - 0
app/Models/SsConfig.php

@@ -6,6 +6,23 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 配置信息.
+ *
+ * @property int $id
+ * @property string $name 配置名
+ * @property int $type 类型:1-加密方式、2-协议、3-混淆
+ * @property int $is_default 是否默认:0-不是、1-是
+ * @property int $sort 排序:值越大排越前
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig default()
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig query()
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig type($type)
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig whereIsDefault($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig whereName($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig whereSort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|SsConfig whereType($value)
+ * @mixin \Eloquent
  */
 class SsConfig extends Model
 {

+ 27 - 0
app/Models/Ticket.php

@@ -9,6 +9,33 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
 
 /**
  * 工单.
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int|null $admin_id 管理员ID
+ * @property string $title 标题
+ * @property string $content 内容
+ * @property int $status 状态:0-待处理、1-已处理未关闭、2-已关闭
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\User|null $admin
+ * @property-read string $status_label
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TicketReply[] $reply
+ * @property-read int|null $reply_count
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket uid()
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereAdminId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereContent($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Ticket whereUserId($value)
+ * @mixin \Eloquent
  */
 class Ticket extends Model
 {

+ 22 - 0
app/Models/TicketReply.php

@@ -7,6 +7,28 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 工单回复.
+ *
+ * @property int $id
+ * @property int $ticket_id 工单ID
+ * @property int|null $user_id 用户ID
+ * @property int|null $admin_id 管理员ID
+ * @property string $content 回复内容
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\User|null $admin
+ * @property-read \App\Models\Ticket $ticket
+ * @property-read \App\Models\User|null $user
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply query()
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereAdminId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereContent($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereTicketId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|TicketReply whereUserId($value)
+ * @mixin \Eloquent
  */
 class TicketReply extends Model
 {

+ 130 - 0
app/Models/User.php

@@ -14,6 +14,136 @@ use Tymon\JWTAuth\Contracts\JWTSubject;
 
 /**
  * 用户信息.
+ *
+ * @property int $id
+ * @property string $username 昵称
+ * @property string $email 邮箱
+ * @property string $password 密码
+ * @property int $port 代理端口
+ * @property string $passwd 代理密码
+ * @property string $vmess_id
+ * @property int $transfer_enable 可用流量,单位字节,默认1TiB
+ * @property int $u 已上传流量,单位字节
+ * @property int $d 已下载流量,单位字节
+ * @property int|null $t 最后使用时间
+ * @property string|null $ip 最后连接IP
+ * @property int $enable 代理状态
+ * @property string $method 加密方式
+ * @property string $protocol 协议
+ * @property string|null $protocol_param 协议参数
+ * @property string $obfs 混淆
+ * @property int $speed_limit 用户限速,为0表示不限速,单位Byte
+ * @property string|null $wechat 微信
+ * @property string|null $qq QQ
+ * @property int $credit 余额,单位分
+ * @property \Illuminate\Support\Carbon $expired_at 过期时间
+ * @property int|null $ban_time 封禁到期时间
+ * @property string|null $remark 备注
+ * @property int $level 等级,默认0级
+ * @property int|null $user_group_id 所属分组
+ * @property string $reg_ip 注册IP
+ * @property int $last_login 最后登录时间
+ * @property int|null $inviter_id 邀请人
+ * @property \Illuminate\Support\Carbon|null $reset_time 流量重置日期
+ * @property int $invite_num 可生成邀请码数
+ * @property int $status 状态:-1-禁用、0-未激活、1-正常
+ * @property string|null $remember_token
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property int|null $client_limit 用户链接的设备
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserBanedLog[] $banedLogs
+ * @property-read int|null $baned_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ReferralLog[] $commissionLogs
+ * @property-read int|null $commission_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ReferralApply[] $commissionSettlements
+ * @property-read int|null $commission_settlements_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserCreditLog[] $creditLogs
+ * @property-read int|null $credit_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserDailyDataFlow[] $dailyDataFlows
+ * @property-read int|null $daily_data_flows_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserDataFlowLog[] $dataFlowLogs
+ * @property-read int|null $data_flow_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserDataModifyLog[] $dataModifyLogs
+ * @property-read int|null $data_modify_logs_count
+ * @property-read bool $is_available
+ * @property-read string $level_name
+ * @property-read mixed $transfer_enable_formatted
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserHourlyDataFlow[] $hourlyDataFlows
+ * @property-read int|null $hourly_data_flows_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|User[] $invitees
+ * @property-read int|null $invitees_count
+ * @property-read User|null $inviter
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Invite[] $invites
+ * @property-read int|null $invites_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserLoginLog[] $loginLogs
+ * @property-read int|null $login_logs_count
+ * @property-read \Illuminate\Notifications\DatabaseNotificationCollection|\Illuminate\Notifications\DatabaseNotification[] $notifications
+ * @property-read int|null $notifications_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\NodeOnlineIp[] $onlineIpLogs
+ * @property-read int|null $online_ip_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Order[] $orders
+ * @property-read int|null $orders_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Payment[] $payments
+ * @property-read int|null $payments_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Permission[] $permissions
+ * @property-read int|null $permissions_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\Permission\Models\Role[] $roles
+ * @property-read int|null $roles_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\RuleLog[] $ruleLogs
+ * @property-read int|null $rule_logs_count
+ * @property-read \App\Models\UserSubscribe|null $subscribe
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserSubscribeLog[] $subscribeLogs
+ * @property-read int|null $subscribe_logs_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\TicketReply[] $ticketReplies
+ * @property-read int|null $ticket_replies_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Ticket[] $tickets
+ * @property-read int|null $tickets_count
+ * @property-read \App\Models\UserGroup|null $userGroup
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Verify[] $verify
+ * @property-read int|null $verify_count
+ * @method static \Illuminate\Database\Eloquent\Builder|User activeUser()
+ * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|User newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|User permission($permissions)
+ * @method static \Illuminate\Database\Eloquent\Builder|User query()
+ * @method static \Illuminate\Database\Eloquent\Builder|User role($roles, $guard = null)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereBanTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereClientLimit($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereCredit($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereD($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereEnable($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereExpiredAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereInviteNum($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereInviterId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereLastLogin($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereLevel($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereMethod($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereObfs($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User wherePasswd($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User wherePort($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereProtocol($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereProtocolParam($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereQq($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereRegIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereRemark($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereResetTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereSpeedLimit($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereT($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereTransferEnable($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereU($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereUserGroupId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereUsername($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereVmessId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|User whereWechat($value)
+ * @mixin \Eloquent
  */
 class User extends Authenticatable implements JWTSubject
 {

+ 20 - 0
app/Models/UserBanedLog.php

@@ -7,6 +7,26 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 用户封禁日志.
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int $time 封禁账号时长,单位分钟
+ * @property string|null $description 操作描述
+ * @property int $status 状态:0-未处理、1-已处理
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserBanedLog whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserBanedLog extends Model
 {

+ 23 - 0
app/Models/UserCreditLog.php

@@ -7,6 +7,29 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 账号余额操作日志.
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int|null $order_id 订单ID
+ * @property int $before 发生前余额,单位分
+ * @property int $after 发生后金额,单位分
+ * @property int $amount 发生金额,单位分
+ * @property string|null $description 操作描述
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Order|null $order
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereAfter($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereAmount($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereBefore($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereOrderId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserCreditLog whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserCreditLog extends Model
 {

+ 24 - 0
app/Models/UserDailyDataFlow.php

@@ -7,6 +7,30 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 用户每日流量统计
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int|null $node_id 节点ID,null表示统计全部节点
+ * @property int $u 上传流量
+ * @property int $d 下载流量
+ * @property int $total 总流量
+ * @property string|null $traffic 总流量(带单位)
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Node|null $node
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow userDaily($uid)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereD($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereTotal($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereTraffic($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereU($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDailyDataFlow whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserDailyDataFlow extends Model
 {

+ 23 - 0
app/Models/UserDataFlowLog.php

@@ -7,6 +7,29 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 用户流量记录.
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int $node_id 节点ID
+ * @property int $u 上传流量
+ * @property int $d 下载流量
+ * @property float $rate 倍率
+ * @property string $traffic 产生流量
+ * @property int $log_time 记录时间
+ * @property-read \App\Models\Node $node
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereD($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereLogTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereRate($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereTraffic($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereU($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataFlowLog whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserDataFlowLog extends Model
 {

+ 21 - 0
app/Models/UserDataModifyLog.php

@@ -7,6 +7,27 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 用户流量变动记录.
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int|null $order_id 发生的订单ID
+ * @property int $before 操作前流量
+ * @property int $after 操作后流量
+ * @property string|null $description 描述
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Order|null $order
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereAfter($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereBefore($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereDescription($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereOrderId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserDataModifyLog whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserDataModifyLog extends Model
 {

+ 13 - 0
app/Models/UserGroup.php

@@ -6,6 +6,19 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 用户分组控制.
+ *
+ * @property int $id
+ * @property string $name 分组名称
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Node[] $nodes
+ * @property-read int|null $nodes_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $users
+ * @property-read int|null $users_count
+ * @method static \Illuminate\Database\Eloquent\Builder|UserGroup newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserGroup newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserGroup query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserGroup whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserGroup whereName($value)
+ * @mixin \Eloquent
  */
 class UserGroup extends Model
 {

+ 25 - 0
app/Models/UserHourlyDataFlow.php

@@ -7,6 +7,31 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 用户流量每小时统计
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property int|null $node_id 节点ID,null表示统计全部节点
+ * @property int $u 上传流量
+ * @property int $d 下载流量
+ * @property int $total 总流量
+ * @property string|null $traffic 总流量(带单位)
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\Node|null $node
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow userHourly($uid)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow userRecentUsed($uid)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereD($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereNodeId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereTotal($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereTraffic($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereU($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserHourlyDataFlow whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserHourlyDataFlow extends Model
 {

+ 26 - 0
app/Models/UserLoginLog.php

@@ -7,6 +7,32 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 用户登录日志.
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property string $ip IP地址
+ * @property string $country 国家
+ * @property string $province 省份
+ * @property string $city 城市
+ * @property string $county 郡县
+ * @property string $isp 运营商
+ * @property string $area 地区
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereArea($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereCity($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereCountry($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereCounty($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereIsp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereProvince($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserLoginLog whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserLoginLog extends Model
 {

+ 27 - 0
app/Models/UserSubscribe.php

@@ -9,6 +9,33 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
 
 /**
  * 用户订阅地址
+ *
+ * @property int $id
+ * @property int $user_id 用户ID
+ * @property string $code 订阅地址唯一识别码
+ * @property int $times 地址请求次数
+ * @property int $status 状态:0-禁用、1-启用
+ * @property int|null $ban_time 封禁时间
+ * @property string|null $ban_desc 封禁理由
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\User $user
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\UserSubscribeLog[] $userSubscribeLogs
+ * @property-read int|null $user_subscribe_logs_count
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe uid()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereBanDesc($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereBanTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereTimes($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribe whereUserId($value)
+ * @mixin \Eloquent
  */
 class UserSubscribe extends Model
 {

+ 17 - 0
app/Models/UserSubscribeLog.php

@@ -8,6 +8,23 @@ use Illuminate\Database\Eloquent\Relations\HasOneThrough;
 
 /**
  * 用户订阅地址请求日志.
+ *
+ * @property int $id
+ * @property int $user_subscribe_id 对应user_subscribe的id
+ * @property string|null $request_ip 请求IP
+ * @property \Illuminate\Support\Carbon $request_time 请求时间
+ * @property string|null $request_header 请求头部信息
+ * @property-read \App\Models\UserSubscribe $subscribe
+ * @property-read \App\Models\User|null $user
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog query()
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog whereRequestHeader($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog whereRequestIp($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog whereRequestTime($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|UserSubscribeLog whereUserSubscribeId($value)
+ * @mixin \Eloquent
  */
 class UserSubscribeLog extends Model
 {

+ 21 - 0
app/Models/Verify.php

@@ -7,6 +7,27 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 
 /**
  * 注册时的验证激活地址
+ *
+ * @property int $id
+ * @property int $type 激活类型:1-自行激活、2-管理员激活
+ * @property int $user_id 用户ID
+ * @property string $token 校验token
+ * @property int $status 状态:0-未使用、1-已使用、2-已失效
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @property-read \App\Models\User $user
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify query()
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify type($type)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereToken($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereType($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereUpdatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|Verify whereUserId($value)
+ * @mixin \Eloquent
  */
 class Verify extends Model
 {

+ 18 - 0
app/Models/VerifyCode.php

@@ -6,6 +6,24 @@ use Illuminate\Database\Eloquent\Model;
 
 /**
  * 注册时的激活验证码
+ *
+ * @property int $id
+ * @property string $address 用户邮箱
+ * @property string $code 验证码
+ * @property int $status 状态:0-未使用、1-已使用、2-已失效
+ * @property \Illuminate\Support\Carbon $created_at 创建时间
+ * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode query()
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode recentUnused()
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode whereAddress($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode whereCode($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode whereStatus($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|VerifyCode whereUpdatedAt($value)
+ * @mixin \Eloquent
  */
 class VerifyCode extends Model
 {

+ 1 - 0
composer.json

@@ -46,6 +46,7 @@
     "require-dev": {
         "barryvdh/laravel-debugbar": "^3.4",
         "barryvdh/laravel-ide-helper": "^2.8",
+        "kitloong/laravel-migrations-generator": "^v6.11.0",
         "facade/ignition": "^2.0",
         "fakerphp/faker": "^1.9.1",
         "laravel/telescope": "^3.5",

BIN
composer.phar


+ 0 - 35
database/migrations/2020_08_21_145711_create_node_rule_table.php

@@ -1,35 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateNodeRuleTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('node_rule', function (Blueprint $table) {
-            $table->increments('id');
-            $table->unsignedInteger('node_id')->nullable()->comment('节点ID');
-            $table->unsignedInteger('rule_id')->nullable()->comment('审计规则ID');
-            $table->boolean('is_black')->default(1)->comment('是否黑名单模式:0-不是、1-是');
-            $table->dateTime('created_at')->comment('创建时间');
-            $table->dateTime('updated_at')->comment('最后更新时间');
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('node_rule');
-    }
-}

+ 0 - 34
database/migrations/2020_08_21_145711_create_rule_group_node_table.php

@@ -1,34 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateRuleGroupNodeTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('rule_group_node', function (Blueprint $table) {
-            $table->increments('id');
-            $table->unsignedInteger('rule_group_id')->comment('规则分组ID');
-            $table->unsignedInteger('node_id')->comment('节点ID');
-            $table->dateTime('created_at')->comment('创建时间');
-            $table->dateTime('updated_at')->comment('最后更新时间');
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('rule_group_node');
-    }
-}

+ 0 - 36
database/migrations/2020_08_21_145711_create_rule_group_table.php

@@ -1,36 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateRuleGroupTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('rule_group', function (Blueprint $table) {
-            $table->increments('id');
-            $table->boolean('type')->default(1)->comment('模式:1-阻断、0-放行');
-            $table->string('name')->comment('分组名称');
-            $table->json('rules')->nullable()->comment('关联的规则ID,多个用,号分隔');
-            $table->json('nodes')->nullable()->comment('关联的节点ID,多个用,号分隔');
-            $table->dateTime('created_at')->comment('创建时间');
-            $table->dateTime('updated_at')->comment('最后更新时间');
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('rule_group');
-    }
-}

+ 0 - 35
database/migrations/2020_09_24_184434_add_strip_config.php

@@ -1,35 +0,0 @@
-<?php
-
-use App\Models\Config;
-use Illuminate\Database\Migrations\Migration;
-
-class AddStripConfig extends Migration
-{
-    protected $configs = [
-        'stripe_public_key',
-        'stripe_secret_key',
-        'stripe_signing_secret',
-    ];
-
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        foreach ($this->configs as $config) {
-            Config::insert(['name' => $config]);
-        }
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Config::destroy($this->configs);
-    }
-}

+ 0 - 44
database/migrations/2020_10_11_000217_add_ddns_to_config_table.php

@@ -1,44 +0,0 @@
-<?php
-
-use App\Models\Config;
-use Illuminate\Database\Migrations\Migration;
-
-class AddDdnsToConfigTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    private static $dropConfigs = [
-        'is_user_rand_port', 'is_namesilo', 'namesilo_key', 'is_forbid_china', 'is_forbid_oversea',
-        'alipay_private_key', 'alipay_public_key', 'alipay_transport', 'alipay_currency',
-    ];
-
-    private static $newConfigs = ['forbid_mode', 'ddns_mode', 'ddns_key', 'ddns_secret'];
-
-    public function up()
-    {
-        foreach (self::$newConfigs as $config) {
-            Config::insert(['name' => $config]);
-        }
-        foreach (self::$dropConfigs as $config) {
-            Config::destroy(['name' => $config]);
-        }
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        foreach (self::$newConfigs as $config) {
-            Config::destroy(['name' => $config]);
-        }
-        foreach (self::$dropConfigs as $config) {
-            Config::insert(['name' => $config]);
-        }
-    }
-}

+ 0 - 110
database/migrations/2020_11_06_145018_create_permission_tables.php

@@ -1,110 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreatePermissionTables extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        $tableNames = config('permission.table_names');
-        $columnNames = config('permission.column_names');
-
-        if (empty($tableNames)) {
-            throw new \Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.');
-        }
-
-        Schema::create($tableNames['permissions'], function (Blueprint $table) {
-            $table->bigIncrements('id');
-            $table->string('name');
-            $table->string('guard_name');
-            $table->timestamps();
-        });
-
-        Schema::create($tableNames['roles'], function (Blueprint $table) {
-            $table->bigIncrements('id');
-            $table->string('name');
-            $table->string('guard_name');
-            $table->timestamps();
-        });
-
-        Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames) {
-            $table->unsignedBigInteger('permission_id');
-
-            $table->string('model_type');
-            $table->unsignedBigInteger($columnNames['model_morph_key']);
-            $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
-
-            $table->foreign('permission_id')
-                ->references('id')
-                ->on($tableNames['permissions'])
-                ->onDelete('cascade');
-
-            $table->primary(['permission_id', $columnNames['model_morph_key'], 'model_type'],
-                    'model_has_permissions_permission_model_type_primary');
-        });
-
-        Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames) {
-            $table->unsignedBigInteger('role_id');
-
-            $table->string('model_type');
-            $table->unsignedBigInteger($columnNames['model_morph_key']);
-            $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
-
-            $table->foreign('role_id')
-                ->references('id')
-                ->on($tableNames['roles'])
-                ->onDelete('cascade');
-
-            $table->primary(['role_id', $columnNames['model_morph_key'], 'model_type'],
-                    'model_has_roles_role_model_type_primary');
-        });
-
-        Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
-            $table->unsignedBigInteger('permission_id');
-            $table->unsignedBigInteger('role_id');
-
-            $table->foreign('permission_id')
-                ->references('id')
-                ->on($tableNames['permissions'])
-                ->onDelete('cascade');
-
-            $table->foreign('role_id')
-                ->references('id')
-                ->on($tableNames['roles'])
-                ->onDelete('cascade');
-
-            $table->primary(['permission_id', 'role_id'], 'role_has_permissions_permission_id_role_id_primary');
-        });
-
-        app('cache')
-            ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
-            ->forget(config('permission.cache.key'));
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        $tableNames = config('permission.table_names');
-
-        if (empty($tableNames)) {
-            throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
-        }
-
-        Schema::drop($tableNames['role_has_permissions']);
-        Schema::drop($tableNames['model_has_roles']);
-        Schema::drop($tableNames['model_has_permissions']);
-        Schema::drop($tableNames['roles']);
-        Schema::drop($tableNames['permissions']);
-    }
-}

+ 0 - 450
database/migrations/2020_11_10_075555_improve_table.php

@@ -1,450 +0,0 @@
-<?php
-
-use App\Models\CouponLog;
-use App\Models\Invite;
-use App\Models\Ticket;
-use App\Models\TicketReply;
-use App\Models\User;
-use App\Models\UserCreditLog;
-use App\Models\UserDailyDataFlow;
-use App\Models\UserDataModifyLog;
-use App\Models\UserHourlyDataFlow;
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class ImproveTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::disableForeignKeyConstraints();
-        Schema::table('coupon_log', function (Blueprint $table) {
-            $table->unsignedInteger('coupon_id')->default(null)->nullable()->change();
-            $table->unsignedInteger('goods_id')->default(null)->nullable()->change();
-            $table->unsignedInteger('order_id')->default(null)->nullable()->change();
-            $table->foreign('coupon_id')->references('id')->on('coupon')->nullOnDelete();
-            $table->foreign('goods_id')->references('id')->on('goods')->nullOnDelete();
-            $table->foreign('order_id')->references('id')->on('order')->cascadeOnDelete();
-        });
-
-        Schema::table('email_filter', function (Blueprint $table) {
-            $table->index(['words', 'type']);
-        });
-
-        Schema::table('invite', function (Blueprint $table) {
-            $table->unsignedInteger('inviter_id')->default(null)->nullable()->change();
-            $table->unsignedInteger('invitee_id')->default(null)->nullable()->change();
-            $table->foreign('inviter_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('invitee_id')->references('id')->on('user')->nullOnDelete();
-        });
-
-        Schema::table('node_auth', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('node_daily_data_flow', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('node_hourly_data_flow', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('node_label', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-            $table->foreign('label_id')->references('id')->on('label')->cascadeOnDelete();
-        });
-
-        Schema::table('node_rule', function (Blueprint $table) {
-            $table->index(['node_id', 'rule_id']);
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-            $table->foreign('rule_id')->references('id')->on('rule')->cascadeOnDelete();
-        });
-
-        Schema::table('order', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-
-        Schema::table('payment', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->index(['user_id', 'order_id']);
-        });
-
-        Schema::table('referral_apply', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-
-        Schema::table('referral_log', function (Blueprint $table) {
-            $table->unsignedInteger('invitee_id')->default(null)->nullable()->change();
-            $table->unsignedInteger('order_id')->default(null)->nullable()->change();
-            $table->foreign('inviter_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('invitee_id')->references('id')->on('user')->nullOnDelete();
-            $table->foreign('order_id')->references('id')->on('order')->nullOnDelete();
-            $table->index(['inviter_id', 'invitee_id']);
-        });
-
-        Schema::table('rule_group_node', function (Blueprint $table) {
-            $table->foreign('rule_group_id')->references('id')->on('rule_group')->cascadeOnDelete();
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('rule_log', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->default(null)->nullable()->change();
-            $table->unsignedInteger('rule_id')->nullable()->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('node_id')->references('id')->on('ss_node')->nullOnDelete();
-            $table->foreign('rule_id')->references('id')->on('rule')->nullOnDelete();
-        });
-
-        Schema::table('ss_config', function (Blueprint $table) {
-            $table->index('type');
-        });
-
-        Schema::table('ss_node', function (Blueprint $table) {
-            $table->index('type');
-        });
-
-        Schema::table('ss_node_info', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('ss_node_ip', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-
-        Schema::table('ss_node_online_log', function (Blueprint $table) {
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('ticket', function (Blueprint $table) {
-            $table->unsignedInteger('admin_id')->default(null)->nullable()->comment('管理员ID')->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('admin_id')->references('id')->on('user')->nullOnDelete();
-        });
-
-        Schema::table('ticket_reply', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->default(null)->nullable()->comment('用户ID')->change();
-            $table->unsignedInteger('admin_id')->default(null)->nullable()->comment('管理员ID')->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('admin_id')->references('id')->on('user')->nullOnDelete();
-            $table->foreign('ticket_id')->references('id')->on('ticket')->cascadeOnDelete();
-        });
-
-        Schema::table('user', function (Blueprint $table) {
-            $table->foreign('inviter_id')->references('id')->on('user')->nullOnDelete();
-        });
-
-        Schema::table('user_baned_log', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-
-        Schema::table('user_credit_log', function (Blueprint $table) {
-            $table->unsignedInteger('order_id')->default(null)->nullable()->comment('订单ID')->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('order_id')->references('id')->on('order')->nullOnDelete();
-        });
-
-        Schema::table('user_daily_data_flow', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->default(null)->nullable()->comment('节点ID,null表示统计全部节点')->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('user_data_modify_log', function (Blueprint $table) {
-            $table->unsignedInteger('order_id')->default(null)->nullable()->comment('发生的订单ID')->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('order_id')->references('id')->on('order')->nullOnDelete();
-        });
-
-        Schema::table('user_hourly_data_flow', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->default(null)->nullable()->comment('节点ID,null表示统计全部节点')->change();
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('user_login_log', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-
-        Schema::table('user_subscribe', function (Blueprint $table) {
-            $table->unique('code');
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-
-        Schema::table('user_subscribe_log', function (Blueprint $table) {
-            $table->foreign('user_subscribe_id')->references('id')->on('user_subscribe')->cascadeOnDelete();
-        });
-
-        Schema::table('user_traffic_log', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-            $table->foreign('node_id')->references('id')->on('ss_node')->cascadeOnDelete();
-        });
-
-        Schema::table('verify', function (Blueprint $table) {
-            $table->foreign('user_id')->references('id')->on('user')->cascadeOnDelete();
-        });
-        CouponLog::whereCouponId(0)->update(['coupon_id' => null]);
-        CouponLog::whereGoodsId(0)->update(['goods_id' => null]);
-        CouponLog::whereOrderId(0)->update(['order_id' => null]);
-        Ticket::whereAdminId(0)->update(['admin_id' => null]);
-        TicketReply::whereUserId(0)->update(['user_id' => null]);
-        TicketReply::whereAdminId(0)->update(['admin_id' => null]);
-        UserCreditLog::whereOrderId(0)->update(['order_id' => null]);
-        UserHourlyDataFlow::whereNodeId(0)->update(['node_id' => null]);
-        UserDailyDataFlow::whereNodeId(0)->update(['node_id' => null]);
-        UserDataModifyLog::whereOrderId(0)->update(['order_id' => null]);
-        Invite::whereInviterId(0)->update(['inviter_id' => null]);
-        Invite::whereInviteeId(0)->update(['invitee_id' => null]);
-        User::whereInviterId(0)->update(['inviter_id' => null]);
-
-        Schema::enableForeignKeyConstraints();
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::disableForeignKeyConstraints();
-        CouponLog::whereCouponId(null)->update(['coupon_id' => 0]);
-        CouponLog::whereGoodsId(null)->update(['goods_id' => 0]);
-        CouponLog::whereOrderId(null)->update(['order_id' => 0]);
-        Ticket::whereAdminId(null)->update(['admin_id' => 0]);
-        TicketReply::whereUserId(null)->update(['user_id' => 0]);
-        TicketReply::whereAdminId(null)->update(['admin_id' => 0]);
-        UserCreditLog::whereOrderId(null)->update(['order_id' => 0]);
-        UserHourlyDataFlow::whereNodeId(null)->update(['node_id' => 0]);
-        UserDailyDataFlow::whereNodeId(null)->update(['node_id' => 0]);
-        UserDataModifyLog::whereOrderId(null)->update(['order_id' => 0]);
-        Invite::whereInviterId(null)->update(['inviter_id' => 0]);
-
-        Schema::table('coupon_log', function (Blueprint $table) {
-            $table->dropForeign(['coupon_id']);
-            $table->dropForeign(['goods_id']);
-            $table->dropForeign(['order_id']);
-            $table->dropIndex('coupon_log_coupon_id_foreign');
-            $table->dropIndex('coupon_log_goods_id_foreign');
-            $table->dropIndex('coupon_log_order_id_foreign');
-        });
-
-        Schema::table('coupon_log', function (Blueprint $table) {
-            $table->unsignedInteger('coupon_id')->default(0)->nullable(false)->change();
-            $table->unsignedInteger('goods_id')->default(0)->nullable(false)->change();
-            $table->unsignedInteger('order_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('email_filter', function (Blueprint $table) {
-            $table->dropIndex(['words', 'type']);
-        });
-
-        Schema::table('invite', function (Blueprint $table) {
-            $table->dropForeign(['inviter_id']);
-            $table->dropForeign(['invitee_id']);
-            $table->dropIndex('invite_inviter_id_foreign');
-            $table->dropIndex('invite_invitee_id_foreign');
-        });
-
-        Schema::table('invite', function (Blueprint $table) {
-            $table->unsignedInteger('inviter_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('node_auth', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-            $table->dropIndex('node_auth_node_id_foreign');
-        });
-
-        Schema::table('node_daily_data_flow', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-        });
-
-        Schema::table('node_hourly_data_flow', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-        });
-
-        Schema::table('node_label', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-            $table->dropForeign(['label_id']);
-            $table->dropIndex('node_label_label_id_foreign');
-        });
-
-        Schema::table('node_rule', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-            $table->dropForeign(['rule_id']);
-            $table->dropIndex(['node_id', 'rule_id']);
-            $table->dropIndex('node_rule_rule_id_foreign');
-        });
-
-        Schema::table('order', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-        });
-
-        Schema::table('payment', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropIndex(['user_id', 'order_id']);
-        });
-
-        Schema::table('referral_apply', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropIndex('referral_apply_user_id_foreign');
-        });
-
-        Schema::table('referral_log', function (Blueprint $table) {
-            $table->dropForeign(['inviter_id']);
-            $table->dropForeign(['invitee_id']);
-            $table->dropForeign(['order_id']);
-            $table->dropIndex(['inviter_id', 'invitee_id']);
-            $table->dropIndex('referral_log_invitee_id_foreign');
-            $table->dropIndex('referral_log_order_id_foreign');
-        });
-
-        Schema::table('referral_log', function (Blueprint $table) {
-            $table->unsignedInteger('invitee_id')->nullable(false)->change();
-            $table->unsignedInteger('order_id')->nullable(false)->change();
-        });
-
-        Schema::table('rule_group_node', function (Blueprint $table) {
-            $table->dropForeign(['rule_group_id']);
-            $table->dropForeign(['node_id']);
-            $table->dropIndex('rule_group_node_rule_group_id_foreign');
-            $table->dropIndex('rule_group_node_node_id_foreign');
-        });
-
-        Schema::table('rule_log', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['node_id']);
-            $table->dropForeign(['rule_id']);
-            $table->dropIndex('rule_log_node_id_foreign');
-            $table->dropIndex('rule_log_rule_id_foreign');
-        });
-
-        Schema::table('rule_log', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->default(0)->nullable(false)->change();
-            $table->unsignedInteger('rule_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('ss_config', function (Blueprint $table) {
-            $table->dropIndex(['type']);
-        });
-
-        Schema::table('ss_node', function (Blueprint $table) {
-            $table->dropIndex(['type']);
-        });
-
-        Schema::table('ss_node_info', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-        });
-
-        Schema::table('ss_node_ip', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-            $table->dropForeign(['user_id']);
-        });
-
-        Schema::table('ss_node_online_log', function (Blueprint $table) {
-            $table->dropForeign(['node_id']);
-        });
-
-        Schema::table('ticket', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['admin_id']);
-            $table->dropIndex('ticket_user_id_foreign');
-            $table->dropIndex('ticket_admin_id_foreign');
-        });
-
-        Schema::table('ticket', function (Blueprint $table) {
-            $table->unsignedInteger('admin_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('ticket_reply', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->default(0)->nullable(false)->change();
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['admin_id']);
-            $table->dropForeign(['ticket_id']);
-            $table->dropIndex('ticket_reply_user_id_foreign');
-            $table->dropIndex('ticket_reply_admin_id_foreign');
-            $table->dropIndex('ticket_reply_ticket_id_foreign');
-        });
-
-        Schema::table('ticket_reply', function (Blueprint $table) {
-            $table->unsignedInteger('admin_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('user', function (Blueprint $table) {
-            $table->dropForeign(['inviter_id']);
-            $table->dropIndex('user_inviter_id_foreign');
-        });
-
-        Schema::table('user_baned_log', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropIndex('user_baned_log_user_id_foreign');
-        });
-
-        Schema::table('user_credit_log', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['order_id']);
-            $table->dropIndex('user_credit_log_user_id_foreign');
-            $table->dropIndex('user_credit_log_order_id_foreign');
-        });
-
-        Schema::table('user_credit_log', function (Blueprint $table) {
-            $table->unsignedInteger('order_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('user_daily_data_flow', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['node_id']);
-            $table->dropIndex('user_daily_data_flow_node_id_foreign');
-            $table->unsignedInteger('node_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('user_data_modify_log', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['order_id']);
-            $table->dropIndex('user_data_modify_log_user_id_foreign');
-            $table->dropIndex('user_data_modify_log_order_id_foreign');
-        });
-
-        Schema::table('user_data_modify_log', function (Blueprint $table) {
-            $table->unsignedInteger('order_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('user_hourly_data_flow', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['node_id']);
-            $table->dropIndex('user_hourly_data_flow_node_id_foreign');
-            $table->unsignedInteger('node_id')->default(0)->nullable(false)->change();
-        });
-
-        Schema::table('user_login_log', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropIndex('user_login_log_user_id_foreign');
-        });
-
-        Schema::table('user_subscribe', function (Blueprint $table) {
-            $table->dropUnique(['code']);
-            $table->dropForeign(['user_id']);
-        });
-
-        Schema::table('user_subscribe_log', function (Blueprint $table) {
-            $table->dropForeign(['user_subscribe_id']);
-        });
-
-        Schema::table('user_traffic_log', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropForeign(['node_id']);
-            $table->dropIndex('user_traffic_log_node_id_foreign');
-        });
-
-        Schema::table('verify', function (Blueprint $table) {
-            $table->dropForeign(['user_id']);
-            $table->dropIndex('verify_user_id_foreign');
-        });
-    }
-}

+ 0 - 176
database/migrations/2020_12_07_120247_permission_data.php

@@ -1,176 +0,0 @@
-<?php
-
-use App\Models\User;
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Spatie\Permission\Models\Permission;
-use Spatie\Permission\Models\Role;
-use Spatie\Permission\PermissionRegistrar;
-
-class PermissionData extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        $tableNames = config('permission.table_names');
-        Schema::table($tableNames['permissions'], function (Blueprint $table) {
-            $table->string('description')->after('name');
-        });
-
-        Schema::table($tableNames['roles'], function (Blueprint $table) {
-            $table->string('description')->after('name');
-        });
-
-        Artisan::call('cache:clear');
-        app()[PermissionRegistrar::class]->forgetCachedPermissions();
-
-        $permissions = [
-            ['name' => 'admin.aff.detail', 'description' => '【推广系统】提现申请详情', 'guard_name' => 'web'],
-            ['name' => 'admin.aff.index', 'description' => '【推广系统】提现管理列表', 'guard_name' => 'web'],
-            ['name' => 'admin.aff.rebate', 'description' => '【推广系统】返利流水记录', 'guard_name' => 'web'],
-            ['name' => 'admin.aff.setStatus', 'description' => '【推广系统】设置提现状态', 'guard_name' => 'web'],
-            ['name' => 'admin.article.create,store', 'description' => '【客服系统】新建文章', 'guard_name' => 'web'],
-            ['name' => 'admin.article.destroy', 'description' => '【客服系统】删除文章', 'guard_name' => 'web'],
-            ['name' => 'admin.article.edit,update', 'description' => '【客服系统】编辑文章', 'guard_name' => 'web'],
-            ['name' => 'admin.article.index,show', 'description' => '【客服系统】文章列表', 'guard_name' => 'web'],
-            ['name' => 'admin.config.*', 'description' => '【设置】通用配置', 'guard_name' => 'web'],
-            ['name' => 'admin.coupon.create,store', 'description' => '【商品系统】新建卡劵', 'guard_name' => 'web'],
-            ['name' => 'admin.coupon.destroy', 'description' => '【商品系统】删除卡劵', 'guard_name' => 'web'],
-            ['name' => 'admin.coupon.export', 'description' => '【商品系统】导出卡劵', 'guard_name' => 'web'],
-            ['name' => 'admin.coupon.index', 'description' => '【商品系统】卡劵列表', 'guard_name' => 'web'],
-            ['name' => 'admin.goods.create,store', 'description' => '【商品系统】新建商品', 'guard_name' => 'web'],
-            ['name' => 'admin.goods.destroy', 'description' => '【商品系统】删除商品', 'guard_name' => 'web'],
-            ['name' => 'admin.goods.edit,update', 'description' => '【商品系统】编辑商品', 'guard_name' => 'web'],
-            ['name' => 'admin.goods.index', 'description' => '【商品系统】商品列表', 'guard_name' => 'web'],
-            ['name' => 'admin.index', 'description' => '【管理中心】首页', 'guard_name' => 'web'],
-            ['name' => 'admin.invite.index', 'description' => '【推广系统】邀请列表', 'guard_name' => 'web'],
-            ['name' => 'admin.invite.create', 'description' => '【推广系统】生成邀请码', 'guard_name' => 'web'],
-            ['name' => 'admin.invite.export', 'description' => '【推广系统】导出邀请码', 'guard_name' => 'web'],
-            ['name' => 'admin.log.ban', 'description' => '【日志系统】封禁记录', 'guard_name' => 'web'],
-            ['name' => 'admin.log.credit', 'description' => '【日志系统】余额记录', 'guard_name' => 'web'],
-            ['name' => 'admin.log.flow', 'description' => '【日志系统】流量变动记录', 'guard_name' => 'web'],
-            ['name' => 'admin.log.ip', 'description' => '【日志系统】在线IP记录', 'guard_name' => 'web'],
-            ['name' => 'admin.log.notify', 'description' => '【日志系统】通知记录', 'guard_name' => 'web'],
-            ['name' => 'admin.log.online', 'description' => '【日志系统】在线监控', 'guard_name' => 'web'],
-            ['name' => 'admin.log.traffic', 'description' => '【日志系统】流量日志', 'guard_name' => 'web'],
-            ['name' => 'admin.log.viewer', 'description' => '【日志系统】运行日志', 'guard_name' => 'web'],
-            ['name' => 'admin.marketing.add', 'description' => '【客服系统】推送消息', 'guard_name' => 'web'],
-            ['name' => 'admin.marketing.email', 'description' => '【客服系统】邮件消息列表', 'guard_name' => 'web'],
-            ['name' => 'admin.marketing.push', 'description' => '【客服系统】推送消息列表', 'guard_name' => 'web'],
-            ['name' => 'admin.node.auth.destroy', 'description' => '【线路系统】删除授权', 'guard_name' => 'web'],
-            ['name' => 'admin.node.auth.index', 'description' => '【线路系统】授权列表', 'guard_name' => 'web'],
-            ['name' => 'admin.node.auth.store', 'description' => '【线路系统】新建授权', 'guard_name' => 'web'],
-            ['name' => 'admin.node.auth.update', 'description' => '【线路系统】编辑授权', 'guard_name' => 'web'],
-            ['name' => 'admin.node.cert.create,store', 'description' => '【线路系统】新建证书', 'guard_name' => 'web'],
-            ['name' => 'admin.node.cert.destroy', 'description' => '【线路系统】删除证书', 'guard_name' => 'web'],
-            ['name' => 'admin.node.cert.edit,update', 'description' => '【线路系统】编辑证书', 'guard_name' => 'web'],
-            ['name' => 'admin.node.cert.index', 'description' => '【线路系统】证书列表', 'guard_name' => 'web'],
-            ['name' => 'admin.node.check', 'description' => '【线路系统】阻断检测', 'guard_name' => 'web'],
-            ['name' => 'admin.node.create,store', 'description' => '【线路系统】新建线路', 'guard_name' => 'web'],
-            ['name' => 'admin.node.destroy', 'description' => '【线路系统】删除线路', 'guard_name' => 'web'],
-            ['name' => 'admin.node.edit,update', 'description' => '【线路系统】编辑线路', 'guard_name' => 'web'],
-            ['name' => 'admin.node.geo', 'description' => '【线路系统】更新地理', 'guard_name' => 'web'],
-            ['name' => 'admin.node.index', 'description' => '【线路系统】线路列表', 'guard_name' => 'web'],
-            ['name' => 'admin.node.monitor', 'description' => '【线路系统】流量监控', 'guard_name' => 'web'],
-            ['name' => 'admin.node.ping', 'description' => '【线路系统】测速', 'guard_name' => 'web'],
-            ['name' => 'admin.node.pingLog', 'description' => '【线路系统】测速日志', 'guard_name' => 'web'],
-            ['name' => 'admin.node.reload', 'description' => '【线路系统】重载', 'guard_name' => 'web'],
-            ['name' => 'admin.order', 'description' => '【商品系统】订单列表', 'guard_name' => 'web'],
-            ['name' => 'admin.payment.callback', 'description' => '【日志系统】回调列表', 'guard_name' => 'web'],
-            ['name' => 'admin.permission.create,store', 'description' => '【权限系统】新建权限', 'guard_name' => 'web'],
-            ['name' => 'admin.permission.destroy', 'description' => '【权限系统】删除权限', 'guard_name' => 'web'],
-            ['name' => 'admin.permission.edit,update', 'description' => '【权限系统】编辑权限', 'guard_name' => 'web'],
-            ['name' => 'admin.permission.index', 'description' => '【权限系统】权限列表', 'guard_name' => 'web'],
-            ['name' => 'admin.role.create,store', 'description' => '【权限系统】新建角色', 'guard_name' => 'web'],
-            ['name' => 'admin.role.destroy', 'description' => '【权限系统】删除角色', 'guard_name' => 'web'],
-            ['name' => 'admin.role.edit,update', 'description' => '【权限系统】编辑角色', 'guard_name' => 'web'],
-            ['name' => 'admin.role.index', 'description' => '【权限系统】角色列表', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.clear', 'description' => '【审计规则】清除触发日志', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.destroy', 'description' => '【审计规则】删除规则', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.group.assign,editNode', 'description' => '【审计规则】分组关联线路', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.group.create,store', 'description' => '【审计规则】新建分组', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.group.destroy', 'description' => '【审计规则】删除分组', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.group.edit,update', 'description' => '【审计规则】编辑分组', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.group.index', 'description' => '【审计规则】分组列表', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.index', 'description' => '【审计规则】规则列表', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.log', 'description' => '【审计规则】触发日志', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.store', 'description' => '【审计规则】新建规则', 'guard_name' => 'web'],
-            ['name' => 'admin.rule.update', 'description' => '【审计规则】编辑规则', 'guard_name' => 'web'],
-            ['name' => 'admin.subscribe.index', 'description' => '【用户系统】订阅列表', 'guard_name' => 'web'],
-            ['name' => 'admin.subscribe.log', 'description' => '【用户系统】订阅记录', 'guard_name' => 'web'],
-            ['name' => 'admin.subscribe.set', 'description' => '【用户系统】编辑订阅状态', 'guard_name' => 'web'],
-            ['name' => 'admin.system.index', 'description' => '【设置】查看系统设置', 'guard_name' => 'web'],
-            ['name' => 'admin.system.update,extend', 'description' => '【设置】编辑系统设置', 'guard_name' => 'web'],
-            ['name' => 'admin.test.*', 'description' => '【设置】通知,支付设置测试', 'guard_name' => 'web'],
-            ['name' => 'admin.ticket.destroy', 'description' => '【客服系统】删除工单', 'guard_name' => 'web'],
-            ['name' => 'admin.ticket.edit,update', 'description' => '【客服系统】回复工单', 'guard_name' => 'web'],
-            ['name' => 'admin.ticket.index', 'description' => '【客服系统】工单列表', 'guard_name' => 'web'],
-            ['name' => 'admin.ticket.store', 'description' => '【客服系统】新建工单', 'guard_name' => 'web'],
-            ['name' => 'admin.tools.*', 'description' => '【工具箱】', 'guard_name' => 'web'],
-            ['name' => 'admin.user.batch', 'description' => '【用户系统】生成用户', 'guard_name' => 'web'],
-            ['name' => 'admin.user.create,store', 'description' => '【用户系统】新建用户', 'guard_name' => 'web'],
-            ['name' => 'admin.user.destroy', 'description' => '【用户系统】删除用户', 'guard_name' => 'web'],
-            ['name' => 'admin.user.edit,update', 'description' => '【用户系统】编辑用户', 'guard_name' => 'web'],
-            ['name' => 'admin.user.export', 'description' => '【用户系统】配置信息', 'guard_name' => 'web'],
-            ['name' => 'admin.user.exportProxy', 'description' => '【用户系统】读取配置', 'guard_name' => 'web'],
-            ['name' => 'admin.user.group.create,store', 'description' => '【用户系统】新建分组', 'guard_name' => 'web'],
-            ['name' => 'admin.user.group.destroy', 'description' => '【用户系统】删除分组', 'guard_name' => 'web'],
-            ['name' => 'admin.user.group.edit,update', 'description' => '【用户系统】编辑分组', 'guard_name' => 'web'],
-            ['name' => 'admin.user.group.index', 'description' => '【用户系统】分组列表', 'guard_name' => 'web'],
-            ['name' => 'admin.user.index', 'description' => '【用户系统】用户列表', 'guard_name' => 'web'],
-            ['name' => 'admin.user.monitor', 'description' => '【用户系统】流量统计', 'guard_name' => 'web'],
-            ['name' => 'admin.user.online', 'description' => '【用户系统】在线巡查', 'guard_name' => 'web'],
-            ['name' => 'admin.user.reset', 'description' => '【用户系统】流量重置', 'guard_name' => 'web'],
-            ['name' => 'admin.user.switch', 'description' => '【用户系统】用户视角', 'guard_name' => 'web'],
-            ['name' => 'admin.user.updateCredit', 'description' => '【用户系统】编辑余额', 'guard_name' => 'web'],
-            ['name' => 'give roles', 'description' => '【用户系统】赋予角色权限', 'guard_name' => 'web'],
-        ];
-
-        Permission::insert($permissions);
-        Role::create(['name' => 'Super Admin', 'description' => '超级管理员']);
-
-        foreach (User::whereIsAdmin(1)->get() as $admin) {
-            $admin->assignRole('Super Admin');
-        }
-
-        Schema::table('user', function (Blueprint $table) {
-            $table->dropColumn(['is_admin']);
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        $tableNames = config('permission.table_names');
-        Schema::table($tableNames['permissions'], function (Blueprint $table) {
-            $table->dropColumn('description');
-        });
-
-        Schema::table($tableNames['roles'], function (Blueprint $table) {
-            $table->dropColumn('description');
-        });
-
-        Artisan::call('cache:clear');
-        app()[PermissionRegistrar::class]->forgetCachedPermissions();
-
-        Schema::table('user', function (Blueprint $table) {
-            $table->boolean('is_admin')->default(0)->comment('是否管理员:0-否、1-是')->after('group_id');
-        });
-
-        foreach (User::role('Super Admin')->get() as $admin) {
-            $admin->is_admin = 1;
-            $admin->save();
-        }
-
-        Role::query()->delete();
-        Permission::query()->delete();
-    }
-}

+ 0 - 188
database/migrations/2020_12_24_074739_table_improvement.php

@@ -1,188 +0,0 @@
-<?php
-
-use App\Models\Coupon;
-use App\Models\Node;
-use App\Models\NodeOnlineIp;
-use App\Models\Order;
-use App\Models\RuleGroup;
-use App\Models\User;
-use App\Models\UserGroup;
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class TableImprovement extends Migration
-{
-    public function up()
-    {
-        // ----- 开始 数据库表关系优化 -----
-        Schema::table('level', function (Blueprint $table) {
-            $table->unique('level');
-        });
-
-        Schema::table('node_certificate', function (Blueprint $table) {
-            $table->unique('domain');
-        });
-
-        Schema::table('ss_node', function (Blueprint $table) {
-            $table->unsignedInteger('rule_group_id')->nullable()->comment('从属规则分组ID')->after('level');
-            $table->foreign('rule_group_id')->references('id')->on('rule_group')->nullOnDelete();
-            $table->rename('node');
-        });
-
-        Schema::table('ss_node_info', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->comment('节点ID')->change();
-            $table->rename('node_heartbeat');
-        });
-
-        Schema::table('ss_node_ip', function (Blueprint $table) {
-            $table->rename('node_online_ip');
-        });
-        NodeOnlineIp::whereNodeId(0)->update(['node_id' => null]);
-        NodeOnlineIp::whereUserId(0)->update(['user_id' => null]);
-        Schema::table('node_online_ip', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->comment('节点ID')->change();
-            $table->unsignedInteger('user_id')->default(null)->nullable()->change();
-        });
-
-        Schema::table('ss_node_online_log', function (Blueprint $table) {
-            $table->rename('node_online_log');
-        });
-
-        Schema::table('node_label', function (Blueprint $table) {
-            $table->unsignedInteger('node_id')->comment('节点ID')->change();
-            $table->unsignedInteger('label_id')->comment('标签ID')->change();
-            $table->unique(['node_id', 'label_id']);
-            $table->rename('label_node');
-        });
-
-        Order::whereGoodsId(0)->update(['goods_id' => null]);
-        Order::whereCouponId(0)->orWhereNotIn('coupon_id', Coupon::withTrashed()->pluck('id')->toArray())->update(['coupon_id' => null]);
-        Schema::table('order', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('购买者ID')->change();
-            $table->foreign('goods_id')->references('id')->on('goods')->nullOnDelete();
-            $table->foreign('coupon_id')->references('id')->on('coupon')->nullOnDelete();
-        });
-
-        Schema::create('node_user_group', function (Blueprint $table) {
-            $table->increments('id');
-            $table->unsignedInteger('node_id')->comment('节点ID');
-            $table->unsignedInteger('user_group_id')->comment('从属用户分组ID');
-
-            $table->unique(['user_group_id', 'node_id']);
-            $table->foreign('node_id')->references('id')->on('node')->cascadeOnDelete();
-            $table->foreign('user_group_id')->references('id')->on('user_group')->cascadeOnDelete();
-        });
-
-        Schema::table('payment', function (Blueprint $table) {
-            $table->foreign('order_id')->references('id')->on('order')->cascadeOnDelete();
-        });
-
-        Schema::table('referral_apply', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('申请者ID')->change();
-        });
-
-        Schema::table('rule_log', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('触发者ID')->change();
-        });
-
-        Schema::create('rule_rule_group', function (Blueprint $table) {
-            $table->increments('id');
-            $table->unsignedInteger('rule_id')->comment('规则ID');
-            $table->unsignedInteger('rule_group_id')->comment('从属规则分组ID');
-
-            $table->unique(['rule_group_id', 'rule_id']);
-            $table->foreign('rule_id')->references('id')->on('rule')->cascadeOnDelete();
-            $table->foreign('rule_group_id')->references('id')->on('rule_group')->cascadeOnDelete();
-        });
-
-        Schema::table('ticket', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('ticket_reply', function (Blueprint $table) {
-            $table->unsignedInteger('ticket_id')->comment('工单ID')->change();
-        });
-
-        Schema::table('user', function (Blueprint $table) {
-            $table->unsignedInteger('group_id')->nullable()->default(null)->comment('所属分组')->change();
-        });
-        User::whereGroupId(0)->update(['group_id' => null]);
-        Schema::table('user', function (Blueprint $table) {
-            $table->renameColumn('group_id', 'user_group_id');
-            $table->foreign('user_group_id')->references('id')->on('user_group')->nullOnDelete();
-        });
-
-        Schema::table('user_baned_log', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_credit_log', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_daily_data_flow', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_data_modify_log', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_hourly_data_flow', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_login_log', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_subscribe', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-        });
-
-        Schema::table('user_traffic_log', function (Blueprint $table) {
-            $table->unsignedInteger('user_id')->comment('用户ID')->change();
-            $table->unsignedInteger('node_id')->comment('节点ID')->change();
-        });
-        // ----- 结束 数据库表关系优化 -----
-
-        // ----- 开始 数据转化 & 弃用数据 -----
-        foreach (RuleGroup::all() as $group) {
-            $group->rules()->attach(json_decode($group->rules, true));
-            foreach (json_decode($group->nodes, true) as $id) {
-                $node = Node::find($id);
-                if ($node) {
-                    $node->update(['rule_group_id' => $group->id]);
-                }
-            }
-        }
-
-        foreach (UserGroup::all() as $group) {
-            $group->nodes()->attach(json_decode($group->nodes, true));
-        }
-
-        Schema::table('rule_group', function (Blueprint $table) {
-            $table->dropColumn('nodes');
-            $table->dropColumn('rules');
-        });
-
-        Schema::table('user_group', function (Blueprint $table) {
-            $table->dropColumn('nodes');
-        });
-
-        Schema::table('node_rule', function (Blueprint $table) {
-            $table->drop();
-        });
-
-        Schema::table('rule_group_node', function (Blueprint $table) {
-            $table->drop();
-        });
-        // ----- 结束 数据转化 & 弃用数据 -----
-    }
-
-    public function down()
-    {
-        // 不可逆
-    }
-}

+ 0 - 22
database/migrations/2021_01_04_094946_drop_node_ping.php

@@ -1,22 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Support\Facades\Schema;
-use Spatie\Permission\Models\Permission;
-
-class DropNodePing extends Migration
-{
-    public function up()
-    {
-        Schema::dropIfExists('node_ping');
-        $permission = Permission::where('name', 'admin.node.pingLog')->first();
-        if ($permission) {
-            $permission->delete();
-        }
-    }
-
-    public function down()
-    {
-        //
-    }
-}

+ 0 - 34
database/migrations/2021_01_04_172833_add-paybeaver-payment.php

@@ -1,34 +0,0 @@
-<?php
-
-use App\Models\Config;
-use Illuminate\Database\Migrations\Migration;
-
-class AddPaybeaverPayment extends Migration
-{
-    protected $configs = [
-        'paybeaver_app_id',
-        'paybeaver_app_secret',
-    ];
-
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        foreach ($this->configs as $config) {
-            Config::insert(['name' => $config]);
-        }
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Config::destroy($this->configs);
-    }
-}

+ 0 - 70
database/migrations/2021_01_15_065207_create_notifications_table.php

@@ -1,70 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateNotificationsTable extends Migration
-{
-    private $configs = [
-        'account_expire_notification',
-        'data_anomaly_notification',
-        'data_exhaust_notification',
-        'node_blocked_notification',
-        'node_daily_notification',
-        'node_offline_notification',
-        'password_reset_notification',
-        'payment_received_notification',
-        'ticket_closed_notification',
-        'ticket_created_notification',
-        'ticket_replied_notification',
-    ];
-
-    private $dropConfigs = [
-        'is_reset_password',
-        'expire_warning',
-        'traffic_warning',
-        'is_node_offline',
-        'node_daily_report',
-        'nodes_detection',
-        'is_notification',
-    ];
-
-    public function up()
-    {
-        Schema::create('notifications', function (Blueprint $table) {
-            $table->uuid('id')->primary();
-            $table->string('type');
-            $table->morphs('notifiable');
-            $table->text('data');
-            $table->timestamp('read_at')->nullable();
-            $table->timestamps();
-        });
-        Schema::table('order', function (Blueprint $table) {
-            $table->renameColumn('order_sn', 'sn');
-        });
-
-        foreach ($this->configs as $config) {
-            \App\Models\Config::insert(['name' => $config]);
-        }
-        \App\Models\Config::whereIn('name', $this->dropConfigs)->delete();
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('notifications');
-        Schema::table('order', function (Blueprint $table) {
-            $table->renameColumn('sn', 'order_sn');
-        });
-
-        foreach ($this->dropConfigs as $config) {
-            \App\Models\Config::insert(['name' => $config]);
-        }
-        \App\Models\Config::whereIn('name', $this->configs)->delete();
-    }
-}

+ 0 - 38
database/migrations/5.6/2020_08_21_145711_create_referral_apply_table.php

@@ -1,38 +0,0 @@
-<?php
-
-use Illuminate\Database\Migrations\Migration;
-use Illuminate\Database\Schema\Blueprint;
-use Illuminate\Support\Facades\Schema;
-
-class CreateReferralApplyTable extends Migration
-{
-    /**
-     * Run the migrations.
-     *
-     * @return void
-     */
-    public function up()
-    {
-        Schema::create('referral_apply', function (Blueprint $table) {
-            $table->increments('id');
-            $table->unsignedInteger('user_id')->comment('用户ID');
-            $table->unsignedInteger('before')->default(0)->comment('操作前可提现金额,单位分');
-            $table->unsignedInteger('after')->default(0)->comment('操作后可提现金额,单位分');
-            $table->unsignedInteger('amount')->default(0)->comment('本次提现金额,单位分');
-            $table->text('link_logs')->comment('关联返利日志ID,例如:1,3,4');
-            $table->boolean('status')->default(0)->comment('状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款');
-            $table->dateTime('created_at')->comment('创建时间');
-            $table->dateTime('updated_at')->comment('最后更新时间');
-        });
-    }
-
-    /**
-     * Reverse the migrations.
-     *
-     * @return void
-     */
-    public function down()
-    {
-        Schema::dropIfExists('referral_apply');
-    }
-}

+ 34 - 0
database/migrations/7.4/2024_02_26_161057_create_appupdate_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateAppupdateTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('appupdate', function (Blueprint $table) {
+            $table->integer('id', true);
+            $table->string('appname', 64)->default('')->comment('app 名称');
+            $table->string('appversion', 64)->default('');
+            $table->string('appdownload', 256)->default('')->comment('app下载地址');
+            $table->string('appmsg', 256)->default('');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('appupdate');
+    }
+}

+ 1 - 1
database/migrations/2020_08_21_145711_create_article_table.php → database/migrations/7.4/2024_02_26_161057_create_article_table.php

@@ -15,7 +15,7 @@ class CreateArticleTable extends Migration
     {
         Schema::create('article', function (Blueprint $table) {
             $table->increments('id');
-            $table->boolean('type')->default(1)->comment('类型:1-文章、2-站内公告、3-站外公告');
+            $table->boolean('type')->default(true)->comment('类型:1-文章、2-站内公告、3-站外公告');
             $table->string('title', 100)->comment('标题');
             $table->string('summary')->nullable()->comment('简介');
             $table->string('logo')->nullable()->comment('LOGO');

+ 1 - 1
database/migrations/2020_08_21_145711_create_config_table.php → database/migrations/7.4/2024_02_26_161057_create_config_table.php

@@ -14,7 +14,7 @@ class CreateConfigTable extends Migration
     public function up()
     {
         Schema::create('config', function (Blueprint $table) {
-            $table->string('name')->primary()->unique()->index()->comment('配置名');
+            $table->string('name')->primary()->comment('配置名');
             $table->text('value')->nullable()->comment('配置值');
         });
     }

+ 0 - 0
database/migrations/2020_08_21_145711_create_country_table.php → database/migrations/7.4/2024_02_26_161057_create_country_table.php


+ 3 - 3
database/migrations/2020_08_21_145711_create_coupon_log_table.php → database/migrations/7.4/2024_02_26_161057_create_coupon_log_table.php

@@ -15,9 +15,9 @@ class CreateCouponLogTable extends Migration
     {
         Schema::create('coupon_log', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('coupon_id')->default(0)->comment('优惠券ID');
-            $table->unsignedInteger('goods_id')->default(0)->comment('商品ID');
-            $table->unsignedInteger('order_id')->default(0)->comment('订单ID');
+            $table->unsignedInteger('coupon_id')->nullable()->index('coupon_log_coupon_id_foreign')->comment('优惠券ID');
+            $table->unsignedInteger('goods_id')->nullable()->index('coupon_log_goods_id_foreign')->comment('商品ID');
+            $table->unsignedInteger('order_id')->nullable()->index('coupon_log_order_id_foreign')->comment('订单ID');
             $table->string('description', 50)->nullable()->comment('备注');
             $table->dateTime('created_at')->comment('创建时间');
         });

+ 2 - 2
database/migrations/2020_08_21_145711_create_coupon_table.php → database/migrations/7.4/2024_02_26_161057_create_coupon_table.php

@@ -18,13 +18,13 @@ class CreateCouponTable extends Migration
             $table->string('name', 50)->comment('优惠券名称');
             $table->string('logo')->nullable()->comment('优惠券LOGO');
             $table->string('sn', 50)->unique()->comment('优惠券码');
-            $table->boolean('type')->default(1)->comment('类型:1-抵用券、2-折扣券、3-充值券');
+            $table->boolean('type')->default(true)->comment('类型:1-抵用券、2-折扣券、3-充值券');
             $table->unsignedSmallInteger('usable_times')->nullable()->comment('可使用次数');
             $table->unsignedInteger('value')->comment('折扣金额(元)/折扣力度');
             $table->unsignedInteger('rule')->nullable()->comment('使用限制(元)');
             $table->unsignedInteger('start_time')->default(0)->comment('有效期开始');
             $table->unsignedInteger('end_time')->default(0)->comment('有效期结束');
-            $table->boolean('status')->default(0)->comment('状态:0-未使用、1-已使用、2-已失效');
+            $table->boolean('status')->default(false)->comment('状态:0-未使用、1-已使用、2-已失效');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
             $table->softDeletes()->comment('删除时间');

+ 3 - 1
database/migrations/2020_08_21_145711_create_email_filter_table.php → database/migrations/7.4/2024_02_26_161057_create_email_filter_table.php

@@ -15,8 +15,10 @@ class CreateEmailFilterTable extends Migration
     {
         Schema::create('email_filter', function (Blueprint $table) {
             $table->increments('id');
-            $table->boolean('type')->default(1)->comment('类型:1-黑名单、2-白名单');
+            $table->boolean('type')->default(true)->comment('类型:1-黑名单、2-白名单');
             $table->string('words', 50)->comment('敏感词');
+
+            $table->index(['words', 'type']);
         });
     }
 

+ 0 - 0
database/migrations/2020_08_21_145711_create_failed_jobs_table.php → database/migrations/7.4/2024_02_26_161057_create_failed_jobs_table.php


+ 3 - 3
database/migrations/2020_08_21_145711_create_goods_table.php → database/migrations/7.4/2024_02_26_161057_create_goods_table.php

@@ -18,7 +18,7 @@ class CreateGoodsTable extends Migration
             $table->string('name', 100)->comment('商品名称');
             $table->string('logo')->nullable()->comment('商品图片地址');
             $table->unsignedBigInteger('traffic')->default(0)->comment('商品内含多少流量,单位MiB');
-            $table->boolean('type')->default(1)->comment('商品类型:1-流量包、2-套餐');
+            $table->boolean('type')->default(true)->comment('商品类型:1-流量包、2-套餐');
             $table->unsignedInteger('price')->default(0)->comment('售价,单位分');
             $table->unsignedTinyInteger('level')->default(0)->comment('购买后给用户授权的等级');
             $table->unsignedInteger('renew')->nullable()->comment('流量重置价格,单位分');
@@ -30,8 +30,8 @@ class CreateGoodsTable extends Migration
             $table->unsignedInteger('limit_num')->nullable()->comment('限购数量,默认为null不限购');
             $table->string('color', 50)->default('green')->comment('商品颜色');
             $table->unsignedTinyInteger('sort')->default(0)->comment('排序');
-            $table->boolean('is_hot')->default(0)->comment('是否热销:0-否、1-是');
-            $table->boolean('status')->default(0)->comment('状态:0-下架、1-上架');
+            $table->boolean('is_hot')->default(false)->comment('是否热销:0-否、1-是');
+            $table->boolean('status')->default(false)->comment('状态:0-下架、1-上架');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
             $table->softDeletes()->comment('删除时间');

+ 3 - 3
database/migrations/2020_08_21_145711_create_invite_table.php → database/migrations/7.4/2024_02_26_161057_create_invite_table.php

@@ -15,10 +15,10 @@ class CreateInviteTable extends Migration
     {
         Schema::create('invite', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('inviter_id')->default(0)->comment('邀请ID');
-            $table->unsignedInteger('invitee_id')->nullable()->comment('受邀ID');
+            $table->unsignedInteger('inviter_id')->nullable()->index('invite_inviter_id_foreign')->comment('邀请ID');
+            $table->unsignedInteger('invitee_id')->nullable()->index('invite_invitee_id_foreign')->comment('受邀ID');
             $table->char('code', 12)->unique()->comment('邀请码');
-            $table->boolean('status')->default(0)->comment('邀请码状态:0-未使用、1-已使用、2-已过期');
+            $table->boolean('status')->default(false)->comment('邀请码状态:0-未使用、1-已使用、2-已过期');
             $table->dateTime('dateline')->comment('有效期至');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');

+ 0 - 0
database/migrations/2020_08_21_145711_create_jobs_table.php → database/migrations/7.4/2024_02_26_161057_create_jobs_table.php


+ 6 - 4
database/migrations/2020_08_21_145711_create_node_label_table.php → database/migrations/7.4/2024_02_26_161057_create_label_node_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateNodeLabelTable extends Migration
+class CreateLabelNodeTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,10 +13,12 @@ class CreateNodeLabelTable extends Migration
      */
     public function up()
     {
-        Schema::create('node_label', function (Blueprint $table) {
+        Schema::create('label_node', function (Blueprint $table) {
             $table->increments('id');
             $table->unsignedInteger('node_id')->default(0)->comment('节点ID');
-            $table->unsignedInteger('label_id')->default(0)->comment('标签ID');
+            $table->unsignedInteger('label_id')->default(0)->index('node_label_label_id_foreign')->comment('标签ID');
+
+            $table->unique(['node_id', 'label_id'], 'node_label_node_id_label_id_unique');
             $table->index(['node_id', 'label_id'], 'idx_node_label');
         });
     }
@@ -28,6 +30,6 @@ class CreateNodeLabelTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('node_label');
+        Schema::dropIfExists('label_node');
     }
 }

+ 0 - 0
database/migrations/2020_08_21_145711_create_label_table.php → database/migrations/7.4/2024_02_26_161057_create_label_table.php


+ 1 - 1
database/migrations/2020_08_21_145711_create_level_table.php → database/migrations/7.4/2024_02_26_161057_create_level_table.php

@@ -15,7 +15,7 @@ class CreateLevelTable extends Migration
     {
         Schema::create('level', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedTinyInteger('level')->comment('等级');
+            $table->unsignedTinyInteger('level')->unique()->comment('等级');
             $table->string('name', 100)->comment('等级名称');
         });
     }

+ 0 - 0
database/migrations/2020_08_21_145711_create_marketing_table.php → database/migrations/7.4/2024_02_26_161057_create_marketing_table.php


+ 35 - 0
database/migrations/7.4/2024_02_26_161057_create_model_has_permissions_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateModelHasPermissionsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('model_has_permissions', function (Blueprint $table) {
+            $table->unsignedBigInteger('permission_id');
+            $table->string('model_type');
+            $table->unsignedBigInteger('model_id');
+
+            $table->index(['model_id', 'model_type']);
+            $table->primary(['permission_id', 'model_id', 'model_type']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('model_has_permissions');
+    }
+}

+ 35 - 0
database/migrations/7.4/2024_02_26_161057_create_model_has_roles_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateModelHasRolesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('model_has_roles', function (Blueprint $table) {
+            $table->unsignedBigInteger('role_id');
+            $table->string('model_type');
+            $table->unsignedBigInteger('model_id');
+
+            $table->index(['model_id', 'model_type']);
+            $table->primary(['role_id', 'model_id', 'model_type']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('model_has_roles');
+    }
+}

+ 1 - 1
database/migrations/2020_08_21_145711_create_node_auth_table.php → database/migrations/7.4/2024_02_26_161057_create_node_auth_table.php

@@ -15,7 +15,7 @@ class CreateNodeAuthTable extends Migration
     {
         Schema::create('node_auth', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('node_id')->comment('授权节点ID');
+            $table->unsignedInteger('node_id')->index('node_auth_node_id_foreign')->comment('授权节点ID');
             $table->char('key', 16)->comment('认证KEY');
             $table->char('secret', 8)->comment('通信密钥');
             $table->dateTime('created_at')->comment('创建时间');

+ 1 - 1
database/migrations/2020_08_21_145711_create_node_certificate_table.php → database/migrations/7.4/2024_02_26_161057_create_node_certificate_table.php

@@ -15,7 +15,7 @@ class CreateNodeCertificateTable extends Migration
     {
         Schema::create('node_certificate', function (Blueprint $table) {
             $table->increments('id');
-            $table->string('domain')->comment('域名');
+            $table->string('domain')->unique()->comment('域名');
             $table->text('key')->nullable()->comment('域名证书KEY');
             $table->text('pem')->nullable()->comment('域名证书PEM');
             $table->dateTime('created_at')->comment('创建时间');

+ 0 - 0
database/migrations/2020_08_21_145711_create_node_daily_data_flow_table.php → database/migrations/7.4/2024_02_26_161057_create_node_daily_data_flow_table.php


+ 4 - 4
database/migrations/2020_08_21_145711_create_ss_node_info_table.php → database/migrations/7.4/2024_02_26_161057_create_node_heartbeat_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateSsNodeInfoTable extends Migration
+class CreateNodeHeartbeatTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,9 +13,9 @@ class CreateSsNodeInfoTable extends Migration
      */
     public function up()
     {
-        Schema::create('ss_node_info', function (Blueprint $table) {
+        Schema::create('node_heartbeat', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('node_id')->default(0)->index()->comment('节点ID');
+            $table->unsignedInteger('node_id')->default(0)->index('ss_node_info_node_id_index')->comment('节点ID');
             $table->unsignedInteger('uptime')->comment('后端存活时长,单位秒');
             $table->string('load')->comment('负载');
             $table->unsignedInteger('log_time')->comment('记录时间');
@@ -29,6 +29,6 @@ class CreateSsNodeInfoTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('ss_node_info');
+        Schema::dropIfExists('node_heartbeat');
     }
 }

+ 0 - 0
database/migrations/2020_08_21_145711_create_node_hourly_data_flow_table.php → database/migrations/7.4/2024_02_26_161057_create_node_hourly_data_flow_table.php


+ 6 - 6
database/migrations/2020_08_21_145711_create_ss_node_ip_table.php → database/migrations/7.4/2024_02_26_161057_create_node_online_ip_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateSsNodeIpTable extends Migration
+class CreateNodeOnlineIpTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,11 +13,11 @@ class CreateSsNodeIpTable extends Migration
      */
     public function up()
     {
-        Schema::create('ss_node_ip', function (Blueprint $table) {
+        Schema::create('node_online_ip', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('node_id')->default(0)->index()->comment('节点ID');
-            $table->unsignedInteger('user_id')->default(0)->index()->comment('用户ID');
-            $table->unsignedSmallInteger('port')->default(0)->index()->comment('端口');
+            $table->unsignedInteger('node_id')->default(0)->index('ss_node_ip_node_id_index')->comment('节点ID');
+            $table->unsignedInteger('user_id')->nullable()->index('ss_node_ip_user_id_index')->comment('用户ID');
+            $table->unsignedSmallInteger('port')->default(0)->index('ss_node_ip_port_index')->comment('端口');
             $table->char('type', 3)->default('tcp')->comment('类型:all、tcp、udp');
             $table->text('ip')->nullable()->comment('连接IP:每个IP用,号隔开');
             $table->unsignedInteger('created_at')->default(0)->comment('上报时间');
@@ -31,6 +31,6 @@ class CreateSsNodeIpTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('ss_node_ip');
+        Schema::dropIfExists('node_online_ip');
     }
 }

+ 4 - 4
database/migrations/2020_08_21_145711_create_ss_node_online_log_table.php → database/migrations/7.4/2024_02_26_161057_create_node_online_log_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateSsNodeOnlineLogTable extends Migration
+class CreateNodeOnlineLogTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,9 +13,9 @@ class CreateSsNodeOnlineLogTable extends Migration
      */
     public function up()
     {
-        Schema::create('ss_node_online_log', function (Blueprint $table) {
+        Schema::create('node_online_log', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('node_id')->index()->comment('节点ID');
+            $table->unsignedInteger('node_id')->index('ss_node_online_log_node_id_index')->comment('节点ID');
             $table->unsignedInteger('online_user')->comment('在线用户数');
             $table->unsignedInteger('log_time')->comment('记录时间');
         });
@@ -28,6 +28,6 @@ class CreateSsNodeOnlineLogTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('ss_node_online_log');
+        Schema::dropIfExists('node_online_log');
     }
 }

+ 22 - 16
database/migrations/2020_08_21_145711_create_ss_node_table.php → database/migrations/7.4/2024_02_26_161057_create_node_table.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class CreateSsNodeTable extends Migration
+class CreateNodeTable extends Migration
 {
     /**
      * Run the migrations.
@@ -13,15 +13,16 @@ class CreateSsNodeTable extends Migration
      */
     public function up()
     {
-        Schema::create('ss_node', function (Blueprint $table) {
+        Schema::create('node', function (Blueprint $table) {
             $table->increments('id');
-            $table->boolean('type')->default(1)->comment('服务类型:1-Shadowsocks(R)、2-V2ray、3-Trojan、4-VNet');
+            $table->boolean('type')->default(true)->index('ss_node_type_index')->comment('服务类型:1-Shadowsocks(R)、2-V2ray、3-Trojan、4-VNet');
             $table->string('name', 128)->comment('名称');
             $table->char('country_code', 5)->default('un')->comment('国家代码');
             $table->string('server')->nullable()->comment('服务器域名地址');
-            $table->ipAddress('ip')->nullable()->comment('服务器IPV4地址');
-            $table->ipAddress('ipv6')->nullable()->comment('服务器IPV6地址');
+            $table->string('ip', 45)->nullable()->comment('服务器IPV4地址');
+            $table->string('ipv6', 45)->nullable()->comment('服务器IPV6地址');
             $table->unsignedTinyInteger('level')->default(0)->comment('等级:0-无等级,全部可见');
+            $table->unsignedInteger('rule_group_id')->nullable()->index('ss_node_rule_group_id_foreign')->comment('从属规则分组ID');
             $table->unsignedBigInteger('speed_limit')->default(0)->comment('节点限速,为0表示不限速,单位Byte');
             $table->unsignedSmallInteger('client_limit')->default(0)->comment('设备数限制');
             $table->string('relay_server')->nullable()->comment('中转地址');
@@ -33,19 +34,19 @@ class CreateSsNodeTable extends Migration
             $table->string('protocol_param', 128)->nullable()->comment('协议参数');
             $table->string('obfs', 64)->default('plain')->comment('混淆');
             $table->string('obfs_param')->nullable()->comment('混淆参数');
-            $table->float('traffic_rate', 6)->unsigned()->default(1.00)->comment('流量比率');
-            $table->boolean('is_subscribe')->default(1)->index()->comment('是否允许用户订阅该节点:0-否、1-是');
-            $table->boolean('is_ddns')->default(0)->comment('是否使用DDNS:0-否、1-是');
-            $table->boolean('is_relay')->default(0)->comment('是否中转节点:0-否、1-是');
-            $table->boolean('is_udp')->default(1)->comment('是否启用UDP:0-不启用、1-启用');
+            $table->double('traffic_rate', 6, 2)->unsigned()->default(1)->comment('流量比率');
+            $table->boolean('is_subscribe')->default(true)->index('ss_node_is_subscribe_index')->comment('是否允许用户订阅该节点:0-否、1-是');
+            $table->boolean('is_ddns')->default(false)->comment('是否使用DDNS:0-否、1-是');
+            $table->boolean('is_relay')->default(false)->comment('是否中转节点:0-否、1-是');
+            $table->boolean('is_udp')->default(true)->comment('是否启用UDP:0-不启用、1-启用');
             $table->unsignedSmallInteger('push_port')->default(1000)->comment('消息推送端口');
-            $table->boolean('detection_type')->default(1)->comment('节点检测: 0-关闭、1-只检测TCP、2-只检测ICMP、3-检测全部');
-            $table->boolean('compatible')->default(0)->comment('兼容SS');
-            $table->boolean('single')->default(0)->comment('启用单端口功能:0-否、1-是');
+            $table->boolean('detection_type')->default(true)->comment('节点检测: 0-关闭、1-只检测TCP、2-只检测ICMP、3-检测全部');
+            $table->boolean('compatible')->default(false)->comment('兼容SS');
+            $table->boolean('single')->default(false)->comment('启用单端口功能:0-否、1-是');
             $table->unsignedSmallInteger('port')->nullable()->comment('单端口的端口号或连接端口号');
             $table->string('passwd')->nullable()->comment('单端口的连接密码');
             $table->unsignedTinyInteger('sort')->default(0)->comment('排序值,值越大越靠前显示');
-            $table->boolean('status')->default(1)->comment('状态:0-维护、1-正常');
+            $table->boolean('status')->default(true)->comment('状态:0-维护、1-正常');
             $table->unsignedSmallInteger('v2_alter_id')->default(16)->comment('V2Ray额外ID');
             $table->unsignedSmallInteger('v2_port')->default(0)->comment('V2Ray服务端口');
             $table->string('v2_method', 32)->default('aes-128-gcm')->comment('V2Ray加密方式');
@@ -53,10 +54,15 @@ class CreateSsNodeTable extends Migration
             $table->string('v2_type', 32)->default('none')->comment('V2Ray伪装类型');
             $table->string('v2_host')->nullable()->comment('V2Ray伪装的域名');
             $table->string('v2_path')->nullable()->comment('V2Ray的WS/H2路径');
-            $table->boolean('v2_tls')->default(0)->comment('V2Ray连接TLS:0-未开启、1-开启');
+            $table->boolean('v2_tls')->default(false)->comment('V2Ray连接TLS:0-未开启、1-开启');
             $table->text('tls_provider')->nullable()->comment('V2Ray节点的TLS提供商授权信息');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
+            $table->string('v2_sni', 128)->nullable();
+            $table->boolean('vless')->nullable()->default(false);
+            $table->string('vless_privateKey', 128)->nullable()->default('CA0mAkV9j_9_hOSEmoAtMyZlcYJml39WNQmrP6iPVEo')->comment('密钥key');
+            $table->string('vless_pulkey', 128)->nullable()->default('BJA3WEhDZzV1OQbhjhkKtHvYyqiscj3xPvNnIB1UizM')->comment('公钥');
+            $table->string('shortIds', 128)->nullable();
         });
     }
 
@@ -67,6 +73,6 @@ class CreateSsNodeTable extends Migration
      */
     public function down()
     {
-        Schema::dropIfExists('ss_node');
+        Schema::dropIfExists('node');
     }
 }

+ 34 - 0
database/migrations/7.4/2024_02_26_161057_create_node_user_group_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateNodeUserGroupTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('node_user_group', function (Blueprint $table) {
+            $table->increments('id');
+            $table->unsignedInteger('node_id')->index('node_user_group_node_id_foreign')->comment('节点ID');
+            $table->unsignedInteger('user_group_id')->comment('从属用户分组ID');
+
+            $table->unique(['user_group_id', 'node_id']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('node_user_group');
+    }
+}

+ 2 - 2
database/migrations/2020_08_21_145711_create_notification_log_table.php → database/migrations/7.4/2024_02_26_161057_create_notification_log_table.php

@@ -15,11 +15,11 @@ class CreateNotificationLogTable extends Migration
     {
         Schema::create('notification_log', function (Blueprint $table) {
             $table->increments('id');
-            $table->boolean('type')->default(1)->comment('类型:1-邮件、2-ServerChan、3-Bark、4-Telegram');
+            $table->boolean('type')->default(true)->comment('类型:1-邮件、2-ServerChan、3-Bark、4-Telegram');
             $table->string('address')->comment('收信地址');
             $table->string('title')->comment('标题');
             $table->text('content')->comment('内容');
-            $table->boolean('status')->default(0)->comment('状态:-1发送失败、0-等待发送、1-发送成功');
+            $table->boolean('status')->default(false)->comment('状态:-1发送失败、0-等待发送、1-发送成功');
             $table->text('error')->nullable()->comment('发送失败抛出的异常信息');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');

+ 38 - 0
database/migrations/7.4/2024_02_26_161057_create_notifications_table.php

@@ -0,0 +1,38 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateNotificationsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('notifications', function (Blueprint $table) {
+            $table->char('id', 36)->primary();
+            $table->string('type');
+            $table->string('notifiable_type');
+            $table->unsignedBigInteger('notifiable_id');
+            $table->text('data');
+            $table->timestamp('read_at')->nullable();
+            $table->timestamps();
+
+            $table->index(['notifiable_type', 'notifiable_id']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('notifications');
+    }
+}

+ 8 - 7
database/migrations/2020_08_21_145711_create_order_table.php → database/migrations/7.4/2024_02_26_161057_create_order_table.php

@@ -15,19 +15,20 @@ class CreateOrderTable extends Migration
     {
         Schema::create('order', function (Blueprint $table) {
             $table->increments('id');
-            $table->string('order_sn', 20)->comment('订单编号');
-            $table->unsignedInteger('user_id')->comment('操作人');
-            $table->unsignedInteger('goods_id')->nullable()->comment('商品ID');
-            $table->unsignedInteger('coupon_id')->nullable()->comment('优惠券ID');
+            $table->string('sn', 20)->comment('订单编号');
+            $table->unsignedInteger('user_id')->comment('购买者ID');
+            $table->unsignedInteger('goods_id')->nullable()->index('order_goods_id_foreign')->comment('商品ID');
+            $table->unsignedInteger('coupon_id')->nullable()->index('order_coupon_id_foreign')->comment('优惠券ID');
             $table->unsignedInteger('origin_amount')->default(0)->comment('订单原始总价,单位分');
             $table->unsignedInteger('amount')->default(0)->comment('订单总价,单位分');
             $table->dateTime('expired_at')->nullable()->comment('过期时间');
-            $table->boolean('is_expire')->default(0)->comment('是否已过期:0-未过期、1-已过期');
-            $table->boolean('pay_type')->default(0)->comment('支付渠道:0-余额、1-支付宝、2-QQ、3-微信、4-虚拟货币、5-paypal');
+            $table->boolean('is_expire')->default(false)->comment('是否已过期:0-未过期、1-已过期');
+            $table->boolean('pay_type')->default(false)->comment('支付渠道:0-余额、1-支付宝、2-QQ、3-微信、4-虚拟货币、5-paypal');
             $table->string('pay_way', 10)->default('balance')->comment('支付方式:balance、f2fpay、codepay、payjs、bitpayx等');
-            $table->boolean('status')->default(0)->comment('订单状态:-1-已关闭、0-待支付、1-已支付待确认、2-已完成');
+            $table->boolean('status')->default(false)->comment('订单状态:-1-已关闭、0-待支付、1-已支付待确认、2-已完成');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
+
             $table->index(['user_id', 'goods_id', 'is_expire', 'status'], 'idx_order_search');
         });
     }

+ 1 - 1
database/migrations/2020_08_21_145711_create_payment_callback_table.php → database/migrations/7.4/2024_02_26_161057_create_payment_callback_table.php

@@ -17,7 +17,7 @@ class CreatePaymentCallbackTable extends Migration
             $table->increments('id');
             $table->string('trade_no', 64)->comment('本地订单号');
             $table->string('out_trade_no', 64)->comment('外部订单号(支付平台)');
-            $table->unsignedInteger('amount')->comment('交易金额,单位分');
+            $table->string('amount', 64)->comment('交易金额,单位分');
             $table->boolean('status')->comment('交易状态:0-失败、1-成功');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');

+ 4 - 2
database/migrations/2020_08_21_145711_create_payment_table.php → database/migrations/7.4/2024_02_26_161057_create_payment_table.php

@@ -17,13 +17,15 @@ class CreatePaymentTable extends Migration
             $table->increments('id');
             $table->string('trade_no', 64)->comment('支付单号(本地订单号)');
             $table->unsignedInteger('user_id')->comment('用户ID');
-            $table->unsignedInteger('order_id')->comment('本地订单ID');
+            $table->unsignedInteger('order_id')->index('payment_order_id_foreign')->comment('本地订单ID');
             $table->unsignedInteger('amount')->default(0)->comment('金额,单位分');
             $table->text('qr_code')->nullable()->comment('支付二维码');
             $table->text('url')->nullable()->comment('支付链接');
-            $table->boolean('status')->default(0)->comment('支付状态:-1-支付失败、0-等待支付、1-支付成功');
+            $table->boolean('status')->default(false)->comment('支付状态:-1-支付失败、0-等待支付、1-支付成功');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
+
+            $table->index(['user_id', 'order_id']);
         });
     }
 

+ 34 - 0
database/migrations/7.4/2024_02_26_161057_create_permissions_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreatePermissionsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('permissions', function (Blueprint $table) {
+            $table->bigIncrements('id');
+            $table->string('name');
+            $table->string('description');
+            $table->string('guard_name');
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('permissions');
+    }
+}

+ 1 - 1
database/migrations/2020_08_21_145711_create_products_pool_table.php → database/migrations/7.4/2024_02_26_161057_create_products_pool_table.php

@@ -18,7 +18,7 @@ class CreateProductsPoolTable extends Migration
             $table->string('name')->comment('名称');
             $table->unsignedInteger('min_amount')->default(0)->comment('适用最小金额,单位分');
             $table->unsignedInteger('max_amount')->default(0)->comment('适用最大金额,单位分');
-            $table->boolean('status')->default(1)->comment('状态:0-未启用、1-已启用');
+            $table->boolean('status')->default(true)->comment('状态:0-未启用、1-已启用');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
         });

+ 6 - 2
database/migrations/2020_08_21_145711_create_referral_apply_table.php → database/migrations/7.4/2024_02_26_161057_create_referral_apply_table.php

@@ -15,14 +15,18 @@ class CreateReferralApplyTable extends Migration
     {
         Schema::create('referral_apply', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('user_id')->comment('用户ID');
+            $table->unsignedInteger('user_id')->index('referral_apply_user_id_foreign')->comment('申请者ID');
             $table->unsignedInteger('before')->default(0)->comment('操作前可提现金额,单位分');
             $table->unsignedInteger('after')->default(0)->comment('操作后可提现金额,单位分');
             $table->unsignedInteger('amount')->default(0)->comment('本次提现金额,单位分');
             $table->json('link_logs')->comment('关联返利日志ID,例如:1,3,4');
-            $table->boolean('status')->default(0)->comment('状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款');
+            $table->boolean('status')->default(false)->comment('状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
+            $table->string('zfb_name', 250)->nullable()->comment('支付宝姓名
+');
+            $table->string('zfb_card', 250)->nullable()->comment('支付宝账号
+');
         });
     }
 

+ 5 - 3
database/migrations/2020_08_21_145711_create_referral_log_table.php → database/migrations/7.4/2024_02_26_161057_create_referral_log_table.php

@@ -15,14 +15,16 @@ class CreateReferralLogTable extends Migration
     {
         Schema::create('referral_log', function (Blueprint $table) {
             $table->increments('id');
-            $table->unsignedInteger('invitee_id')->comment('用户ID');
+            $table->unsignedInteger('invitee_id')->nullable()->index('referral_log_invitee_id_foreign')->comment('用户ID');
             $table->unsignedInteger('inviter_id')->comment('推广人ID');
-            $table->unsignedInteger('order_id')->comment('关联订单ID');
+            $table->unsignedInteger('order_id')->nullable()->index('referral_log_order_id_foreign')->comment('关联订单ID');
             $table->unsignedInteger('amount')->comment('消费金额,单位分');
             $table->unsignedInteger('commission')->comment('返利金额');
-            $table->boolean('status')->default(0)->comment('状态:0-未提现、1-审核中、2-已提现');
+            $table->boolean('status')->default(false)->comment('状态:0-未提现、1-审核中、2-已提现');
             $table->dateTime('created_at')->comment('创建时间');
             $table->dateTime('updated_at')->comment('最后更新时间');
+
+            $table->index(['inviter_id', 'invitee_id']);
         });
     }
 

+ 33 - 0
database/migrations/7.4/2024_02_26_161057_create_role_has_permissions_table.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateRoleHasPermissionsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('role_has_permissions', function (Blueprint $table) {
+            $table->unsignedBigInteger('permission_id');
+            $table->unsignedBigInteger('role_id')->index('role_has_permissions_role_id_foreign');
+
+            $table->primary(['permission_id', 'role_id']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('role_has_permissions');
+    }
+}

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff