Bladeren bron

优化下写法

PC-202304251453\Administrator 5 maanden geleden
bovenliggende
commit
37dd742a9b
2 gewijzigde bestanden met toevoegingen van 72 en 79 verwijderingen
  1. 54 65
      app/v1/logic/dataReport/UserLogLogic.php
  2. 18 14
      plugin/saiadmin/basic/BaseLogic.php

+ 54 - 65
app/v1/logic/dataReport/UserLogLogic.php

@@ -16,25 +16,20 @@ class UserLogLogic extends BaseLogic
     {
         $params = $this->searchByAuth($where);
 
-        $regTime = $params['reg_time'];
-        $tableName = 'sdk_reg_log_' . date('Ym', strtotime($regTime));
-        $params['reg_time'] = strtotime($regTime . " 00:00:00") . "<=" . strtotime($regTime . " 23:59:59");
+        $tableName = 'sdk_reg_log_' . date('Ym', strtotime($params['reg_time']));
         $limit = request()->input('limit', 10);
 
         // 获取这一天的注册日志
-        $regLogQuery = Db::connect('db_game_log')
-            ->table($tableName)
-            ->where('reg_time', '>=', strtotime($regTime . ' 00:00:00'))
-            ->where('reg_time', '<=', strtotime($regTime . ' 23:59:59'));
+        $regLogQuery = Db::connect('db_game_log')->table($tableName);
 
-        // 公共处理完的where
-        $where = $this->getCommonWhere($params);
+        // 公共处理完的where, 自然量ID, auth_id=0为自然量
+        [$where, $whereRaw] = $this->getUlogCommonWhere($params);
         if($where){
             $regLogQuery = $regLogQuery->where($where);
         }
-        // 自然量ID, auth_id=0为自然量
-        $whereRaw = $this->nomalGameWhere($params['nomal_game_id']);
-        $regLogQuery = $regLogQuery->whereRaw($whereRaw);
+        if($whereRaw){
+            $regLogQuery = $regLogQuery->whereRaw($whereRaw);
+        }
 
         // 分页
         return $regLogQuery->paginate($limit)->toArray();
@@ -49,21 +44,18 @@ class UserLogLogic extends BaseLogic
         $limit = request()->input('limit', 10);
 
         $params = $this->searchByAuth($where);
-        $loginTime = $params['login_time'];
-        $tableName = 'sdk_login_log_' . date('Ym', strtotime($loginTime));
+        $tableName = 'sdk_login_log_' . date('Ym', strtotime($params['login_time']));
 
-        $loginLogQuery = Db::connect('db_game_log')
-            ->table($tableName);
+        $loginLogQuery = Db::connect('db_game_log')->table($tableName);
 
-        // 公共处理完的where
-        $where = $this->getCommonWhere($params);
+        // 公共处理完的where, 自然量ID, auth_id=0为自然量
+        [$where, $whereRaw] = $this->getUlogCommonWhere($params);
         if($where){
             $loginLogQuery = $loginLogQuery->where($where);
         }
-
-        // 自然量ID, auth_id=0为自然量
-        $whereRaw = $this->nomalGameWhere($params['nomal_game_id']);
-        $loginLogQuery = $loginLogQuery->whereRaw($whereRaw);
+        if($whereRaw){
+            $loginLogQuery = $loginLogQuery->whereRaw($whereRaw);
+        }
 
         // 执行查询并排序
         $loginLogQuery->order($orderBy, $orderType);
@@ -72,6 +64,40 @@ class UserLogLogic extends BaseLogic
     }
 
     // 充值明细
+    public function getRechargeDetailList($where, $type = "list"): mixed
+    {
+        $orderBy = request()->input('orderBy', 'pay_date');
+        $orderType = request()->input('orderType', 'desc');
+        $page = request()->input('page', 1);
+        $limit = request()->input('limit', 10);
+
+        $params = $this->searchByAuth($where);
+
+        $tableName = 'sdk_order_success';
+
+        $rechargeDetailQuery = Db::connect('db_game_log')->table($tableName);
+
+        // 公共处理完的where, 自然量ID, auth_id=0为自然量
+        [$where, $whereRaw] = $this->getUlogCommonWhere($params);
+        if($where){
+            $rechargeDetailQuery = $rechargeDetailQuery->where($where);
+        }
+        if($whereRaw){
+            $rechargeDetailQuery = $rechargeDetailQuery->whereRaw($whereRaw);
+        }
+
+        $rechargeDetailQuery->order($orderBy, $orderType);
+
+        if ($type == 'all') {
+            $data = $rechargeDetailQuery->select()->toArray();
+        } else {
+            $data = $rechargeDetailQuery->paginate($limit)->toArray();
+        }
+
+        return $data;
+    }
+
+    // 充值明细导出
     public function exportRechargeDetailList($where): mixed
     {
         $data = $this->getRechargeDetailList($where, 'all');
@@ -114,42 +140,6 @@ class UserLogLogic extends BaseLogic
         return response()->download($file_path, urlencode($file_name));
     }
 
-    // 充值明细导出
-
-    public function getRechargeDetailList($where, $type = "list"): mixed
-    {
-        $orderBy = request()->input('orderBy', 'pay_date');
-        $orderType = request()->input('orderType', 'desc');
-        $page = request()->input('page', 1);
-        $limit = request()->input('limit', 10);
-
-        $params = $this->searchByAuth($where);
-
-        $tableName = 'sdk_order_success';
-
-        $rechargeDetailQuery = Db::connect('db_game_log')
-            ->table($tableName);
-
-        $where = $this->getCommonWhere($params);
-        if($where){
-            $rechargeDetailQuery = $rechargeDetailQuery->where($where);
-        }
-
-        // 自然量ID, auth_id=0为自然量
-        $whereRaw = $this->nomalGameWhere($params['nomal_game_id']);
-        $rechargeDetailQuery = $rechargeDetailQuery->whereRaw($whereRaw);
-
-        $rechargeDetailQuery->order($orderBy, $orderType);
-
-        if ($type == 'all') {
-            $data = $rechargeDetailQuery->select()->toArray();
-        } else {
-            $data = $rechargeDetailQuery->paginate($limit)->toArray();
-        }
-
-        return $data;
-    }
-
     // 充值排行
     public function getRechargeRankList($where): mixed
     {
@@ -162,17 +152,16 @@ class UserLogLogic extends BaseLogic
 
         $tableName = 'sdk_order_success';
 
-        $rechargeRankQuery = Db::connect('db_game_log')
-            ->table($tableName);
+        $rechargeRankQuery = Db::connect('db_game_log')->table($tableName);
 
-        $where = $this->getCommonWhere($params);
+        // 公共处理完的where, 自然量ID, auth_id=0为自然量
+        [$where, $whereRaw] = $this->getUlogCommonWhere($params);
         if($where){
             $rechargeRankQuery = $rechargeRankQuery->where($where);
         }
-
-        // 自然量ID, auth_id=0为自然量
-        $whereRaw = $this->nomalGameWhere($params['nomal_game_id']);
-        $rechargeRankQuery = $rechargeRankQuery->whereRaw($whereRaw);
+        if($whereRaw){
+            $rechargeRankQuery = $rechargeRankQuery->whereRaw($whereRaw);
+        }
 
         // 先选择字段,包括计算字段
         $rechargeRankQuery->field('user_name,sum(money) as searchTotalMoney,

+ 18 - 14
plugin/saiadmin/basic/BaseLogic.php

@@ -272,22 +272,13 @@ class BaseLogic
         return $data;
     }
 
-    protected function nomalGameWhere($nomalGameId): string
-    {
-        $whereRaw = [];
-        if(!empty($nomalGameId)){
-            for($i=0;$i<count($nomalGameId);$i++){
-                $whereRaw[] = "(game_id = {$nomalGameId[$i]} AND auth_id=0)";
-            }
-        }
-        return $whereRaw ? implode(' OR ', $whereRaw) : "1=1";
-    }
-
-    protected function getCommonWhere($params)
+    // Todo 玩家日志的公共 where 子句
+    protected function getUlogCommonWhere($params): array
     {
         $eqParams = ["user_name", "media_id", "site_id", "agent_id", "vt", "server_id", "server_name"];
         $inParams = ["game_id", "auth_id"];
-        $betweenParams = ["reg_time", "login_time", "pay_date", "reg_date"];
+        $betweenParams = ["pay_date", "reg_date"];
+        $betweenTimeParams = ["reg_time", "login_time"];
 
         $where = [];
         foreach ($params as $key => $value){
@@ -300,10 +291,23 @@ class BaseLogic
                     $where[] = [$key, 'between', [$value[0] .' 00:00:00', $value[1] .' 23:59:59']];
                 }
             }
+            elseif (in_array($key, $betweenTimeParams)) {
+                if (!empty($value)) {
+                    $where[] = [$key, 'between', [strtotime($value[0] .' 00:00:00'), strtotime($value[1] .' 23:59:59')]];
+                }
+            }
+
+        }
 
+        $whereOr = [];
+        if(!empty($params['nomal_game_id'])){
+            foreach ($params['nomal_game_id'] as $gameId){
+                $whereOr[] = "(game_id = {$gameId} AND auth_id=0)";
+            }
         }
+        $whereRaw = $whereOr ? implode(' OR ', $whereOr) : "";
 
-        return $where;
+        return [$where, $whereRaw];
     }
     /**
      * 分页查询数据