PC-202304251453\Administrator 5 ヶ月 前
コミット
6b6f58300d

+ 1 - 1
app/v1/controller/dataReport/MaterialController.php

@@ -24,7 +24,7 @@ class MaterialController extends BaseController
     {
         $where = $request->more([
             ['game_id', ''],
-            ['reg_date', ''],
+            ['tdate', ''],
             ['author_id', ''],
             ['media_id', ''],
             ['cost_type', ''],

+ 20 - 17
app/v1/logic/dataReport/ChannelAnalysisLogic.php

@@ -713,7 +713,8 @@ class ChannelAnalysisLogic extends BaseLogic
         $activeField = "
             sum(active_total) as active, 
             reg_date as tdate";
-        $activeData = $this->generateUnionList('game_active_day', $yearRange, $activeWhereRaw, $activeField, 'reg_date');
+
+        $activeData = $this->generateUnionList('game_active_day', $yearRange, $activeWhereRaw, $activeField, 'tdate');
         $activeData = array_column($activeData, 'active', 'tdate');
 
         // 4. 注册充值统计(累计充值reg_pay_total, 注册总充值(扣除分成)reg_pay_amount、注册累计付费人数(reg_pay_num))
@@ -724,13 +725,13 @@ class ChannelAnalysisLogic extends BaseLogic
             sum(addup_pay_amount) as reg_pay_amount,
             reg_date as tdate";
         $regPayWhereRaw = str_replace('tdate', 'reg_date', $regPayWhereRaw);
-        $regPayData = $this->generateUnionList('game_reg_pay_day', $yearRange, $regPayWhereRaw, $regPayField, 'reg_date');
+        $regPayData = $this->generateUnionList('game_reg_pay_day', $yearRange, $regPayWhereRaw, $regPayField, 'tdate');
 
         $regPayData = array_column($regPayData, null, 'tdate');
 
         // 5. 拼装数据
         // 拼装数据
-        foreach ($baseTotalDayData as $key => &$row)
+        foreach ($baseTotalDayData as &$row)
         {
             $row['active'] = $activeData[$row['tdate']] ?? 0; // 次留数
             $row['cost'] = $costData[$row['tdate']] ?? 0; // 支出
@@ -837,8 +838,9 @@ class ChannelAnalysisLogic extends BaseLogic
 
         // 合计 消耗金额,注册数,注册成本
         foreach ($baseData as $key => $val) {
-            $totalRow['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 0;
-            $totalRow['d0']['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 0;
+            $cost = $costData[$key] ?? 0;
+            $totalRow['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $cost) : $cost;
+            $totalRow['d0']['cost'] = !empty($totalRow['cost']) ? ($totalRow['cost'] + $cost) : $cost;
             $totalRow['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
             $totalRow['d0']['reg_total'] = !empty($totalRow['reg_total']) ? ($totalRow['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
             $totalRow['reg_cost'] = getRound($totalRow['cost'] ?? 0, $totalRow['reg_total'] ?? 0);
@@ -847,7 +849,7 @@ class ChannelAnalysisLogic extends BaseLogic
             for ($i = 1; $i <= $days; $i++) {
                 $daykey = 'd' . $i;
                 $totalRow[$daykey]['reg_total'] = !empty($totalRow[$daykey]['reg_total']) ? ($totalRow[$daykey]['reg_total'] + $val['reg_total'] ?? 0) : $val['reg_total'] ?? 0;
-                $totalRow[$daykey]['cost'] = !empty($totalRow[$daykey]['cost']) ? ($totalRow[$daykey]['cost'] + $costData[$key] ?? 0) : $costData[$key] ?? 0;
+                $totalRow[$daykey]['cost'] = !empty($totalRow[$daykey]['cost']) ? ($totalRow[$daykey]['cost'] + $cost) : $cost;
             }
         }
 
@@ -855,14 +857,15 @@ class ChannelAnalysisLogic extends BaseLogic
         foreach ($regPayData as $row) {
             $regDate = $row['reg_date'];
             $data[$regDate]['tdate'] = $regDate;
-
+            $regTotal = $baseData[$regDate]['reg_total'] ?? 0;
+            $cost = $costData[$regDate] ?? 0;
             // 注册数
-            $data[$regDate]['reg_total'] = $baseData[$regDate]['reg_total'] ?? 0;
+            $data[$regDate]['reg_total'] = $regTotal;
 
             // 注册成本
-            $data[$regDate]['reg_cost'] = getRound($costData[$regDate] ?? 0, $data[$regDate]['reg_total'] ?? 0);
+            $data[$regDate]['reg_cost'] = getRound($cost, $regTotal);
             // 消耗金额
-            $data[$regDate]['cost'] = $costData[$regDate] ?? 0;
+            $data[$regDate]['cost'] = $cost;
 
             // 计算日期相差天数
             $daykey = (strtotime($row['pay_date']) - strtotime($regDate)) / 86400 + 1;
@@ -870,35 +873,35 @@ class ChannelAnalysisLogic extends BaseLogic
 
             switch ($dataType) {
                 case 'recovery':
-                    $data[$regDate][$daykey] = getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
+                    $data[$regDate][$daykey] = getPercent($row['addup_pay_total'], $cost, 1);
                     if ($nowDate === $row['pay_date']) {
-                        $data[$regDate]['d0'] = getPercent($row['addup_pay_total'], $costData[$regDate] ?? 0, 1);
+                        $data[$regDate]['d0'] = getPercent($row['addup_pay_total'], $cost, 1);
                     }
                     break;
 
                 /* 扣除分成/cost , 计算 */
                 case 'remount':
                     // 按天回本率
-                    $data[$regDate][$daykey] = getPercent($row['addup_pay_amount'], $costData[$regDate] ?? 0, 1);
+                    $data[$regDate][$daykey] = getPercent($row['addup_pay_amount'], $cost, 1);
                     // 累计回本率
                     if ($nowDate === $row['pay_date']) {
-                        $data[$regDate]['d0'] = getPercent($row['addup_pay_amount'], $costData[$regDate] ?? 0, 1);
+                        $data[$regDate]['d0'] = getPercent($row['addup_pay_amount'], $cost, 1);
                     }
                     break;
 
                 /*  累计计费付费金额 / 注册数 */
                 case 'ltv':
                     // 按天LTV
-                    $data[$regDate][$daykey] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
+                    $data[$regDate][$daykey] = getRound($row['addup_pay_total'], $regTotal, 1);
                     // 累计LTV
                     if ($nowDate === $row['pay_date']) {
-                        $data[$regDate]['d0'] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
+                        $data[$regDate]['d0'] = getRound($row['addup_pay_total'], $regTotal, 1);
                     }
                     break;
 
                 /* 后面的LTV数据, 按天LTV / 第一天LTV , 目的是为了计算LTV增长率*/
                 case 'ltvbs':
-                    $totalLtv[$daykey] = getRound($row['addup_pay_total'], $baseData[$regDate]['reg_total'] ?? 0, 1);
+                    $totalLtv[$daykey] = getRound($row['addup_pay_total'], $regTotal, 1);
                     $fz = $totalLtv['d1'] ?? 0 != 0 ? $totalLtv['d1'] : 1;
                     $data[$regDate][$daykey] = round($totalLtv[$daykey] / $fz, 2);
                     break;

+ 17 - 17
app/v1/logic/dataReport/MaterialLogic.php

@@ -15,22 +15,6 @@ class MaterialLogic extends BaseLogic
     {
         $params = $this->searchByAuth($params);
 
-        $field = "
-          material_name,
-          material_id,
-          author_id,
-          auth_id,
-          media_id,
-          tdate,
-          SUM(money) as cost,
-          SUM(ad_show) as ad_show,
-          SUM(click) as click,
-          SUM(active) as active,
-          SUM(register) as register,
-          SUM(pay_count) as pay_count,
-          SUM(pay_amount) as pay_amount
-        ";
-
         // 基础筛选
         $whereRaw = $this->getCommonWhereRaw($params);
 
@@ -71,6 +55,22 @@ class MaterialLogic extends BaseLogic
                 break;
         }
 
+        $field = "
+          material_name,
+          material_id,
+          author_id,
+          auth_id,
+          media_id,
+          tdate,
+          SUM(money) as cost,
+          SUM(ad_show) as ad_show,
+          SUM(click) as click,
+          SUM(active) as active,
+          SUM(register) as register,
+          SUM(pay_count) as pay_count,
+          SUM(pay_amount) as pay_amount
+        ";
+
         $data = Db::connect('db_advert')->table("media_cost_material")->field($field)->whereRaw($whereRaw)->group($group)->select();
 
         if(empty($data)){
@@ -101,7 +101,7 @@ class MaterialLogic extends BaseLogic
 
         $totalData['ad_click_rate'] = getPercent($totalData['click']??0, $totalData['ad_show']??0, 2);
         $totalData['reg_cost'] = getRound($totalData['cost']??0, $totalData['register']??0, 2);
-        $totalData['pay_cost'] = getRound($totalData['cost']??0, (int)$totalData['pay_count']??0, 2);
+        $totalData['pay_cost'] = getRound($totalData['cost']??0, $totalData['pay_count']??0, 2);
 
         return [
             'data' => $data,

+ 1 - 0
plugin/saiadmin/basic/BaseLogic.php

@@ -436,6 +436,7 @@ class BaseLogic
     public function generateUnionList($namePrefix, $range, $whereRaw = '', $field = '*', $group = null): array
     {
         $finalSql = $this->generateUnionSql($namePrefix, $range, $whereRaw, $field, $group);
+        // echo $finalSql . "\n";
         return Db::connect('db_data_report')->table($finalSql)->group($group)->select()->toArray();
     }