From 8c3b5674cfe3425e880801cff64d46d3dcfca327 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=82=B9=E6=99=AF=E7=AB=8B?= <zoujingli@qq.com>
Date: Thu, 28 Jan 2021 11:44:20 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BC=9A=E5=91=98=E7=AD=89?=
 =?UTF-8?q?=E7=BA=A7=E5=8D=87=E7=BA=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/data/command/UserBalance.php |  2 +-
 app/data/command/UserLevel.php   | 25 +++++++++++++++++++++++++
 app/data/sys.php                 |  2 ++
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/app/data/command/UserBalance.php b/app/data/command/UserBalance.php
index a9fe112c5..834062066 100644
--- a/app/data/command/UserBalance.php
+++ b/app/data/command/UserBalance.php
@@ -34,7 +34,7 @@ class UserBalance extends Command
             foreach ($this->app->db->name('DataUser')->field('id')->cursor() as $user) {
                 $this->queue->message($total, ++$count, "正在计算用户 [{$user['id']}] 的余额");
                 UserService::instance()->balance($user['id']);
-                $this->queue->message($total, $count, "完成计算用户 [{$user['id']}] 的余额");
+                $this->queue->message($total, $count, "完成计算用户 [{$user['id']}] 的余额", 1);
             }
         } catch (\Exception $exception) {
             $this->queue->error($exception->getMessage());
diff --git a/app/data/command/UserLevel.php b/app/data/command/UserLevel.php
index 63ec30a81..9b245b5b4 100644
--- a/app/data/command/UserLevel.php
+++ b/app/data/command/UserLevel.php
@@ -2,12 +2,37 @@
 
 namespace app\data\command;
 
+use app\data\service\UserService;
 use think\admin\Command;
+use think\admin\Exception;
+use think\console\Input;
+use think\console\Output;
 
 class UserLevel extends Command
 {
     protected function configure()
     {
+        $this->setName('xdata:UserLevel');
+        $this->setDescription('批量重新计算用户等级');
+    }
 
+    /**
+     * @param Input $input
+     * @param Output $output
+     * @return void
+     * @throws Exception
+     */
+    protected function execute(Input $input, Output $output)
+    {
+        try {
+            [$total, $count] = [$this->app->db->name('DataUser')->count(), 0];
+            foreach ($this->app->db->name('DataUser')->field('id')->cursor() as $user) {
+                $this->queue->message($total, ++$count, "正在计算用户 [{$user['id']}] 的等级");
+                UserService::instance()->syncLevel($user['id']);
+                $this->queue->message($total, $count, "完成计算用户 [{$user['id']}] 的等级", 1);
+            }
+        } catch (\Exception $exception) {
+            $this->queue->error($exception->getMessage());
+        }
     }
 }
\ No newline at end of file
diff --git a/app/data/sys.php b/app/data/sys.php
index de52125f1..541fbcd21 100644
--- a/app/data/sys.php
+++ b/app/data/sys.php
@@ -2,12 +2,14 @@
 
 use app\data\command\OrderClear;
 use app\data\command\UserBalance;
+use app\data\command\UserLevel;
 use think\Console;
 
 Console::starting(function (Console $console) {
     if (app()->request->isCli()) {
         $console->addCommand(OrderClear::class);
         $console->addCommand(UserBalance::class);
+        $console->addCommand(UserLevel::class);
     }
 });