Rank.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. <?php
  2. /**
  3. * 用户信息相关
  4. */
  5. defined( 'IN_WEB') or die( 'Include Error!');
  6. include_once dirname(__FILE__) . "/Base.php";
  7. class Rank extends Base{
  8. /**
  9. * 总排行榜 合并体力、金币、等级接口
  10. * @return string
  11. * Created by: hss
  12. * Created on: 2020/6/1 11:40
  13. */
  14. public function index($param){
  15. $sidList = oo::functions()->uint($param['sidList']);
  16. $type = oo::functions()->escape($param['type']);
  17. if(empty($sidList)){
  18. $sidList = 999;
  19. }
  20. if(empty($type)){
  21. $type = 'money';
  22. }
  23. $tb = otable::gh_gameserver(1);
  24. if($sidList == 999){
  25. $sql = "SELECT mid as uid,{$type} FROM {$tb} ORDER BY {$type} DESC LIMIT 100";
  26. }else{
  27. $tbUserinfo = otable::userinfo(1);
  28. $sql = "SELECT a.mid as uid,a.{$type} FROM {$tb} AS a INNER JOIN {$tbUserinfo} AS b WHERE b.login_plat = {$sidList} AND b.uid = a.mid ORDER BY a.{$type} DESC LIMIT 100";
  29. }
  30. $ret = oo::commonOprDb('common')->getAll($sql,1);
  31. $uidList = [];
  32. foreach($ret as $k => $v){
  33. $uidList[] = $v['uid'];
  34. }
  35. //查出付费用户
  36. $pay_list = [];
  37. if(!empty($uidList)){
  38. $slTable = otable::summarylist();
  39. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  40. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  41. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  42. foreach($list as $k => $v){
  43. $pay_list[] = $v['sl_uid'];
  44. }
  45. }
  46. return json_encode(["data"=>$ret,"pay_list"=>$pay_list]);
  47. }
  48. public function money($param){
  49. $tb = otable::gh_gameserver(1);
  50. $sql = "SELECT mid as uid,money FROM {$tb} ORDER BY money DESC LIMIT 100";
  51. $ret = oo::commonOprDb('common')->getAll($sql,1);
  52. $uidList = [];
  53. foreach($ret as $k => $v){
  54. $uidList[] = $v['uid'];
  55. }
  56. //查出付费用户
  57. $pay_list = [];
  58. if(!empty($uidList)){
  59. $slTable = otable::summarylist();
  60. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  61. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  62. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  63. foreach($list as $k => $v){
  64. $pay_list[] = $v['sl_uid'];
  65. }
  66. }
  67. return json_encode(["data"=>$ret,"pay_list"=>$pay_list]);
  68. }
  69. public function star($param){
  70. $tb = otable::gh_gameserver(1);
  71. $sql = "SELECT mid as uid,star FROM {$tb} ORDER BY star DESC LIMIT 100";
  72. $ret = oo::commonOprDb('common')->getAll($sql,1);
  73. $uidList = [];
  74. foreach($ret as $k => $v){
  75. $uidList[] = $v['uid'];
  76. }
  77. //查出付费用户
  78. $pay_list = [];
  79. if(!empty($uidList)){
  80. $slTable = otable::summarylist();
  81. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  82. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  83. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  84. foreach($list as $k => $v){
  85. $pay_list[] = $v['sl_uid'];
  86. }
  87. }
  88. return json_encode(["data"=>$ret,"pay_list"=>$pay_list]);
  89. }
  90. //等级排行榜
  91. public function level($param){
  92. $tb = otable::gh_gameserver(1);
  93. $sql = "SELECT mid as uid,levelId as level FROM {$tb} ORDER BY levelId DESC LIMIT 100";
  94. $ret = oo::commonOprDb('common')->getAll($sql,1);
  95. $uidList = [];
  96. foreach($ret as $k => $v){
  97. $uidList[] = $v['uid'];
  98. }
  99. //查出付费用户
  100. $pay_list = [];
  101. if(!empty($uidList)){
  102. $slTable = otable::summarylist();
  103. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  104. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  105. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  106. foreach($list as $k => $v){
  107. $pay_list[] = $v['sl_uid'];
  108. }
  109. }
  110. return json_encode(["data"=>$ret,"pay_list"=>$pay_list]);
  111. }
  112. //体力排行榜
  113. public function spins($param){
  114. $tb = otable::gh_gameserver(1);
  115. $sql = "SELECT mid as uid,spins FROM {$tb} ORDER BY spins DESC LIMIT 100";
  116. $ret = oo::commonOprDb('common')->getAll($sql,1);
  117. $uidList = [];
  118. foreach($ret as $k => $v){
  119. $uidList[] = $v['uid'];
  120. }
  121. //查出付费用户
  122. $pay_list = [];
  123. if(!empty($uidList)){
  124. $slTable = otable::summarylist();
  125. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  126. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  127. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  128. foreach($list as $k => $v){
  129. $pay_list[] = $v['sl_uid'];
  130. }
  131. }
  132. return json_encode(["data"=>$ret,"pay_list"=>$pay_list]);
  133. }
  134. public function day($param){
  135. $date = $param['date'];
  136. //var_dump(date('Ymd'));
  137. if($date == date('Ymd')){
  138. $key = ['level','money','spins'];
  139. $inset = [];
  140. foreach ($key as $row){
  141. $data = oo::commonOprRedis('common')->hGetAll(okeys::todayDataRank($row));
  142. arsort($data);
  143. $data = array_slice($data,0,50,true);
  144. $inset[$row] = $data;
  145. $uidList = [];
  146. foreach($data as $k => $v){
  147. $uidList[] = $k;
  148. }
  149. //查出付费用户
  150. $pay_list = [];
  151. if(!empty($uidList)){
  152. $slTable = otable::summarylist();
  153. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  154. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  155. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  156. foreach($list as $k => $v){
  157. $pay_list[] = $v['sl_uid'];
  158. }
  159. }
  160. $inset[$row."Vip"] = $pay_list;
  161. }
  162. return json_encode($inset);
  163. }
  164. $tb = otable::dayRank();
  165. $sql = "SELECT * FROM {$tb} WHERE date={$date} LIMIT 1;";
  166. $ret = oo::commonOprDb('statistics')->getOne($sql,MYSQLI_ASSOC);
  167. foreach ($ret as $key=>$row){
  168. $ret[$key] = json_decode($row,true);
  169. $uidList = [];
  170. foreach($ret[$key] as $k => $v){
  171. $uidList[] = $k;
  172. }
  173. //查出付费用户
  174. $pay_list = [];
  175. if(!empty($uidList)){
  176. $slTable = otable::summarylist();
  177. $UidStr = empty($uidList) ? '' : " AND sl_uid IN (".implode(',', $uidList).") ";
  178. $sql = " SELECT DISTINCT sl_uid FROM {$slTable} AS sl WHERE sl.sl_status = 2 AND sl.sl_pusd > 0 {$UidStr}";
  179. $list = oo::commonOprDB('payment')->getAll($sql, 1);
  180. foreach($list as $k => $v){
  181. $pay_list[] = $v['sl_uid'];
  182. }
  183. }
  184. $ret[$key."Vip"] = $pay_list;
  185. }
  186. return json_encode($ret);
  187. }
  188. }