hch
2025-11-06 6eb44269436d3ce2d4181ddb5aadceccb06ef76a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php
include_once "/Common/Logging.php";
include_once "/Account/User.php";
include_once "/language/lang.php";
include_once "/serverrep/report.php";
 
\Logging\CreateLogging("rep.xpaypaycnt.php");
$Permission = \User\Permission::P_REP_XPayPaycnt;
 
$channel = $_SESSION['spid'];
$UserAccount = $_SESSION['UserAccount'];
$user = new \User\User($UserAccount);
if (!$user->HavePermission($Permission)) {
    exit;
}
 
$dayList = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14);
$maxDay = max($dayList);
$startDate = array_key_exists("startDate", $_POST) ? $_POST["startDate"] : date("Y-m-d", strtotime("-7 days"));
$startYMDTime = strtotime($startDate);
$endDate = date("Y-m-d", strtotime("+" . ($maxDay - 1) . " days", $startYMDTime));
 
$OrderInfo = array_key_exists("OrderInfo", $_POST) ? $_POST["OrderInfo"] : "cw.tjb.1";
 
\Logging\LogInfo("FindDate:" . $startDate . " ~ :" . $endDate);
 
!\DBOper\Find(
    "PayOrder",
    array(
        "Channel" => $channel, "State" => 1, "PayTime" => array('$gte' => $startDate . " 00:00:00", '$lte' => $endDate . " 23:59:59"),
    ),
    $payRetArray,
    array("AccountID" => 1, "PayTime" => 1, "OrderInfo" => 1),
    array("PayTime" => 1)
);
 
$xPayAccountInfo = array(); // 首购礼包账号信息 {accountID:首购日期, ...}
$xPayReportArray = array(); // 首购礼包统计信息 {"首购日期":[{accountID:1, ...}, {"statYMD":{再次付费accountID:1, ...}, ...}], ...}
 
foreach ($payRetArray as $payInfo) {
    $AccountID = $payInfo["AccountID"];
    $PayTime = $payInfo["PayTime"];
    $statYMD = substr($PayTime, 0, 10);
    if ($payInfo["OrderInfo"] == $OrderInfo) {
        if (!$xPayAccountInfo[$AccountID]) {
            $xPayAccountInfo[$AccountID] = $statYMD;
        }
    }
    if (!$xPayAccountInfo[$AccountID]) {
        // 没首购过的账号,不统计进来
        continue;
    }
 
    $xPayYMD = $xPayAccountInfo[$AccountID]; // x礼包日期
    if (!$xPayReportArray[$xPayYMD]) {
        $xPayReportArray[$xPayYMD] = array(array(), array());
    }
    $accountInfo = $xPayReportArray[$xPayYMD][0];
    $statYMDInfo = $xPayReportArray[$xPayYMD][1];
 
    if ($payInfo["OrderInfo"] == $OrderInfo) {
        $accountInfo[$AccountID] = 1;
    } else {
        $statAccountInfo = $statYMDInfo[$statYMD];
        $statAccountInfo[$AccountID] = 1;
        $statYMDInfo[$statYMD] = $statAccountInfo;
    }
 
    $xPayReportArray[$xPayYMD] = array($accountInfo, $statYMDInfo);
}
ksort($xPayReportArray);
// \Logging\LogInfo("xPayAccountInfo:" . print_r($xPayAccountInfo, true));
// \Logging\LogInfo("xPayReportArray:" . print_r($xPayReportArray, true));
?>
 
<!DOCTYPE html>
<html>
 
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title><?php echo \Lang\gettext("购买X礼包再付人数"); ?></title>
    <link rel="stylesheet" type="text/css" href="/css/table.css">
    <link rel="gettext" type="application/x-po" href="../language/<?php echo \Lang\getLang(); ?>/LC_MESSAGES/<?php echo \Lang\getjspodomain(); ?>.po" />
</head>
 
<body>
    <center>
        <p><b><?php echo \Lang\gettext("购买X礼包后再次付费人数"); ?></b></P>
    </center>
    <form method="post">
        <?php echo \Lang\gettext("X礼包日期"); ?>:
        <input type="text" name="startDate" id="startDate" onclick="new Calendar().show(this);" readonly value="<?php echo $startDate; ?>" size="8" />
        <p />
        X商品编号:
        <input type="text" name="OrderInfo" id="OrderInfo" value="<?php echo $OrderInfo; ?>" size="8" />
        <input type="submit" value="<?php echo \Lang\gettext("查询"); ?>" />
        <hr />
        <table width="100%">
            <?php
            echo "<caption>【购买X礼包后再次付费人数】</caption>";
            echo "<thead><tr>";
            echo "<th align='center' width='75'>X礼包日期</th>";
            echo "<th align='center' width='55'>首购人数</th>";
            foreach ($dayList as $day) {
                $title = $day . "日人数";
                echo "<th align='center' width='70'>" .  $title . "</th>";
            }
            // echo "<th align='center' width='70'>总付费人数</th>";
            echo "</tr></thead>";
            $curYMD = date("Y-m-d");
            foreach ($xPayReportArray as $xPayYMD => $statInfo) {
                if ($xPayYMD < $startDate) {
                    continue;
                }
                $accountInfo = $statInfo[0];
                $statYMDInfo = $statInfo[1];
                $xPayUserCnt = count($accountInfo);
                echo "<tr class='trc'>";
                echo "<td align='center'>" . $xPayYMD . "</td>";
                echo "<td align='center'>" . $xPayUserCnt . "</td>";
                $xPayYMDTime = strtotime($xPayYMD);
                foreach ($dayList as $day) {
                    $statYMD = date("Y-m-d", strtotime("+" . ($day - 1) . " days", $xPayYMDTime));
                    $statAccountInfo = $statYMDInfo[$statYMD] ? $statYMDInfo[$statYMD] : array();
                    $statCnt = count($statAccountInfo);
 
                    if ($statYMD > $curYMD) {
                        $text = "";
                    } else {
                        $text = $statCnt;
                    }
                    echo "<td align='center' width='90'>" .  $text . "</td>";
                }
                echo "</tr>";
            }
            if (count($xPayReportArray) == 0) {
                echo "<tr class='trc'><td>无数据</td></tr>";
            }
            ?>
        </table>
        <hr />
    </form>
</body>
<script type='text/javascript' src='/language/gettext.js'></script>
<script type='text/javascript' src="/js/calendar.js"></script>
<script type='text/javascript' src="/js/common.js"></script>
<script type="text/javascript">
</script>
 
</html>