Browse Source

数据统计后台提交

gwang 5 years ago
parent
commit
8abfb37831

+ 2 - 2
Gameserver/Amfphp/service_call/InquireApi/CheckUpdate.php

@@ -59,12 +59,12 @@ class CheckUpdate {
         $ret = new UpdateRetInfo();                                             # 返回值
 
 
-        $url = self::CDN_Root() . self::Md5_file . $platform . ".json";            # 资源文件MD5列表
+        $url = self::CDN_Root() . self::Md5_file . $platform . ".json";         # 资源文件MD5列表
         $lisJson = HttpUtil::makeRequest($url, array(), array(), array(), "get"); # 取CDN上版本列表
 
         if (isset($lisJson["result"]) && $lisJson["result"]) {
             $fileList = JsonUtil::decode($lisJson["msg"]);
-            $newVer = $fileList->Version;                                           # 取出最新版本号
+            $newVer = $fileList->Version;                                       # 取出最新版本号
 
             $ret->versionInfo = GameConfig::clientVersionHistory_getItem($newVer);
             $ret->newVer = $newVer;

+ 1 - 6
Gameserver/gamesys/app/main.php

@@ -1,10 +1,5 @@
 <?php
-
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
+date_default_timezone_set("PRC");
 
 /**
  * Description of main

+ 37 - 50
Gameserver/gamesys/app/providers/action.php

@@ -1,23 +1,6 @@
 <?php
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-include_once dirname(__FILE__).'/../main.php';
-/**
- * Description of action
- *
- * @author jgao
- */
-
-define("SELECT_BASE", "select `userID`,`roleName`, `plat`,`zoneid`,`ts`,`lastlogin` from tab_rolename where `ts`>='%s 00:00:00' and `ts`<='%s 23:59:59' limit %s,%s");
-define("SELECT_BASE_OLD", "select `userID`,`plat`,`zoneid`,`ts`,`lastlogin` from tab_rolename where `lastlogin`>='%s 00:00:00' and `lastlogin`<='%s 23:59:59' limit %s,%s");
-define("SELECT_BASE_LAST", "select `userID`,`plat`,`zoneid`,`ts`,`lastlogin` from tab_rolename where `lastlogin`>='%s 00:00:00' and `lastlogin`<='%s 23:59:59' and TO_DAYS(`lastlogin`) = TO_DAYS(`ts`) limit %s,%s");
-define("SELECT_BASE_COUNT", "select count(*) from tab_rolename where `ts`>='%s 00:00:00' and `ts`<='%s 23:59:59'");
-define("SELECT_BASE_OLD_COUNT", "select count(*) from tab_rolename where `lastlogin`>='%s 00:00:00' and `lastlogin`<='%s 23:59:59'");
-define("SELECT_BASE_LAST_COUNT", "select count(*) from tab_rolename where `lastlogin`>='%s 00:00:00' and `lastlogin`<='%s 23:59:59' and TO_DAYS(`lastlogin`) = TO_DAYS(`ts`)");
+include_once dirname(__FILE__) . '/../main.php';
 
 $GET = query_paras();
 $date = $GET['date'];
@@ -28,49 +11,53 @@ $islost = $GET['islost'];
 $pageNumber = $GET['pageNumber'];
 $pageSize = $GET['pageSize'];
 
-$plat = "uc"; // 后续改成前端控制参数
-
-
-$start = ($pageNumber-1) * $pageSize;
+$start = ($pageNumber - 1) * $pageSize;
 
 $count = 0;
 $arr = array();
 
-
-
-$db = db();
-if($isnew > 0){
-    // 计算新增人数
-    $sql = sprintf(SELECT_BASE_COUNT, $date, $date1);
-    $count = $db->fetch_row($sql);
-    $count = (int)$count[0][0];
-    $sql = sprintf(SELECT_BASE, $date, $date1,$start,$pageSize);
-    $arr = $db->fetch_array($sql);
-}
-else if($isold > 0){
-    // 计算新增人数
-    $sql = sprintf(SELECT_BASE_OLD_COUNT, $date, $date1);
-    $count = $db->fetch_row($sql);
-    $count = (int)$count[0][0];
-    $sql = sprintf(SELECT_BASE_OLD, $date, $date1,$start,$pageSize);
-    $arr = $db->fetch_array($sql);
+$tabName = 'tab_rolename';
+
+
+if ($isnew > 0) {               // 新增 
+    $count = daoInst()->select('*')->from($tabName)
+            ->where('ts')->ge($date . " 00:00:00")
+            ->andWhere('ts')->le($date1 . " 23:59:59")
+            ->count();
+    $arr = daoInst()->select('*')->from($tabName)
+            ->where('ts')->ge($date . " 00:00:00")
+            ->andWhere('ts')->le($date1 . " 23:59:59")
+            ->limit($start . "," . $pageSize)
+            ->fetch_array();
+} else if ($isold > 0) {           // 留存 
+    $count = daoInst()->select('*')->from($tabName)
+            ->where('lastlogin')->ge($date . " 00:00:00")
+            ->andWhere('lastlogin')->le($date1 . " 23:59:59")
+            ->count();
+    $arr = daoInst()->select('*')->from($tabName)
+            ->where('lastlogin')->ge($date . " 00:00:00")
+            ->andWhere('lastlogin')->le($date1 . " 23:59:59")
+            ->limit($start . "," . $pageSize)
+            ->fetch_array();
+} else if ($islost > 0) {         // 流失 
+    $count = daoInst()->select('*')->from($tabName)
+            ->where('lastlogin')->ge($date . " 00:00:00")
+            ->andWhere('lastlogin')->le($date1 . " 23:59:59")
+            ->andWhere('to_days(from_unixtime(`ts`))')->eq('to_days(from_unixtime(`lastlogin`))')
+            ->count();
+    $arr = daoInst()->select('*')->from($tabName)
+            ->where('lastlogin')->ge($date . " 00:00:00")
+            ->andWhere('lastlogin')->le($date1 . " 23:59:59")
+            ->andWhere('to_days(from_unixtime(`ts`))')->eq('to_days(from_unixtime(`lastlogin`))')
+            ->limit($start . "," . $pageSize)
+            ->fetch_array();
 }
-else if($islost > 0){
-    // 计算新增人数
-    $sql = sprintf(SELECT_BASE_LAST_COUNT, $date, $date1);
-    $count = $db->fetch_row($sql);
-    $count = (int)$count[0][0];
-    $sql = sprintf(SELECT_BASE_LAST, $date, $date1,$start,$pageSize);
-    $arr = $db->fetch_array($sql);
-}
-$db->close();
 
 
 $result = new stdClass();
 $result->total = $count;
 $result->rows = $arr;
 
-
 echo json_encode($result);
 
 

+ 7 - 26
Gameserver/gamesys/app/providers/actionc32.php

@@ -1,37 +1,18 @@
 <?php
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-include_once dirname(__FILE__).'/../main.php';
-/**
- * Description of action
- *
- * @author jgao
- */
-
-define("SELECT_BASE_C32", "select `userID`,`roleName`, `plat`,`zoneid`,`ts`,`lastlogin` from tab_rolename where `roleName`='%s' or `userID`='%s'");
+include_once dirname(__FILE__) . '/../main.php';
 
 $GET = query_paras();
-$name = urldecode($GET['name']);
- 
-$oid = $GET['oid'];
-
-
-$plat = "uc"; // 后续改成前端控制参数
 
+$name = urldecode($GET['name']);
+$uid = $GET['oid'];
 
 
-$db = db();
-
-    // 计算新增人数
-    $sql = sprintf(SELECT_BASE_C32, $name,$oid);
-    $arr = $db->fetch_array($sql);
-
+$arr = daoInst()->select('*')->from('tab_rolename')
+        ->where('roleName')->eq($name)
+        ->orWhere('userID')->eq($uid)
+        ->fetch_array();
 
-$db->close();
 
 $count = count($arr);
 $result = new stdClass();

+ 20 - 28
Gameserver/gamesys/app/providers/actionone.php

@@ -1,27 +1,15 @@
 <?php
 
- 
 include_once dirname(__FILE__) . '/../main.php';
 
-
-define("CHECK_ONE", "SELECT table_name FROM information_schema.TABLES WHERE table_name ='tab_op_log%s' AND `TABLE_SCHEMA`= '%s'");
-define("SELECT_ONE", "select `cmd`,`ts`,`param`,`ret` from tab_op_log%s where `uid`='%s'");
-
-// define("CHECK_ONE_UC", "SELECT table_name FROM information_schema.TABLES WHERE table_name ='tab_sys_%s_%s' AND `TABLE_SCHEMA`= '%s'");
-// define("SELECT_ONE_UC", "select `cmd`,`ts`,`dump`,`prs`,`ret` from tab_sys_%s_%s where `oid`='%s'");
-
 $GET = query_paras();
 
 $date = $GET['date'];
 $date1 = $GET['date1'];
-
-$plat = "uc"; // 后续改成前端控制参数
-$oid = $GET['oid'];
-
+$uid = $GET['oid'];
 
 $ret = array();
 
-$db = db();
 $endDate = strtotime("$date1");
 // 计算新增人数
 for ($i = 0; $i <= 999; $i++) {
@@ -30,23 +18,27 @@ for ($i = 0; $i <= 999; $i++) {
     if ($iday > $endDate) {
         break;
     }
+    $tableName = "tab_op_log" . $day;
 
-    $sql = sprintf(CHECK_ONE, $day, CDB_NAME);
-    $exist = $db->fetch_array($sql);
-
-    if (count($exist) <= 0) {
+    if (!daoInst()->tableExist($tableName)) {
         continue;
     }
-    $sql = sprintf(SELECT_ONE, $day, $oid);
 
-    $arr = $db->fetch_array($sql);
+    $arr = daoInst()->select('*')->from($tableName)
+            ->where('uid')->eq($uid)
+//            ->limit
+            ->fetch_array();
     array_pushs($ret, $arr);
 }
-$db->close();
 
- 
+// <editor-fold defaultstate="collapsed" desc="辅助方法"> 
 
-// <editor-fold defaultstate="collapsed">
+/**
+ * 命令码转中文
+ * @staticvar type $arr
+ * @param type $cmd
+ * @return type
+ */
 function getCmdName($cmd) {
     static $arr;
     if (null == $arr) {
@@ -61,15 +53,15 @@ function getCmdName($cmd) {
 }
 
 /**
- * cmd附加提示信息
+ * 根据cmd添加附加提示信息
  * @param type $info
  */
 function getCmdDes($info) {
-    $cmd = $info['cmd'];
+    $cmd = $info->cmd;
     switch ($cmd) {
         case '6001':
             $str = "";
-            $ret = json_decode($info['ret']);
+            $ret = json_decode($info->ret);
             $str .= "昵称:" . $ret->game->name;
             $str .= "; 分区:" . $ret->zoneid;
             $str .= "; 等级:" . $ret->game->level;
@@ -80,12 +72,12 @@ function getCmdDes($info) {
     return "";
 }
 
-// </editor-fold>
+// </editor-fold> 
 
 $count = count($ret);
 
 for ($i = 0; $i < $count; $i++) {
-    $ret[$i]['name'] = getCmdName($ret[$i]['cmd']);
-    $ret[$i]['des'] = getCmdDes($ret[$i]);
+    $ret[$i]->name = getCmdName($ret[$i]->cmd);
+    $ret[$i]->des = getCmdDes($ret[$i]);
 }
 echo json_encode($ret);

+ 27 - 52
Gameserver/gamesys/app/providers/level.php

@@ -4,68 +4,43 @@
  * 查询玩家等级
  */
 include_once dirname(__FILE__) . '/../main.php';
-/**
- * Description of retention
- * 关卡统计业务逻辑
- * @author jgao
- */
-// define("CHECK_LEVEL", "SELECT table_name FROM information_schema.TABLES WHERE table_name ='tab_sys_%s' AND `TABLE_SCHEMA`= '%s'");
-// define("SELECT_LEVEL", "SELECT tab_sys_%s.dump FROM `tab_sys_%s` left join `tab_rolename` on tab_sys_%s.oid = tab_rolename.uid WHERE tab_sys_%s.cmd='6502' and tab_rolename.insertDatetime>='%s 00:00:00' and tab_rolename.insertDatetime<='%s 23:59:59' and tab_sys_%s.dump like '%%bfst%%'");
-// define("SELECT_GUIDE", "SELECT count(*) FROM `tab_sys_%s` left join `tab_rolename` on tab_sys_%s.oid = tab_rolename.uid WHERE tab_sys_%s.cmd='6012' and tab_rolename.insertDatetime>='%s 00:00:00' and tab_rolename.insertDatetime<='%s 23:59:59'");
 
-define("CHECK_LEVEL_UC", "SELECT table_name FROM information_schema.TABLES WHERE table_name ='tab_sys_%s_%s' AND `TABLE_SCHEMA`= '%s'");
-define("SELECT_LEVEL_UC", "SELECT tab_sys_%s_%s.dump FROM `tab_sys_%s_%s` left join `tab_rolename` on tab_sys_%s_%s.oid = tab_rolename.uid WHERE tab_sys_%s_%s.cmd='6502' and tab_rolename.insertDatetime>='%s 00:00:00' and tab_rolename.insertDatetime<='%s 23:59:59' and tab_sys_%s_%s.dump like '%%bfst%%'");
-define("SELECT_GUIDE_UC", "SELECT count(*) FROM `tab_sys_%s_%s` left join `tab_rolename` on tab_sys_%s_%s.oid = tab_rolename.uid WHERE tab_sys_%s_%s.cmd='6012' and tab_rolename.insertDatetime>='%s 00:00:00' and tab_rolename.insertDatetime<='%s 23:59:59'");
-$date = $_POST['date'];
 
-$plat = is_null($_POST['plat']) ? "uc" : $_POST['plat']; // 后续改成前端控制参数
+$post = query_paras();
+$date = $post['date'];
 
 $array = array();
 $array2 = array();
 
-$db = db();
-
-
-
-// 计算新增人数
-for ($i = 0; $i <= 0; $i++) {
-    $ucday = strtotime("2017-09-28 00:00:00");
-    $iday = strtotime("$date   +$i   day");
-    $day = date("Ymd", $iday);
-    $day_format = date("Y-m-d", $iday); 
-    $sql = sprintf(CHECK_LEVEL_UC, $plat, $day, CDB_NAME);
-    $exist = $db->fetch_array($sql);
- 
-
-    if (count($exist) <= 0) {
-        continue;
-    }
- 
-    $sql = sprintf(SELECT_LEVEL_UC, $plat, $day, $plat, $day, $plat, $day, $plat, $day, $day_format, $day_format, $plat, $day, $plat); 
-
-    $arr = $db->fetch_array($sql);
-
- 
-    $sql = sprintf(SELECT_GUIDE_UC, $plat, $day, $plat, $day, $plat, $day, $day_format, $day_format); 
-    $count = $db->fetch_row($sql);
-    $count = (int) $count[0][0];
+$datas = array();
+$arr = array();
+$count = 0;
+$iday = strtotime($date);
+$day = date("Ymd", $iday);
+$day_format = date("Y-m-d", $iday);
+
+$tabName = "tab_op_log" . $day;
+if (daoInst()->tableExist($tabName)) {
+    $arr = daoInst()->select('param,ret')->from($tabName)
+            ->where('cmd')->eq(6801)
+            ->andWhere('ret')->like('%"isFirst":true%%')
+            ->fetch_array();
+    $count = daoInst()->select('*')->from($tabName)->leftJoin('tab_rolename')
+            ->on("$tabName.uid = tab_rolename.userID")
+            ->where("$tabName.cmd")->eq(6007)
+            ->andWhere("tab_rolename.ts")->ge($day_format . " 00:00:00")
+            ->andWhere("tab_rolename.ts")->le($day_format . " 23:59:59")
+            ->count();
 }
 
-
-$db->close();
-
-$datas = array();
 $datas[] = $count;
-
 foreach ($arr as $value) {
-    $dump = $value['dump'];
-    $dump = json_decode($dump);
-    if ((int) $dump->bfst <= 100) {
-        if (is_integer($datas[(int) $dump->bfst]) == true) {
-            $datas[(int) $dump->bfst]++;
-        } else {
-            $datas[(int) $dump->bfst] = 1;
-        }
+    $params = json_decode($value->param);
+    $gatelvl = (int) $params[0];
+    if (isset($datas[$gatelvl]) && is_integer($datas[$gatelvl]) == true) {
+        $datas[$gatelvl]++;
+    } else {
+        $datas[$gatelvl] = 1;
     }
 }
 

+ 17 - 25
Gameserver/gamesys/app/providers/order.php

@@ -1,39 +1,31 @@
 <?php
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
 include_once dirname(__FILE__) . '/../main.php';
 
+$paras = query_paras();
 
-
-$platform = $_GET["platform"];
-$startTime = $_GET["startTime"];
-$endTime = $_GET["endTime"];
-$pageNumber = $_GET['pageNumber'];
-$pageSize = $_GET['pageSize'];
+$platform = $paras["platform"];
+$startTime = $paras["startTime"];
+$endTime = $paras["endTime"];
+$pageNumber = $paras['pageNumber'];
+$pageSize = $paras['pageSize'];
 
 $start = ($pageNumber - 1) * $pageSize;
 
 
-$db = db();
-$sql = "select * from `tab_order` where 1=1";
-if ($platform != "") {
-    $sql = $sql . " and `plat`='" . $platform . "'";
-}
-if ($startTime != "" && $endTime != "") {
-    $sql = $sql . " and `payTime` >= '" . $startTime . " 00:00:00" . "' and `payTime` <= '" . $endTime . " 00:00:00" . "'";
-}
-$count = count($db->fetch_array($sql));
+$count = daoInst()->select('*')->from('tpl_order_tab')
+        ->where('status')->eq(1)
+        ->andWhere('close_ts')->ge(strtotime($startTime))
+        ->andWhere('close_ts')->lt(strtotime($endTime))
+        ->count();
 
+$list = daoInst()->select('*')->from('tpl_order_tab')
+        ->where('status')->eq(1)
+        ->andWhere('close_ts')->ge(strtotime($startTime))
+        ->andWhere('close_ts')->lt(strtotime($endTime))
+        ->limit($start . "," . $pageSize)
+        ->fetch_array();
 
-$db->close();
-$db = db();
-$sql = $sql . " limit " . $start . "," . $pageSize;
-$list = $db->fetch_array($sql);
-$db->close();
 $array = new stdClass();
 $array->total = $count;
 $array->rows = $list;

+ 22 - 22
Gameserver/gamesys/app/providers/orderChart.php

@@ -1,47 +1,47 @@
 <?php
 
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
 include_once dirname(__FILE__) . '/../main.php';
 
-$platform = $_POST["platform"];
-$startTime = $_POST["startTime"];
-$endTime = $_POST["endTime"];
+$post = query_paras();
 
+$platform = $post["platform"];
+$startTime = $post["startTime"];
+$endTime = $post["endTime"];
 
 $endDate = strtotime("$endTime");
-
-$db = db();
 $array = array();
 $labels = array();
 $totalPrize = 0;
-for ($i = 0; $i <= 999; $i++) {
+for ($i = 0; $i <= 399; $i++) {
     $iday = strtotime("$startTime   +$i   day");
+
     $day = date("Y-m-d", $iday);
     if ($iday > $endDate) {
         break;
     }
-    $sql = "select sum(`amount`) from `tab_order` where `payTime` >= '" . $day . " 00:00:00" . "' and `payTime` <= '" . $day . " 23:59:59" . "'";
+
     if ($platform != "") {
-        $sql = $sql . " and `plat`='" . $platform . "'";
+        $prize = daoInst()->select('sum(`amount`) as amt')->from('tpl_order_tab')
+                ->where('status')->eq(1)
+                ->andWhere('channel')->eq($platform)
+                ->andWhere('close_ts')->ge($iday)
+                ->andWhere('close_ts')->lt(intval($iday + 86400))
+                ->fetch('amt');
+    } else {
+        $prize = daoInst()->select('sum(`amount`) as amt')->from('tpl_order_tab')
+                ->where('status')->eq(1)
+                ->andWhere('close_ts')->ge($iday)
+                ->andWhere('close_ts')->lt(intval($iday + 86400))
+                ->fetch('amt');
     }
 
-    $prize = $db->fetch_row($sql);
-
-    $prize = ((int)$prize[0][0])/100;
-    $prize = (float)sprintf("%.2f",$prize);
+    $prize = ((int) $prize) / 100;
+    $prize = (float) sprintf("%.2f", $prize);
     $array[] = $prize;
     $labels[] = $day;
     $totalPrize += $prize;
 }
-
-$db->close();
-
-
+ 
 $result = new stdClass();
 $result->data = $array;
 $result->labels = $labels;

+ 0 - 16
Gameserver/gamesys/app/providers/pay.php

@@ -1,16 +0,0 @@
-<?php
-
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
-/**
- * Description of pay
- * 付费统计
- * @author jgao
- */
-
-define("SELECT_PAY_ORDERS", "");
-define("SELECT_PAY_USERS", "");

+ 23 - 66
Gameserver/gamesys/app/providers/retention.php

@@ -4,78 +4,35 @@
  * 留存1
  */
 include_once dirname(__FILE__) . '/../main.php';
-/**
- * Description of retention
- * 留存统计业务逻辑1
- * @author gwang
- */
-define("SELECT_BASE", "select count(userID) as total from tab_rolename where `ts`>='%s 00:00:00' and `ts`<='%s 23:59:59'");
-
-define("SELECT_ONE", "select count(userID) as total from tab_rolename where `ts`>='%s 00:00:00' and `ts`<='%s 23:59:59' and `lastlogin`>='%s 00:00:00'");
-
 
-$date = $_POST['date'];
+$params = query_paras();
+$date = $params['date'];
 
+$numbers = array(1, 3, 5, 7, 15, 30);                                           # 留存天数
 $array = array();
 $array2 = array();
 
-$db = db();
 // 计算新增人数
-$sql = sprintf(SELECT_BASE, $date, $date);
-$arr = $db->fetch_array($sql);
-$new = $arr[0]['total'];
-$array[] = $new;
-
-// 计算次留
-$iday = strtotime("$date   +1   day");
-$day = date("Y-m-d", $iday);
-$sql = sprintf(SELECT_ONE, $date, $date, $day);
-$arr = $db->fetch_array($sql);
-$total = $arr[0]['total'];
-$array[] = $total;
-$array2[] = (int)($total/$new * 100);
-// 计算3日留存
-$iday = strtotime("$date   +3   day");
-$day = date("Y-m-d", $iday);
-$sql = sprintf(SELECT_ONE, $date, $date, $day);
-$arr = $db->fetch_array($sql);
-$total = $arr[0]['total'];
-$array[] = $total;
-$array2[] = (int)($total/$new * 100);
-// 计算5日留存
-$iday = strtotime("$date   +5   day");
-$day = date("Y-m-d", $iday);
-$sql = sprintf(SELECT_ONE, $date, $date, $day);
-$arr = $db->fetch_array($sql);
-$total = $arr[0]['total'];
-$array[] = $total;
-$array2[] = (int)($total/$new * 100);
-// 计算7日留存
-$iday = strtotime("$date   +7   day");
-$day = date("Y-m-d", $iday);
-$sql = sprintf(SELECT_ONE, $date, $date, $day);
-$arr = $db->fetch_array($sql);
-$total = $arr[0]['total'];
-$array[] = $total;
-$array2[] = (int)($total/$new * 100);
-// 计算15日留存
-$iday = strtotime("$date   +15   day");
-$day = date("Y-m-d", $iday);
-$sql = sprintf(SELECT_ONE, $date, $date, $day);
-$arr = $db->fetch_array($sql);
-$total = $arr[0]['total'];
-$array[] = $total;
-$array2[] = (int)($total/$new * 100);
-// 计算30日留存
-$iday = strtotime("$date   +30   day");
-$day = date("Y-m-d", $iday);
-$sql = sprintf(SELECT_ONE, $date, $date, $day);
-$arr = $db->fetch_array($sql);
-$total = $arr[0]['total'];
-$array[] = $total;
-$array2[] = (int)($total/$new * 100);
-
-$db->close();
+$tabName = "tab_rolename";
+$new = daoInst()->select('*')->from($tabName)
+        ->where('ts')->ge($date . " 00:00:00")
+        ->andWhere('ts')->le($date . " 23:59:59")
+        ->count();
+$array[] = intval($new);
+
+// 遍历 留存天数数组, 计算相应留存/率
+array_map(function ($n)use($date, $tabName, $new, &$array, &$array2) {
+    $iday = strtotime("$date   +$n   day");
+    $day = date("Y-m-d", $iday);
+    $total = daoInst()->select('*')->from($tabName)
+            ->where('ts')->ge($date . " 00:00:00")
+            ->andWhere('ts')->le($date . " 23:59:59")
+            ->andWhere('lastlogin')->ge($day . " 00:00:00")
+            ->count();
+    $array[] = $total;                                                          # 输出
+    $array2[] = (int) ($total / $new * 100);                                    # 输出
+}, $numbers);
+// 
 
 $result = new stdClass();
 $result->data1 = $array;

+ 17 - 23
Gameserver/gamesys/app/providers/retention2.php

@@ -4,53 +4,47 @@
  * 留存2
  */
 include_once dirname(__FILE__) . '/../main.php';
-/**
- * Description of retention
- * 留存统计业务逻辑
- * @author jgao
- */
-define("SELECT_BASE", "select count(userID) as total from tab_rolename where `ts`>='%s 00:00:00' and `ts`<='%s 23:59:59'");
-
-define("SELECT_ONE", "select count(userID) as total from tab_rolename where `ts`>='%s 00:00:00' and `ts`<='%s 23:59:59' and `lastlogin`>='%s 00:00:00'");
 
+$paras = query_paras();
 
-$startTime = $_POST['date1'];
-$endTime = $_POST['date2'];
-$type = $_POST['type'];
+$startTime = $paras['date1'];
+$endTime = $paras['date2'];
+$type = $paras['type'];
 
 $endDate = strtotime("$endTime");
 
 $array = array();
 $labels = array();
 
-$db = db();
+
+$tabName = "tab_rolename";
 for ($i = 0; $i <= 999; $i++) {
     $iday = strtotime("$startTime   +$i   day");
     $day = date("Y-m-d", $iday);
     if ($iday > $endDate) {
         break;
     }
-    $sql = sprintf(SELECT_BASE, $day, $day);
-    $arr = $db->fetch_array($sql);
-    $new = $arr[0]['total'];
     $labels[] = $day;
-    
 
-    
+    $new = daoInst()->select('*')->from($tabName)
+            ->where('ts')->ge($day . " 00:00:00")
+            ->andWhere('ts')->le($day . " 23:59:59")
+            ->count();
+
     if ($type == 0) {
         $array[] = $new;
-    } 
-    else {
+    } else {
         $iday2 = strtotime("$day   +$type   day");
         $day2 = date("Y-m-d", $iday2);
-        $sql = sprintf(SELECT_ONE, $day, $day, $day2);
-        $arr = $db->fetch_array($sql);
-        $total = $arr[0]['total'];
+        $total = daoInst()->select('*')->from($tabName)
+                ->where('ts')->ge($day . " 00:00:00")
+                ->andWhere('ts')->le($day . " 23:59:59")
+                ->andWhere('lastlogin')->ge($day2 . " 00:00:00")
+                ->count();
         $array[] = (int) ($total / $new * 100);
     }
 }
 
-$db->close();
 
 $result = new stdClass();
 $result->data = $array;

+ 0 - 14
Gameserver/gamesys/app/providers/sys.php

@@ -1,14 +0,0 @@
-<?php
-
-/*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
-
-/**
- * Description of sys
- *
- * @author jgao
- */
-

+ 4 - 3
Gameserver/gamesys/app/utils/dao.php

@@ -335,13 +335,14 @@ class dao {
             $subLength = $orderPOS;
         $sql = substr($sql, 0, $subLength);
         self::$querys[] = $sql;
-
+//        var_dump($sql);
         /* Get the records count. */
         try {
             $row = $this->dbh->query($sql)->fetch(PDO::FETCH_OBJ);
         } catch (PDOException $e) {
             $this->sqlError($e);
         }
+
 //        CLogUtil_HP::paylog($sql);
 //        var_dump($row);
         $sql = 'SELECT FOUND_ROWS() as recTotal;';
@@ -528,8 +529,8 @@ class dao {
         extract($trace[1]);                        # line
         $log .= ", last called by $file on line $line through function $function.\n";
 
-        CLog::err($log, "dao");
-        CLog::err($trace, "dao");
+//        CLog::err($log, "dao");
+//        CLog::err($trace, "dao");
         /* Trigger it. */
         trigger_error($log, $exit ? E_USER_ERROR : E_USER_WARNING);
     }

+ 96 - 91
Gameserver/gamesys/home/pages/level/level.js

@@ -1,108 +1,113 @@
 Date.prototype.format = function(format) {
-       var date = {
-              "M+": this.getMonth() + 1,
-              "d+": this.getDate(),
-              "h+": this.getHours(),
-              "m+": this.getMinutes(),
-              "s+": this.getSeconds(),
-              "q+": Math.floor((this.getMonth() + 3) / 3),
-              "S+": this.getMilliseconds()
-       };
-       if (/(y+)/i.test(format)) {
-              format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
-       }
-       for (var k in date) {
-              if (new RegExp("(" + k + ")").test(format)) {
-                     format = format.replace(RegExp.$1, RegExp.$1.length == 1
-                            ? date[k] : ("00" + date[k]).substr(("" + date[k]).length));
-              }
-       }
-       return format;
-} 
+	var date = {
+		"M+": this.getMonth() + 1,
+		"d+": this.getDate(),
+		"h+": this.getHours(),
+		"m+": this.getMinutes(),
+		"s+": this.getSeconds(),
+		"q+": Math.floor((this.getMonth() + 3) / 3),
+		"S+": this.getMilliseconds()
+	};
+	if (/(y+)/i.test(format)) {
+		format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
+	}
+	for (var k in date) {
+		if (new RegExp("(" + k + ")").test(format)) {
+			format = format.replace(RegExp.$1, RegExp.$1.length == 1 ?
+				date[k] : ("00" + date[k]).substr(("" + date[k]).length));
+		}
+	}
+	return format;
+}
 
-$(function(){
-  var date = new Date();  
-  date.setDate(date.getDate()-1);
-  $('#date-text').val(date.format("yyyy-MM-dd"));
-  searchDay();
+$(function() {
+	var date = new Date();
+	date.setDate(date.getDate() - 1);
+	$('#date-text').val(date.format("yyyy-MM-dd"));
+	searchDay();
 });
 
 
 $('.form_date').datetimepicker({
-    language: 'zh-CN',
-    weekStart: 1,
-    todayBtn: 1,
-    autoclose: 1,
-    todayHighlight: 1,
-    startView: 2,
-    minView: 2,
-    forceParse: 0
+	language: 'zh-CN',
+	weekStart: 1,
+	todayBtn: 1,
+	autoclose: 1,
+	todayHighlight: 1,
+	startView: 2,
+	minView: 2,
+	forceParse: 0
 });
 
 var chart = null;
 var chart2 = null;
 
 function Canvas(datas) {
-    var labels = ['新手引导'];
-    var datas2 = [0];
-    for (var i = 1; i < datas.length; i++) {
-        labels.push('第' + i + '关');  
-        datas2.push(((datas[i - 1] - datas[i]) / datas[i - 1] *100).toFixed(2));
-    }
-    var lineChartData = {
-        labels: labels,
-        datasets: [
-            {
-                fillColor: "rgba(220,220,220,0.2)",
-                strokeColor: "rgba(220,220,220,1)",
-                pointColor: "rgba(220,220,220,1)",
-                pointStrokeColor: "#fff",
-                pointHighlightFill: "#fff",
-                pointHighlightStroke: "rgba(220,220,220,1)",
-                data: datas
-            },
-        ]
-    }
-    $('#dayCanvas').attr("width", $('#dayCanvasParent').width());
-    var ctx = document.getElementById("dayCanvas").getContext("2d");
-    if (chart != null) {
-        chart.destroy();
-    }
-    chart = new Chart(ctx).Line(lineChartData, {
-        scaleLabel: "<%=value%>人"
-    });
+	var labels = ['新手引导'];
+	var datas2 = [0];
+	var keys =Object.keys(datas);
+ 
+	// console.log(keys.length);
+	keys.sort();
+	for (var i = 1; i < keys.length; i++) {
+		var k = keys[i];
+		labels.push('第' + k + '关');
+	    var kf = keys[i-1];
+		datas2.push(((datas[kf] - datas[k]) / datas[kf] * 100).toFixed(2));
+	}
+	// console.log(labels);
+	var lineChartData = {
+		labels: labels,
+		datasets: [{
+			fillColor: "rgba(220,220,220,0.2)",
+			strokeColor: "rgba(220,220,220,1)",
+			pointColor: "rgba(220,220,220,1)",
+			pointStrokeColor: "#fff",
+			pointHighlightFill: "#fff",
+			pointHighlightStroke: "rgba(220,220,220,1)",
+			data: datas
+		}, ]
+	}
+	$('#dayCanvas').attr("width", $('#dayCanvasParent').width());
+	var ctx = document.getElementById("dayCanvas").getContext("2d");
+	if (chart != null) {
+		chart.destroy();
+	}
+	chart = new Chart(ctx).Line(lineChartData, {
+		scaleLabel: "<%=value%>人"
+	});
 
-    var lineChartData2 = {
-        labels: labels,
-        datasets: [
-            {
-                fillColor: "rgba(151,187,205,0.5)",
-                strokeColor: "rgba(151,187,205,1)",
-                pointColor: "rgba(151,187,205,1)",
-                pointStrokeColor: "#fff",
-                pointHighlightFill: "#fff",
-                pointHighlightStroke: "rgba(220,220,220,1)",
-                data: datas2
-            },
-        ]
-    }
-    $('#day2Canvas').attr("width", $('#day2CanvasParent').width());
-    var ctx2 = document.getElementById("day2Canvas").getContext("2d");
-    if (chart2 != null) {
-        chart2.destroy();
-    }
-    chart2 = new Chart(ctx2).Line(lineChartData2, {
-        scaleLabel: "<%=value%>%"
-    });
+	 // console.log(datas2);
+	var lineChartData2 = {
+		labels: labels,
+		datasets: [{
+			fillColor: "rgba(151,187,205,0.5)",
+			strokeColor: "rgba(151,187,205,1)",
+			pointColor: "rgba(151,187,205,1)",
+			pointStrokeColor: "#fff",
+			pointHighlightFill: "#fff",
+			pointHighlightStroke: "rgba(220,220,220,1)",
+			data: datas2
+		}, ]
+	}
+	$('#day2Canvas').attr("width", $('#day2CanvasParent').width());
+	var ctx2 = document.getElementById("day2Canvas").getContext("2d");
+	if (chart2 != null) {
+		chart2.destroy();
+	}
+	chart2 = new Chart(ctx2).Line(lineChartData2, {
+		scaleLabel: "<%=value%>%"
+	});
 }
 
 function searchDay() {
-    var date = $("#date-text").val();
-    $.post(
-            getProviderUrl("level"),
-            {date: date},
-            function (data) {
-                Canvas(data.datas);
-            }
-    , 'json');
+	var date = $("#date-text").val();
+	$.post(
+		getProviderUrl("level"), {
+			date: date
+		},
+		function(data) {
+			// console.log(data);
+			Canvas(data.datas);
+		}, 'json');
 }

+ 1 - 1
Gameserver/gamesys/home/pages/order/order.html

@@ -85,7 +85,7 @@ and open the template in the editor.
                         </div>
                         <div class="panel-body">
                             <table id="tab_order" data-toggle="table" data-height="800">
-
+                              <!-- 列信息放到js中了,因为需要自定义列内容的格式化脚本 -wg -->
                             </table>
                         </div>
                     </div>

+ 12 - 8
Gameserver/gamesys/home/pages/order/order.js

@@ -21,14 +21,14 @@ $('#tab_order').bootstrapTable({
     queryParamsType: "",
     columns: [
         {
-            field: 'orderId',
+            field: 'cpOrderId',
             title: '订单id',
             align: 'center',
             valign: 'middle',
             sortable: true
         },
         {
-            field: 'userId',
+            field: 'uid',
             title: '用户id',
             align: 'center',
             valign: 'middle',
@@ -46,35 +46,39 @@ $('#tab_order').bootstrapTable({
             }
         },
         {
-            field: 'itemId',
+            field: 'product_id',
             title: '物品id',
             align: 'center',
             valign: 'middle',
             sortable: true
         },
         {
-            field: 'itemNum',
+            field: 'product_count',
             title: '物品数量',
             align: 'center',
             valign: 'middle',
             sortable: true
         },
         {
-            field: 'payTime',
+            field: 'close_ts',
             title: '支付时间',
             align: 'center',
             valign: 'middle',
-            sortable: true
+            sortable: true,
+			formatter: function (value, row, index) {
+                var unixTimestamp = new Date(value * 1000);
+                return unixTimestamp.toLocaleString();
+            }
         },
         {
-            field: 'plat',
+            field: 'channel',
             title: '平台',
             align: 'center',
             valign: 'middle',
             sortable: true
         },
         {
-            field: 'area',
+            field: 'zoneid',
             title: '区服',
             align: 'center',
             valign: 'middle',

+ 1 - 1
Gameserver/nbproject/private/private.xml

@@ -12,7 +12,7 @@
     </editor-bookmarks>
     <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
         <group>
-            <file>file:/D:/www/ylsj2019/Gameserver/Amfphp/process/StatProc.php</file>
+            <file>file:/D:/local_svn/0_ylsj2019/ylsj2019Server/Gameserver/Amfphp/base/CmdCode.php</file>
         </group>
     </open-files>
 </project-private>