VideoContributionRedisService.php.bak 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  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. $m_config = load_auto_cache("m_config");//初始化手机端配置
  90. $rank_cache_time = intval($m_config['rank_day_user'])>300?intval($m_config['rank_day_user']):300;
  91. $param = array('user_id'=>$user_id,'table'=>$table,'page'=>$page,'page_size'=>$page_size,'cache_time'=>$rank_cache_time);
  92. $user_list = load_auto_cache("video_contribute",$param);
  93. $total_num = 0;
  94. foreach ($user_list as $k=>&$v){
  95. $v['num'] = intval($v['num']);
  96. $total_num += $v['num'];
  97. $v['head_image'] = get_spec_image($v['head_image']);
  98. }
  99. // $user_num_array = $this->redis->zRevRange($this->video_contribution.$video_id,$start,$end,true);
  100. // $user_keys = array_keys($user_num_array);
  101. // $user_list_array = $this->redis->hMGet($this->user_hash_db,$user_keys);
  102. // $user_list = array();
  103. // $root['total_num'] = intval($this->redis->zCard($this->video_contribution.$video_id));;
  104. // if(is_array($user_list_array)){
  105. // foreach($user_list_array as $k=>$v){
  106. // if($v){
  107. // $user = json_decode($v,true);
  108. // $user_con = array();
  109. // $user_con['user_id'] = $k;
  110. // $user_con['nick_name'] = $user['nick_name']?$user['nick_name']:'';
  111. // $user_con['sex'] = $user['sex']?$user['sex']:'0';
  112. // //$user_con['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  113. // //$user_con['v_type'] = $user['v_type']?$user['v_type']:'';
  114. // $user_con['user_level'] = $user['user_level']?$user['user_level']:'1';
  115. // $user_con['head_image'] = get_spec_image($user['head_image']);
  116. // $user_con['num'] = $user_num_array[$k];
  117. // $user_list[] = $user_con;
  118. // }
  119. //
  120. // }
  121. // }
  122. // $root['total_ticket_num'] = $this->redis->zScore($this->video_vote_number_db,$video_id);
  123. // $root['total_ticket_num'] = intval($root['total_ticket_num']);
  124. // if($is_only_list){
  125. // return $user_list;
  126. // }
  127. $root['list'] = $user_list;
  128. $root['total_ticket_num'] = $total_num;
  129. $root['user'] = $this->redis->hMGet($this->user_db.$user_id,array('nick_name','sex','head_image','ticket','user_level','v_type','v_icon'));
  130. $user = $root['user'];
  131. $root['user']['nick_name'] = $user['nick_name']?$user['nick_name']:$user_id;
  132. $root['user']['sex'] = $user['sex']?$user['sex']:0;
  133. $root['user']['ticket'] = intval($user['ticket'])?intval($user['ticket']):'';
  134. $root['user']['user_level'] = $user['user_level']?$user['user_level']:'1';
  135. $root['user']['v_type'] = $user['v_type']?$user['v_type']:'';
  136. $root['user']['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  137. $root['user']['user_id'] = $user_id;
  138. $root['user']['head_image'] = get_spec_image( $root['user']['head_image']);
  139. if($page == 0){
  140. $root['has_next'] = 0;
  141. }else{
  142. if((count($user_list)==$page_size) ){
  143. $root['has_next'] = 1;
  144. }else{
  145. $root['has_next'] = 0;
  146. }
  147. }
  148. $root['status'] = 1;
  149. return $root;
  150. }
  151. /*
  152. * 获取当前主播 最多贡献
  153. *
  154. */
  155. public function get_podcast_contribute($podcast_id,$page,$page_size=20,$is_only_list = false){
  156. $root = array();
  157. if($page==0){
  158. $page = 1;
  159. }
  160. $root['page'] = $page;
  161. //$page_size=20;
  162. $start = ($page-1)*$page_size;
  163. $end = $page*$page_size-1;
  164. $user_num_array = $this->redis->zRevRange($this->user_contribution.$podcast_id,$start,$end,true);
  165. $user_keys = array_keys($user_num_array);
  166. $user_list_array = $this->redis->hMGet($this->user_hash_db,$user_keys);
  167. $user_list = array();
  168. $root['total_num'] = intval($this->redis->zCard($this->user_contribution.$podcast_id));
  169. if(is_array($user_list_array)){
  170. foreach($user_list_array as $k=>$v){
  171. if($v){
  172. $user = json_decode($v,true);
  173. $user_con = array();
  174. $user_con['user_id'] = $k;
  175. $user_con['nick_name'] = $user['nick_name']?$user['nick_name']:'';
  176. $user_con['sex'] = $user['sex']?$user['sex']:'0';
  177. $user_con['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  178. $user_con['v_type'] = $user['v_type']?$user['v_type']:'';
  179. $user_con['user_level'] = $user['user_level']?$user['user_level']:'1';
  180. $user_con['head_image'] = get_spec_image($user['head_image']);
  181. $user_con['num'] = $user_num_array[$k];
  182. $user_con['use_ticket']=intval($user_num_array[$k]);
  183. $user_list[] = $user_con;
  184. }
  185. }
  186. }
  187. if($is_only_list){
  188. return $user_list;
  189. }
  190. $root['list'] = $user_list;
  191. $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'));
  192. $user = $root['user'];
  193. $root['user']['sex'] = $user['sex']?$user['sex']:0;
  194. $root['user']['nick_name'] = $user['nick_name']?$user['nick_name']:$podcast_id;
  195. $root['user']['ticket'] = intval($user['ticket']+$user['no_ticket'])?intval($user['ticket']+$user['no_ticket']):'';
  196. $root['user']['user_level'] = $user['user_level']?$user['user_level']:'1';
  197. $root['user']['v_type'] = $user['v_type']?$user['v_type']:'';
  198. $root['user']['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  199. $root['user']['user_id'] = $podcast_id;
  200. $root['user']['head_image'] = get_spec_image( $root['user']['head_image']);
  201. if($page == 0){
  202. $root['has_next'] = 0;
  203. }else{
  204. if((count($user_num_array)==$page_size) ){
  205. $root['has_next'] = 1;
  206. }else{
  207. $root['has_next'] = 0;
  208. }
  209. }
  210. $root['rs_count']=count($user_num_array);
  211. $root['status'] = 1;
  212. return $root;
  213. }
  214. }//类定义结束
  215. ?>