News.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <?php
  2. /**
  3. * 前端游戏控制器
  4. * Created by PhpStorm.
  5. * User: Administrator
  6. * Date: 2019/9/29
  7. * Time: 14:11
  8. */
  9. namespace app\home\controller;
  10. use app\common\model\News as NewsModel;
  11. use app\common\model\GameHome as GameModel;
  12. use think\Db;
  13. use think\Exception;
  14. use think\Config;
  15. class News extends Home
  16. {
  17. /**
  18. * 新闻列表
  19. */
  20. public function index() {
  21. $newsModel = new NewsModel;
  22. $where = [];
  23. $type = intval(input('type'));
  24. if(!$type) $type = 1;
  25. if($type){
  26. $where['a.type'] = $type;
  27. }
  28. //获取资讯分类列表
  29. $newsCatgList = model('News')->getCatgList();
  30. //查询参数
  31. $param = input('get.');
  32. $newsList = $newsModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))
  33. ->alias('a')
  34. ->join('cy_content b', 'a.id = b.id','left')
  35. ->field('a.id,a.title,a.image,a.jlink,a.create_time,a.total,a.zhiding,a.type,a.gameid,b.content')
  36. ->where(['a.type'=>['in','1,2,3,4,5'],'a.isdelete' => 0])
  37. ->where($where)
  38. ->order('a.zhiding desc,a.id desc')
  39. ->paginate(10, false, array('query' => $param))
  40. ->each(function ($item, $key){
  41. $item['image'] = getNewsImage($item['image']);
  42. $item['url'] = getNewsUrl($item['id'],$item['jlink']);
  43. $item['createtime'] = date('Y-m-d H:i:s',$item['create_time']);
  44. $item['cutcontent'] = getCutcontent($item['content']);
  45. return $item;
  46. });
  47. // var_dump($newsList);
  48. //获取新闻热点列表
  49. $position = model('News')->getPosition('新闻热点');
  50. $condition = array('a.position'=>array('like','%'.$position.'%'));
  51. // var_dump($condition);
  52. $hotNewsList = $newsModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))
  53. ->alias('a')
  54. ->join('cy_content b', 'a.id = b.id','left')
  55. ->field('a.id,a.title,a.image,a.jlink,a.create_time,a.total,a.zhiding,a.type,a.gameid,b.content')
  56. ->where(['a.type'=>['in','1,2,3,4,5'],'a.isdelete' => 0])
  57. ->where($condition)
  58. ->order('a.zhiding desc,a.create_time DESC')
  59. ->limit(6)
  60. ->select();
  61. foreach ( $hotNewsList as &$item ) {
  62. $item['image'] = getNewsImage($item['image']);
  63. $item['url'] = getNewsUrl($item['id'],$item['jlink']);
  64. }
  65. // var_dump($hotNewsList);
  66. //文章内页广告推荐
  67. $adList = Db::connect(config('database_slave'))->table('cy_ad')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->field('id,title,url,image')->where(['type'=>99])->order('sort asc,create_time asc')->limit(0,1)->select();
  68. foreach ( $adList as &$ad ) {
  69. $ad['image'] = getNewsImage($ad['image']);
  70. }
  71. // var_dump($adList);
  72. $this->assign('newsCatgList',$newsCatgList);
  73. $this->assign('hotNewsList',$hotNewsList);
  74. $this->assign('adList',$adList);
  75. $this->assign('list',$newsList);
  76. $this->assign('type',$type);
  77. if($type==1){
  78. $title = '新游资讯_手机游戏资讯_祈盟文化';
  79. }
  80. else if($type==2){
  81. $title = '祈盟文化资讯_手机游戏资讯_祈盟文化';
  82. }
  83. else if($type==3){
  84. $title = '新游评测_手机游戏资讯_祈盟文化';
  85. }
  86. else if($type==4){
  87. $title = '新游攻略_手机游戏资讯_祈盟文化';
  88. }
  89. else if($type==5){
  90. $title = '游戏视频_手机游戏资讯_祈盟文化';
  91. }
  92. else{
  93. $title = '新游资讯_手机游戏资讯_祈盟文化';
  94. }
  95. $seo['title'] = $title;
  96. $seo['keywords'] = '手机游戏资讯,手游新闻,手机游戏攻略,评测,视频';
  97. $seo['description'] = '祈盟文化资讯中心汇聚最热门的手机游戏资讯,最富有深度的手机游戏评测,最专业的手机游戏攻略,最精彩的手机游戏视频。';
  98. $this->assign('seo',$seo);
  99. $this->assign('page', $newsList->render());
  100. return $this->fetch();
  101. }
  102. /**
  103. * 新闻详情
  104. */
  105. public function detail() {
  106. $newsModel = new NewsModel;
  107. $newsid = intval(input('id'));
  108. if(!$newsid) {
  109. // throw new Exception("资讯不存在");
  110. $this->_abort404();
  111. }
  112. $detail =$newsModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))
  113. ->alias('a')
  114. ->join('cy_content b', 'a.id = b.id','left')
  115. ->field('a.id,a.title,a.image,a.jlink,a.create_time,a.total,a.zhiding,a.type,a.gameid,b.content')
  116. ->where(['a.id'=>$newsid,'a.isdelete' => 0])
  117. ->find();
  118. if ( empty($detail)) {
  119. // throw new Exception("资讯不存在或无效");
  120. $this->_abort404();
  121. }
  122. else{
  123. $detail['image'] = getNewsImage($detail['image']);
  124. $detail['url'] = getNewsUrl($detail['id'],$detail['jlink']);
  125. $detail['createdate'] = date('Y-m-d',$detail['create_time']);
  126. $detail['createtime'] = date('H:i:s',$detail['create_time']);
  127. $detail['cutcontent'] = getCutcontent($detail['content']);
  128. }
  129. //类型是“活动(后台)”、“更新(后台)”、“新闻(后台)”、“充值活动(后台)”,则当前页直接跳转至404
  130. if(in_array($detail['type'],[6,7,8,9])){
  131. // throw new Exception("无权查看该新闻");
  132. $this->_abort404();
  133. }
  134. //获取相关资讯列表&游戏信息
  135. $relNewsList = $relGameInfo = array();
  136. if(intval($detail['gameid'])){
  137. $relNewsList = $newsModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))
  138. ->alias('a')
  139. ->join('cy_content b', 'a.id = b.id','left')
  140. ->field('a.id,a.title,a.image,a.jlink,a.create_time,a.total,a.zhiding,a.type,a.gameid,b.content')
  141. ->where(['a.gameid'=>intval($detail['gameid']),'a.id'=>array('neq',$newsid),'a.type'=>['in','1,2,3,4,5'],'a.isdelete' => 0])
  142. ->order('a.create_time desc,a.id DESC')
  143. ->limit(10)
  144. ->select();
  145. foreach ( $relNewsList as &$item ) {
  146. $item['url'] = getNewsUrl($item['id'],$item['jlink']);
  147. }
  148. $gameModel = new GameModel;
  149. $relGameInfo = $gameModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))
  150. ->alias('game')
  151. ->join('cy_gameinfo info', 'game.id = info.game_id','left')
  152. ->join('cy_gametype t', 'game.type = t.id','left')
  153. ->join('cy_gamesubject s', 'game.subject = s.id','left')
  154. ->join('cy_sdkgamelist sdk', 'game.id=sdk.gameid and sdk.package_type=0 and sdk.upload_status=1 and sdk.channel_id='.MEMBER_DEFAULT_CHANNEL_ID,'left')
  155. ->field('game.id,game.nickname,game.power,info.androidurl,info.platform,game.pinyin,info.mobileicon,game.type,game.subject,info.developer,info.bigimage,t.name as typename,s.name as subjectname,sdk.filename')
  156. ->where(['game.id'=>intval($detail['gameid']),'game.cooperation_status' => ['in','1,2'],'game.is_show' => 1])
  157. ->find();
  158. if (!empty($relGameInfo)) {
  159. $relGameInfo['icon'] = getGameIcon($relGameInfo['mobileicon']);
  160. $relGameInfo['size'] = getSize($relGameInfo);
  161. $relGameInfo['version'] = getVersion($relGameInfo);
  162. $relGameInfo['download'] = getDownload($relGameInfo);
  163. $relGameInfo['typename'] = getTypename($relGameInfo['typename']);
  164. $relGameInfo['subjectname'] = getSubjectname($relGameInfo['subjectname']);
  165. }
  166. // var_dump($relGameInfo);
  167. }
  168. //获取新闻热点列表
  169. $position = model('News')->getPosition('新闻热点');
  170. $condition = array('a.position'=>array('like','%'.$position.'%'));
  171. // var_dump($condition);
  172. $hotNewsList = $newsModel->cache(Config::get('QUERY_RESULT_CACHE_TIME'))
  173. ->alias('a')
  174. ->join('cy_content b', 'a.id = b.id','left')
  175. ->field('a.id,a.title,a.image,a.jlink,a.create_time,a.total,a.zhiding,a.type,a.gameid,b.content')
  176. ->where(['a.id'=>array('neq',$newsid),'a.type'=>['in','1,2,3,4,5'],'a.isdelete' => 0])
  177. ->where($condition)
  178. ->order('a.zhiding desc,a.create_time DESC')
  179. ->limit(6)
  180. ->select();
  181. foreach ( $hotNewsList as &$item ) {
  182. $item['image'] = getNewsImage($item['image']);
  183. $item['url'] = getNewsUrl($item['id'],$item['jlink']);
  184. }
  185. // var_dump($hotNewsList);
  186. //文章内页广告推荐
  187. $adList = Db::connect(config('database_slave'))->table('cy_ad')->cache(Config::get('QUERY_RESULT_CACHE_TIME'))->field('id,title,url,image')->where(['type'=>99])->order('sort asc,create_time asc')->limit(0,1)->select();
  188. foreach ( $adList as &$ad ) {
  189. // $ad['url'] = preg_match("/^http(s)?:\\/\\/.+/",$ad['url']) ? $ad['url'] : 'http://' . $ad['url'];
  190. $ad['image'] = getNewsImage($ad['image']);
  191. }
  192. // var_dump($adList);
  193. $this->assign('detail',$detail);
  194. $this->assign('relNewsList',$relNewsList);
  195. $this->assign('hotNewsList',$hotNewsList);
  196. $this->assign('relGameInfo',$relGameInfo);
  197. if($relGameInfo){
  198. $seo['title'] = $detail['title'].'_'.$relGameInfo['nickname'].'_祈盟文化';
  199. $seo['keywords'] = $relGameInfo['nickname'].'、'.$relGameInfo['nickname'].'资讯、'.$detail['title'];
  200. }
  201. else{
  202. $seo['title'] = $detail['title'].'_祈盟文化';
  203. $seo['keywords'] = $detail['title'];
  204. }
  205. $seo['description'] = $detail['cutcontent'];
  206. $this->assign('seo',$seo);
  207. $this->assign('adList',$adList);
  208. return $this->fetch();
  209. }
  210. }