prop_notify.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. function propNotify($sender,$ext,$prop) //礼物发送者信息,群组内消息数据,礼物信息
  3. {
  4. $all_success_flag = 1; //所有群组IM发送都成功的标志位,默认置1
  5. $user_id = $sender['user_id'];
  6. //定义广播消息相关内容
  7. $broadMsg = array();
  8. $broadMsg['type'] = 50; //IM的type
  9. $broadMsg['num'] = $ext['num']; //礼物数量
  10. $broadMsg['is_plus'] = $ext['is_plus']; //可以叠加显示多个
  11. $broadMsg['is_much'] = $ext['is_much']; //可以连续发送多个
  12. $broadMsg['room_id'] = $ext['room_id']; //房间号
  13. $broadMsg['app_plus_num'] = $ext['app_plus_num'];
  14. $broadMsg['app_plus_num'] = $ext['is_animated']; //动画类型
  15. $broadMsg['sender'] = $sender; //礼物发送者
  16. $broadMsg['prop_id'] = $ext['prop_id']; //礼物ID
  17. $broadMsg['icon'] = $ext['icon']; //礼物图标
  18. $broadMsg['to_user_id'] = $ext['to_user_id']; //接收礼物的主播ID
  19. $broadMsg['fonts_color'] = ""; //消息字体颜色
  20. $broadMsg['anim_type'] = $ext['anim_type']; //大型道具类型;
  21. $sender['nick_name'] = emoji_decode($sender['nick_name']);
  22. $broadMsg['desc'] = "豪气冲天的".$sender['nick_name']."送了".$prop['name']."给主播".$broadMsg['to_user_id'];//消息;
  23. #构造rest API请求包
  24. $msg_content = array();
  25. //创建$msg_content 所需元素
  26. $msg_content_elem = array(
  27. 'MsgType' => 'TIMCustomElem', //定义类型为普通文本型
  28. 'MsgContent' => array(
  29. 'Data' => json_encode($broadMsg) //转为JSON字符串
  30. )
  31. );
  32. //将创建的元素$msg_content_elem, 加入array $msg_content
  33. array_push($msg_content, $msg_content_elem);
  34. //引入IM API文件
  35. fanwe_require(APP_ROOT_PATH.'system/tim/TimApi.php');
  36. $tim_api = createTimAPI();
  37. //获取所有的群组ID
  38. $group_id_all = $GLOBALS['db']->getAll("SELECT id,group_id,live_in FROM ".DB_PREFIX."video",true,true);
  39. //向所有群组发送消息
  40. $ret = array(); //存放发送返回信息
  41. for ($i=0;$i<count($group_id_all);$i++)
  42. {
  43. /*if ($i==1) $group_id_all[$i]['group_id'] = 66666;//错误测试*/
  44. if( ($ext['room_id'] != $group_id_all[$i]['id']) && ($group_id_all[$i]['live_in']==1) ) //除了自己的房间外,其他的房间全部通告;且只对直播中的有效
  45. {
  46. $ret[] = $tim_api->group_send_group_msg2($user_id,$group_id_all[$i]['group_id'],$msg_content);
  47. $idx = 'group'.$i;
  48. $root[$idx] = $group_id_all[$i]['group_id'];
  49. }
  50. }
  51. //遍历群组发送情况,对其中发送失败的群组且错误码为10002的,自动重发一次
  52. for ($i=0;$i<count($ret);$i++)
  53. {
  54. if ($ret[$i]['ActionStatus'] == 'FAIL' && $ret[$i]['ErrorCode'] == 10002){
  55. //10002 系统错误,请再次尝试或联系技术客服。
  56. log_err_file(array(__FILE__,__LINE__,__METHOD__,$ret[$i]));
  57. /*if ($i==1) $group_id_all[$i]['group_id'] = 66666;//错误测试*/
  58. $ret[$i] = $tim_api->group_send_group_msg2($user_id, $group_id_arr[$i]['group_id'], $msg_content);
  59. $root['repeat_test'] = 1;
  60. }
  61. }
  62. //查看是否全部发送成功,对于没发送成功的情况进行回馈
  63. for ($i=0;$i<count($ret);$i++)
  64. {
  65. //定义对应信息的存放键值
  66. $err_info = 'error_notify'.$i;
  67. $status_info = 'status_notify'.$i;
  68. //出错的写入对应位置
  69. if ($ret[$i]['ActionStatus'] == 'FAIL'){
  70. $root[$err_info] = $ret[$i]['ErrorInfo'].":".$ret[$i]['ErrorCode'];
  71. $root[$status_info] = 0;
  72. $all_success_flag = 0;
  73. }
  74. }
  75. if ($all_success_flag)
  76. {
  77. $root['status_notify_all'] = 1;
  78. }
  79. else
  80. {
  81. $root['status_notify_all'] = 0;
  82. }
  83. //测试一个
  84. /*$group_id = $group_id_all[0]['group_id'];
  85. $ret = $tim_api->group_send_group_msg2($user_id,$group_id,$msg_content);
  86. if ($ret['ActionStatus'] == 'FAIL' && $ret[$i]['ErrorCode'] == 10002){
  87. //10002 系统错误,请再次尝试或联系技术客服。
  88. log_err_file(array(__FILE__,__LINE__,__METHOD__,$ret[$i]));
  89. $ret = $tim_api->group_send_group_msg2($user_id,$group_id,$msg_content);
  90. }
  91. if ($ret['ActionStatus'] == 'FAIL')
  92. {
  93. $root['error_notify'] = $ret['ErrorInfo'].":".$ret['ErrorCode'];
  94. $root['status_notify'] = 0;
  95. }
  96. else
  97. {
  98. $root['error_notify'] = '';
  99. $root['status_notify'] = 1;
  100. }*/
  101. /* $root['$user_id_notify'] = $user_id;
  102. $root['$group_id_notify'] = $group_id_all;*/
  103. /* $root['msg_notify'] = $msg_content;*/
  104. return $root;
  105. }