hxp
2024-12-12 55c8f9423a33025b5ca04a641575bb9a75295618
10162 后台优化(全服ltv显示优化:支持显示与首日比值)
1个文件已修改
66 ■■■■■ 已修改文件
serverrep/ltv.php 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
serverrep/ltv.php
@@ -16,23 +16,26 @@
}
$perdayltv = $_POST["perdayltv"];
$nomulti = $_POST["nomulti"];
$startDate = array_key_exists("startDate", $_POST) ? $_POST["startDate"] : date("Y-m-d", strtotime("-7 days"));
$endDate = array_key_exists("endDate", $_POST) ? $_POST["endDate"] : date("Y-m-d");
$dayList = json_decode($_POST["dayList"], true);
$dayTotalList = json_decode($_POST["dayTotalList"], true);
if (!isset($dayList)) {
    $dayList = array(1, 2, 3, 4, 5, 6, 7);
    $dayList = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
}
if (!isset($dayTotalList)) {
    $dayTotalList = array(7, 14, 15, 21, 30);
    $dayTotalList = array();
}
if (!in_array(1, $dayList)) {
    array_push($dayList, 1);
}
$maxDay = max(max($dayList), max($dayTotalList));
sort($dayList);
sort($dayTotalList);
$maxDay = max($dayList);
if (count($dayTotalList) > 0) {
    $maxDay = max($maxDay, max($dayTotalList));
    sort($dayTotalList);
}
// \Logging\LogInfo("dayList: " . print_r($dayList, true));
// \Logging\LogInfo("dayTotalList: " . print_r($dayTotalList, true));
// \Logging\LogInfo("maxDay:" . $maxDay);
@@ -68,19 +71,20 @@
        <input type="text" name="endDate" id="endDate" onclick="new Calendar().show(this);" readonly value="<?php echo $endDate; ?>" size="8" />
        <input type="submit" value="<?php echo \Lang\gettext("查询"); ?>" />
        <p />
        LTV天当日: <input type="text" name="dayList" id="dayList" value="<?php echo json_encode($dayList) ?>" size="50" />
        <input type="checkbox" name="perdayltv" id="perdayltv" <?php echo $perdayltv ? "checked" : ""  ?> />单独统计每日ltv
        <p />
        LTV天汇总: <input type="text" name="dayTotalList" id="dayTotalList" value="<?php echo json_encode($dayTotalList) ?>" size="50" />
        LTV天: <input type="text" name="dayList" id="dayList" value="<?php echo json_encode($dayList) ?>" size="50" />
        <input type="checkbox" name="perdayltv" id="perdayltv" <?php echo $perdayltv ? "checked" : ""  ?> />不累加每日ltv
        <input type="checkbox" name="nomulti" id="nomulti" <?php echo $nomulti ? "checked" : ""  ?> />不显示与首日ltv比值
        <!-- <p /> -->
        <!-- LTV天汇总: <input type="text" name="dayTotalList" id="dayTotalList" value="<?php echo json_encode($dayTotalList) ?>" size="50" /> -->
        <hr />
        <table width="100%">
            <?php
            echo "<caption>【LTV】</caption>";
            echo "<thead><tr>";
            echo "<th align='center' width='70'>首登日期</th>";
            echo "<th align='center' width='70'>首登人数</th>";
            echo "<th align='center' width='75'>首登日期</th>";
            echo "<th align='center' width='55'>首登人数</th>";
            foreach ($dayList as $day) {
                $title = "第" . $day . "日LTV";
                $title = $day . "日LTV";
                echo "<th align='center' width='70'>" .  $title . "</th>";
            }
            foreach ($dayTotalList as $day) {
@@ -101,7 +105,8 @@
                $firstYMDTime = strtotime($firstYMD);
                $firstCount = 0;
                // 当日ltv
                $dayLTV = 0;
                $firstLTV = 0;
                $daysPayTotal = 0;
                foreach ($dayList as $day) {
                    $statYMD = date("Y-m-d", strtotime("+" . ($day - 1) . " days", $firstYMDTime));
                    $statInfo = $statYMDInfo[$statYMD] ? $statYMDInfo[$statYMD] : array();
@@ -111,18 +116,28 @@
                    }
                    $payTotal = $statInfo["payTotal"] ? $statInfo["payTotal"] : 0;
                    if ($perdayltv) {
                        $dayLTV = $payTotal;
                    } else {
                        $dayLTV += $payTotal;
                    }
                    if ($dayLTV == 0 || $firstCount == 0 || $statYMD > $curYMD) {
                    $daysPayTotal += $payTotal;
                    if ($firstCount == 0 || $statYMD > $curYMD) {
                        $text = "";
                    } else {
                        $ltv = $dayLTV / $firstCount;
                        if ($perdayltv) {
                            $ltv = $payTotal / $firstCount;
                        } else {
                            $ltv = $daysPayTotal / $firstCount;
                        }
                        $ltv =  $ltv > 0.001 ? round($ltv, 3) : round($ltv, 5);
                        // $text = $ltv . "(" . $dayLTV . ")";
                        $text = $ltv;
                        if ($day == 1) {
                            $firstLTV = $ltv;
                            $text = $ltv;
                        } else {
                            $text = $ltv;
                            if (!$perdayltv && $firstLTV && !$nomulti) {
                                $multi = $ltv / $firstLTV;
                                $text .= "<br/>" . round($multi, 2) . "倍";
                            }
                        }
                    }
                    echo "<td align='center' width='90'>" .  $text . "</td>";
                }
@@ -156,7 +171,12 @@
                // 总LTV(天)
                $ltvTotal = $firstCount == 0 ? 0 : round($paySum / $firstCount, 3);
                echo "<td align='center' width='90'>" .  $ltvTotal . "(" . $ltvDays . ")</td>";
                $totalText = $ltvTotal . "(" . $ltvDays . ")";
                if (!$perdayltv && $firstLTV && !$nomulti) {
                    $multi = $ltvTotal / $firstLTV;
                    $totalText .= "<br/>" . round($multi, 2) . "倍";
                }
                echo "<td align='center' width='90'>" . $totalText . "</td>";
                // 总充值
                echo "<td align='center' width='90'>" . $paySum . "</td>";
                echo "</tr>";