AdvertController.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668
  1. <?php
  2. /**
  3. * 广告位
  4. */
  5. namespace app\admin\controller;
  6. use cmf\controller\AdminBaseController;
  7. use think\facade\Db;
  8. use think\db\Query;
  9. class AdvertController extends AdminbaseController {
  10. /*广告列表*/
  11. public function index(){
  12. $p = $this->request->param('p');
  13. if(!$p){
  14. $p=1;
  15. }
  16. $lists = Db::name('user_video')
  17. ->where(function (Query $query) {
  18. $data = $this->request->param();
  19. $query->where('is_ad', '1');
  20. $query->where('isdel', '0');
  21. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  22. if (!empty($keyword)) {
  23. $query->where('uid|id', '=' , $keyword);
  24. }
  25. $keyword1=isset($data['keyword1']) ? $data['keyword1']: '';
  26. if (!empty($keyword1)) {
  27. $query->where('title', 'like', "%$keyword1%");
  28. }
  29. $keyword2=isset($data['keyword2']) ? $data['keyword2']: '';
  30. if (!empty($keyword2)) {
  31. $userlist =Db::name("user")->field("id")
  32. ->where("user_nickname like '%".$keyword2."%'")
  33. ->select();
  34. $strids="";
  35. foreach($userlist as $ku=>$vu){
  36. if($strids==""){
  37. $strids=$vu['id'];
  38. }else{
  39. $strids.=",".$vu['id'];
  40. }
  41. }
  42. $query->where('uid', 'in', $strids);
  43. }
  44. })
  45. ->order("orderno desc,addtime DESC")
  46. ->paginate(20);
  47. $lists->each(function($v,$k){
  48. if($v['uid']==0){
  49. $userinfo=array(
  50. 'user_nickname'=>'系统管理员'
  51. );
  52. }else{
  53. $userinfo=getUserInfo($v['uid']);
  54. if(!$userinfo){
  55. $userinfo=array(
  56. 'user_nickname'=>'已删除'
  57. );
  58. }
  59. }
  60. $v['userinfo']=$userinfo;
  61. $v['thumb']=get_upload_path($v['thumb']);
  62. $ad_endtime='';
  63. if($v['ad_endtime'] == 0){
  64. $v['ad_endtime']='---';
  65. }else{
  66. $ad_endtime=(int)$v['ad_endtime'];
  67. $v['ad_endtime']=date('Y-m-d',$ad_endtime);
  68. }
  69. return $v;
  70. });
  71. //分页-->筛选条件参数
  72. $data = $this->request->param();
  73. $lists->appends($data);
  74. // 获取分页显示
  75. $page = $lists->render();
  76. $this->assign('lists', $lists);
  77. $this->assign("page", $page);
  78. $this->assign("p",$p);
  79. return $this->fetch();
  80. }
  81. //删除视频
  82. public function del(){
  83. $res=array("code"=>0,"msg"=>"删除成功","info"=>array());
  84. $data = $this->request->param();
  85. $id=$data['id'];
  86. $reason=$data["reason"];
  87. if(!$id){
  88. $res['code']=1001;
  89. $res['msg']='视频信息加载失败';
  90. echo json_encode($res);
  91. return;
  92. }
  93. $result=Db::name("user_video")->where("id={$id}")->delete();
  94. if($result!==false){
  95. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->delete(); //删除视频评论@信息列表
  96. Db::name("user_video_comments_messages")->where("videoid={$id}")->delete(); //删除视频评论信息列表
  97. Db::name("praise_messages")->where("videoid={$id}")->delete(); //删除赞通知列表
  98. Db::name("user_video_comments")->where("videoid={$id}")->delete(); //删除视频评论
  99. Db::name("user_video_like")->where("videoid={$id}")->delete(); //删除视频喜欢
  100. Db::name("user_video_report")->where("videoid={$id}")->delete(); //删除视频举报
  101. Db::name("user_video_comments_like")->where("videoid={$id}")->delete(); //删除视频评论喜欢
  102. $res['msg']='广告删除成功';
  103. echo json_encode($res);
  104. return;
  105. }else{
  106. $res['code']=1002;
  107. $res['msg']='广告删除失败';
  108. echo json_encode($res);
  109. return;
  110. }
  111. }
  112. //添加广告
  113. public function add(){
  114. //获取广告用户
  115. $adLists=Db::name("user")
  116. ->field("id,user_nickname")
  117. ->where("user_status=1 and user_type=2 and is_ad=1")
  118. ->select();
  119. $this->assign("adLists",$adLists);
  120. return $this->fetch();
  121. }
  122. public function add_post(){
  123. if($this->request->isPost()) {
  124. $data = $this->request->param();
  125. $video=Db::name("user_video");
  126. $data['addtime']=time();
  127. $data['ad_endtime']=strtotime($data["ad_endtime"]);
  128. $data['is_ad']=1;
  129. $data['status']=1;
  130. $data['ad_url']=html_entity_decode($data["ad_url"]);//将html实体转换为字符
  131. $owner_uid=$data['owner_uid'];
  132. if($owner_uid==""||!is_numeric($owner_uid)){
  133. $this->error("请填写视频所有者id");
  134. return;
  135. }
  136. //判断用户是否存在
  137. $ownerInfo=Db::name("user")
  138. ->where("user_type=2 and id={$owner_uid} and is_ad=1")
  139. ->find();
  140. if(!$ownerInfo){
  141. $this->error("广告发布者不存在");
  142. return;
  143. }
  144. $data['uid']=$owner_uid;
  145. $url=$data['href'];
  146. $title=$data['title'];
  147. $thumb=$data['thumb'];
  148. if($title==""){
  149. $this->error("请填写广告标题");
  150. }
  151. if($thumb==""){
  152. $this->error("请上传广告封面");
  153. }
  154. $data['thumb_s']=$thumb;
  155. $uploadSetting = cmf_get_upload_setting();
  156. $extensions=$uploadSetting['file_types']['video']['extensions'];
  157. $allow=explode(",",$extensions);
  158. $video_upload_type=$data['video_upload_type'];
  159. if($video_upload_type==0){
  160. if($url==''){
  161. $this->error("请填写视频链接地址");
  162. }
  163. //判断链接地址的正确性
  164. if(strpos($url,'http')===false){
  165. $this->error("请填写正确的视频地址");
  166. }
  167. $video_type=substr(strrchr($url, '.'), 1);
  168. if(!in_array(strtolower($video_type), $allow)){
  169. $this->error("请填写正确后缀的视频地址");
  170. }
  171. $data['href']=$url;
  172. $data['href_w']=$url;
  173. }else{
  174. //获取后台上传配置
  175. $configpri=getConfigPri();
  176. $show_val=$configpri['show_val'];
  177. $data['show_val']=$show_val;
  178. if(!$_FILES){
  179. $this->error("请上传视频");
  180. }
  181. $files["file"]=$_FILES["file"];
  182. $type='video';
  183. if (!get_file_suffix($files['file']['name'],$allow)){
  184. $this->error("请上传正确格式的视频文件或检查上传设置中视频文件设置的文件类型");
  185. }
  186. $rs=adminUploadFiles($files,$type);
  187. if($rs['code']!=0){
  188. $this->error($rs['msg']);
  189. }
  190. $data['href']=$rs['filepath'];
  191. $data['href_w']=$rs['filepath'];
  192. }
  193. unset($data['file']);
  194. unset($data['video_upload_type']);
  195. unset($data['owner_uid']);
  196. $result=$video->insert($data);
  197. if($result){
  198. $this->success('添加成功',url('Advert/index'),3);
  199. }else{
  200. $this->error('添加失败');
  201. }
  202. }
  203. }
  204. //编辑视频
  205. public function edit(){
  206. $data = $this->request->param();
  207. $id=intval($data['id']);
  208. $from=$data["from"];
  209. if($id){
  210. $video=Db::name("user_video")->where("id={$id}")->find();
  211. $userinfo=getUserInfo($video['uid']);
  212. if(!$userinfo){
  213. $userinfo=array(
  214. 'user_nickname'=>'已删除'
  215. );
  216. }
  217. $video['userinfo']=$userinfo;
  218. $video['thumb']=get_upload_path($video['thumb']);
  219. $video['href']=get_upload_path($video['href']);
  220. $video['href_w']=get_upload_path($video['href_w']);
  221. if($video['ad_endtime'] == 0){
  222. $video['ad_endtime']='';
  223. }else{
  224. $ad_endtime=(int)$video['ad_endtime'];
  225. $video['ad_endtime']=date('Y-m-d',$ad_endtime);
  226. }
  227. $this->assign('video', $video);
  228. }else{
  229. $this->error('数据传入失败!');
  230. }
  231. $this->assign("from",$from);
  232. return $this->fetch();
  233. }
  234. public function edit_post(){
  235. if($this->request->isPost()) {
  236. $data = $this->request->param();
  237. $video=Db::name("user_video");
  238. $id=$data['id'];
  239. $title=$data['title'];
  240. $thumb=$data['thumb'];
  241. $type=isset($data['video_upload_type'])?$data['video_upload_type']:'';
  242. $url=$data['href_e'];
  243. $data['ad_endtime']=strtotime($data["ad_endtime"]);
  244. $data['ad_url']=html_entity_decode($data["ad_url"]);//将html实体转换为字符
  245. if($thumb==""){
  246. $this->error("请上传视频封面");
  247. return;
  248. }
  249. $data['thumb_s']=$thumb;
  250. if($type!=''){
  251. $uploadSetting = cmf_get_upload_setting();
  252. $extensions=$uploadSetting['file_types']['video']['extensions'];
  253. $allow=explode(",",$extensions);
  254. if($type==0){ //视频链接型式
  255. if($url==''){
  256. $this->error("请填写视频链接地址");
  257. }
  258. //判断链接地址的正确性
  259. if(strpos($url,'http')!==false||strpos($url,'https')!==false){
  260. $video_type=substr(strrchr($url, '.'), 1);
  261. if(!in_array(strtolower($video_type), $allow)){
  262. $this->error("请填写正确后缀的视频地址");
  263. }
  264. $data['href']=$url;
  265. $data['href_w']=$url;
  266. }else{
  267. $this->error("请填写正确的视频地址");
  268. }
  269. }else if($type==1){ //文件上传型式
  270. if(!$_FILES["file"]){
  271. $this->error("请上传视频");
  272. }
  273. $files["file"]=$_FILES["file"];
  274. $type='video';
  275. if (!get_file_suffix($files['file']['name'],$allow)){
  276. $this->error("请上传正确格式的视频文件或检查上传设置中视频文件设置的文件类型");
  277. }
  278. $rs=adminUploadFiles($files,$type);
  279. if($rs['code']!=0){
  280. $this->error($rs['msg']);
  281. }
  282. $data['href']=$rs['filepath'];
  283. $data['href_w']=$rs['filepath'];
  284. }
  285. }
  286. unset($data['file']);
  287. unset($data['href_e']);
  288. unset($data['video_upload_type']);
  289. unset($data['owner_uid']);
  290. unset($data['ckplayer_playerzmblbkjP']);
  291. $result=$video->update($data);
  292. if($result!==false){
  293. $this->success('修改成功');
  294. }else{
  295. $this->error('修改失败');
  296. }
  297. }
  298. }
  299. //设置下架
  300. public function setXiajia(){
  301. $res=array("code"=>0,"msg"=>"下架成功","info"=>array());
  302. $data = $this->request->param();
  303. $id=$data['id'];
  304. $reason=$data["reason"];
  305. if(!$id){
  306. $res['code']=1001;
  307. $res['msg']="请确认视频信息";
  308. echo json_encode($res);
  309. return;
  310. }
  311. //判断此视频是否存在
  312. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  313. if(!$videoInfo){
  314. $res['code']=1001;
  315. $res['msg']="请确认视频信息";
  316. echo json_encode($res);
  317. return;
  318. }
  319. //更新视频状态
  320. $data=array("isdel"=>1,"xiajia_reason"=>$reason);
  321. $result=Db::name("user_video")->where("id={$id}")->update($data);
  322. if($result!==false){
  323. //将视频喜欢列表的状态更改
  324. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>0]);
  325. //将点赞信息列表里的状态修改
  326. Db::name("praise_messages")->where("videoid={$id}")->update(['status'=>0]);
  327. //将评论@信息列表的状态更改
  328. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->update(['status'=>0]);
  329. //将评论信息列表的状态更改
  330. Db::name("user_video_comments_messages")->where("videoid={$id}")->update(['status'=>0]);
  331. //更新此视频的举报信息
  332. $data1=array(
  333. 'status'=>1,
  334. 'uptime'=>time()
  335. );
  336. Db::name("user_video_report")->where("videoid={$id}")->update($data1);
  337. echo json_encode($res);
  338. return;
  339. }else{
  340. $res['code']=1002;
  341. $res['msg']="下架失败";
  342. echo json_encode($res);
  343. return;
  344. }
  345. }
  346. /*下架视频列表*/
  347. public function lowervideo(){
  348. $p = $this->request->param('p');
  349. if(!$p){
  350. $p=1;
  351. }
  352. $lists = Db::name('user_video')
  353. ->where(function (Query $query) {
  354. $data = $this->request->param();
  355. $query->where('is_ad', '1');
  356. $query->where('isdel', '1');
  357. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  358. if (!empty($keyword)) {
  359. $query->where('uid|id', '=' , $keyword);
  360. }
  361. $keyword1=isset($data['keyword1']) ? $data['keyword1']: '';
  362. if (!empty($keyword1)) {
  363. $query->where('title', 'like', "%$keyword1%");
  364. }
  365. $keyword2=isset($data['keyword2']) ? $data['keyword2']: '';
  366. if (!empty($keyword2)) {
  367. $userlist =Db::name("user")->field("id")
  368. ->where("user_nickname like '%".$keyword2."%'")
  369. ->select();
  370. $strids="";
  371. foreach($userlist as $ku=>$vu){
  372. if($strids==""){
  373. $strids=$vu['id'];
  374. }else{
  375. $strids.=",".$vu['id'];
  376. }
  377. }
  378. $query->where('uid', 'in', $strids);
  379. }
  380. })
  381. ->order("orderno desc,addtime DESC")
  382. ->paginate(20);
  383. $lists->each(function($v,$k){
  384. if($v['uid']==0){
  385. $userinfo=array(
  386. 'user_nickname'=>'系统管理员'
  387. );
  388. }else{
  389. $userinfo=getUserInfo($v['uid']);
  390. if(!$userinfo){
  391. $userinfo=array(
  392. 'user_nickname'=>'已删除'
  393. );
  394. }
  395. }
  396. $v['userinfo']=$userinfo;
  397. $v['thumb']=get_upload_path($v['thumb']);
  398. $ad_endtime='';
  399. if($v['ad_endtime'] == 0){
  400. $v['ad_endtime']='---';
  401. }else{
  402. $ad_endtime=(int)$v['ad_endtime'];
  403. $v['ad_endtime']=date('Y-m-d',$ad_endtime);
  404. }
  405. return $v;
  406. });
  407. //分页-->筛选条件参数
  408. $data = $this->request->param();
  409. $lists->appends($data);
  410. // 获取分页显示
  411. $page = $lists->render();
  412. $this->assign('lists', $lists);
  413. $this->assign("page", $page);
  414. $this->assign("p",$p);
  415. return $this->fetch();
  416. }
  417. //观看视频
  418. public function video_listen(){
  419. $id = $this->request->param('id');
  420. if(!$id||$id==""||!is_numeric($id)){
  421. $this->error("加载失败");
  422. }else{
  423. //获取音乐信息
  424. $info=Db::name("user_video")->where("id={$id}")->find();
  425. $info['thumb']=get_upload_path($info['thumb']);
  426. $info['href']=get_upload_path($info['href']);
  427. $this->assign("info",$info);
  428. }
  429. return $this->fetch();
  430. }
  431. /*视频上架*/
  432. public function set_shangjia(){
  433. $id = $this->request->param('id');
  434. if(!$id){
  435. $this->error("视频信息加载失败");
  436. }
  437. //获取视频信息
  438. $info=Db::name("user_video")->where("id={$id}")->find();
  439. if(!$info){
  440. $this->error("视频信息加载失败");
  441. }
  442. $data=array(
  443. 'xiajia_reason'=>'',
  444. 'isdel'=>0
  445. );
  446. $result=Db::name("user_video")->where("id={$id}")->update($data);
  447. if($result!==false){
  448. //将视频喜欢列表的状态更改
  449. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>1]);
  450. //将点赞信息列表里的状态修改
  451. Db::name("praise_messages")->where("videoid={$id}")->update(['status'=>1]);
  452. //将评论@信息列表的状态更改
  453. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->update(['status'=>1]);
  454. //将评论信息列表的状态更改
  455. Db::name("user_video_comments_messages")->where("videoid={$id}")->update(['status'=>1]);
  456. $this->success("上架成功");
  457. }
  458. return $this->fetch();
  459. }
  460. //评论列表
  461. public function commentlists(){
  462. $data = $this->request->param();
  463. $videoid=$data['videoid'];
  464. $lists = Db::name('user_video_comments')
  465. ->where("videoid={$videoid}")
  466. ->order("addtime DESC")
  467. ->paginate(20);
  468. $lists->each(function($v,$k){
  469. $userinfo=getUserInfo($v['uid']);
  470. if(!$userinfo){
  471. $userinfo=array(
  472. 'user_nickname'=>'已删除'
  473. );
  474. }
  475. $v['user_nickname']=$userinfo['user_nickname'];
  476. if($v['voice']){
  477. $v['voice']=get_upload_path($v['voice']);
  478. }
  479. return $v;
  480. });
  481. //分页-->筛选条件参数
  482. $lists->appends($data);
  483. // 获取分页显示
  484. $page = $lists->render();
  485. $this->assign("lists",$lists);
  486. $this->assign("page", $page);
  487. return $this->fetch();
  488. }
  489. //排序
  490. public function listsorders() {
  491. $ids = $_POST['listorders'];
  492. $ids = $this->request->param('listorders');
  493. foreach ($ids as $key => $r) {
  494. $data['orderno'] = $r;
  495. Db::name("user_video")->where(array('id' => $key))->update($data);
  496. }
  497. $status = true;
  498. if ($status) {
  499. $this->success("权重更新成功!");
  500. } else {
  501. $this->error("权重更新失败!");
  502. }
  503. }
  504. }