rankh5.action.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | FANWE 直播系统
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2011 http://www.fanwe.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: 云淡风轻(1956838968@qq.com)
  8. // +----------------------------------------------------------------------
  9. class rankh5Module extends baseModule
  10. {
  11. private $live_list;
  12. private function get_live_list()
  13. {
  14. if (is_null($this->live_list)) {
  15. $live_list = load_auto_cache('select_video');
  16. foreach ($live_list as $item) {
  17. $this->live_list[$item['user_id']] = $item;
  18. }
  19. }
  20. return $this->live_list;
  21. }
  22. private function get_rank($list, $type, $page_size = 20)
  23. {
  24. $last_ranks = array();
  25. $last_rank_num = count($list['pre_' . $type]);
  26. for ($i = 0; $i < $last_rank_num; $i++) {
  27. $last_ranks[$list['pre_' . $type][$i]['user_id']] = $i;
  28. }
  29. $user_id = $GLOBALS['user_info']['id'];
  30. fanwe_require(APP_ROOT_PATH . 'mapi/lib/redis/UserFollwRedisService.php');
  31. $user_follow = new UserFollwRedisService($user_id);
  32. $user_follow_ids = $user_follow->following();
  33. $items = array();
  34. $live_list = $this->get_live_list();
  35. for ($i = 0, $l = min(count($list[$type]), $page_size); $i < $l; $i++) {
  36. $item = $list[$type][$i];
  37. if ($last_rank_num == 0) {
  38. $rank = 'none';
  39. } elseif (!isset($last_ranks[$item['user_id']])) {
  40. $rank = 'up';
  41. } elseif ($last_ranks[$item['user_id']] > $i) {
  42. $rank = 'up';
  43. } elseif ($last_ranks[$item['user_id']] < $i) {
  44. $rank = 'down';
  45. } else {
  46. $rank = 'none';
  47. }
  48. $has_focus = $user_id == $item['user_id'] ? -1 : (in_array($item['user_id'], $user_follow_ids) ? 1 : 0);
  49. if (isset($live_list[$item['user_id']])) {
  50. $live = $live_list[$item['user_id']];
  51. $items[] = array(
  52. 'id' => $item['user_id'],
  53. 'nick_name' => $item['nick_name'],
  54. 'head_image' => get_spec_image($item['head_image']),
  55. 'live_in' => $live['live_in'],
  56. 'room_id' => $live['room_id'],
  57. 'ticket' => isset($item['use_ticket']) ? $item['use_ticket'] : $item['ticket'],
  58. 'rank' => $rank,
  59. 'has_focus' => $has_focus,
  60. 'group_id' => $live['group_id'],
  61. 'create_type' => $live['create_type'],
  62. 'video_type' => $live['live_in'] == 1 ? 0 : 1,
  63. 'live_image' => $live['live_image'],
  64. );
  65. } else {
  66. $items[] = array(
  67. 'id' => $item['user_id'],
  68. 'nick_name' => $item['nick_name'],
  69. 'head_image' => get_spec_image($item['head_image']),
  70. 'live_in' => "0",
  71. 'ticket' => isset($item['use_ticket']) ? $item['use_ticket'] : $item['ticket'],
  72. 'rank' => $rank,
  73. 'has_focus' => $has_focus,
  74. );
  75. }
  76. }
  77. return $items;
  78. }
  79. public function rank_all()
  80. {
  81. $m_config = load_auto_cache('m_config');
  82. $charm_list = load_auto_cache('charm_podcast', array('page_size' => 50));
  83. $rich_list = load_auto_cache('rich_list', array('page_size' => 50));
  84. $root = array(
  85. 'status' => 1,
  86. 'ticket_name' => $m_config['ticket_name'],
  87. 'anchor' => array(
  88. 'hour' => $this->get_rank($charm_list, 'hour', 50),
  89. 'last_hour' => $this->get_rank($charm_list, 'last_hour', 3),
  90. 'day' => $this->get_rank($charm_list, 'day'),
  91. 'week' => $this->get_rank($charm_list, 'weeks'),
  92. ),
  93. 'user' => array(
  94. 'day' => $this->get_rank($rich_list, 'day'),
  95. 'week' => $this->get_rank($rich_list, 'weeks'),
  96. )
  97. );
  98. api_ajax_return($root);
  99. }
  100. //播主小时榜
  101. public function rank_anchor_hour()
  102. {
  103. $m_config = load_auto_cache('m_config');
  104. $charm_list = load_auto_cache('charm_podcast', array('page_size' => 50));
  105. $items = $this->get_rank($charm_list, 'hour', 50);
  106. $last_items = $this->get_rank($charm_list, 'last_hour', 3);
  107. $root = array(
  108. 'status' => 1,
  109. 'error' => '',
  110. 'ticket_name' => $m_config['ticket_name'],
  111. 'items' => $items,
  112. 'last_items' => $last_items
  113. );
  114. api_ajax_return($root);
  115. }
  116. public function rank_anchor_last_hour()
  117. {
  118. $m_config = load_auto_cache('m_config');
  119. $charm_list = load_auto_cache('charm_podcast', array('page_size' => 50));
  120. $items = $this->get_rank($charm_list, 'last_hour');
  121. $root = array('status' => 1, 'error' => '', 'ticket_name' => $m_config['ticket_name'], 'items' => $items);
  122. api_ajax_return($root);
  123. }
  124. //播主日榜
  125. public function rank_anchor_day()
  126. {
  127. $m_config = load_auto_cache('m_config');
  128. $charm_list = load_auto_cache('charm_podcast', array('page_size' => 50));
  129. $items = $this->get_rank($charm_list, 'day');
  130. $root = array('status' => 1, 'error' => '', 'ticket_name' => $m_config['ticket_name'], 'items' => $items);
  131. api_ajax_return($root);
  132. }
  133. //播主周榜
  134. public function rank_anchor_week()
  135. {
  136. $m_config = load_auto_cache('m_config');
  137. $charm_list = load_auto_cache('charm_podcast', array('page_size' => 50));
  138. $items = $this->get_rank($charm_list, 'weeks');
  139. $root = array('status' => 1, 'error' => '', 'ticket_name' => $m_config['ticket_name'], 'items' => $items);
  140. api_ajax_return($root);
  141. }
  142. //用户日榜
  143. public function rank_user_day()
  144. {
  145. $m_config = load_auto_cache('m_config');
  146. $rich_list = load_auto_cache('rich_list', array('page_size' => 50));
  147. $items = $this->get_rank($rich_list, 'day');
  148. $root = array('status' => 1, 'error' => '', 'ticket_name' => $m_config['ticket_name'], 'items' => $items);
  149. api_ajax_return($root);
  150. }
  151. //用户周榜
  152. public function rank_user_week()
  153. {
  154. $m_config = load_auto_cache('m_config');
  155. $rich_list = load_auto_cache('rich_list', array('page_size' => 50));
  156. $items = $this->get_rank($rich_list, 'weeks');
  157. $root = array('status' => 1, 'error' => '', 'ticket_name' => $m_config['ticket_name'], 'items' => $items);
  158. api_ajax_return($root);
  159. }
  160. }