Parcourir la source

数据报表加权限

ith5 il y a 5 mois
Parent
commit
e67f82cb70

+ 0 - 1
app/v1/logic/center/GameLogic.php

@@ -61,7 +61,6 @@ class GameLogic extends BaseLogic
         $hasPackage = $where['has_package']??false;
         unset($where['has_package']);
         $authGameList = request()->header('auth_game_list');
-        echo 'authGameList:'.$authGameList;
         $query = $this->search($where);
         if(!empty($authGameList)) {
             $authGameList = explode(',', $authGameList);

+ 25 - 85
app/v1/logic/dataReport/AnalyseLogic.php

@@ -76,62 +76,6 @@ class AnalyseLogic extends BaseLogic
         return $result;
     }
 
-    // 注册按时
-    public function generateWhereSql($params)
-    {
-
-        $whereSql = "";
-
-        // 游戏id
-        if (!empty($params['game_id'])) {
-            if (is_array($params['game_id'])) {
-                $whereSql .= " AND game_id IN(" . implode(',', $params['game_id']) . ")";
-            } else {
-                $whereSql .= " AND game_id = {$params['game_id']}";
-            }
-        }
-        // 媒体id
-        if (!empty($params['media_id'])) {
-            $whereSql .= " AND media_id = {$params['media_id']}";
-        }
-        // 渠道id
-        if (!empty($params['agent_id'])) {
-            $whereSql .= " AND agent_id = {$params['agent_id']}";
-        }
-        // 广告位id
-        if (!empty($params['site_id'])) {
-            if (is_array($params['site_id'])) {
-                $whereSql .= " AND site_id IN(" . implode(',', $params['site_id']) . ")";
-            } else {
-                $whereSql .= " AND site_id = {$params['site_id']}";
-            }
-        }
-        // 负责人
-        if (!empty($params['auth_id'])) {
-            if (is_array($params['auth_id'])) {
-                $whereSql .= " AND auth_id IN(" . implode(',', $params['auth_id']) . ")";
-            } else {
-                $whereSql .= " AND auth_id = {$params['auth_id']}";
-            }
-        }
-        // 注册日期
-        if (!empty($params['reg_date']) && is_array($params['reg_date'])) {
-            $whereSql .= " AND tdate BETWEEN '{$params['reg_date'][0]}' AND '{$params['reg_date'][1]}'";
-        }
-        // 注册日期,不是数组,则认为是单个日期
-        if (!empty($params['reg_date']) && !is_array($params['reg_date'])) {
-            $whereSql .= " AND tdate = '{$params['reg_date']}'";
-        }
-
-        // 自然量ID, auth_id=0为自然量
-        if(!empty($params['nomal_game_id'])){
-            for($i=0;$i<count($params['nomal_game_id']);$i++){
-                $whereSql .= " OR (game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
-            }
-        }
-
-        return $whereSql;
-    }
 
     // 留存按日
 
@@ -321,6 +265,7 @@ class AnalyseLogic extends BaseLogic
         return $result;
     }
 
+    // 数据总览
     public function getDataOverview($where)
     {
         $params = $this->searchByAuth($where);
@@ -400,6 +345,7 @@ class AnalyseLogic extends BaseLogic
         ];
     }
 
+    // 数据总览(按月)
     public function getDataOverviewByMonth($where)
     {
         $params = $this->searchByAuth($where);
@@ -482,7 +428,6 @@ class AnalyseLogic extends BaseLogic
         ];
     }
 
-    // 图表数据
 
     /**
      * 收入分析
@@ -577,8 +522,7 @@ class AnalyseLogic extends BaseLogic
         ];
     }
 
-    // 生成基础日统计表的联合查询列表
-
+   
     /**
      * 付费留存
      * 1. 登录日志表:sdk_login_log_, 查找符合注册时间的用户, 获取用户id
@@ -591,36 +535,35 @@ class AnalyseLogic extends BaseLogic
     public function getPayRetention($where)
     {
         $params = $this->searchByAuth($where);
-        // $whereSql = $this->generateWhereSql($params);
+       
         // 判断不能超过90天查询
         $days = ToolLogic::getDays($where['reg_date'][0], $where['reg_date'][1]);
         if ($days > 90) {
             throw new ApiException('时间查询范围请勿超过90天');
         }
-        $whereRaw = '1=1';
-        if (!empty($params['game_id'])) {
-            $whereRaw .= " AND game_id IN(" . implode(',', $params['game_id']) . ")";
-        }
-        if (!empty($params['media_id'])) {
-            $whereRaw .= " AND media_id = ({$params['media_id']})";
-        }
-        if (!empty($params['agent_id'])) {
-            $whereRaw .= " AND agent_id IN(" . implode(',', $params['agent_id']) . ")";
-        }
+        $whereParams = $params;
+        unset($whereParams['reg_date']);
+        $whereSql = $this->generateWhereSql($whereParams);
+
+     
+        $whereSql = str_replace('tdate', 'reg_date', $whereSql);
+
 
 
         // 1. 根据注册时间,获取注册付费人数
         $payData = Db::connect('db_game_log')->query("
-        SELECT 
-          SUBSTRING(reg_date,1,10) as dimension, 
-          COUNT(DISTINCT uid) as pay_num 
-        FROM sdk_order_success
-          WHERE {$whereRaw} AND reg_date BETWEEN '{$params['reg_date'][0]} 00:00:00' AND '{$params['reg_date'][1]} 23:59:59'
-            GROUP BY 
-              dimension
-      ");
+            SELECT 
+            SUBSTRING(reg_date,1,10) as dimension, 
+            COUNT(DISTINCT uid) as pay_num 
+            FROM sdk_order_success
+            WHERE 1=1 {$whereSql} AND reg_date BETWEEN '{$params['reg_date'][0]} 00:00:00' AND '{$params['reg_date'][1]} 23:59:59'
+                GROUP BY 
+                dimension
+        ");
         $payDataMap = array_column($payData, null, 'dimension');
 
+
+     
         // 2. 计算留存付费的人数
         $sqlArr = [];
         $medate = date("Y-m-d", strtotime("+ 60 day", strtotime($params['reg_date'][1])));
@@ -637,11 +580,11 @@ class AnalyseLogic extends BaseLogic
               SELECT 
                 DISTINCT user_name
               FROM sdk_order_success
-               WHERE 
-                {$whereRaw} AND reg_date BETWEEN '{$params['reg_date'][0]} 00:00:00' AND '{$params['reg_date'][1]} 23:59:59'
+               WHERE 1=1
+                {$whereSql} AND reg_date BETWEEN '{$params['reg_date'][0]} 00:00:00' AND '{$params['reg_date'][1]} 23:59:59'
             )  AS b ON a.user_name = b.user_name
-           WHERE
-              {$whereRaw} AND reg_time BETWEEN " . strtotime($params['reg_date'][0] . " 00:00:00") . " AND " . strtotime($params['reg_date'][1] . " 23:59:59") . "
+           WHERE 1=1
+              {$whereSql} AND reg_time BETWEEN " . strtotime($params['reg_date'][0] . " 00:00:00") . " AND " . strtotime($params['reg_date'][1] . " 23:59:59") . "
           GROUP BY dimension
         ";
         }
@@ -923,9 +866,6 @@ class AnalyseLogic extends BaseLogic
         }
     }
 
-
-    // 生成wheresql
-
     public function generateMonthUnionList($namePrefix, $regDate, $whereSql = '', $field = '*', $group = null)
     {
         $tableNames = ToolLogic::getMonthlyTableNames($namePrefix, $regDate[0], $regDate[1]);

+ 1 - 49
app/v1/logic/dataReport/ChannelAnalysisLogic.php

@@ -106,57 +106,9 @@ class ChannelAnalysisLogic extends BaseLogic
     }
 
 
-    // 留存按日
-    public function generateWhereSql($params): string
-    {
-        $whereSql = "";
-        // 游戏id
-        if (!empty($params['game_id'])) {
-            if (is_array($params['game_id'])) {
-                $whereSql .= " AND game_id IN(" . implode(',', $params['game_id']) . ")";
-            } else {
-                $whereSql .= " AND game_id = {$params['game_id']}";
-            }
-        }
-        // 媒体id
-        if (!empty($params['media_id'])) {
-            $whereSql .= " AND media_id = {$params['media_id']}";
-        }
-        // 渠道id
-        if (!empty($params['agent_id'])) {
-            $whereSql .= " AND agent_id = {$params['agent_id']}";
-        }
-        // 广告位id
-        if (!empty($params['site_id'])) {
-            if (is_array($params['site_id'])) {
-                $whereSql .= " AND site_id IN(" . implode(',', $params['site_id']) . ")";
-            } else {
-                $whereSql .= " AND site_id = {$params['site_id']}";
-            }
-        }
-        // 负责人
-        if (!empty($params['auth_id'])) {
-            if (is_array($params['auth_id'])) {
-                $whereSql .= " AND auth_id IN(" . implode(',', $params['auth_id']) . ")";
-            } else {
-                $whereSql .= " AND auth_id = {$params['auth_id']}";
-            }
-        }
-        // 注册日期
-        if (!empty($params['reg_date']) ?? null) {
-            $whereSql .= " AND tdate BETWEEN '{$params['reg_date'][0]}' AND '{$params['reg_date'][1]}'";
-        }
 
-        // 自然量ID, auth_id=0为自然量
-        if(!empty($params['nomal_game_id'])){
-            for($i=0;$i<count($params['nomal_game_id']);$i++){
-                $whereSql .= " OR (game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
-            }
-        }
-
-        return $whereSql;
-    }
 
+    // 留存按日
     public function getActiveDataList($where): array
     {
         $params = $this->searchByAuth($where);

+ 0 - 54
app/v1/logic/dataReport/MaterialLogic.php

@@ -34,7 +34,6 @@ class MaterialLogic extends BaseLogic
         // 基础筛选
         $whereSql = $this->generateWhereSql($params);
 
-        echo $whereSql;
 
         //  作者筛选
         if (!empty($params['author_id'])) {
@@ -118,57 +117,4 @@ class MaterialLogic extends BaseLogic
         ];
     }
 
-    // 生成wheresql
-    public function generateWhereSql($params)
-    {
-        $whereSql = "";
-        // 游戏id
-        if (!empty($params['game_id'])) {
-            if (is_array($params['game_id'])) {
-                $whereSql .= " AND game_id IN(" . implode(',', $params['game_id']) . ")";
-            } else {
-                $whereSql .= " AND game_id = {$params['game_id']}";
-            }
-        }
-        // 媒体id
-        if (!empty($params['media_id'])) {
-            $whereSql .= " AND media_id = {$params['media_id']}";
-        }
-        // 渠道id
-        if (!empty($params['agent_id'])) {
-            $whereSql .= " AND agent_id = {$params['agent_id']}";
-        }
-        // 广告位id
-        if (!empty($params['site_id'])) {
-            if (is_array($params['site_id'])) {
-                $whereSql .= " AND site_id IN(" . implode(',', $params['site_id']) . ")";
-            } else {
-                $whereSql .= " AND site_id = {$params['site_id']}";
-            }
-        }
-        // 负责人
-        if (!empty($params['auth_id'])) {
-            if (is_array($params['auth_id'])) {
-                $whereSql .= " AND auth_id IN(" . implode(',', $params['auth_id']) . ")";
-            } else {
-                $whereSql .= " AND auth_id = {$params['auth_id']}";
-            }
-        }
-        // 注册日期
-        if (!empty($params['reg_date']) && is_array($params['reg_date'])) {
-            $whereSql .= " AND tdate BETWEEN '{$params['reg_date'][0]}' AND '{$params['reg_date'][1]}'";
-        }
-        // 注册日期,不是数组,则认为是单个日期
-        if (!empty($params['reg_date']) && !is_array($params['reg_date'])) {
-            $whereSql .= " AND tdate = '{$params['reg_date']}'";
-        }
-        // 自然量ID, auth_id=0为自然量
-        if(!empty($params['nomal_game_id'])){
-            for($i=0;$i<count($params['nomal_game_id']);$i++){
-                $whereSql .= " OR (game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
-            }
-        }
-
-        return $whereSql;
-    }
 }

+ 62 - 28
app/v1/logic/dataReport/UserLogLogic.php

@@ -44,15 +44,28 @@ class UserLogLogic extends BaseLogic
         if (!empty($params['site_id'])) {
             $regLogQuery = $regLogQuery->where('site_id', $params['site_id']);
         }
+        
         if (!empty($params['agent_id'])) {
             $regLogQuery = $regLogQuery->where('agent_id', $params['agent_id']);
         }
+        if (!empty($params['auth_id'])){
+            $regLogQuery = $regLogQuery->where('auth_id', 'in', is_array($params['auth_id']) ? implode(',', $params['auth_id']) : $params['auth_id']);
+        }
         if (!empty($params['vt'])) {
             $regLogQuery = $regLogQuery->where('vt', $params['vt']);
         }
 
-        // 执行查询并排序
-        // $data = $regLogQuery->order($orderBy, $orderType)->select()->toArray();
+        // 自然量ID, auth_id=0为自然量
+        $whereRaw = [];
+        if(!empty($params['nomal_game_id'])){
+            for($i=0;$i<count($params['nomal_game_id']);$i++){
+                $whereRaw[] = "(game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
+            }
+        }
+        $whereRaw = implode(' OR ', $whereRaw);
+        $regLogQuery = $regLogQuery->whereRaw($whereRaw);
+
+        echo $regLogQuery->buildSql();
 
         // 分页
         $data = $regLogQuery->paginate($limit)->toArray();
@@ -91,7 +104,7 @@ class UserLogLogic extends BaseLogic
             $loginLogQuery = $loginLogQuery->where('site_id', $params['site_id']);
         }
         if (!empty($params['auth_id'])) {
-            $loginLogQuery = $loginLogQuery->where('auth_id', $params['auth_id']);
+            $loginLogQuery = $loginLogQuery->where('auth_id', 'in', is_array($params['auth_id']) ? implode(',', $params['auth_id']) : $params['auth_id']);
         }
         if (!empty($params['agent_id'])) {
             $loginLogQuery = $loginLogQuery->where('agent_id', $params['agent_id']);
@@ -107,9 +120,21 @@ class UserLogLogic extends BaseLogic
                 ->where('login_time', '<=', strtotime($params['login_time'] . ' 23:59:59'));
         }
 
+        // 自然量ID, auth_id=0为自然量
+        $whereRaw = [];
+        if(!empty($params['nomal_game_id'])){
+            for($i=0;$i<count($params['nomal_game_id']);$i++){
+                $whereRaw[] = "(game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
+            }
+        }
+        $whereRaw = implode(' OR ', $whereRaw);
+        $loginLogQuery = $loginLogQuery->whereRaw($whereRaw);
+
         // 执行查询并排序
         $loginLogQuery->order($orderBy, $orderType);
 
+
+
         $data = $loginLogQuery->paginate($limit)->toArray();
         return $data;
     }
@@ -187,7 +212,7 @@ class UserLogLogic extends BaseLogic
             $rechargeDetailQuery = $rechargeDetailQuery->where('media_id', $params['media_id']);
         }
         if (!empty($params['auth_id'])) {
-            $rechargeDetailQuery = $rechargeDetailQuery->where('auth_id', $params['auth_id']);
+            $rechargeDetailQuery = $rechargeDetailQuery->where('auth_id', 'in', is_array($params['auth_id']) ? implode(',', $params['auth_id']) : $params['auth_id']);
         }
         if (!empty($params['agent_id'])) {
             $rechargeDetailQuery = $rechargeDetailQuery->where('agent_id', $params['agent_id']);
@@ -206,6 +231,15 @@ class UserLogLogic extends BaseLogic
                 ->where('reg_date', '>=', $params['reg_date'][0] . ' 00:00:00')
                 ->where('reg_date', '<=', $params['reg_date'][1] . ' 23:59:59');
         }
+        // 自然量ID, auth_id=0为自然量
+        $whereRaw = [];
+        if(!empty($params['nomal_game_id'])){
+            for($i=0;$i<count($params['nomal_game_id']);$i++){
+                $whereRaw[] = "(game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
+            }
+        }
+        $whereRaw = implode(' OR ', $whereRaw);
+        $rechargeDetailQuery = $rechargeDetailQuery->whereRaw($whereRaw);
 
         $rechargeDetailQuery->order($orderBy, $orderType);
 
@@ -219,7 +253,6 @@ class UserLogLogic extends BaseLogic
     }
 
     // 充值排行
-
     public function getRechargeRankList($where): mixed
     {
         $orderBy = request()->input('orderBy', 'searchTotalMoney');
@@ -246,7 +279,7 @@ class UserLogLogic extends BaseLogic
             $rechargeRankQuery = $rechargeRankQuery->where('media_id', $params['media_id']);
         }
         if (!empty($params['auth_id'])) {
-            $rechargeRankQuery = $rechargeRankQuery->where('auth_id', $params['auth_id']);
+            $rechargeRankQuery = $rechargeRankQuery->where('auth_id', 'in', is_array($params['auth_id']) ? implode(',', $params['auth_id']) : $params['auth_id']);
         }
         if (!empty($params['agent_id'])) {
             $rechargeRankQuery = $rechargeRankQuery->where('agent_id', $params['agent_id']);
@@ -265,6 +298,15 @@ class UserLogLogic extends BaseLogic
                 ->where('reg_date', '>=', $params['reg_date'][0] . ' 00:00:00')
                 ->where('reg_date', '<=', $params['reg_date'][1] . ' 23:59:59');
         }
+        // 自然量ID, auth_id=0为自然量
+        $whereRaw = [];
+        if(!empty($params['nomal_game_id'])){
+            for($i=0;$i<count($params['nomal_game_id']);$i++){
+                $whereRaw[] = "(game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
+            }
+        }
+        $whereRaw = implode(' OR ', $whereRaw);
+        $rechargeRankQuery = $rechargeRankQuery->whereRaw($whereRaw);
 
         // 先选择字段,包括计算字段
         $rechargeRankQuery->field('user_name,sum(money) as searchTotalMoney,
@@ -344,9 +386,20 @@ class UserLogLogic extends BaseLogic
         if (!empty($where['reg_date'])) {
             $totalWhere['reg_date'] = $params['reg_date'];
         }
+        // 自然量ID, auth_id=0为自然量
+        $whereRaw = [];
+        if(!empty($params['nomal_game_id'])){
+            for($i=0;$i<count($params['nomal_game_id']);$i++){
+                $whereRaw[] = "(game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
+            }
+        }
+        $whereRaw = implode(' OR ', $whereRaw);
+     
+
 
         $totalList = Db::connect('db_game_log')->table('sdk_order_success')
             ->where($totalWhere)
+            ->whereRaw($whereRaw)
             ->field('game_id,uid,sum(money) as totalMoney')
             ->group('uid,game_id,site_id,server_id,media_id,auth_id,agent_id,server_id,auth_id,role_id')
             ->select()->toArray();
@@ -372,7 +425,6 @@ class UserLogLogic extends BaseLogic
 
     // 角色数据
 
-
     public function getRoleDataList($where): mixed
     {
         $orderBy = request()->input('orderBy', 'reg_time');
@@ -389,31 +441,12 @@ class UserLogLogic extends BaseLogic
 
         $userData = Db::connect('db_game_log')->table($egTableName)->where('reg_time', '>=', strtotime($regTime . ' 00:00:00'))->where('reg_time', '<=', strtotime($regTime . ' 23:59:59'))->select()->toArray();
 
-        $where_sql = "";
-        if (!empty($params['game_id'])) {
-            $where_sql .= is_array($params['game_id']) ? " AND game_id in (" . implode(',', $params['game_id']) . ")" : " AND game_id = {$params['game_id']}";
-        }
-
-        if (!empty($params['media_id'])) {
-            $where_sql .= " AND media_id = {$params['media_id']}";
-        }
-
-        if (!empty($params['site_id'])) {
-            $where_sql .= " AND site_id = {$params['site_id']}";
-        }
-
-        if (!empty($params['auth_id'])) {
-            $where_sql .= " AND auth_id = {$params['auth_id']}";
-        }
-
-        if (!empty($params['user_name'])) {
-            $where_sql .= " AND user_name = {$params['user_name']}";
-        }
+        $where_sql = $this->generateWhereSql($params);
+        
 
 
         $uids = array_column($userData, 'uid');
 
-
         if (empty($userData)) {
             return [];
         }
@@ -421,6 +454,7 @@ class UserLogLogic extends BaseLogic
         $where_sql = " AND uid in (" . implode(',', $uids) . ") {$where_sql}";
 
 
+      
         $sql_parts = [];
         $sql_parts[] = "SELECT * FROM role_data_and WHERE 1=1 {$where_sql}";
         $sql_parts[] = "SELECT * FROM role_data_ios WHERE 1=1 {$where_sql}";

+ 57 - 6
plugin/saiadmin/basic/BaseLogic.php

@@ -279,12 +279,6 @@ class BaseLogic
             return $query->select()->toArray();
         }
 
-
-
-
-
-        
-
         return $query->paginate($limit, false, ['page' => $page])->toArray();
     }
 
@@ -450,4 +444,61 @@ class BaseLogic
         // TODO: Implement __call() method.
         return call_user_func_array([$this->model, $name], $arguments);
     }
+
+    // 渠道分析、运营分析生成的whereSql
+    public function generateWhereSql($params): string
+    {
+        $whereSql = "";
+        // 游戏id
+        if (!empty($params['game_id'])) {
+            if (is_array($params['game_id'])) {
+                $whereSql .= " AND game_id IN(" . implode(',', $params['game_id']) . ")";
+            } else {
+                $whereSql .= " AND game_id = {$params['game_id']}";
+            }
+        }
+        // 媒体id
+        if (!empty($params['media_id'])) {
+            $whereSql .= " AND media_id = {$params['media_id']}";
+        }
+        // 渠道id
+        if (!empty($params['agent_id'])) {
+            $whereSql .= " AND agent_id = {$params['agent_id']}";
+        }
+        // 广告位id
+        if (!empty($params['site_id'])) {
+            if (is_array($params['site_id'])) {
+                $whereSql .= " AND site_id IN(" . implode(',', $params['site_id']) . ")";
+            } else {
+                $whereSql .= " AND site_id = {$params['site_id']}";
+            }
+        }
+        // 负责人
+        if (!empty($params['auth_id'])) {
+            if (is_array($params['auth_id'])) {
+                $whereSql .= " AND auth_id IN(" . implode(',', $params['auth_id']) . ")";
+            } else {
+                $whereSql .= " AND auth_id = {$params['auth_id']}";
+            }
+        }
+        // 注册日期
+        if (!empty($params['reg_date']) ?? null) {
+            $whereSql .= " AND tdate BETWEEN '{$params['reg_date'][0]}' AND '{$params['reg_date'][1]}'";
+        }
+
+        // 自然量ID, auth_id=0为自然量
+        if(!empty($params['nomal_game_id'])){
+            for($i=0;$i<count($params['nomal_game_id']);$i++){
+                $whereSql .= " OR (game_id = {$params['nomal_game_id'][$i]} AND auth_id=0)";
+            }
+        }
+
+        // 用户名
+        if (!empty($params['user_name'])) {
+            $whereSql .= " AND user_name = {$params['user_name']}";
+        }
+
+        return $whereSql;
+    }
+
 }