WeiboContributionRedisService.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  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 WeiboContributionRedisService extends BaseRedisService
  10. {
  11. var $user_weibo_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_weibo_contribution = $this->prefix.'user_weibo_contribution:';
  26. $this->user_hash_db = $this->prefix.'user_hash_db';
  27. }
  28. /*
  29. * 添加
  30. * $video_id 为0时候,是直接发送礼物
  31. */
  32. public function insert_db($user_id,$podcast_id,$num){
  33. $data = array();
  34. $pipe = $this->redis->multi();
  35. //主播获取ticket,发送人 获取积分
  36. $pipe->zIncrBy($this->user_weibo_contribution.$podcast_id,$num,$user_id);
  37. $replies = $pipe->exec();
  38. return $replies[0];
  39. }
  40. /*
  41. * 获取当前主播 最多贡献
  42. *
  43. */
  44. public function get_podcast_contribute($podcast_id,$page,$page_size=20,$is_only_list = false){
  45. $root = array();
  46. if($page==0){
  47. $page = 1;
  48. }
  49. $root['page'] = $page;
  50. //$page_size=20;
  51. $start = ($page-1)*$page_size;
  52. $end = $page*$page_size-1;
  53. $user_num_array = $this->redis->zRevRange($this->user_weibo_contribution.$podcast_id,$start,$end,true);
  54. $user_keys = array_keys($user_num_array);
  55. $user_list_array = $this->redis->hMGet($this->user_hash_db,$user_keys);
  56. $user_list = array();
  57. $level_list = $GLOBALS['db']->getAll("select * from ".DB_PREFIX."user_level");
  58. $level_list_array =array();
  59. foreach($level_list as $k=>$v){
  60. if($v['level']){
  61. $level_list_array[$v['level']] = get_spec_image($v['icon'],200,200,1);
  62. }
  63. }
  64. $root['total_num'] = intval($this->redis->zCard($this->user_contribution.$podcast_id));
  65. if(is_array($user_list_array)){
  66. foreach($user_list_array as $k=>$v){
  67. if($v){
  68. $user = json_decode($v,true);
  69. $user_con = array();
  70. $user_con['user_id'] = $k;
  71. $user_con['nick_name'] = $user['nick_name']?$user['nick_name']:'';
  72. $user_con['sex'] = $user['sex']?$user['sex']:'0';
  73. $user_con['is_authentication'] = $user['is_authentication']?$user['is_authentication']:'0';
  74. $user_con['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  75. $user_con['v_type'] = $user['v_type']?$user['v_type']:'';
  76. $user_con['user_level'] = $user['user_level']?$user['user_level']:'1';
  77. $user_con['head_image'] = get_spec_image($user['head_image']);
  78. $user_con['num'] = $user_num_array[$k];
  79. $user_con['use_ticket']=intval($user_num_array[$k]);
  80. $user_con['use_money']=intval($user_num_array[$k]);
  81. $user_con['user_level_img'] = $level_list_array[$user_con['user_level']];
  82. $user_list[] = $user_con;
  83. }
  84. }
  85. }
  86. if($is_only_list){
  87. return $user_list;
  88. }
  89. $root['list'] = $user_list;
  90. $root['user'] = $this->redis->hMGet($this->user_db.$podcast_id,array('nick_name','sex','head_image','ticket','user_level','v_type','v_icon'));
  91. $user = $root['user'];
  92. $root['user']['sex'] = $user['sex']?$user['sex']:0;
  93. $root['user']['nick_name'] = $user['nick_name']?$user['nick_name']:$podcast_id;
  94. $root['user']['ticket'] = intval($user['ticket'])?intval($user['ticket']):'';
  95. $root['user']['user_level'] = $user['user_level']?$user['user_level']:'1';
  96. $root['user']['v_type'] = $user['v_type']?$user['v_type']:'';
  97. $root['user']['v_icon'] = $user['v_icon']?$user['v_icon']:'';
  98. $root['user']['user_id'] = $podcast_id;
  99. $root['user']['head_image'] = get_spec_image( $root['user']['head_image']);
  100. if($page == 0){
  101. $root['has_next'] = 0;
  102. }else{
  103. if((count($user_num_array)==$page_size) ){
  104. $root['has_next'] = 1;
  105. }else{
  106. $root['has_next'] = 0;
  107. }
  108. }
  109. $root['rs_count']=count($user_num_array);
  110. $root['status'] = 1;
  111. return $root;
  112. }
  113. //分销功能
  114. public function distribution_calculate($user_id, $total_weibo_money,$memo)
  115. {
  116. $root = array();
  117. $m_config = load_auto_cache("m_config");//初始化手机端配置
  118. $table = DB_PREFIX . 'weibo_distribution_log';
  119. // fanwe_require(APP_ROOT_PATH . 'mapi/lib/redis/UserRedisService.php');
  120. // $user_redis = new UserRedisService();
  121. // $to_user_id = $user_redis->getOne_db($user_id, 'p_user_id');
  122. $to_user_id = $GLOBALS['db']->getOne("select p_user_id from ".DB_PREFIX."user where id = ".$user_id);
  123. if (intval($to_user_id) > 0 && intval($m_config['distribution']) == 1 && $user_id > 0 && $total_weibo_money > 0) {
  124. $weibo_money = $m_config['distribution_rate'] * 0.01 * $total_weibo_money;
  125. //插入:分销日志
  126. $video_prop = array();
  127. $video_prop['from_user_id'] = $user_id;
  128. $video_prop['to_user_id'] = $to_user_id;
  129. $video_prop['create_date'] = "'" . to_date(NOW_TIME, 'Y-m-d') . "'";
  130. $video_prop['weibo_money'] = $weibo_money;
  131. $video_prop['create_time'] = NOW_TIME;
  132. $video_prop['create_ym'] = to_date($video_prop['create_time'], 'Ym');
  133. $video_prop['create_d'] = to_date($video_prop['create_time'], 'd');
  134. $video_prop['create_w'] = to_date($video_prop['create_time'], 'W');
  135. $video_prop['memo'] = strim($memo);
  136. $result = $GLOBALS['db']->autoExecute($table,$video_prop,'INSERT');
  137. if (intval($result) > 0) {
  138. $sql = "update " . DB_PREFIX . "user set weibo_money = weibo_money + " . $weibo_money . " where id = " . $to_user_id;
  139. $GLOBALS['db']->query($sql);
  140. }
  141. }
  142. }
  143. }//类定义结束
  144. ?>