Просмотр исходного кода

1.修正定时任务致命BUG
2.套餐按购买日期自动重置
3.流量日志自动清除

bingo 8 лет назад
Родитель
Сommit
65aa5703e9

+ 55 - 0
app/Console/Commands/AutoClearLogJob.php

@@ -0,0 +1,55 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Http\Models\SsNodeInfo;
+use App\Http\Models\SsNodeOnlineLog;
+use App\Http\Models\SsNodeTrafficHourly;
+use App\Http\Models\UserTrafficLog;
+use Illuminate\Console\Command;
+use App\Http\Models\Config;
+use App\Http\Models\UserTrafficHourly;
+use Log;
+
+class AutoClearLogJob extends Command
+{
+    protected $signature = 'command:autoClearLogJob';
+    protected $description = '自动清除日志';
+
+    protected static $config;
+
+    public function __construct()
+    {
+        parent::__construct();
+
+        $config = Config::query()->get();
+        $data = [];
+        foreach ($config as $vo) {
+            $data[$vo->name] = $vo->value;
+        }
+
+        self::$config = $data;
+    }
+
+    public function handle()
+    {
+        if (self::$config['is_clear_log']) {
+            // 自动清除12小时以前的节点负载信息日志
+            SsNodeInfo::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-12 hours"))))->delete();
+
+            // 自动清除1小时以前的节点负载信息日志
+            SsNodeOnlineLog::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-60 minutes"))))->delete();
+
+            // 自动清除30天以前的用户流量日志
+            UserTrafficLog::query()->where('log_time', '<=', strtotime(date('Y-m-d H:i:s', strtotime("-30 days"))))->delete();
+
+            // 自动清除10天以前的用户每小时流量数据日志
+            UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();
+
+            // 自动清除10天以前的节点每小时流量数据日志
+            SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-10 days')))->delete();
+        }
+
+        Log::info('定时任务:' . $this->description);
+    }
+}

+ 0 - 1
app/Console/Commands/AutoDecGoodsTrafficJob.php

@@ -3,7 +3,6 @@
 namespace App\Console\Commands;
 
 use Illuminate\Console\Command;
-use App\Http\Models\Goods;
 use App\Http\Models\OrderGoods;
 use App\Http\Models\User;
 use Log;

+ 2 - 2
app/Console/Commands/AutoResetUserTrafficJob.php

@@ -33,7 +33,7 @@ class AutoResetUserTrafficJob extends Command
         if (self::$config['reset_traffic']) {
             $userList = User::query()->where('status', '>=', 0)->where('enable', 1)->get();
             foreach ($userList as $user) {
-                if (!$user->traffic_reset_day) {
+                if (empty($user->traffic_reset_day)) {
                     continue;
                 }
 
@@ -43,7 +43,7 @@ class AutoResetUserTrafficJob extends Command
                     continue;
                 }
 
-                if ($user->traffic_reset_day == abs(date('d')) && abs(date('m')) == abs(date('m', $orderGoods->created_at))) {
+                if ($user->traffic_reset_day == abs(date('d')) && date('m') == date('m', strtotime($orderGoods->created_at))) {
                     continue;
                 }
 

+ 5 - 3
app/Console/Kernel.php

@@ -14,11 +14,12 @@ class Kernel extends ConsoleKernel
      */
     protected $commands = [
         \App\Console\Commands\AutoBanUserJob::class,
+        \App\Console\Commands\AutoClearLogJob::class,
         \App\Console\Commands\AutoDecGoodsTrafficJob::class,
         \App\Console\Commands\AutoDisableExpireUserJob::class,
         \App\Console\Commands\AutoExpireCouponJob::class,
         \App\Console\Commands\AutoExpireInviteJob::class,
-        //\App\Console\Commands\AutoGetLocationInfoJob::class,
+        \App\Console\Commands\AutoGetLocationInfoJob::class,
         \App\Console\Commands\AutoReopenUserJob::class,
         \App\Console\Commands\AutoResetUserTrafficJob::class,
         \App\Console\Commands\AutoStatisticsNodeDailyTrafficJob::class,
@@ -37,14 +38,15 @@ class Kernel extends ConsoleKernel
      */
     protected function schedule(Schedule $schedule)
     {
-        $schedule->command('command:autoBanUserJob')->everyThirtyMinutes();
+        $schedule->command('command:autoBanUserJob')->everyTenMinutes();
+        $schedule->command('command:autoClearLogJob')->everyThirtyMinutes();
         $schedule->command('command:autoDecGoodsTrafficJob')->everyTenMinutes();
         $schedule->command('command:autoDisableExpireUserJob')->everyMinute();
         $schedule->command('command:autoExpireCouponJob')->everyThirtyMinutes();
         $schedule->command('command:autoExpireInviteJob')->everyThirtyMinutes();
         //$schedule->command('command:autoGetLocationInfoJob')->everyMinute();
         $schedule->command('command:autoReopenUserJob')->everyMinute();
-        $schedule->command('command:autoResetUserTrafficJob')->monthly();
+        $schedule->command('command:autoResetUserTrafficJob')->everyFiveMinutes();
         $schedule->command('command:autoStatisticsNodeDailyTrafficJob')->dailyAt('04:30');
         $schedule->command('command:autoStatisticsNodeHourlyTrafficJob')->hourly();
         $schedule->command('command:autoStatisticsUserDailyTrafficJob')->dailyAt('03:00');

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

@@ -49,6 +49,7 @@ class UserController extends BaseController
         $user->usedTransfer = $this->flowAutoShow($user->u + $user->d);
         $user->usedPercent = $user->transfer_enable > 0 ? round(($user->u + $user->d) / $user->transfer_enable, 2) : 1;
         $user->levelName = Level::query()->where('level', $user['level'])->first()['level_name'];
+        $user->balance = $user->balance / 100;
         $view['info'] = $user->toArray();
         $view['notice'] = Article::query()->where('type', 2)->where('is_del', 0)->orderBy('id', 'desc')->first();
         $view['articleList'] = Article::query()->where('type', 1)->where('is_del', 0)->orderBy('sort', 'desc')->orderBy('id', 'desc')->paginate(5);

+ 22 - 0
resources/views/admin/system.blade.php

@@ -239,6 +239,17 @@
                                                             </div>
                                                         </div>
                                                     </div>
+                                                    <div class="form-group">
+                                                        <div class="col-md-6">
+                                                            <label for="is_clear_log" class="col-md-3 control-label">自动清除日志</label>
+                                                            <div class="col-md-9">
+                                                                <input type="checkbox" class="make-switch" @if($is_clear_log) checked @endif id="is_clear_log" data-on-color="success" data-off-color="danger" data-on-text="启用" data-off-text="关闭">
+                                                                <span class="help-block"> 启用后自动清除无用日志(推荐) </span>
+                                                            </div>
+                                                        </div>
+                                                        <div class="col-md-6">
+                                                        </div>
+                                                    </div>
                                                 </div>
                                             </form>
                                         </div>
@@ -661,6 +672,17 @@
             }
         });
 
+        // 启用、禁用随机端口
+        $('#is_clear_log').on({
+            'switchChange.bootstrapSwitch': function(event, state) {
+                var is_clear_log = state ? 1 : 0;
+
+                $.post("{{url('admin/setConfig')}}", {_token:'{{csrf_token()}}', name:'is_clear_log', value:is_clear_log}, function (ret) {
+                    console.log(ret);
+                });
+            }
+        });
+
         // 启用、禁用流量自动重置
         $('#reset_traffic').on({
             'switchChange.bootstrapSwitch': function(event, state) {

+ 1 - 1
resources/views/user/index.blade.php

@@ -47,7 +47,7 @@
         <div class="row">
             <div class="col-md-8">
                 <div class="alert alert-danger">
-                    <strong>结算比例:</strong> 1表示用100M就结算100M,0.1表示用100M结算10M,5表示用100M结算500M,越是优质节点则比例越高
+                    <strong>结算比例:</strong> 1表示用100M就结算100M,0.1表示用100M结算10M,5表示用100M结算500M。
                     <button class="btn btn-sm red" onclick="subscribe()"> 订阅节点 </button>
                 </div>
                 <div class="row widget-row">

+ 1 - 0
sql/db.sql

@@ -284,6 +284,7 @@ INSERT INTO `config` VALUES ('32', 'is_captcha', 0);
 INSERT INTO `config` VALUES ('33', 'is_traffic_ban', 1);
 INSERT INTO `config` VALUES ('34', 'traffic_ban_value', 10);
 INSERT INTO `config` VALUES ('35', 'traffic_ban_time', 60);
+INSERT INTO `config` VALUES ('36', 'is_clear_log', 1);
 
 
 -- ----------------------------

+ 2 - 0
sql/update/20171202.sql

@@ -2,3 +2,5 @@
 ALTER TABLE `user`
 ADD COLUMN `traffic_reset_day`  tinyint NOT NULL DEFAULT 0 COMMENT '流量自动重置日,0表示不重置' AFTER `referral_uid`;
 
+-- 加入 是否自动重置流量 配置
+INSERT INTO `config` VALUES ('36', 'is_clear_log', 1);