source: temp/trunk/html/admin/batch/daily.php @ 2861

Revision 2861, 6.8 KB checked in by naka, 20 years ago (diff)

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1<?php
2
3$daily_php_dir = realpath(dirname( __FILE__));
4require_once($daily_php_dir . "/../require.php");
5
6$term = 0;
7$start = 1; // ½¸·×´ü´Ö¤Ï¡¢$start¢·$term¤Î´Ö¤È¤Ê¤ë¡£Ä̾ïÁ°Æüʬ¤«¤é¡£
8$command = false;
9
10// ½¸·×Âоݴü´Ö¤Î¼èÆÀ¡Ê»ØÄêÆüʬ¤µ¤«¤Î¤Ü¤ë)
11if (sfIsInt($argv[1]) && $argv[1] <= 365) {
12    $term = $argv[1];
13    $command = true;
14}
15
16// ½¸·×³«»ÏÆü
17if (sfIsInt($argv[2]) && $argv[2] <= 365) {
18    $start = $argv[2];
19    $command = true;
20}
21
22if($term > 0) {
23    // ½¸·×¤Î³«»Ï
24    lfStartDailyTotal($term, $start, $command);
25}
26
27// ½¸·×¤Î³«»Ï
28function lfStartDailyTotal($term, $start, $command = false) {
29   
30    print("term:" . $term);
31   
32    $now_time = time();
33   
34    // ¥°¥é¥Õ²èÁü¤Îºï½ü
35    $path = GRAPH_DIR . "*.png";
36    system ("rm -rf $path");
37   
38    // ºï½ü¤µ¤ì¤¿¼õÃí¥Ç¡¼¥¿¤Î¼õÃí¾ÜºÙ¾ðÊó¤Îºï½ü
39    $objQuery = new SC_Query();
40    $where = "order_id IN (SELECT order_id FROM dtb_order WHERE delete = 1)";
41    $objQuery->delete("dtb_order_detail", $where);
42   
43    // ºÇ¸å¤Î¥Ð¥Ã¥Á¼Â¹Ô¤«¤éLOAD_BATCH_PASSÉ÷вᤷ¤Æ¤¤¤Ê¤¤¤È¼Â¹Ô¤·¤Ê¤¤¡£
44    $batch_pass = date("Y/m/d H:m:s", $now_time - LOAD_BATCH_PASS);
45   
46    $objQuery = new SC_Query();
47    $arrRet = $objQuery->select("create_date", "dtb_bat_order_daily", "create_date > ?", array($batch_pass));
48    if(count($arrRet) > 0) {
49        gfPrintLog("LAST BATCH " . $arrRet[0]['create_date'] . " -> EXIT BATCH $batch_date");
50        return;
51    }
52       
53    // ½¸·×
54    for ($i = $start; $i < $term; $i++) {
55        // ´ðËÜ»þ´Ö¤«¤é$iÆüʬ¤µ¤«¤Î¤Ü¤ë
56        $tmp_time = $now_time - ($i * 24 * 3600);
57               
58        $batch_date = date("Y/m/d", $tmp_time);
59        gfPrintLog("LOADING BATCH $batch_date");
60                   
61        lfBatOrderDaily($tmp_time);
62        lfBatOrderDailyHour($tmp_time);
63        lfBatOrderAge($tmp_time);
64    }
65}
66
67// ¥Ð¥Ã¥Á½¸·×ÍѤÎSQLʸ¤ò¼èÆÀ¤¹¤ë¡£
68function lfGetOrderDailySQL() {
69    $sql = "SELECT ";
70    $sql.= "COUNT(*) AS total_order, ";
71    $sql.= "SUM((SELECT COUNT(*) WHERE customer_id = 0)) AS nonmember, ";
72    $sql.= "SUM((SELECT COUNT(*) WHERE customer_id <> 0 GROUP BY customer_id)) AS member, ";
73    $sql.= "SUM((SELECT COUNT(*) WHERE order_sex = 1)) AS men, ";
74    $sql.= "SUM((SELECT COUNT(*) WHERE order_sex = 2)) AS women, ";
75    $sql.= "SUM((SELECT COUNT(*) WHERE order_sex = 1 AND customer_id <> 0)) AS men_member, ";
76    $sql.= "SUM((SELECT COUNT(*) WHERE order_sex = 1 AND customer_id = 0)) AS men_nonmember, ";
77    $sql.= "SUM((SELECT COUNT(*) WHERE order_sex = 2 AND customer_id <> 0)) AS women_member, ";
78    $sql.= "SUM((SELECT COUNT(*) WHERE order_sex = 2 AND customer_id = 0)) AS women_nonmember, ";
79    $sql.= "SUM(total) AS total, ";
80    $sql.= "int4(AVG(total)) AS total_average ";
81    $sql.= "FROM dtb_order AS T1 LEFT JOIN dtb_customer AS T2 USING ( customer_id ) ";
82    $sql.= "WHERE T1.delete = 0 AND T1.create_date BETWEEN ? AND ?";        // ¼õÃíºîÀ®Æü¤Ç¸¡º÷¤¹¤ë
83    return $sql;
84}
85
86// Çä¾å¤²½¸·×¥Ð¥Ã¥Á½èÍý(ÆüÊÌ)
87function lfBatOrderDaily($time) {
88    global $arrWDAY;
89   
90    $sql = lfGetOrderDailySQL();
91   
92    // ½¸·×ÂÐ¾ÝÆü¤ò¼èÆÀ¤¹¤ë
93    $date = date("Y-m-d", $time);
94   
95    $start = $date . " 00:00:00";
96    $end = $date . " 23:59:59";
97   
98    $objQuery = new SC_Query();
99    $arrRet = $objQuery->getall($sql, array($start, $end));
100       
101    $sqlval = $arrRet[0];
102   
103    // ¶õʸ»ú¤ò"0"¤ËÊÑ´¹
104    foreach($sqlval as $key => $val) {
105        if ($val == "") {
106            $sqlval[$key] = "0";
107        }
108    }
109   
110    $sqlval['order_date'] = $start;
111    $sqlval['year'] = date("Y", $time);
112    $sqlval['month'] = date("m", $time);
113    $sqlval['day'] = date("d", $time);
114    $sqlval['wday'] = date("w", $time);
115    $sqlval['key_day'] = sprintf("%02d/%02d/%02d", substr($sqlval['year'],2), $sqlval['month'], $sqlval['day']);
116    $sqlval['key_month'] = sprintf("%02d/%02d", substr($sqlval['year'],2), $sqlval['month']);
117    $sqlval['key_year'] = sprintf("%d", $sqlval['year']);
118    $sqlval['key_wday'] = sprintf("%s", $arrWDAY[$sqlval['wday']]);
119   
120    $objQuery->delete("dtb_bat_order_daily", "order_date = ?", array($start));
121    $objQuery->insert("dtb_bat_order_daily", $sqlval);
122}
123
124// Çä¾å¤²½¸·×¥Ð¥Ã¥Á½èÍý(»þ´ÖÊÌ)
125function lfBatOrderDailyHour($time) {
126   
127    $sql = lfGetOrderDailySQL();
128   
129    // ½¸·×ÂÐ¾ÝÆü¤ò¼èÆÀ¤¹¤ë
130    $date = date("Y-m-d", $time);
131    $objQuery = new SC_Query();
132   
133    $start = $date . " 00:00:00";
134    $objQuery->delete("dtb_bat_order_daily_hour", "order_date = ?", array($start));
135   
136    // 1»þ´ÖËè¤Ë½¸·×¤¹¤ë¡£
137    for($i = 0; $i < 24; $i++) {
138        $sdate = sprintf("%s %02d:00:00", $date, $i);
139        $edate = sprintf("%s %02d:59:59", $date, $i);
140        $arrRet = $objQuery->getall($sql, array($sdate, $edate));
141        $sqlval = $arrRet[0];
142        // ¶õʸ»ú¤ò"0"¤ËÊÑ´¹
143        foreach($sqlval as $key => $val) {
144            if ($val == "") {
145                $sqlval[$key] = "0";
146            }
147        }
148        $sqlval['order_date'] = $start;
149        $sqlval['hour'] = "$i";
150        $objQuery->insert("dtb_bat_order_daily_hour", $sqlval);
151    }   
152}
153
154// Çä¾å¤²½¸·×¥Ð¥Ã¥Á½èÍý(ǯÎðÊÌ)
155function lfBatOrderAge($time) {
156   
157    $age_loop = intval(BAT_ORDER_AGE / 10);
158   
159    // ǯÎð¤ÎÈϰϤò»ØÄꤷ¤Æ¥Ç¡¼¥¿Ãê½Ð
160    $sql.= "SELECT COUNT(*) AS order_count, SUM(total) AS total, int4(AVG(total)) AS total_average ";
161    $sql.= "FROM dtb_order ";
162   
163    // ½¸·×ÂÐ¾ÝÆü¤ò¼èÆÀ¤¹¤ë
164    $date = date("Y-m-d", $time);
165   
166    $start = $date . " 00:00:00";
167    $end = $date . " 23:59:59";
168   
169    $objQuery = new SC_Query();
170    $objQuery->delete("dtb_bat_order_daily_age", "order_date = ?", array($start));
171   
172    /* ²ñ°÷½¸·× */
173   
174    $base_where = "WHERE (create_date BETWEEN ? AND ?) AND customer_id <> 0 AND delete = 0 ";
175    $where = $base_where . " AND (to_number(to_char(age(current_timestamp, order_birth), 'YYY'), 999) BETWEEN ? AND ?) ";
176   
177    // ǯÎðËè¤Ë½¸·×¤¹¤ë¡£
178    for($i = 0; $i <= $age_loop; $i++) {
179        $start_age = $i * 10;
180        $end_age = $start_age + 9;
181        if($i >= $age_loop) {
182            $end_age = 999;
183        }
184        lfBatOrderAgeSub($sql . $where, $start, $end, $start_age, $end_age, 1);
185    }
186   
187    // ÃÂÀ¸ÆüÆþÎϤʤ·
188    $where = $base_where . " AND order_birth IS NULL ";
189    lfBatOrderAgeSub($sql . $where, $start, $end, NULL, NULL, 1);
190   
191    /* Èó²ñ°÷½¸·× */
192   
193    $base_where = "WHERE (create_date BETWEEN ? AND ?) AND customer_id = 0 AND delete = 0";
194    $where = $base_where . " AND (to_number(to_char(age(current_timestamp, order_birth), 'YYY'), 999) BETWEEN ? AND ?) ";
195   
196    // ǯÎðËè¤Ë½¸·×¤¹¤ë¡£
197    for($i = 0; $i <= $age_loop; $i++) {
198        $start_age = $i * 10;
199        $end_age = $start_age + 9;
200        if($i >= $age_loop) {
201            $end_age = 999;
202        }
203        lfBatOrderAgeSub($sql . $where, $start, $end, $start_age, $end_age, 0);
204    }
205   
206    // ÃÂÀ¸ÆüÆþÎϤʤ·
207    $where = $base_where . " AND order_birth IS NULL AND delete = 0";
208    lfBatOrderAgeSub($sql . $where, $start, $end, NULL, NULL, 0);   
209}
210
211// Çä¾å¤²½¸·×¥Ð¥Ã¥Á½èÍý(ǯÎðÊÌ) ÅÐÏ¿Éôʬ
212function lfBatOrderAgeSub($sql, $start, $end, $start_age, $end_age, $member) {
213    $objQuery = new SC_Query();
214   
215    if($start_age != NULL || $end_age != NULL) {
216        $arrRet = $objQuery->getall($sql, array($start, $end, $start_age, $end_age));
217    } else {
218        $arrRet = $objQuery->getall($sql, array($start, $end));
219    }
220    $sqlval = $arrRet[0];
221   
222    // ¶õʸ»ú¤ò"0"¤ËÊÑ´¹
223    foreach($sqlval as $key => $val) {
224        if ($val == "") {
225            $sqlval[$key] = "0";
226        }
227    }
228       
229    $sqlval['order_date'] = $start;
230    $sqlval['start_age'] = "$start_age";
231    $sqlval['end_age'] = "$end_age";
232    $sqlval['member'] = "$member";
233
234    $objQuery->insert("dtb_bat_order_daily_age", $sqlval);
235}
236
237?>
Note: See TracBrowser for help on using the repository browser.