moneylevel.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <?php
  2. defined('IN_WEB') or die('Include Error!');
  3. /**
  4. * 用户 等级 --- 筹码 分布
  5. */
  6. class ModelMoneylevel
  7. {
  8. //统计玩家等级,筹码区间
  9. private $moneyRange = array(
  10. array(0, 1000),
  11. array(1000, 2000),
  12. array(2000, 4000),
  13. array(4000, 10000),
  14. array(10000, 20000),
  15. array(20000, 40000),
  16. array(40000, 60000),
  17. array(60000, 100000),
  18. array(100000, 200000),
  19. array(200000, 400000),
  20. array(400000, 600000),
  21. array(600000, 1000000),
  22. array(1000000, 2000000),
  23. array(2000000, 3000000),
  24. array(3000000, 6000000),
  25. array(6000000, 10000000),
  26. array(10000000, 20000000),
  27. array(20000000, 1000000000),
  28. );
  29. private $diamondRange = [
  30. [0, 5],
  31. [6, 10],
  32. [11, 15],
  33. [16, 20],
  34. [21, 25],
  35. [26, 30],
  36. [31, 50],
  37. [51, 100],
  38. [101, 1000],
  39. [1001, 2000],
  40. [2001, 100000]
  41. ];
  42. /**
  43. * 处理数据
  44. * @param $moneyRangeList
  45. * @param $levelRangeList
  46. * @param $versionRangeList
  47. * @param int $type
  48. * @param $date
  49. * @param int $sid
  50. * @return bool
  51. */
  52. private function dealDiamondLevel(&$diamondRangeList, $type = 1, $date, $sid = 0)
  53. {
  54. if ($type == 1) {//活跃用户
  55. $diamondRangeKey = 'MONEYLEVEL:DIAMOND:PLAYER:'.$sid.':'.$date.':';
  56. }else{
  57. $diamondRangeKey = 'MONEYLEVEL:DIAMOND:ALLPLAYER'.$date.':';
  58. }
  59. $diamondRangeCount = count($this->diamondRange);
  60. for ($i=0; $i < $diamondRangeCount; $i++) {
  61. $diamondRangeList[$i] += intval(oo::commonOprRedis('common')->get($diamondRangeKey.$i));
  62. }
  63. return true;
  64. }
  65. /**
  66. * 获取玩家钻石分布
  67. * @return string
  68. */
  69. public function diamondlevel($sidList = [])
  70. {
  71. $date = date('Ymd', strtotime('-1 day'));
  72. //获取钻石区间
  73. $diamondRangeList = [];
  74. //如果sidList为空或者为999,则默认全部的sid
  75. if(empty($sidList) || is_array($sidList) && in_array(999, $sidList)) {
  76. //包列表
  77. $sidList = oo::commonOprModel('statistics')->getSidList();
  78. }else {
  79. if(!is_array($sidList)) {
  80. $sidList = array($sidList);
  81. }
  82. }
  83. foreach ($sidList as $sid) {
  84. $this->dealDiamondLevel($diamondRangeList, 1, $date, $sid);
  85. }
  86. $data['diamondRangeList'] = $diamondRangeList;
  87. $data['diamondRange'] = $this->diamondRange;
  88. return $data;
  89. }
  90. public function crazyGodMoneyLevel($type = '',$sidList = [999]){
  91. $levelRange = oo::commonOprModel('statistics')->getLevelRange();
  92. $data = array('moneyRange' => $this->moneyRange, 'levelRange' => $levelRange, 'moneyRangeList' => [], 'levelRangeList' => [], 'versionRangeList' => []);
  93. $tb = otable::gh_gameserver(1);
  94. $moneyRangeList = $levelRangeList = $spinsRangeList = [];
  95. if($type == 'money'){
  96. foreach ($this->moneyRange as $key=>$row){
  97. $sql = "SELECT count(*) as count FROM {$tb} WHERE money BETWEEN {$row[0]} AND {$row[1]}";
  98. $ret = oo::commonOprDb('common')->getOne($sql,1);
  99. $moneyRangeList[] = intval($ret['count']);
  100. }
  101. }else if($type == 'level'){
  102. if(in_array(999, $sidList)) {
  103. $levelRange = oo::commonOprModel('statistics')->getLevelRange();
  104. foreach ($levelRange as $key=>$row){
  105. $sql = "SELECT count(*) as count FROM {$tb} WHERE levelId={$row}";
  106. $ret = oo::commonOprDb('common')->getOne($sql,1);
  107. $levelRangeList[] = intval($ret['count']);
  108. }
  109. }else{
  110. $login_plat = 1;
  111. if(!empty($sidList) && is_array($sidList)){
  112. $login_plat = implode(',',$sidList);
  113. }
  114. $tbUserinfo = otable::userinfo(1);
  115. $levelRange = oo::commonOprModel('statistics')->getLevelRange();
  116. foreach ($levelRange as $key=>$row){
  117. $sql = "SELECT count(*) as count FROM {$tb} AS a INNER JOIN {$tbUserinfo} AS b WHERE b.login_plat in ({$login_plat}) AND b.uid = a.mid AND a.levelId={$row}";
  118. $ret = oo::commonOprDb('common')->getOne($sql,1);
  119. $levelRangeList[] = intval($ret['count']);
  120. }
  121. }
  122. }else if($type == 'spins'){
  123. for ($i=0;$i<=50;$i++){
  124. $sql = "SELECT count(*) as count FROM {$tb} WHERE spins={$i}";
  125. $ret = oo::commonOprDb('common')->getOne($sql,1);
  126. $spinsRangeList[] = intval($ret['count']);
  127. }
  128. //新加的体力区间
  129. $spinsRange = array(
  130. '0'=>[51,100],
  131. '1'=>[101,500],
  132. '2'=>[501,1000],
  133. '3'=>[1001,5000],
  134. '4'=>[5001,9999999],
  135. );
  136. foreach($spinsRange as $k => $v){
  137. $start = $v[0];
  138. $end = $v[1];
  139. $sql = "SELECT count(*) as count FROM {$tb} WHERE spins<={$end} AND spins >= {$start}";
  140. $ret = oo::commonOprDb('common')->getOne($sql,1);
  141. $spinsRangeList[] = intval($ret['count']);
  142. }
  143. }
  144. $data['moneyRangeList'] = $moneyRangeList;
  145. $data['levelRangeList'] = $levelRangeList;
  146. $data['spinsRangeList'] = $spinsRangeList;
  147. return json_encode($data);
  148. }
  149. }