index.action.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387
  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 indexModule extends baseModule
  10. {
  11. /**
  12. * 热门页面接口
  13. */
  14. public function index()
  15. {
  16. $root = array();
  17. $sex = intval($_REQUEST['sex']);//性别 0:全部, 1-男,2-女
  18. $cate_id = intval($_REQUEST['cate_id']);//话题id
  19. $city = strim($_REQUEST['city']);//城市(空为:热门)
  20. if($city=='热门' || $city=='null'){
  21. $city = '';
  22. }
  23. if ($cate_id ==0){
  24. //首页 轮播
  25. $root['banner'] = load_auto_cache("banner_list");
  26. if($root['banner']==false){
  27. $root['banner'] = array();
  28. }
  29. }else{
  30. //主题相关内容
  31. $cate = load_auto_cache("cate_id",array('id'=>$cate_id));
  32. if ($cate['url'] != '' && $cate['image'] != ''){
  33. $root['banner'] = $cate['banner'];
  34. $root['cate'] = $cate;
  35. }
  36. }
  37. $root['sex'] = $sex;//
  38. $root['cate_id'] = $cate_id;//
  39. $root['city'] = $city;//
  40. $m_config = load_auto_cache("m_config");//初始化手机端配置
  41. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  42. $dev_type = strim($_REQUEST['sdk_type']);
  43. if($dev_type == 'ios' && $m_config['ios_check_version'] != '' && $m_config['ios_check_version'] == $sdk_version_name){
  44. $list = $this->check_video_list("select_video_check",array('sex_type'=>$sex,'area_type'=>$city,'cate_id'=>$cate_id));
  45. }else{
  46. $list = load_auto_cache("select_video",array('sex_type'=>$sex,'area_type'=>$city,'cate_id'=>$cate_id));
  47. }
  48. if (defined('SHOW_IS_GAMING') && SHOW_IS_GAMING) {
  49. fanwe_require(APP_ROOT_PATH . 'mapi/lib/redis/VideoRedisService.php');
  50. fanwe_require(APP_ROOT_PATH . 'mapi/lib/redis/GamesRedisService.php');
  51. $video_redis = new VideoRedisService();
  52. $redis = new GamesRedisService();
  53. foreach ($list as $key => $value) {
  54. $video_id = intval($value['room_id']);
  55. $live_in = $video_redis->getOne_db($video_id, 'live_in') == 1;
  56. $game_log_id = $video_redis->getOne_db($video_id, 'game_log_id');
  57. $list[$key]['is_gaming'] = ($game_log_id && $live_in) ? 1 : 0;
  58. $game_name = '';
  59. if ($game_log_id) {
  60. $game = $redis->get($game_log_id,'game_id');
  61. $game_name = $GLOBALS['db']->getOne("select name from " . DB_PREFIX . "games where id = " . $game['game_id']);
  62. }
  63. $list[$key]['game_name'] = $game_name;
  64. }
  65. }
  66. $root['list'] = $list;
  67. $root['status'] = 1;
  68. $root['has_next'] = 0;
  69. $root['page'] = 1;//
  70. $root['init_version'] = intval($m_config['init_version']);//手机端配置版本号
  71. ajax_return($root);
  72. }
  73. /**
  74. * 最新 &&附近的人
  75. */
  76. public function new_video(){
  77. $root = array();
  78. $root['cate_top'] = load_auto_cache("cate_top");
  79. $m_config = load_auto_cache("m_config");//初始化手机端配置
  80. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  81. $dev_type = strim($_REQUEST['sdk_type']);
  82. if($dev_type == 'ios' && $m_config['ios_check_version'] != '' && $m_config['ios_check_version'] == $sdk_version_name){
  83. $list = $this->check_video_list("new_video_check");
  84. }else{
  85. $list = load_auto_cache("new_video");
  86. }
  87. $root['list'] = $list;
  88. $root['status'] = 1;
  89. $root['has_next'] = 0;
  90. $root['page'] = 1;//
  91. $root['init_version'] = intval($m_config['init_version']);//手机端配置版本号
  92. ajax_return($root);
  93. }
  94. /**
  95. * PC端附近的人
  96. */
  97. public function new_pc_video(){
  98. $m_config = load_auto_cache("m_config");//初始化手机端配置
  99. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  100. $dev_type = strim($_REQUEST['sdk_type']);
  101. if($dev_type == 'ios' && $m_config['ios_check_version'] != '' && $m_config['ios_check_version'] == $sdk_version_name){
  102. $list = $this->check_video_list("new_video_check", array('create_type' => 1));
  103. }else{
  104. $list = load_auto_cache("new_video", array('create_type' => 1));
  105. }
  106. $root = array();
  107. $root['list'] = $list;
  108. $root['status'] = 1;
  109. $root['has_next'] = 0;
  110. $root['page'] = 1;//
  111. ajax_return($root);
  112. }
  113. /**
  114. * 我关注的主播 直播
  115. */
  116. public function focus_video(){
  117. $root['page_title'] = '关注';
  118. //$GLOBALS['user_info']['id'] = 320;
  119. if(!$GLOBALS['user_info']){
  120. $root['error'] = "用户未登陆,请先登陆.";
  121. $root['status'] = 0;
  122. $root['user_login_status'] = 0;
  123. }else{
  124. //关注
  125. $user_id = intval($GLOBALS['user_info']['id']);//登录用户id
  126. fanwe_require(APP_ROOT_PATH.'mapi/lib/redis/UserFollwRedisService.php');
  127. $userfollw_redis = new UserFollwRedisService($user_id);
  128. $user_list = $userfollw_redis->following();
  129. //私密直播 video_private,私密直播结束后, 本表会清空
  130. fanwe_require(APP_ROOT_PATH.'mapi/lib/redis/VideoPrivateRedisService.php');
  131. $video_private_redis = new VideoPrivateRedisService();
  132. $private_list = $video_private_redis->get_video_list($user_id);
  133. $list = array();
  134. if(sizeof($private_list) || sizeof($user_list)){
  135. $m_config = load_auto_cache("m_config");//初始化手机端配置
  136. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  137. $dev_type = strim($_REQUEST['sdk_type']);
  138. if($dev_type == 'ios' && $m_config['ios_check_version'] != '' && $m_config['ios_check_version'] == $sdk_version_name){
  139. $list_all = load_auto_cache("select_video_check",array('has_private'=>1));
  140. }else{
  141. $list_all = load_auto_cache("select_video",array('has_private'=>1));
  142. }
  143. foreach($list_all as $k=>$v){
  144. if ((($v['room_type'] == 1 && in_array($v['room_id'], $private_list)) || ($v['room_type'] == 3 && in_array($v['user_id'], $user_list)))&&($v['user_id']!='13888888888'||$v['user_id']!='13999999999')) {
  145. $list[] = $v;
  146. }else if($v['user_id']==$user_id&&$v['room_type']==1&&$v['live_in']==1){
  147. $user_video = array();
  148. $user_video = $v;
  149. }
  150. }
  151. }
  152. if($user_video){
  153. array_unshift($list,$user_video);
  154. }
  155. $root['list'] = $list;
  156. $playback = load_auto_cache("playback_list",array('user_id'=>$user_id));
  157. foreach ($playback as $k => $v) {
  158. $playback[$k]['nick_name'] = emoji_decode($v['nick_name']);
  159. }
  160. $root['playback'] = $playback;
  161. $root['status'] = 1;
  162. }
  163. ajax_return($root);
  164. }
  165. /**
  166. * 查询话题列表
  167. */
  168. function search_video_cate(){
  169. $page = intval($_REQUEST['p']);//取第几页数据
  170. $title = strim($_REQUEST['title']);
  171. if($page==0){
  172. $page = 1;
  173. }
  174. $page_size=50;
  175. $limit = (($page-1)*$page_size).",".$page_size;
  176. if ($title){
  177. $sql = "select vc.id as cate_id,vc.title,vc.num from ".DB_PREFIX."video_cate as vc
  178. where vc.is_effect = 1 and vc.title like '%".$title."%' order by vc.sort desc, vc.num desc limit ".$limit;
  179. }else{
  180. $sql = "select vc.id as cate_id,vc.title,vc.num from ".DB_PREFIX."video_cate as vc
  181. where vc.is_effect = 1 order by vc.sort desc, vc.num desc limit ".$limit;
  182. }
  183. //查询话题列表,修改成 从只读数据库中取,但不是高效做法;主并发时,可以加入阿里云的搜索服务
  184. //https://www.aliyun.com/product/opensearch?spm=5176.8142029.388261.62.tgDxhe
  185. $list = $GLOBALS['db']->getAll($sql,true,true);
  186. foreach($list as $k=>$v){
  187. $list[$k]['title'] ="#".$v['title']."#";
  188. }
  189. if($page==0){
  190. $root['has_next'] = 0;
  191. }else{
  192. if (count($list) == $page_size)
  193. $root['has_next'] = 1;
  194. else
  195. $root['has_next'] = 0;
  196. }
  197. $root['page'] = $page;//
  198. $root['list'] =$list;
  199. $root['status'] =1;
  200. ajax_return($root);
  201. }
  202. //按地区(省份)
  203. //0:全部;1:男;2:女
  204. function search_area(){
  205. $sex = intval($_REQUEST['sex']);//性别 0:全部, 1-男,2-女
  206. $list = load_auto_cache("sex_area",array('sex'=>$sex));
  207. $root = array();
  208. $root['list'] = $list;
  209. $root['status'] = 1;
  210. $root['total_num'] = count($list);
  211. ajax_return($root);
  212. }
  213. /**
  214. * IOS 审核版本读取
  215. * @param string $type
  216. * @param array $date
  217. * @return mixed|string
  218. */
  219. function check_video_list($type='',$date=array()){
  220. $list = '';
  221. if($type!=''){
  222. if($type=='new_video_check'){
  223. $list = load_auto_cache("new_video_check");
  224. }else{
  225. $list = load_auto_cache("select_video_check",$date);
  226. }
  227. }
  228. return $list;
  229. }
  230. /**
  231. * 分类
  232. */
  233. public function classify()
  234. {
  235. $root = array();
  236. $m_config = load_auto_cache("m_config");//初始化手机端配置
  237. $sdk_version_name = strim($_REQUEST['sdk_version_name']);
  238. $dev_type = strim($_REQUEST['sdk_type']);
  239. $classified_id = intval($_REQUEST['classified_id']);
  240. if(!$classified_id){
  241. $classified_id = 1;
  242. }
  243. if($dev_type == 'ios' && $m_config['ios_check_version'] != '' && $m_config['ios_check_version'] == $sdk_version_name){
  244. $list = $this->check_video_list("select_video_check",array('is_classify'=>$classified_id));
  245. }else {
  246. $list = load_auto_cache("select_video", array('is_classify' => $classified_id));
  247. }
  248. $root['list'] = $list;
  249. $root['status'] = 1;
  250. $root['has_next'] = 0;
  251. $root['page'] = 1;//
  252. $root['init_version'] = intval($m_config['init_version']);//手机端配置版本号
  253. ajax_return($root);
  254. }
  255. /**
  256. * 公会列表的显示
  257. */
  258. function society(){
  259. $root = array();
  260. if(!$GLOBALS['user_info']){
  261. $root['error'] = "用户未登陆,请先登陆.";
  262. $root['status'] = 0;
  263. }else{
  264. $user_id = intval($GLOBALS['user_info']['id']);//登录用户id
  265. //获取用户的公会ID
  266. $sql3 = "select society_id from ".DB_PREFIX."user where id=".$user_id.";";
  267. $res3 = $GLOBALS['db']->getOne($sql3);
  268. $root['error'] = "";
  269. $root['status'] = 1;
  270. //模糊查询
  271. $society_filtrate = $_REQUEST['society_filtrate']?$_REQUEST['society_filtrate']:0;
  272. $where = "s.status=1";
  273. if($society_filtrate){
  274. $where .= " and (s.id like '%".$society_filtrate."%' or s.name like '%".$society_filtrate."%')";
  275. }
  276. //分页
  277. $page = $_REQUEST['page']?$_REQUEST['page']:1;//当前页
  278. if($page!=null){
  279. $page_size = 20;//分页数量
  280. //获取总条数
  281. $sql1 = "select count(*) from ".DB_PREFIX."society s where ".$where;
  282. $res1 = intval($GLOBALS['db']->getOne($sql1));
  283. //总页数
  284. $page_total = ceil($res1/$page_size);
  285. //分页
  286. $limit = (($page - 1) * $page_size) . "," . $page_size;
  287. $sql = "select s.id,s.logo,s.name,s.user_count,s.status,u.nick_name,u.id as uid from ".DB_PREFIX."society s inner join ".DB_PREFIX."user u on s.user_id=u.id where ".$where." order by s.society_rank desc,s.create_time desc limit ". $limit.";";
  288. $res = $GLOBALS['db']->getAll($sql);
  289. if(empty($res)){
  290. $root['error'] = "暂无公会可以显示";
  291. }else {
  292. foreach ($res as $key=>$val){
  293. if($user_id == $val['uid']){//会长
  294. $root['list'][$key]['type'] = 1;
  295. }elseif($res3 == $val['id']){
  296. $sql2 = "select id from ".DB_PREFIX."society_apply where user_id=".$user_id." and society_id=".$val['id']." and apply_type=1;";
  297. $res2 = $GLOBALS['db']->getOne($sql2);
  298. if(empty($res2)){//会员
  299. $root['list'][$key]['type'] = 0;
  300. }else{//申请退出公会人员
  301. $root['list'][$key]['type'] = 5;
  302. }
  303. }else{
  304. if($res3 != 0 && $res3 != $val['id']){//其他公会成员
  305. $root['list'][$key]['type'] = 2;
  306. }else{
  307. $sql4 = "select id from ".DB_PREFIX."society_apply where user_id=".$user_id." and society_id=".$val['id']." and apply_type=0;";
  308. $res4 = $GLOBALS['db']->getOne($sql4);
  309. if(empty($res4)){//无公会人员
  310. $root['list'][$key]['type'] = 3;
  311. }else{//申请入会人员
  312. $root['list'][$key]['type'] = 4;
  313. }
  314. }
  315. }
  316. $root['list'][$key]['society_id'] = intval($val['id']);
  317. $root['list'][$key]['society_image'] = get_spec_image($val['logo']);
  318. $root['list'][$key]['society_name'] = $val['name'];
  319. $root['list'][$key]['society_user_count'] = intval($val['user_count']);
  320. $root['list'][$key]['society_chairman'] = emoji_decode($val['nick_name']);
  321. $root['list'][$key]['gh_status'] = intval($val['status']);
  322. }
  323. $has_next = ($res1 > $page * $page_size) ? '1' : '0';//是否有下一页
  324. $root['page'] = array('page'=>$page,'page_total'=>$page_total,'has_next' => $has_next);
  325. }
  326. }else{
  327. $root['error'] = "当前页接收出现问题";
  328. $root['status'] = 0;
  329. }
  330. }
  331. ajax_return($root);
  332. }
  333. }
  334. ?>