hxp
2024-11-19 523ce21ab9de9aaf79a7870e404d0a4682905a85
10284 【后台】 优化导出报表逻辑;
2个文件已修改
39 ■■■■ 已修改文件
serverrep/ImportAccountLoginpay.php 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverrep/report.php 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverrep/ImportAccountLoginpay.php
@@ -26,7 +26,7 @@
    $DailyReportOK = \DBOper\Remove("DailyReport", array("Channel" => $Channel));
    $AccountFirstLoginReportOK = \DBOper\Remove("AccountFirstLoginReport", array("Channel" => $Channel));
    $AccountFirstPayReportOK = \DBOper\Remove("AccountFirstPayReport", array("Channel" => $Channel));
    $eventYMDOK = \DBOper\Remove("ServerEvent", array("Key" => "AccountFirstKeepReportYMD"));
    $eventYMDOK = \DBOper\Remove("ServerEvent", array("Key" => "FirstKeepReportYMD_" . $Channel));
    logweb("AccountFirstLoginOK:" . $AccountFirstLoginOK);
    logweb("AccountFirstPayOK:" . $AccountFirstPayOK);
    logweb("AccountDayActiveOK:" . $AccountDayActiveOK);
serverrep/report.php
@@ -31,20 +31,20 @@
    }
    $StartYMDTime = 0; // 需要导出的起始日期时间戳
    if (isset($retInfo)) {
        // \Logging\LogInfo("DailyReport retInfo:" . print_r($retInfo, true));
        $lastActiveYMD = $retInfo["YMD"]; // 最后一次导出的报表日期
        $StartYMDTime = strtotime("+1 day", strtotime($lastActiveYMD)); // 从+1天开始导出
        $lastYMD = $retInfo["YMD"]; // 最后一次导出的报表日期
        $StartYMDTime = strtotime("+1 day", strtotime($lastYMD)); // 从+1天开始导出
        \Logging\LogInfo("ExportDailyReport Channel:" . $Channel . " lastYMD:" . $lastYMD . " StartYMDTime:" . date("Y-m-d", $StartYMDTime));
    } else {
        // 取出最早的首登日期
        if (!\DBOper\FindOneSort("AccountFirstLogin", array("Channel" => $Channel), $retInfo, array("CreateYMD" => 1), array("CreateYMD" => 1))) {
            return;
        }
        if (!isset($retInfo)) {
            // \Logging\LogInfo("AccountFirstLogin 还没有数据,不用导出! Channel:" . $Channel);
            \Logging\LogInfo("ExportDailyReport AccountFirstLogin 还没有数据,不用导出! Channel:" . $Channel);
            return;
        }
        // \Logging\LogInfo("AccountFirstLogin retInfo:" . print_r($retInfo, true));
        $StartYMDTime = strtotime($retInfo["CreateYMD"]);
        \Logging\LogInfo("ExportDailyReport Channel:" . $Channel . " AccountFirstLogin StartYMDTime:" . date("Y-m-d", $StartYMDTime));
    }
    if (!$StartYMDTime) {
        return;
@@ -52,7 +52,7 @@
    $EndYMDTime = strtotime("-1 day", strtotime(date("Y-m-d"))); // 只导出到昨天
    $diffSeconds = $EndYMDTime - $StartYMDTime;
    $diffDays = floor($diffSeconds / (3600 * 24));
    $diffDays = floor($diffSeconds / (3600 * 24)) + 1;
    if ($diffDays <= 0) {
        \Logging\LogInfo("【 " . $Channel . " 】不需要导出每日报表! StartYMDTime:" . date("Y-m-d", $StartYMDTime));
        return;
@@ -153,7 +153,8 @@
/**检查并导出首登/首充留存每日报表 */
function CheckAndExportFirstKeepReport($Channel)
{
    if (!\DBOper\FindOne("ServerEvent", array("Key" => "AccountFirstKeepReportYMD"), $ret, null, false)) {
    $eventKey = "FirstKeepReportYMD_" . $Channel;
    if (!\DBOper\FindOne("ServerEvent", array("Key" => $eventKey), $ret, null, false)) {
        return;
    }
    $reportYMD = $ret["Value"] ? $ret["Value"] : ""; // 最后一次成功导出报表日期
@@ -161,15 +162,18 @@
    $StartYMDTime = 0; // 需要导出的起始日期时间戳
    if ($reportYMD) {
        $StartYMDTime = strtotime("+1 day", strtotime($reportYMD)); // 从+1天开始导出
        \Logging\LogInfo("ExportFirstKeepReport Channel:" . $Channel . " reportYMD:" . $reportYMD . " StartYMDTime:" . date("Y-m-d", $StartYMDTime));
    } else {
        // 取出最早的首登日期
        if (!\DBOper\FindOneSort("AccountFirstLogin", array("Channel" => $Channel), $retInfo, array("CreateYMD" => 1), array("CreateYMD" => 1))) {
            return;
        }
        if (!isset($retInfo)) {
            \Logging\LogInfo("ExportFirstKeepReport AccountFirstLogin 还没有数据,不用导出! Channel:" . $Channel);
            return;
        }
        $StartYMDTime = strtotime($retInfo["CreateYMD"]);
        \Logging\LogInfo("ExportFirstKeepReport Channel:" . $Channel . " AccountFirstLogin StartYMDTime:" . date("Y-m-d", $StartYMDTime));
    }
    if (!$StartYMDTime) {
        return;
@@ -178,7 +182,7 @@
    $StartYMD = date("Y-m-d", $StartYMDTime);
    $EndYMDTime = strtotime("-1 day", strtotime(date("Y-m-d"))); // 只导出到昨天
    $diffSeconds = $EndYMDTime - $StartYMDTime;
    $diffDays = floor($diffSeconds / (3600 * 24));
    $diffDays = floor($diffSeconds / (3600 * 24)) + 1;
    if ($diffDays <= 0) {
        \Logging\LogInfo("【 " . $Channel . " 】不需要导出首登每日报表! StartYMD:" . $StartYMD);
        return;
@@ -248,7 +252,7 @@
    }
    // 全部处理完毕才更新
    \DBOper\Update("ServerEvent", array("Key" => "AccountFirstKeepReportYMD"), array("Value" => $EndYMD), false, true);
    \DBOper\Update("ServerEvent", array("Key" => $eventKey), array("Value" => $EndYMD), false, true);
    \Logging\LogInfo("==============================================");
}
@@ -783,3 +787,18 @@
    ksort($fistPayReportArray);
    return;
}
// function test()
// {
//     echo "run test" . "<br/>";
//     \Logging\CreateLogging("test.report.php");
//     $AllChannel = \CommFunc\GetAllChannel();
//     for ($i = 0; $i < count($AllChannel); $i++) {
//         $Channel = $AllChannel[$i];
//         echo "run Channel" . $Channel . "<br/>";
//         CheckAndExportDailyReport($Channel);
//         CheckAndExportFirstKeepReport($Channel);
//     }
//     echo "run test end" . "<br/>";
// }
// test();