/public/module/player/balance_sort.php

https://github.com/karlom/gameadmin · PHP · 143 lines · 113 code · 11 blank · 19 comment · 6 complexity · c4c38b5fe7b40f5b20d0eda6cc1c8b0f MD5 · raw file

  1. <?php
  2. /**
  3. * 玩家元宝余额排行榜
  4. */
  5. include_once '../../../protected/config/config.php';
  6. include_once SYSDIR_ADMIN_INCLUDE . '/global.php';
  7. global $lang;
  8. //获取时间
  9. if (!isset ($_GET['date'])) {
  10. $date = Datatime::getTodayString();
  11. } else {
  12. $date = SS($_GET['date']);
  13. }
  14. $dateStamp = Datatime::getDayEndTimestamp( $date );
  15. $openTimestamp = Datatime::getDayBeginTimestamp( ONLINEDATE );
  16. if($dateStamp < $openTimestamp)
  17. {
  18. $dateStamp = $openTimestamp;
  19. $date = ONLINEDATE;
  20. }
  21. if($dateStamp > Datatime::getDayBeginTimestamp(Datatime::getTodayString()) )
  22. {
  23. $dateStamp = Datatime::getDayEndTimestamp(Datatime::getTodayString());
  24. $date = Datatime::getTodayString();
  25. }
  26. $pageNum = LIST_PER_PAGE_RECORDS;
  27. $pageNo = getGetUrlParam('page');//设置初始页
  28. $sort_type = isset($_REQUEST['sort_type']) ? SS($_REQUEST['sort_type']) : "total_gold desc";
  29. $filter = isset($_GET['filter']) ? true : false;//是否去掉内部赠送元宝
  30. $viewData = getGoldBalanceData($dateStamp, $pageNo, $pageNum, $sort_type, $filter);
  31. $result = array();
  32. if($viewData){
  33. $pageCount = $viewData['pageCount'];
  34. $record = $viewData["recordCount"];
  35. $data = $viewData["data"];
  36. // $i = 0;
  37. // if($data){
  38. // foreach($data as $key => $val){
  39. // $result[$key]["rank"] = $val["rank"];
  40. // $result[$key]["roleName"] = $val["roleName"];
  41. // $result[$key]["accountName"] = $val["accountName"];
  42. // $result[$key]["goldBalance"] = $val["goldBalance"];
  43. // $result[$key]["bindGoldBalance"] = $val["bindGoldBalance"];
  44. // $result[$key]["balanceTotal"] = $val["goldBalance"] + $val["bindGoldBalance"];
  45. // $i++;
  46. // if($i == $pageNum){
  47. // break;
  48. // }
  49. // }
  50. // }
  51. }
  52. $pages = getPages2 ($pageNo, $record, $pageNum);
  53. $minDate = $serverList[$_SESSION ['gameAdminServer']]['onlinedate'];
  54. $maxDate = date("Y-m-d");
  55. $smarty->assign('filter', $filter);
  56. $smarty->assign("minDate", $minDate);
  57. $smarty->assign("maxDate", $maxDate);
  58. $smarty->assign("date", $date);
  59. $smarty->assign('pageNum', $pageNum);
  60. $smarty->assign('pageCount', $pageCount);
  61. $smarty->assign('pageNo', $pageNo);
  62. $smarty->assign('record', $record);
  63. $smarty->assign('pages', $pages);
  64. $smarty->assign('result', $data);
  65. $smarty->assign('current_uri', cleanQueryString(URL_SELF, $pages)."sort_type={$sort_type}");
  66. $smarty->assign('lang', $lang);
  67. $smarty->assign('sort_type', $sort_type);
  68. $smarty->display ( 'module/player/balance_sort.tpl' );
  69. function getGoldBalanceData($dateStamp, $page, $pageNum, $sort_type, $filter = false) {
  70. $join = '';
  71. $whereCond = " where t1.mtime < $dateStamp ";
  72. if( $filter )
  73. {
  74. $join = ' LEFT JOIN
  75. (
  76. SELECT DISTINCT role_name t_role_name
  77. FROM '.T_LOG_SEND_YUANBAO.'
  78. WHERE `type`=2
  79. ) ts ON t1.role_name = ts.t_role_name ';
  80. $whereCond .= ' AND ts.t_role_name is null ';
  81. }
  82. $sql = "select count(account_name) record_count
  83. from
  84. (
  85. SELECT U40.role_name, U40.account_name, U40.remain_gold, U40.remain_bind_gold,(U40.remain_gold + U40.remain_bind_gold) total_gold
  86. FROM
  87. (
  88. select U20.*
  89. from
  90. (
  91. select t1.role_name, t1.account_name,max(t1.mtime) mtime
  92. from t_log_gold t1 $join $whereCond
  93. group by t1.account_name
  94. ) U10
  95. left join t_log_gold U20 on U10.account_name=U20.account_name and U10.mtime=U20.mtime
  96. ) U40 group by account_name
  97. ) U30 where U30.total_gold>100";
  98. $result = GFetchRowOne($sql);
  99. $recordCount = $result['record_count'];
  100. $pageCount = ceil($recordCount/$pageNum);
  101. $limit = " limit ".(($page - 1) * $pageNum).",".$pageNum;
  102. $sql = "select * from (
  103. SELECT U40.role_name, U40.account_name, U40.remain_gold, U40.remain_bind_gold,(U40.remain_gold + U40.remain_bind_gold) total_gold
  104. FROM
  105. (
  106. select U20.*
  107. from
  108. (
  109. select t1.role_name, t1.account_name,max(t1.mtime) mtime
  110. from t_log_gold t1 $join $whereCond
  111. group by account_name
  112. ) U10
  113. left join t_log_gold U20 on U10.account_name=U20.account_name and U10.mtime=U20.mtime
  114. order by U20.id desc
  115. ) U40 group by account_name
  116. ) U30 where U30.total_gold>100 order by {$sort_type} {$limit}";
  117. $dataResult = GFetchRowSet($sql);
  118. $data['recordCount'] = $recordCount;
  119. $data['pageCount'] = $pageCount;
  120. $data['page'] = $page;
  121. $rank = ($page - 1) * $pageNum + 1;
  122. foreach($dataResult as $key => $value){
  123. $data['data'][$rank]['rank'] = $rank;
  124. $data['data'][$rank]['roleName'] = $value['role_name'];
  125. $data['data'][$rank]['accountName'] = $value['account_name'];
  126. $data['data'][$rank]['balanceTotal'] = $value['total_gold'];
  127. $data['data'][$rank]['goldBalance'] = $value['remain_gold'];
  128. $data['data'][$rank]['bindGoldBalance'] = $value['remain_bind_gold'];
  129. $rank++;
  130. }
  131. return $data;
  132. }