VideoContributionRedisService.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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 VideoContributionRedisService extends BaseRedisService
  10. {
  11. var $user_contribution; //:podcast_id zset 有序数据,user_id:贡献数
  12. var $video_contribution;//:video_id zset 有序数据,user_id:贡献数
  13. var $video_vote_number_db; // zset video_id:映票数(vote_number)
  14. // var $user_hash_db; //所有会员数据 user_id hash数据 存储在线数据
  15. /**
  16. +----------------------------------------------------------
  17. * 架构函数
  18. +----------------------------------------------------------
  19. * @access public
  20. +----------------------------------------------------------
  21. */
  22. public function __construct()
  23. {
  24. parent::__construct();
  25. $this->user_contribution = $this->prefix.'user_contribution:';
  26. $this->video_contribution = $this->prefix.'video_contribution:';
  27. $this->user_hash_db = $this->prefix.'user_hash_db';
  28. // $this->video_db = $this->prefix.'video:';
  29. $this->video_vote_number_db = $this->prefix.'video_vote_number';
  30. }
  31. // public function test_add_redis($user_list){
  32. //
  33. //
  34. // set_time_limit(0);
  35. // $viewer_id = 0;
  36. // $pipe = $this->redis->multi();
  37. // foreach($user_list as $k=>$v){
  38. // $viewer_id = $v['id'];
  39. //
  40. // if($viewer_id){
  41. // $data = $v;
  42. // $pipe->hMSet($this->user_contribution.$viewer_id,$data)
  43. // ;
  44. // }
  45. // }
  46. //
  47. // $replies = $pipe->exec();
  48. // $this->set_auto_val('viewer_id',$viewer_id);
  49. //
  50. // }
  51. /*
  52. * 添加
  53. * $video_id 为0时候,是直接发送礼物
  54. */
  55. public function insert_db($user_id,$podcast_id,$video_id=0,$num){
  56. $data = array();
  57. if($video_id){
  58. $data = $this->redis->hMGet($this->video_db.$video_id,array('province','sex','title','room_type','live_in'));
  59. }
  60. $pipe = $this->redis->multi();
  61. //主播获取ticket,发送人 获取积分
  62. $pipe->zIncrBy($this->user_contribution.$podcast_id,$num,$user_id);
  63. //$pipe->hIncrBy($this->user_db.$podcast_id,'ticket',$num);//del by chenfq 20160907 放数据库中
  64. if($video_id){
  65. $pipe->zIncrBy($this->video_contribution.$video_id,$num,$user_id);
  66. $pipe->hIncrBy($this->video_db.$video_id,'vote_number',$num);
  67. $pipe->zIncrBy($this->video_vote_number_db,$num,$video_id);
  68. }
  69. $replies = $pipe->exec();
  70. //$this->set_best($user_id,$podcast_id,$num);
  71. return $replies[0];
  72. }
  73. /*
  74. * 获取本视频主播当日最多贡献
  75. */
  76. public function get_video_contribute($video_id,$page,$page_size=20,$is_only_list = false){
  77. $root = array();
  78. if($page==0){
  79. $page = 1;
  80. }
  81. $root['page'] = $page;
  82. // $page_size=20;
  83. $start = ($page-1)*$page_size;
  84. $end = $page*$page_size-1;
  85. fanwe_require(APP_ROOT_PATH."mapi/lib/core/common.php");
  86. //获取主播当日印票贡献排行
  87. $table = createPropTable();
  88. $user_id= $this->redis->hGet($this->video_db.$video_id,'user_id');
  89. //$user_id= $GLOBALS['db']->getOne('select user_id from '.DB_PREFIX.'video where id='.$video_id);
  90. $m_config = load_auto_cache("m_config");//初始化手机端配置
  91. $rank_cache_time = intval($m_config['rank_day_user'])>300?intval($m_config['rank_day_user']):300;
  92. $param = array('user_id'=>$user_id,'table'=>$table,'page'=>$page,'page_size'=>$page_size,'cache_time'=>$rank_cache_time);
  93. $user_list = load_auto_cache("video_contribute",$param);
  94. $total_num = 0;
  95. foreach ($user_list as $k=>&$v){
  96. $v['num'] = intval($v['num']);
  97. $total_num += $v['num'];
  98. $v['head_image'] = get_spec_image($v['head_image']);
  99. }
  100. $root['list'] = $user_list;
  101. $root['total_ticket_num'] = $total_num;
  102. $root['user'] = $this->redis->hMGet($this->user_db.$user_id,array('nick_name','sex','head_image','ticket','user_level','v_type','v_icon'));
  103. $user = $root['user'];
  104. $root['user']['nick_name'] = $user['nick_name']?$user['nick_name']:$user_id;
  105. $root['user']['sex'] = $user['sex']?$user['sex']:0;
  106. $root['user']['ticket'] = intval($user['ticket'])?intval($user['ticket']):'';
  107. $root['user']['user_level'] = $user['user_level']?$user['user_level']:'1';
  108. $root['user']['v_type'] = $user['v_type']?$user['v_type']:'';
  109. $root['user']['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  110. $root['user']['user_id'] = $user_id;
  111. $root['user']['head_image'] = get_spec_image( $root['user']['head_image']);
  112. if($page == 0){
  113. $root['has_next'] = 0;
  114. }else{
  115. if((count($user_list)==$page_size) ){
  116. $root['has_next'] = 1;
  117. }else{
  118. $root['has_next'] = 0;
  119. }
  120. }
  121. $root['status'] = 1;
  122. return $root;
  123. }
  124. /*
  125. * 获取当前主播 最多贡献
  126. *
  127. */
  128. public function get_podcast_contribute($podcast_id,$page,$page_size=20,$is_only_list = false){
  129. $root = array();
  130. if($page==0){
  131. $page = 1;
  132. }
  133. $root['page'] = $page;
  134. //$page_size=20;
  135. $start = ($page-1)*$page_size;
  136. $end = $page*$page_size-1;
  137. $user_num_array = $this->redis->zRevRange($this->user_contribution.$podcast_id,$start,$end,true);
  138. $user_keys = array_keys($user_num_array);
  139. $user_list_array = $this->redis->hMGet($this->user_hash_db,$user_keys);
  140. $user_list = array();
  141. $root['total_num'] = intval($this->redis->zCard($this->user_contribution.$podcast_id));
  142. if(is_array($user_list_array)){
  143. foreach($user_list_array as $k=>$v){
  144. if($v){
  145. $user = json_decode($v,true);
  146. $user_con = array();
  147. $user_con['user_id'] = $k;
  148. $user_con['nick_name'] = $user['nick_name']?$user['nick_name']:'';
  149. $user_con['sex'] = $user['sex']?$user['sex']:'0';
  150. $user_con['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  151. $user_con['v_type'] = $user['v_type']?$user['v_type']:'';
  152. $user_con['user_level'] = $user['user_level']?$user['user_level']:'1';
  153. $user_con['head_image'] = get_spec_image($user['head_image']);
  154. $user_con['num'] = $user_num_array[$k];
  155. $user_con['use_ticket']=intval($user_num_array[$k]);
  156. $user_list[] = $user_con;
  157. }
  158. }
  159. }
  160. if($is_only_list){
  161. return $user_list;
  162. }
  163. $root['list'] = $user_list;
  164. $root['user'] = $this->redis->hMGet($this->user_db.$podcast_id,array('nick_name','sex','head_image','ticket','no_ticket','user_level','v_type','v_icon'));
  165. $user = $root['user'];
  166. $root['user']['sex'] = $user['sex']?$user['sex']:0;
  167. $root['user']['nick_name'] = $user['nick_name']?$user['nick_name']:$podcast_id;
  168. $root['user']['ticket'] = intval($user['ticket']+$user['no_ticket'])?intval($user['ticket']+$user['no_ticket']):'';
  169. $root['user']['user_level'] = $user['user_level']?$user['user_level']:'1';
  170. $root['user']['v_type'] = $user['v_type']?$user['v_type']:'';
  171. $root['user']['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  172. $root['user']['user_id'] = $podcast_id;
  173. $root['user']['head_image'] = get_spec_image( $root['user']['head_image']);
  174. if($page == 0){
  175. $root['has_next'] = 0;
  176. }else{
  177. if((count($user_num_array)==$page_size) ){
  178. $root['has_next'] = 1;
  179. }else{
  180. $root['has_next'] = 0;
  181. }
  182. }
  183. $root['rs_count']=count($user_num_array);
  184. $root['status'] = 1;
  185. return $root;
  186. }
  187. }//类定义结束
  188. ?>