VideoController.php 53 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991
  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 VideoController extends AdminbaseController {
  10. protected function initialize(){
  11. parent::initialize();
  12. $site_info=cmf_get_option('site_info');
  13. $name_coin=$site_info['name_coin'];
  14. $this->name_coin=$name_coin;
  15. }
  16. protected function getVideoClass($k=''){
  17. $key="video_class";
  18. $list=getcaches($key);
  19. if(!$list){
  20. $list=Db::name("user_video_class")->where("status=1")->order("orderno")->column('title','id');
  21. setcaches($key,$list,10);
  22. }
  23. if($k==''){
  24. return $list;
  25. }
  26. return isset($list[$k]) ? $list[$k]: '';
  27. }
  28. /*待审核视频列表*/
  29. public function index(){
  30. $ordertype = $this->request->param('ordertype');
  31. $orderstr="";
  32. if($ordertype==1){//评论数排序
  33. $orderstr="comments DESC";
  34. }else if($ordertype==2){//票房数量排序(点赞)
  35. $orderstr="likes DESC";
  36. }else if($ordertype==3){//分享数量排序
  37. $orderstr="shares DESC";
  38. }else{
  39. $orderstr="addtime DESC";
  40. }
  41. $lists = Db::name('user_video')
  42. ->where(function (Query $query) {
  43. $data = $this->request->param();
  44. $query->where('isdel', 0);
  45. $query->where('status', 0);
  46. $query->where('is_ad', 0);
  47. $query->where('is_userad', 0);
  48. $classid=isset($data['classid']) ? $data['classid']: '';
  49. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  50. $keyword1=isset($data['keyword1']) ? $data['keyword1']: '';
  51. $keyword2=isset($data['keyword2']) ? $data['keyword2']: '';
  52. if (!empty($classid)) {
  53. $query->where('classid', '=', $classid);
  54. }
  55. if (!empty($keyword)) {
  56. $query->where('uid|id', 'like', "%$keyword%");
  57. }
  58. if (!empty($keyword1)) {
  59. $query->where('title', 'like', "%$keyword1%");
  60. }
  61. if (!empty($keyword2)) {
  62. $userlist =Db::name("user")
  63. ->field("id")
  64. ->where("user_nickname like '%".$keyword2."%'")
  65. ->select();
  66. $strids="";
  67. $userlist->all();
  68. foreach ($userlist as $k => $vu) {
  69. if($strids==""){
  70. $strids=$vu['id'];
  71. }else{
  72. $strids.=",".$vu['id'];
  73. }
  74. }
  75. $query->where('uid', 'in', $strids);
  76. }
  77. })
  78. ->order($orderstr)
  79. ->paginate(20);
  80. $lists->each(function($v,$k){
  81. if($v['uid']==0){
  82. $userinfo=array(
  83. 'user_nickname'=>'系统管理员'
  84. );
  85. }else{
  86. $userinfo=getUserInfo($v['uid']);
  87. if(!$userinfo){
  88. $userinfo=array(
  89. 'user_nickname'=>'已删除'
  90. );
  91. }
  92. }
  93. $v['userinfo']=$userinfo;
  94. $v['thumb']=get_upload_path($v['thumb']);
  95. if($v['classid']){
  96. $v['class_name']=$this->getVideoClass($v['classid']);
  97. }else{
  98. $v['class_name']='';
  99. }
  100. if($v['activeid']){
  101. $subject = Db::name('author_center_activity')
  102. ->where(['id'=>$v['activeid']])
  103. ->value('subject');
  104. if($subject){
  105. $subject_arr = json_decode($subject,true);
  106. $v['activity_subject'] = '#'.implode('#',$subject_arr);
  107. }else{
  108. $v['activity_subject'] = '';
  109. }
  110. }else{
  111. $v['activity_subject']='';
  112. }
  113. return $v;
  114. });
  115. //分页-->筛选条件参数
  116. $data = $this->request->param();
  117. $lists->appends($data);
  118. // 获取分页显示
  119. $page = $lists->render();
  120. $p= $this->request->param('page');
  121. if(!$p){
  122. $p=1;
  123. }
  124. $classify=$this->getClassLists();
  125. $this->assign("classify",$classify);
  126. $this->assign('lists', $lists);
  127. $this->assign("page", $page);
  128. $this->assign("p",$p);
  129. $this->assign("time",time());
  130. $this->assign("name_coin",$this->name_coin);
  131. return $this->fetch();
  132. }
  133. /*未通过视频列表*/
  134. public function nopassindex(){
  135. $ordertype = $this->request->param('ordertype');
  136. $orderstr="";
  137. if($ordertype==1){//评论数排序
  138. $orderstr="comments DESC";
  139. }else if($ordertype==2){//票房数量排序(点赞)
  140. $orderstr="likes DESC";
  141. }else if($ordertype==3){//分享数量排序
  142. $orderstr="shares DESC";
  143. }else{
  144. $orderstr="addtime DESC";
  145. }
  146. $lists = Db::name('user_video')
  147. ->where(function (Query $query) {
  148. $data = $this->request->param();
  149. $query->where('isdel', 0);
  150. $query->where('status', 2);
  151. $query->where('is_ad', 0);
  152. $query->where('is_userad', 0);
  153. $classid=isset($data['classid']) ? $data['classid']: '';
  154. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  155. $keyword1=isset($data['keyword1']) ? $data['keyword1']: '';
  156. $keyword2=isset($data['keyword2']) ? $data['keyword2']: '';
  157. if (!empty($classid)) {
  158. $query->where('classid', '=', $classid);
  159. }
  160. if (!empty($keyword)) {
  161. $query->where('uid|id', 'like', "%$keyword%");
  162. }
  163. if (!empty($keyword1)) {
  164. $query->where('title', 'like', "%$keyword1%");
  165. }
  166. if (!empty($keyword2)) {
  167. $userlist =Db::name("user")
  168. ->field("id")
  169. ->where("user_nickname like '%".$keyword2."%'")
  170. ->select();
  171. $strids="";
  172. $userlist->all();
  173. foreach ($userlist as $k => $vu) {
  174. if($strids==""){
  175. $strids=$vu['id'];
  176. }else{
  177. $strids.=",".$vu['id'];
  178. }
  179. }
  180. $query->where('uid', 'in', $strids);
  181. }
  182. })
  183. ->order($orderstr)
  184. ->paginate(20);
  185. $lists->each(function($v,$k){
  186. if($v['uid']==0){
  187. $userinfo=array(
  188. 'user_nickname'=>'系统管理员'
  189. );
  190. }else{
  191. $userinfo=getUserInfo($v['uid']);
  192. if(!$userinfo){
  193. $userinfo=array(
  194. 'user_nickname'=>'已删除'
  195. );
  196. }
  197. }
  198. $v['userinfo']=$userinfo;
  199. $v['thumb']=get_upload_path($v['thumb']);
  200. if($v['classid']){
  201. $v['class_name']=$this->getVideoClass($v['classid']);
  202. }else{
  203. $v['class_name']='';
  204. }
  205. if($v['activeid']){
  206. $subject = Db::name('author_center_activity')
  207. ->where(['id'=>$v['activeid']])
  208. ->value('subject');
  209. if($subject){
  210. $subject_arr = json_decode($subject,true);
  211. $v['activity_subject'] = '#'.implode('#',$subject_arr);
  212. }else{
  213. $v['activity_subject'] = '';
  214. }
  215. }else{
  216. $v['activity_subject']='';
  217. }
  218. return $v;
  219. });
  220. //分页-->筛选条件参数
  221. $data = $this->request->param();
  222. $lists->appends($data);
  223. // 获取分页显示
  224. $page = $lists->render();
  225. $p= $this->request->param('page');
  226. if(!$p){
  227. $p=1;
  228. }
  229. $classify=$this->getClassLists();
  230. $this->assign("classify",$classify);
  231. $this->assign('lists', $lists);
  232. $this->assign("page", $page);
  233. $this->assign("p",$p);
  234. $this->assign("time",time());
  235. $this->assign("name_coin",$this->name_coin);
  236. return $this->fetch();
  237. }
  238. /*审核通过视频列表*/
  239. public function passindex(){
  240. $ordertype = $this->request->param('ordertype');
  241. $orderstr="";
  242. if($ordertype==1){//评论数排序
  243. $orderstr="comments DESC";
  244. }else if($ordertype==2){//票房数量排序(点赞)
  245. $orderstr="likes DESC";
  246. }else if($ordertype==3){//分享数量排序
  247. $orderstr="shares DESC";
  248. }else{
  249. $orderstr="addtime DESC";
  250. }
  251. $lists = Db::name('user_video')
  252. ->where(function (Query $query) {
  253. $data = $this->request->param();
  254. $query->where('isdel', 0);
  255. $query->where('status', 1);
  256. $query->where('is_ad', 0);
  257. $query->where('is_userad', 0);
  258. $classid=isset($data['classid']) ? $data['classid']: '';
  259. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  260. $keyword1=isset($data['keyword1']) ? $data['keyword1']: '';
  261. $keyword2=isset($data['keyword2']) ? $data['keyword2']: '';
  262. if (!empty($classid)) {
  263. $query->where('classid', '=', $classid);
  264. }
  265. if (!empty($keyword)) {
  266. $query->where('uid|id', 'like', "%$keyword%");
  267. }
  268. if (!empty($keyword1)) {
  269. $query->where('title', 'like', "%$keyword1%");
  270. }
  271. if (!empty($keyword2)) {
  272. $userlist =Db::name("user")
  273. ->field("id")
  274. ->where("user_nickname like '%".$keyword2."%'")
  275. ->select();
  276. $strids="";
  277. $userlist->all();
  278. foreach ($userlist as $k => $vu) {
  279. if($strids==""){
  280. $strids=$vu['id'];
  281. }else{
  282. $strids.=",".$vu['id'];
  283. }
  284. }
  285. $query->where('uid', 'in', $strids);
  286. }
  287. })
  288. ->order($orderstr)
  289. ->paginate(20);
  290. $lists->each(function($v,$k){
  291. if($v['uid']==0){
  292. $userinfo=array(
  293. 'user_nickname'=>'系统管理员'
  294. );
  295. }else{
  296. $userinfo=getUserInfo($v['uid']);
  297. if(!$userinfo){
  298. $userinfo=array(
  299. 'user_nickname'=>'已删除'
  300. );
  301. }
  302. }
  303. $v['userinfo']=$userinfo;
  304. $v['thumb']=get_upload_path($v['thumb']);
  305. if($v['classid']){
  306. $v['class_name']=$this->getVideoClass($v['classid']);
  307. }else{
  308. $v['class_name']='';
  309. }
  310. if($v['activeid']){
  311. $subject = Db::name('author_center_activity')
  312. ->where(['id'=>$v['activeid']])
  313. ->value('subject');
  314. if($subject){
  315. $subject_arr = json_decode($subject,true);
  316. $v['activity_subject'] = '#'.implode('#',$subject_arr);
  317. }else{
  318. $v['activity_subject'] = '';
  319. }
  320. }else{
  321. $v['activity_subject']='';
  322. }
  323. return $v;
  324. });
  325. //分页-->筛选条件参数
  326. $data = $this->request->param();
  327. $lists->appends($data);
  328. // 获取分页显示
  329. $page = $lists->render();
  330. $p= $this->request->param('page');
  331. if(!$p){
  332. $p=1;
  333. }
  334. $classify=$this->getClassLists();
  335. $this->assign("classify",$classify);
  336. $this->assign('lists', $lists);
  337. $this->assign("page", $page);
  338. $this->assign("p",$p);
  339. $this->assign("time",time());
  340. $this->assign("name_coin",$this->name_coin);
  341. return $this->fetch();
  342. }
  343. //删除视频
  344. public function del(){
  345. $res=array("code"=>0,"msg"=>"删除成功","info"=>array());
  346. $data = $this->request->param();
  347. $id=$data['id'];
  348. $reason=$data["reason"];
  349. if(!$id){
  350. $res['code']=1001;
  351. $res['msg']='视频信息加载失败';
  352. echo json_encode($res);
  353. return;
  354. }
  355. //获取视频信息
  356. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  357. $result=Db::name("user_video")->where("id={$id}")->delete();
  358. //$result=Db::name("user_video")->where("id={$id}")->update(["isdel"=>"1"]);
  359. if($result!==false){
  360. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->delete(); //删除视频评论@信息列表
  361. Db::name("user_video_comments_messages")->where("videoid={$id}")->delete(); //删除视频评论信息列表
  362. Db::name("praise_messages")->where("videoid={$id}")->delete(); //删除赞通知列表
  363. Db::name("user_video_comments")->where("videoid={$id}")->delete(); //删除视频评论
  364. Db::name("user_video_like")->where("videoid={$id}")->delete(); //删除视频喜欢
  365. Db::name("user_video_report")->where("videoid={$id}")->delete(); //删除视频举报
  366. Db::name("user_video_view")->where("videoid={$id}")->delete(); //删除视频观看
  367. Db::name("user_video_collection")->where("videoid={$id}")->delete(); //删除视频收藏
  368. /*//获取该视频的评论id
  369. $commentlists=Db::name("user_video_comments")->field("id")->where("videoid={$id}")->select();
  370. $commentids="";
  371. foreach($commentlists as $k=>$v){
  372. if($commentids==""){
  373. $commentids=$v['id'];
  374. }else{
  375. $commentids.=",".$v['id'];
  376. }
  377. }
  378. //删除视频评论喜欢
  379. $map['commentid']=array("in",$commentids);*/
  380. Db::name("user_video_comments_like")->where("videoid={$id}")->delete(); //删除视频评论喜欢
  381. //如果该视频有正在上热门记录,需要将用户的钻石退回并将上热门记录删除
  382. $popinfo=Db::name("popular_orders")->where("videoid={$id} and status=1 and refund_status=0")->find();
  383. if($popinfo){
  384. $coin=$videoInfo['p_nums']/$popinfo['nums']*$popinfo['money'];
  385. $coin=floor($coin);
  386. if($coin>=1){
  387. $isok=changeUserCoin($popinfo['uid'],$coin,1);
  388. if($isok){
  389. $data=array(
  390. 'type'=>'income',
  391. 'action'=>'pop_refund',
  392. 'uid'=>$popinfo['uid'],
  393. 'touid'=>$popinfo['uid'],
  394. 'totalcoin'=>$coin,
  395. 'videoid'=>$id,
  396. 'addtime'=>time()
  397. );
  398. //写入钻石消费记录
  399. setCoinRecord($data);
  400. //将上热门记录删除
  401. Db::name("popular_orders")->where("videoid={$id}")->delete();
  402. }
  403. }
  404. }
  405. if($videoInfo['isdel']==0){ //视频上架情况下被删除发送通知
  406. if($videoInfo['title']!=''){
  407. $videoTitle='上传的《'.$videoInfo['title'].'》';
  408. }else{
  409. $videoTitle='上传的';
  410. }
  411. $baseMsg='您于'.date("Y-m-d H:i:s",$videoInfo['addtime']).$videoTitle.'视频被管理员于'.date("Y-m-d H:i:s",time()).'删除';
  412. if(!$reason){
  413. $msg=$baseMsg;
  414. }else{
  415. $msg=$baseMsg.',删除原因为:'.$reason;
  416. }
  417. $uid=$videoInfo['uid'];
  418. $text="视频删除提醒";
  419. $result1=addSysytemInfo($uid,$text,$msg);
  420. if($result1!==false){
  421. //发送腾讯云IM
  422. txMessageIM($text,$uid);
  423. }
  424. }
  425. $this->changeVideoPopular($id,$videoInfo['p_nums'],0);
  426. $res['msg']='视频删除成功';
  427. echo json_encode($res);
  428. return;
  429. }else{
  430. $res['code']=1002;
  431. $res['msg']='视频删除失败';
  432. echo json_encode($res);
  433. return;
  434. }
  435. }
  436. //排序
  437. public function listsorders() {
  438. $ids=$this->request->param('listsorders');
  439. foreach ($ids as $key => $r) {
  440. $data['orderno'] = $r;
  441. Db::name("user_video")->where(array('id' => $key))->save($data);
  442. }
  443. $status = true;
  444. if ($status) {
  445. $this->success("排序更新成功!");
  446. } else {
  447. $this->error("排序更新失败!");
  448. }
  449. }
  450. //添加
  451. public function add(){
  452. $classify=$this->getClassLists();
  453. $this->assign("classify",$classify);
  454. $this->assign("name_coin",$this->name_coin);
  455. $this->assign("time",time());
  456. return $this->fetch();
  457. }
  458. public function add_post(){
  459. if($this->request->isPost()) {
  460. $data=$this->request->param();
  461. $video=Db::name("user_video");
  462. $data['addtime']=time();
  463. $data['uid']=0;
  464. $owner=$data['owner'];
  465. $owner_uid=$data['owner_uid'];
  466. if($owner==1){
  467. if($owner_uid==""||!is_numeric($owner_uid)){
  468. $this->error("请填写视频所有者id");
  469. return;
  470. }
  471. //判断用户是否存在
  472. $ownerInfo=Db::name("user")->where("user_type=2 and id={$owner_uid}")->find();
  473. if(!$ownerInfo){
  474. $this->error("视频所有者不存在");
  475. return;
  476. }
  477. $data['uid']=$owner_uid;
  478. }
  479. $url=$data['href'];
  480. $url_w=$data['href_w'];
  481. $title=$data['title'];
  482. $coin=$data['coin'];
  483. $thumb=$data['thumb'];
  484. if($title==""){
  485. $this->error("请填写视频标题");
  486. }
  487. if($coin<0){
  488. $this->error("需花费".$this->name_coin."不能小于0");
  489. }
  490. if(floor($coin)!=$coin){
  491. $this->error("需花费".$this->name_coin."必须为整数");
  492. }
  493. if($thumb==""){
  494. $this->error("请上传视频封面");
  495. }
  496. $data['thumb_s']=$thumb;
  497. //获取后台上传配置
  498. $configpri=getConfigPri();
  499. $show_val=$configpri['show_val'];
  500. $data['show_val']=$show_val;
  501. $uploadSetting = cmf_get_upload_setting();
  502. $extensions=$uploadSetting['file_types']['video']['extensions'];
  503. $allow=explode(",",$extensions);
  504. $video_upload_type=$data['video_upload_type'];
  505. if($video_upload_type==0){
  506. if($url==''){
  507. $this->error("请填写视频链接");
  508. }
  509. if($url_w==''){
  510. $this->error("请填写水印视频链接");
  511. }
  512. //判断链接地址的正确性
  513. if(strpos($url,'http')===false){
  514. $this->error("请填写正确的视频地址");
  515. }
  516. $video_type=substr(strrchr($url, '.'), 1);
  517. if(!in_array(strtolower($video_type), $allow)){
  518. $this->error("请填写正确后缀的视频地址");
  519. }
  520. $data['href']=$url;
  521. //判断链接地址的正确性
  522. if(strpos($url_w,'http')===false){
  523. $this->error("请填写正确的水印视频地址");
  524. }
  525. $video_type_w=substr(strrchr($url_w, '.'), 1);
  526. if(!in_array(strtolower($video_type_w), $allow)){
  527. $this->error("请填写正确后缀的水印视频地址");
  528. }
  529. $data['href_w']=$url_w;
  530. }else{
  531. if(!$_FILES){
  532. $this->error("请上传视频文件");
  533. }
  534. if(!isset($_FILES["file"])){
  535. $this->error("请上传视频");
  536. }
  537. if(!isset($_FILES["file_w"])){
  538. $this->error("请上传水印视频");
  539. }
  540. $files["file"]=$_FILES["file"];
  541. $type='video';
  542. if (!get_file_suffix($files['file']['name'],$allow)){
  543. $this->error("请上传正确格式的视频文件或检查上传设置中视频文件设置的文件类型");
  544. }
  545. $rs=adminUploadFiles($files,$type);
  546. if($rs['code']!=0){
  547. $this->error($rs['msg']);
  548. }
  549. $files_w["file"]=$_FILES["file_w"];
  550. $type_w='video';
  551. if (!get_file_suffix($files_w['file']['name'],$allow)){
  552. $this->error("请上传正确格式的水印视频文件或检查上传设置中视频文件设置的文件类型");
  553. }
  554. $rs_w=adminUploadFiles($files_w,$type_w);
  555. if($rs_w['code']!=0){
  556. $this->error($rs_w['msg']);
  557. }
  558. $data['href']=$rs['filepath'];
  559. $data['href_w']=$rs_w['filepath'];
  560. }
  561. //计算封面尺寸比例
  562. $configpub=getConfigPub(); //获取公共配置信息
  563. $anyway='1.1';
  564. //if($configpri['cloudtype']!=1){
  565. $thumb_url=get_upload_path($thumb);
  566. $refer=$configpub['site'];
  567. $option=array(
  568. 'http'=>array('header'=>"Referer: {$refer}"),
  569. "ssl" => [
  570. "verify_peer"=>false,
  571. "verify_peer_name"=>false,
  572. ]
  573. );
  574. $context=stream_context_create($option);//创建资源流上下文
  575. $file_contents = file_get_contents($thumb_url,false, $context);//将整个文件读入一个字符串
  576. $thumb_size = getimagesizefromstring($file_contents);//从字符串中获取图像尺寸信息
  577. if($thumb_size){
  578. $thumb_width=$thumb_size[0]; //封面-宽
  579. $thumb_height=$thumb_size[1]; //封面-高
  580. $anyway=round($thumb_height/$thumb_width);
  581. }
  582. //}
  583. $data['anyway']=$anyway;
  584. unset($data['file']);
  585. unset($data['file_w']);
  586. unset($data['owner']);
  587. unset($data['owner_uid']);
  588. unset($data['video_upload_type']);
  589. $result=$video->insert($data);
  590. if($result){
  591. $this->success('添加成功','admin/video/passindex',3);
  592. }else{
  593. $this->error('添加失败');
  594. }
  595. }
  596. }
  597. //编辑
  598. public function edit(){
  599. $data = $this->request->param();
  600. $id=intval($data['id']);
  601. $from=$data["from"];
  602. if($id){
  603. $video=Db::name("user_video")->where("id={$id}")->find();
  604. if($video['uid']==0){
  605. $userinfo=array(
  606. 'user_nickname'=>'系统管理员'
  607. );
  608. }else{
  609. $userinfo=getUserInfo($video['uid']);
  610. if(!$userinfo){
  611. $userinfo=array(
  612. 'user_nickname'=>'已删除'
  613. );
  614. }
  615. }
  616. $video['userinfo']=$userinfo;
  617. $video['thumb']=get_upload_path($video['thumb']);
  618. $video['href']=get_upload_path($video['href']);
  619. $video['href_w']=get_upload_path($video['href_w']);
  620. //获取视频绑定的商品
  621. $goodsinfo=[];
  622. $goodsinfo=Db::name("shop_goods")->where("id={$video['goodsid']}")->find();
  623. if($goodsinfo){
  624. $thumb_arr=explode(',',$goodsinfo['thumbs']);
  625. $goodsinfo['thumb']=get_upload_path($thumb_arr[0]);
  626. if($goodsinfo['type']==0){
  627. $goodsinfo['type_name']='站内商品';
  628. }else if($goodsinfo['type']==1){
  629. $goodsinfo['type_name']='站外商品';
  630. }else{
  631. $goodsinfo['type_name']='平台自营';
  632. }
  633. $goodsinfo['old_price']=$goodsinfo['original_price'];
  634. $goodsinfo['price']=$goodsinfo['present_price'];
  635. $goodsinfo['des']=$goodsinfo['goods_desc'];
  636. }
  637. $this->assign('video', $video);
  638. $this->assign('goodsinfo', $goodsinfo);
  639. $this->assign('name_coin', $this->name_coin);
  640. }else{
  641. $this->error('数据传入失败!');
  642. }
  643. $this->assign("from",$from);
  644. return $this->fetch();
  645. }
  646. public function edit_post(){
  647. if($this->request->isPost()) {
  648. $data = $this->request->param();
  649. $video=Db::name("user_video");
  650. $id=$data['id'];
  651. $title=$data['title'];
  652. $thumb=$data['thumb'];
  653. $type=isset($data['video_upload_type'])?$data['video_upload_type']:'';
  654. $url=$data['href_e'];
  655. $url_w=$data['href_e_w'];
  656. $status=isset($data['status'])?$data['status']:'';
  657. $isdel=isset($data['isdel'])?$data['isdel']:'';
  658. $nopasstime=$data['nopasstime'];
  659. $coin=$data['coin'];
  660. /*if($title==""){
  661. $this->error("请填写视频标题");
  662. }*/
  663. if($coin<0){
  664. $this->error("需花费".$this->name_coin."不能小于0");
  665. }
  666. if(floor($coin)!=$coin){
  667. $this->error("需花费".$this->name_coin."必须为整数");
  668. }
  669. if($thumb==""){
  670. $this->error("请上传视频封面");
  671. }
  672. $data['thumb_s']=$thumb;
  673. if($type!=''){
  674. $uploadSetting = cmf_get_upload_setting();
  675. $extensions=$uploadSetting['file_types']['video']['extensions'];
  676. $allow=explode(",",$extensions);
  677. if($type==0){ //视频链接型式
  678. if($url==''){
  679. $this->error("请填写视频链接地址");
  680. }
  681. if($url_w==''){
  682. $this->error("请填写水印视频链接地址");
  683. }
  684. //判断链接地址的正确性
  685. if(strpos($url,'http')===false){
  686. $this->error("请填写正确的视频地址");
  687. }
  688. $video_type=substr(strrchr($url, '.'), 1);
  689. if(!in_array(strtolower($video_type), $allow)){
  690. $this->error("请填写正确后缀的视频地址");
  691. }
  692. $data['href']=$url;
  693. //判断链接地址的正确性
  694. if(strpos($url_w,'http')===false){
  695. $this->error("请填写正确的水印视频地址");
  696. }
  697. $video_type_w=substr(strrchr($url_w, '.'), 1);
  698. if(!in_array(strtolower($video_type_w), $allow)){
  699. $this->error("请填写正确后缀的水印视频地址");
  700. }
  701. $data['href_w']=$url_w;
  702. }else if($type==1){ //文件上传型式
  703. if(!$_FILES["file"]){
  704. $this->error("请上传视频");
  705. }
  706. if(!$_FILES["file_w"]){
  707. $this->error("请上传水印视频");
  708. }
  709. $files["file"]=$_FILES["file"];
  710. $type='video';
  711. if (!get_file_suffix($files['file']['name'],$allow)){
  712. $this->error("请上传正确格式的水印视频文件或检查上传设置中视频文件设置的文件类型");
  713. }
  714. $rs=adminUploadFiles($files,$type);
  715. if($rs['code']!=0){
  716. $this->error($rs['msg']);
  717. }
  718. $file_w["file"]=$_FILES["file_w"];
  719. $type_w='video';
  720. if (!get_file_suffix($file_w['file']['name'],$allow)){
  721. $this->error("请上传正确格式的水印视频文件或检查上传设置中视频文件设置的文件类型");
  722. }
  723. $rs_w=adminUploadFiles($file_w,$type_w);
  724. if($rs_w['code']!=0){
  725. $this->error($rs_w['msg']);
  726. }
  727. $data['href']=$rs['filepath'];
  728. $data['href_w']=$rs_w['filepath'];
  729. }
  730. }
  731. if($status==2){
  732. $data['nopass_time']=time();
  733. }
  734. //审核通过给该视频添加曝光值(改为接口添加视频时直接添加曝光值)
  735. // if($status==1){
  736. // $data['show_val']=100;
  737. // }
  738. //计算封面尺寸比例
  739. $configpub=getConfigPub(); //获取公共配置信息
  740. //$configpri=getConfigPri(); //获取后台上传配置
  741. $anyway='1.1';
  742. //if($configpri['cloudtype']!=1){
  743. $thumb_url=get_upload_path($thumb);
  744. $refer=$configpub['site'];
  745. $option=array(
  746. 'http'=>array('header'=>"Referer: {$refer}"),
  747. "ssl" => [
  748. "verify_peer"=>false,
  749. "verify_peer_name"=>false,
  750. ]
  751. );
  752. $context=stream_context_create($option);//创建资源流上下文
  753. $file_contents = file_get_contents($thumb_url,false, $context);//将整个文件读入一个字符串
  754. $thumb_size = getimagesizefromstring($file_contents);//从字符串中获取图像尺寸信息
  755. if($thumb_size){
  756. $thumb_width=$thumb_size[0]; //封面-宽
  757. $thumb_height=$thumb_size[1]; //封面-高
  758. $anyway=round($thumb_height/$thumb_width);
  759. }
  760. //}
  761. $data['anyway']=$anyway;
  762. unset($data['file']);
  763. unset($data['file_w']);
  764. unset($data['href_e']);
  765. unset($data['href_e_w']);
  766. unset($data['video_upload_type']);
  767. unset($data['owner_uid']);
  768. unset($data['nopasstime']);
  769. unset($data['ckplayer_playerzmblbkjP']);
  770. $result=$video->update($data);
  771. if($result!==false){
  772. if($status==2||$isdel==1){ //如果该视频下架或视频状态改为不通过,需要将视频喜欢列表的状态更改
  773. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>0]);
  774. Db::name("user_video_view")->where("videoid={$id}")->update(['status'=>0]);
  775. }
  776. if($status==2&&$nopasstime==0){ //视频状态为审核不通过且为第一次审核为不通过,发送极光IM
  777. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  778. $uid=$videoInfo['uid'];
  779. if($videoInfo['title']!=''){
  780. $videoTitle='上传的《'.$videoInfo['title'].'》';
  781. }else{
  782. $videoTitle='上传的';
  783. }
  784. $baseMsg='您于'.date("Y-m-d H:i:s",$videoInfo['addtime']).$videoTitle.'视频被管理员于'.date("Y-m-d H:i:s",time()).'审核为不通过';
  785. $text="视频未审核通过提醒";
  786. $result1=addSysytemInfo($uid,$text,$baseMsg);
  787. if($result1!==false){
  788. //发送腾讯云IM
  789. txMessageIM($text,$uid);
  790. }
  791. }
  792. $this->success('修改成功');
  793. }else{
  794. $this->error('修改失败');
  795. }
  796. }
  797. }
  798. public function reportlist(){
  799. $lists=Db::name("user_video_report")
  800. ->where(function (Query $query) {
  801. $data = $this->request->param();
  802. if (!empty($data['status'])) {
  803. $query->where('status', $data['status']);
  804. }
  805. if (!empty($data['start_time'])) {
  806. $query->where('addtime', '>=' , strtotime($data['start_time']));
  807. }
  808. if (!empty($data['end_time'])) {
  809. $query->where('addtime', '<=' ,strtotime($data['end_time']));
  810. }
  811. if (!empty($data['start_time']) && !empty($data['end_time'])) {
  812. $query->where('addtime', 'between' , [strtotime($data['start_time']),strtotime($data['end_time'])]);
  813. }
  814. if (!empty($data['keyword'])) {
  815. $keyword = $data['keyword'];
  816. $query->where('uid', 'like', "%$keyword%");
  817. }
  818. })
  819. ->order("addtime DESC")
  820. ->paginate(20);
  821. $lists->all();
  822. $lists->each(function($v,$k){
  823. $userinfo=Db::name("user")
  824. ->field("user_nickname")
  825. ->where("id='{$v['uid']}'")
  826. ->find();
  827. if(!$userinfo){
  828. $userinfo=array(
  829. 'user_nickname'=>'已删除'
  830. );
  831. }
  832. $v['userinfo']= $userinfo;
  833. $touserinfo=Db::name("user")
  834. ->field("user_nickname")
  835. ->where("id='{$v['touid']}'")
  836. ->find();
  837. if(!$touserinfo){
  838. $touserinfo=array(
  839. 'user_nickname'=>'已删除'
  840. );
  841. }
  842. $v['touserinfo']= $touserinfo;
  843. //判断视频是否下架
  844. $video_isdel=Db::name("user_video")->where("id={$v['videoid']}")->value("isdel");
  845. $v['video_isdel']=$video_isdel;
  846. return $v;
  847. });
  848. //分页-->筛选条件参数
  849. $data = $this->request->param();
  850. $lists->appends($data);
  851. // 获取分页显示
  852. $page = $lists->render();
  853. $p= $this->request->param('page');
  854. if(!$p){
  855. $p=1;
  856. }
  857. $this->assign('lists', $lists);
  858. $this->assign("page", $page);
  859. $this->assign("p",$p);
  860. return $this->fetch();
  861. }
  862. //视频举报标记
  863. public function setstatus(){
  864. $id=$this->request->param('id');
  865. if($id){
  866. $data['status']=1;
  867. $data['uptime']=time();
  868. $result=Db::name("user_video_report")->where("id='{$id}'")->update($data);
  869. if($result!==false){
  870. $this->success('标记成功');
  871. }else{
  872. $this->error('标记失败');
  873. }
  874. }else{
  875. $this->error('数据传入失败!');
  876. }
  877. }
  878. //删除用户举报列表
  879. public function report_del(){
  880. $id=$this->request->param("id");
  881. if($id){
  882. $result=Db::name("user_video_report")->delete($id);
  883. if($result){
  884. $this->success('删除成功');
  885. }else{
  886. $this->error('删除失败');
  887. }
  888. }else{
  889. $this->error('数据传入失败!');
  890. }
  891. }
  892. //举报内容设置**************start******************
  893. //举报类型列表
  894. public function reportset(){
  895. $lists = Db::name("user_video_report_classify")
  896. ->order("orderno ASC")
  897. ->paginate(20);
  898. // 获取分页显示
  899. $page = $lists->render();
  900. $this->assign('lists', $lists);
  901. $this->assign('page', $page);
  902. return $this->fetch();
  903. }
  904. //添加举报理由
  905. public function add_report(){
  906. return $this->fetch();
  907. }
  908. public function add_reportpost(){
  909. if($this->request->isPost()) {
  910. $data=$this->request->param();
  911. $report=Db::name("user_video_report_classify");
  912. $name=$data['name'];//举报类型名称
  913. if(!trim($name)){
  914. $this->error('举报类型名称不能为空');
  915. }
  916. $isexit=Db::name("user_video_report_classify")
  917. ->where("name='{$name}'")
  918. ->find();
  919. if($isexit){
  920. $this->error('该举报类型名称已存在');
  921. }
  922. $data['addtime']=time();
  923. $result=$report->insert($data);
  924. if($result){
  925. $this->success('添加成功');
  926. }else{
  927. $this->error('添加失败');
  928. }
  929. }
  930. }
  931. //编辑举报类型名称
  932. public function edit_report(){
  933. $id = $this->request->param('id', 0, 'intval');
  934. if($id){
  935. $reportinfo=Db::name("user_video_report_classify")
  936. ->where("id={$id}")
  937. ->find();
  938. $this->assign('reportinfo', $reportinfo);
  939. }else{
  940. $this->error('数据传入失败!');
  941. }
  942. return $this->fetch();
  943. }
  944. public function edit_reportpost(){
  945. if($this->request->isPost()) {
  946. $data=$this->request->param();
  947. $report=Db::name("user_video_report_classify");
  948. $id=$data['id'];
  949. $name=$data['name'];//举报类型名称
  950. if(!trim($name)){
  951. $this->error('举报类型名称不能为空');
  952. }
  953. $isexit=Db::name("user_video_report_classify")
  954. ->where("id!={$id} and name='{$name}'")
  955. ->find();
  956. if($isexit){
  957. $this->error('该举报类型名称已存在');
  958. }
  959. $result=$report->update($data);
  960. if($result!==false){
  961. $this->success('修改成功');
  962. }else{
  963. $this->error('修改失败');
  964. }
  965. }
  966. }
  967. //删除举报类型名称
  968. public function del_report(){
  969. $id = $this->request->param('id', 0, 'intval');
  970. if($id){
  971. $result=Db::name("user_video_report_classify")->where("id={$id}")->delete();
  972. if($result!==false){
  973. $this->success('删除成功');
  974. }else{
  975. $this->error('删除失败');
  976. }
  977. }else{
  978. $this->error('数据传入失败!');
  979. }
  980. return $this->fetch();
  981. }
  982. //举报内容排序
  983. public function listordersset() {
  984. $ids=$this->request->param('listorders');
  985. foreach ($ids as $key => $r) {
  986. $data['orderno'] = $r;
  987. Db::name("user_video_report_classify")
  988. ->where(array('id' => $key))
  989. ->update($data);
  990. }
  991. $status = true;
  992. if ($status) {
  993. $this->success("排序更新成功!");
  994. } else {
  995. $this->error("排序更新失败!");
  996. }
  997. }
  998. //举报内容设置**************end******************
  999. //设置下架
  1000. public function setXiajia(){
  1001. $res=array("code"=>0,"msg"=>"下架成功","info"=>array());
  1002. $data = $this->request->param();
  1003. $id=$data['id'];
  1004. $reason=$data["reason"];
  1005. if(!$id){
  1006. $res['code']=1001;
  1007. $res['msg']="请确认视频信息";
  1008. echo json_encode($res);
  1009. return;
  1010. }
  1011. //判断此视频是否存在
  1012. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  1013. if(!$videoInfo){
  1014. $res['code']=1001;
  1015. $res['msg']="请确认视频信息";
  1016. echo json_encode($res);
  1017. return;
  1018. }
  1019. //更新视频状态
  1020. $data=array("isdel"=>1,"xiajia_reason"=>$reason);
  1021. $result=Db::name("user_video")->where("id={$id}")->update($data);
  1022. if($result!==false){
  1023. //将视频喜欢列表的状态更改
  1024. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>0]);
  1025. //将视频喜欢列表的状态更改
  1026. Db::name("user_video_view")->where("videoid={$id}")->update(['status'=>0]);
  1027. //将点赞信息列表里的状态修改
  1028. Db::name("praise_messages")->where("videoid={$id}")->update(['status'=>0]);
  1029. //将评论@信息列表的状态更改
  1030. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->update(['status'=>0]);
  1031. //将评论信息列表的状态更改
  1032. Db::name("user_video_comments_messages")->where("videoid={$id}")->update(['status'=>0]);
  1033. //将视频收藏状态更改
  1034. Db::name("user_video_collection")->where("videoid={$id}")->update(['status'=>0]);
  1035. //更新此视频的举报信息
  1036. $data1=array(
  1037. 'status'=>1,
  1038. 'uptime'=>time()
  1039. );
  1040. Db::name("user_video_report")->where("videoid={$id}")->update($data1);
  1041. $uid=$videoInfo['uid'];
  1042. if($videoInfo['title']!=''){
  1043. $videoTitle='上传的《'.$videoInfo['title'].'》';
  1044. }else{
  1045. $videoTitle='上传的';
  1046. }
  1047. $baseMsg='您于'.date("Y-m-d H:i:s",$videoInfo['addtime']).$videoTitle.'视频被管理员于'.date("Y-m-d H:i:s",time()).'下架';
  1048. if(!$reason){
  1049. $msg=$baseMsg;
  1050. }else{
  1051. $msg=$baseMsg.',下架原因为:'.$reason;
  1052. }
  1053. $text="视频下架提醒";
  1054. $result1=addSysytemInfo($uid,$text,$msg);
  1055. if($result1!==false){
  1056. //发送腾讯云IM
  1057. txMessageIM($text,$uid);
  1058. }
  1059. //处理视频热门
  1060. $this->changeVideoPopular($id,$videoInfo['p_nums'],1);
  1061. echo json_encode($res);
  1062. return;
  1063. }else{
  1064. $res['code']=1002;
  1065. $res['msg']="下架失败";
  1066. echo json_encode($res);
  1067. return;
  1068. }
  1069. }
  1070. /*下架视频列表*/
  1071. public function lowervideo(){
  1072. $ordertype = $this->request->param('ordertype');
  1073. $orderstr="";
  1074. if($ordertype==1){//评论数排序
  1075. $orderstr="comments DESC";
  1076. }else if($ordertype==2){//票房数量排序(点赞)
  1077. $orderstr="likes DESC";
  1078. }else if($ordertype==3){//分享数量排序
  1079. $orderstr="shares DESC";
  1080. }else{
  1081. $orderstr="addtime DESC";
  1082. }
  1083. $lists = Db::name('user_video')
  1084. ->where(function (Query $query) {
  1085. $data = $this->request->param();
  1086. $query->where('isdel', 1);
  1087. $query->where('is_ad', 0);
  1088. $query->where('is_userad', 0);
  1089. $classid=isset($data['classid']) ? $data['classid']: '';
  1090. $keyword=isset($data['keyword']) ? $data['keyword']: '';
  1091. $keyword1=isset($data['keyword1']) ? $data['keyword1']: '';
  1092. $keyword2=isset($data['keyword2']) ? $data['keyword2']: '';
  1093. if (!empty($classid)) {
  1094. $query->where('classid', '=', $classid);
  1095. }
  1096. if (!empty($keyword)) {
  1097. $query->where('uid|id', 'like', "%$keyword%");
  1098. }
  1099. if (!empty($keyword1)) {
  1100. $query->where('title', 'like', "%$keyword1%");
  1101. }
  1102. if (!empty($keyword2)) {
  1103. $userlist =Db::name("user")
  1104. ->field("id")
  1105. ->where("user_nickname like '%".$keyword2."%'")
  1106. ->select();
  1107. $strids="";
  1108. $userlist->all();
  1109. foreach ($userlist as $k => $vu) {
  1110. if($strids==""){
  1111. $strids=$vu['id'];
  1112. }else{
  1113. $strids.=",".$vu['id'];
  1114. }
  1115. }
  1116. $query->where('uid', 'in', $strids);
  1117. }
  1118. })
  1119. ->order($orderstr)
  1120. ->paginate(20);
  1121. $lists->each(function($v,$k){
  1122. if($v['uid']==0){
  1123. $userinfo=array(
  1124. 'user_nickname'=>'系统管理员'
  1125. );
  1126. }else{
  1127. $userinfo=getUserInfo($v['uid']);
  1128. if(!$userinfo){
  1129. $userinfo=array(
  1130. 'user_nickname'=>'已删除'
  1131. );
  1132. }
  1133. }
  1134. $v['userinfo']=$userinfo;
  1135. $v['thumb']=get_upload_path($v['thumb']);
  1136. if($v['classid']){
  1137. $v['class_name']=$this->getVideoClass($v['classid']);
  1138. }else{
  1139. $v['class_name']='';
  1140. }
  1141. if($v['activeid']){
  1142. $subject = Db::name('author_center_activity')
  1143. ->where(['id'=>$v['activeid']])
  1144. ->value('subject');
  1145. if($subject){
  1146. $subject_arr = json_decode($subject,true);
  1147. $v['activity_subject'] = '#'.implode('#',$subject_arr);
  1148. }else{
  1149. $v['activity_subject'] = '';
  1150. }
  1151. }else{
  1152. $v['activity_subject']='';
  1153. }
  1154. return $v;
  1155. });
  1156. //分页-->筛选条件参数
  1157. $data = $this->request->param();
  1158. $lists->appends($data);
  1159. // 获取分页显示
  1160. $page = $lists->render();
  1161. $p= $this->request->param('page');
  1162. if(!$p){
  1163. $p=1;
  1164. }
  1165. $classify=$this->getClassLists();
  1166. $this->assign("classify",$classify);
  1167. $this->assign('lists', $lists);
  1168. $this->assign("page", $page);
  1169. $this->assign("p",$p);
  1170. $this->assign("time",time());
  1171. $this->assign("name_coin",$this->name_coin);
  1172. return $this->fetch();
  1173. }
  1174. public function video_listen(){
  1175. $id = $this->request->param('id', 0, 'intval');
  1176. if(!$id||$id==""||!is_numeric($id)){
  1177. $this->error("加载失败");
  1178. }else{
  1179. //获取音乐信息
  1180. $info=Db::name("user_video")->where("id={$id}")->find();
  1181. $info['thumb']=get_upload_path($info['thumb']);
  1182. $info['href']=get_upload_path($info['href']);
  1183. $this->assign("info",$info);
  1184. }
  1185. return $this->fetch();
  1186. }
  1187. /*视频上架*/
  1188. public function set_shangjia(){
  1189. $id = $this->request->param('id', 0, 'intval');
  1190. if(!$id){
  1191. $this->error("视频信息加载失败");
  1192. }
  1193. //获取视频信息
  1194. $info=Db::name("user_video")->where("id={$id}")->find();
  1195. if(!$info){
  1196. $this->error("视频信息加载失败");
  1197. }
  1198. $data=array(
  1199. 'xiajia_reason'=>'',
  1200. 'isdel'=>0
  1201. );
  1202. $result=Db::name("user_video")->where("id={$id}")->update($data);
  1203. if($result!==false){
  1204. //将视频喜欢列表的状态更改
  1205. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>1]);
  1206. //将视频观看列表的状态更改
  1207. Db::name("user_video_view")->where("videoid={$id}")->update(['status'=>1]);
  1208. //将点赞信息列表里的状态修改
  1209. Db::name("praise_messages")->where("videoid={$id}")->update(['status'=>1]);
  1210. //将评论@信息列表的状态更改
  1211. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->update(['status'=>1]);
  1212. //将评论信息列表的状态更改
  1213. Db::name("user_video_comments_messages")->where("videoid={$id}")->update(['status'=>1]);
  1214. //将视频收藏状态更改
  1215. Db::name("user_video_collection")->where("videoid={$id}")->update(['status'=>1]);
  1216. $this->success("上架成功");
  1217. }
  1218. return $this->fetch();
  1219. }
  1220. //评论列表
  1221. public function commentlists(){
  1222. $data = $this->request->param();
  1223. $videoid=$data['videoid'];
  1224. $lists = Db::name('user_video_comments')
  1225. ->where("videoid={$videoid}")
  1226. ->order("addtime DESC")
  1227. ->paginate(20);
  1228. $lists->each(function($v,$k){
  1229. $userinfo=getUserInfo($v['uid']);
  1230. if(!$userinfo){
  1231. $userinfo=array(
  1232. 'user_nickname'=>'已删除'
  1233. );
  1234. }
  1235. $v['user_nickname']=$userinfo['user_nickname'];
  1236. if($v['voice']){
  1237. $v['voice']=get_upload_path($v['voice']);
  1238. }
  1239. return $v;
  1240. });
  1241. //分页-->筛选条件参数
  1242. $lists->appends($data);
  1243. // 获取分页显示
  1244. $page = $lists->render();
  1245. $this->assign("lists",$lists);
  1246. $this->assign("page", $page);
  1247. return $this->fetch();
  1248. }
  1249. public function commentlists_del(){
  1250. $data = $this->request->param();
  1251. $id = $data['id']; //获取删除id
  1252. $info=Db::name('user_video_comments')->where("id={$id}")->find();
  1253. if(!$info){
  1254. $this->error("删除失败!");
  1255. }
  1256. Db::name('user_video_comments')->where("id={$id}")->delete();
  1257. Db::name('user_video_comments_like')->where("commentid={$id}")->delete();
  1258. Db::name('user_video')
  1259. ->where("id={$info['videoid']} and comments>=1")
  1260. ->dec('comments','1')
  1261. ->update();
  1262. $this->success("删除成功","video/commentlists?videoid={$info['videoid']}" );
  1263. }
  1264. private function getClassLists(){
  1265. //获取视频分类
  1266. $classify=Db::name("user_video_class")->where("status=1")->order("orderno")->select();
  1267. return $classify;
  1268. }
  1269. //批量下架
  1270. public function setBatchXiajia(){
  1271. $data = $this->request->param();
  1272. $status=$data['status'];
  1273. $ids = $data['ids'];
  1274. if(empty($ids)){
  1275. $this->error("请选择列表");
  1276. }
  1277. foreach ($ids as $k => $v) {
  1278. $id=$v;
  1279. //获取视频详情
  1280. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  1281. if(!$videoInfo){
  1282. continue;
  1283. }
  1284. $update_data=array(
  1285. 'isdel'=>$status
  1286. );
  1287. $result=Db::name("user_video")->where("id={$id}")->update($update_data);
  1288. if($result!==false){
  1289. //将视频喜欢列表的状态更改
  1290. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>0]);
  1291. //将视频喜欢列表的状态更改
  1292. Db::name("user_video_view")->where("videoid={$id}")->update(['status'=>0]);
  1293. //将点赞信息列表里的状态修改
  1294. Db::name("praise_messages")->where("videoid={$id}")->update(['status'=>0]);
  1295. //将评论@信息列表的状态更改
  1296. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->update(['status'=>0]);
  1297. //将评论信息列表的状态更改
  1298. Db::name("user_video_comments_messages")->where("videoid={$id}")->update(['status'=>0]);
  1299. //将视频收藏状态更改
  1300. Db::name("user_video_collection")->where("videoid={$id}")->update(['status'=>0]);
  1301. //更新此视频的举报信息
  1302. $data1=array(
  1303. 'status'=>1,
  1304. 'uptime'=>time()
  1305. );
  1306. Db::name("user_video_report")->where("videoid={$id}")->update($data1);
  1307. $uid=$videoInfo['uid'];
  1308. if($videoInfo['title']!=''){
  1309. $videoTitle='上传的《'.$videoInfo['title'].'》';
  1310. }else{
  1311. $videoTitle='上传的';
  1312. }
  1313. $baseMsg='您于'.date("Y-m-d H:i:s",$videoInfo['addtime']).$videoTitle.'视频被管理员于'.date("Y-m-d H:i:s",time()).'下架';
  1314. $text="视频下架提醒";
  1315. $result1=addSysytemInfo($uid,$text,$baseMsg);
  1316. if($result1!==false){
  1317. //发送腾讯云IM
  1318. txMessageIM($text,$uid);
  1319. }
  1320. //处理视频热门
  1321. $this->changeVideoPopular($id,$videoInfo['p_nums'],1);
  1322. }
  1323. }
  1324. $this->success("操作成功!");
  1325. }
  1326. //批量删除
  1327. public function setBatchDel(){
  1328. $data = $this->request->param();
  1329. $ids = $data['ids'];
  1330. if(empty($ids)){
  1331. $this->error("请选择列表");
  1332. }
  1333. foreach ($ids as $k => $v) {
  1334. $id=$v;
  1335. //获取视频信息
  1336. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  1337. $result=Db::name("user_video")->where("id={$id}")->delete();
  1338. if($result!==false){
  1339. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->delete(); //删除视频评论@信息列表
  1340. Db::name("user_video_comments_messages")->where("videoid={$id}")->delete(); //删除视频评论信息列表
  1341. Db::name("praise_messages")->where("videoid={$id}")->delete(); //删除赞通知列表
  1342. Db::name("user_video_comments")->where("videoid={$id}")->delete(); //删除视频评论
  1343. Db::name("user_video_like")->where("videoid={$id}")->delete(); //删除视频喜欢
  1344. Db::name("user_video_report")->where("videoid={$id}")->delete(); //删除视频举报
  1345. Db::name("user_video_view")->where("videoid={$id}")->delete(); //删除视频观看
  1346. Db::name("user_video_comments_like")->where("videoid={$id}")->delete(); //删除视频评论喜欢
  1347. if($videoInfo['isdel']==0){ //视频上架情况下被删除发送通知
  1348. $uid=$videoInfo['uid'];
  1349. if($videoInfo['title']!=''){
  1350. $videoTitle='上传的《'.$videoInfo['title'].'》';
  1351. }else{
  1352. $videoTitle='上传的';
  1353. }
  1354. $baseMsg='您于'.date("Y-m-d H:i:s",$videoInfo['addtime']).$videoTitle.'视频被管理员于'.date("Y-m-d H:i:s",time()).'删除';
  1355. $text="视频删除提醒";
  1356. $result1=addSysytemInfo($uid,$text,$baseMsg);
  1357. if($result1!==false){
  1358. //发送腾讯云IM
  1359. txMessageIM($text,$uid);
  1360. }
  1361. }
  1362. //处理视频热门
  1363. $this->changeVideoPopular($id,$videoInfo['p_nums'],0);
  1364. }
  1365. }
  1366. $this->success("操作成功!");
  1367. }
  1368. //批量审核 通过/不通过
  1369. public function setBatchStatus(){
  1370. $data=$this->request->param();
  1371. $status=$data['status'];
  1372. $ids=$data['ids'];
  1373. if(empty($ids)){
  1374. $this->error("请选择列表");
  1375. }
  1376. foreach ($ids as $k => $v) {
  1377. $post_data=array(
  1378. 'status'=>$status
  1379. );
  1380. if($status==2){
  1381. $post_data['nopass_time']=time();
  1382. }
  1383. $id=$v;
  1384. $videoInfo=Db::name("user_video")->where("id={$id}")->find();
  1385. $result=Db::name("user_video")->where("id={$id}")->update($post_data);
  1386. if($result!==false){
  1387. if($status==2){ //如果该视频状态改为不通过,需要将视频喜欢列表的状态更改
  1388. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>0]);
  1389. Db::name("user_video_view")->where("videoid={$id}")->update(['status'=>0]);
  1390. }
  1391. if($status==2&&$videoInfo['nopasstime']==0){ //视频状态为审核不通过且为第一次审核为不通过,发送极光IM
  1392. $uid=$videoInfo['uid'];
  1393. if($videoInfo['title']!=''){
  1394. $videoTitle='上传的《'.$videoInfo['title'].'》';
  1395. }else{
  1396. $videoTitle='上传的';
  1397. }
  1398. $baseMsg='您于'.date("Y-m-d H:i:s",$videoInfo['addtime']).$videoTitle.'视频被管理员于'.date("Y-m-d H:i:s",time()).'审核为不通过';;
  1399. $text="视频未审核通过提醒";
  1400. $result1=addSysytemInfo($uid,$text,$baseMsg);
  1401. if($result1!==false){
  1402. //发送腾讯云IM
  1403. txMessageIM($text,$uid);
  1404. }
  1405. }
  1406. }
  1407. }
  1408. $this->success('修改成功');
  1409. }
  1410. //处理热门视频 type 处理类型 1要更新视频的热门信息 0不处理
  1411. public function changeVideoPopular($videoid,$pnums,$type){
  1412. //如果该视频正在上热门,将上热门剩余的钻石退回
  1413. $popinfo=Db::name("popular_orders")->where("videoid={$videoid} and status=1 and refund_status=0")->field("id,uid,touid,money,nums")->find();
  1414. if($popinfo){
  1415. if($popinfo['nums']){
  1416. $coin=$pnums/$popinfo['nums']*$popinfo['money'];
  1417. $coin=floor($coin);
  1418. if($coin>=1){
  1419. $isok=changeUserCoin($popinfo['uid'],$coin,1);
  1420. if($isok){
  1421. $data=array(
  1422. 'type'=>'income',
  1423. 'action'=>'pop_refund',
  1424. 'uid'=>$popinfo['touid'], //视频发布者
  1425. 'touid'=>$popinfo['uid'], //花钱帮助上热门用户的id
  1426. 'totalcoin'=>$coin,
  1427. 'videoid'=>$videoid,
  1428. 'addtime'=>time()
  1429. );
  1430. //写入钻石消费记录
  1431. setCoinRecord($data);
  1432. if($type){
  1433. //更新视频的热门信息
  1434. $data1=array(
  1435. 'p_expire'=>0,
  1436. 'p_nums'=>0,
  1437. 'p_add'=>0
  1438. );
  1439. Db::name("user_video")->where("id={$videoid}")->update($data1);
  1440. }
  1441. }
  1442. }
  1443. //将上热门记录的退款状态修改一下
  1444. Db::name("popular_orders")->where("id={$popinfo['id']}")->update(["refund_status"=>1]);
  1445. }
  1446. }
  1447. }
  1448. //批量上架
  1449. public function setBatchShelves(){
  1450. $data = $this->request->param();
  1451. $ids = $data['ids'];
  1452. if(empty($ids)){
  1453. $this->error("请选择列表");
  1454. }
  1455. foreach ($ids as $k => $v) {
  1456. $id=$v;
  1457. $arr=array(
  1458. 'xiajia_reason'=>'',
  1459. 'isdel'=>0
  1460. );
  1461. $result=Db::name("user_video")->where("id={$id}")->update($arr);
  1462. if($result!==false){
  1463. //将视频喜欢列表的状态更改
  1464. Db::name("user_video_like")->where("videoid={$id}")->update(['status'=>1]);
  1465. //将视频观看列表的状态更改
  1466. Db::name("user_video_view")->where("videoid={$id}")->update(['status'=>1]);
  1467. //将点赞信息列表里的状态修改
  1468. Db::name("praise_messages")->where("videoid={$id}")->update(['status'=>1]);
  1469. //将评论@信息列表的状态更改
  1470. Db::name("user_video_comments_at_messages")->where("videoid={$id}")->update(['status'=>1]);
  1471. //将评论信息列表的状态更改
  1472. Db::name("user_video_comments_messages")->where("videoid={$id}")->update(['status'=>1]);
  1473. //将视频收藏状态更改
  1474. Db::name("user_video_collection")->where("videoid={$id}")->update(['status'=>1]);
  1475. }
  1476. }
  1477. $this->success("操作成功!");
  1478. }
  1479. }