浏览代码

feat: calculate income based on paylist

M1Screw 2 年之前
父节点
当前提交
0f395219ce

+ 4 - 4
resources/views/tabler/admin/index.tpl

@@ -31,7 +31,7 @@
                                         </div>
                                         <div class="col">
                                             <div class="font-weight-medium">
-                                                ¥{$user->calIncome("today")}
+                                                ¥{$today_income}
                                             </div>
                                             <div class="text-muted">
                                                 今日流水
@@ -52,7 +52,7 @@
                                         </div>
                                         <div class="col">
                                             <div class="font-weight-medium">
-                                                ¥{$user->calIncome("yesterday")}
+                                                ¥{$yesterday_income}
                                             </div>
                                             <div class="text-muted">
                                                 昨日流水
@@ -73,7 +73,7 @@
                                         </div>
                                         <div class="col">
                                             <div class="font-weight-medium">
-                                                ¥{$user->calIncome("this month")}
+                                                ¥{$this_month_income}
                                             </div>
                                             <div class="text-muted">
                                                 这月流水
@@ -94,7 +94,7 @@
                                         </div>
                                         <div class="col">
                                             <div class="font-weight-medium">
-                                                ¥{$user->calIncome("total")}
+                                                ¥{$total_income}
                                             </div>
                                             <div class="text-muted">
                                                 累计流水

+ 10 - 0
src/Controllers/AdminController.php

@@ -5,6 +5,7 @@ declare(strict_types=1);
 namespace App\Controllers;
 
 use App\Services\Analytics;
+use App\Utils\Tools;
 use Exception;
 use Psr\Http\Message\ResponseInterface;
 use Slim\Http\Response;
@@ -22,9 +23,18 @@ final class AdminController extends BaseController
      */
     public function index(ServerRequest $request, Response $response, array $args): Response|ResponseInterface
     {
+        $today_income = Tools::getIncome('today');
+        $yesterday_income = Tools::getIncome('yesterday');
+        $this_month_income = Tools::getIncome('this month');
+        $total_income = Tools::getIncome('total');
+
         return $response->write(
             $this->view()
                 ->assign('sts', new Analytics())
+                ->assign('today_income', $today_income)
+                ->assign('yesterday_income', $yesterday_income)
+                ->assign('this_month_income', $this_month_income)
+                ->assign('total_income', $total_income)
                 ->fetch('admin/index.tpl')
         );
     }

+ 10 - 35
src/Models/User.php

@@ -330,6 +330,15 @@ final class User extends Model
         InviteCode::where('user_id', $this->id)->delete();
     }
 
+    /**
+     * 累计充值金额
+     */
+    public function getTopUp(): float
+    {
+        $number = Paylist::where('userid', $this->id)->sum('number');
+        return is_null($number) ? 0.00 : round((float) $number, 2);
+    }
+
     /**
      * 在线 IP 个数
      */
@@ -374,38 +383,6 @@ final class User extends Model
         return true;
     }
 
-    /**
-     * 累计充值金额
-     */
-    public function getTopUp(): float
-    {
-        $number = Code::where('userid', $this->id)->sum('number');
-        return is_null($number) ? 0.00 : round((float) $number, 2);
-    }
-
-    /**
-     * 获取累计收入
-     */
-    public function calIncome(string $req): float
-    {
-        $number = match ($req) {
-            'yesterday' => Code::whereDate('usedatetime', '=', date('Y-m-d', strtotime('-1 days')))->sum('number'),
-            'today' => Code::whereDate('usedatetime', '=', date('Y-m-d'))->sum('number'),
-            'this month' => Code::whereYear('usedatetime', '=', date('Y'))->whereMonth('usedatetime', '=', date('m'))->sum('number'),
-            'last month' => Code::whereYear('usedatetime', '=', date('Y'))->whereMonth('usedatetime', '=', date('m', strtotime('last month')))->sum('number'),
-            default => Code::sum('number'),
-        };
-        return is_null($number) ? 0.00 : round(floatval($number), 2);
-    }
-
-    /**
-     * 获取付费用户总数
-     */
-    public function paidUserCount(): int
-    {
-        return self::where('class', '!=', '0')->count();
-    }
-
     /**
      * 获取用户被封禁的理由
      */
@@ -656,8 +633,6 @@ final class User extends Model
         $used_traffic = $this->usedTraffic();
         $unused_traffic = $this->unusedTraffic();
         switch ($this->sendDailyMail) {
-            case 0:
-                return;
             case 1:
                 echo 'Send daily mail to user: ' . $this->id;
                 $this->sendMail(
@@ -686,8 +661,8 @@ final class User extends Model
                     $text
                 );
                 break;
+            case 0:
             default:
-                return;
         }
     }
 

+ 7 - 17
src/Services/Gateway/Epay.php

@@ -102,23 +102,13 @@ final class Epay extends AbstractPayment
         if ($verify_result) {
             $out_trade_no = $_GET['out_trade_no'];
             $type = $_GET['type'];
-            switch ($type) {
-                case 'alipay':
-                    $type = 'Alipay';
-                    break;
-                case 'qqpay':
-                    $type = 'QQ';
-                    break;
-                case 'wxpay':
-                    $type = 'WeChat';
-                    break;
-                case 'epusdt':
-                    $type = 'USDT';
-                    break;
-                default:
-                    $type = 'Alipay';
-                    break;
-            }
+            $type = match ($type) {
+                'alipay' => 'Alipay',
+                'qqpay' => 'QQ',
+                'wxpay' => 'WeChat',
+                'epusdt' => 'USDT',
+                default => 'Alipay',
+            };
             $trade_status = $_GET['trade_status'];
             if ($trade_status === 'TRADE_SUCCESS') {
                 $this->postPayment($out_trade_no, $type . ' ' . $out_trade_no);

+ 0 - 1
src/Utils/Telegram/Callbacks/Callback.php

@@ -97,7 +97,6 @@ final class Callback
         }
         //游客回调数据处理
         $this->guestCallback();
-        return;
     }
 
     /**

+ 16 - 0
src/Utils/Tools.php

@@ -6,6 +6,7 @@ namespace App\Utils;
 
 use App\Models\Link;
 use App\Models\Model;
+use App\Models\Paylist;
 use App\Models\Setting;
 use App\Models\User;
 use App\Services\Config;
@@ -380,6 +381,21 @@ final class Tools
         return null;
     }
 
+    /**
+     * 获取累计收入
+     */
+    public static function getIncome(string $req): float
+    {
+        $today = strtotime('00:00:00');
+        $number = match ($req) {
+            'today' => Paylist::where('status', 1)->whereBetween('datetime', [$today, time()])->sum('total'),
+            'yesterday' => Paylist::where('status', 1)->whereBetween('datetime', [strtotime('-1 day', $today), $today])->sum('total'),
+            'this month' => Paylist::where('status', 1)->whereBetween('datetime', [strtotime('first day of this month'), $today])->sum('total'),
+            default => Paylist::where('status', 1)->sum('total'),
+        };
+        return is_null($number) ? 0.00 : round(floatval($number), 2);
+    }
+
     /**
      * 工单状态
      */