Video.php 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176
  1. <?php
  2. // +—————————————————————————————————————————————————————————————————————
  3. // | Created by Yunbao
  4. // +—————————————————————————————————————————————————————————————————————
  5. // | Copyright (c) 2013~2022 http://www.yunbaokj.com All rights reserved.
  6. // +—————————————————————————————————————————————————————————————————————
  7. // | Author: https://gitee.com/yunbaokeji
  8. // +—————————————————————————————————————————————————————————————————————
  9. // | Date: 2022-04-30
  10. // +—————————————————————————————————————————————————————————————————————
  11. class Api_Video extends PhalApi_Api {
  12. public function getRules() {
  13. return array(
  14. 'setVideo' => array(
  15. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  16. 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'),
  17. 'title' => array('name' => 'title', 'type' => 'string', 'desc' => '标题'),
  18. 'thumb' => array('name' => 'thumb', 'type' => 'string', 'require' => true, 'desc' => '封面图'),
  19. 'href' => array('name' => 'href', 'type' => 'string', 'require' => true, 'desc' => '视频链接'),
  20. 'href_w' => array('name' => 'href_w', 'type' => 'string', 'desc' => '水印视频链接'),
  21. 'lat' => array('name' => 'lat', 'type' => 'string', 'desc' => '维度'),
  22. 'lng' => array('name' => 'lng', 'type' => 'string', 'desc' => '经度'),
  23. 'city' => array('name' => 'city', 'type' => 'string', 'desc' => '城市'),
  24. 'music_id' => array('name' => 'music_id', 'type' => 'int','default'=>0, 'desc' => '背景音乐id'),
  25. 'anyway' => array('name' => 'anyway', 'type' => 'string', 'default'=>'1.1','desc' => '横竖屏(封面-高/宽),大于1表示竖屏,小于1表示横屏'),
  26. ),
  27. 'setComment' => array(
  28. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  29. 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'),
  30. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  31. 'touid' => array('name' => 'touid', 'type' => 'int', 'default'=>0, 'desc' => '回复的评论UID'),
  32. 'commentid' => array('name' => 'commentid', 'type' => 'int', 'default'=>0, 'desc' => '回复的评论commentid'),
  33. 'parentid' => array('name' => 'parentid', 'type' => 'int', 'default'=>0, 'desc' => '回复的评论ID'),
  34. 'content' => array('name' => 'content', 'type' => 'string', 'default'=>'', 'desc' => '内容'),
  35. ),
  36. 'addView' => array(
  37. 'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'desc' => '用户ID'),
  38. 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'),
  39. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  40. 'random_str'=>array('name' => 'random_str', 'type' => 'string', 'require' => true, 'desc' => '加密串'),
  41. ),
  42. 'addLike' => array(
  43. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  44. 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'),
  45. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  46. ),
  47. 'addShare' => array(
  48. 'uid' => array('name' => 'uid', 'type' => 'int', 'desc' => '用户ID'),
  49. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  50. 'random_str'=>array('name' => 'random_str', 'type' => 'string', 'require' => true, 'desc' => '加密串'),
  51. ),
  52. 'addCommentLike' => array(
  53. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  54. 'token' => array('name' => 'token', 'type' => 'string', 'require' => false, 'desc' => '用户Token'),
  55. 'commentid' => array('name' => 'commentid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '评论/回复 ID'),
  56. ),
  57. 'getVideoList' => array(
  58. 'uid' => array('name' => 'uid', 'type' => 'int', 'desc' => '用户ID'),
  59. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  60. ),
  61. 'getVideo' => array(
  62. 'uid' => array('name' => 'uid', 'type' => 'int','desc' => '用户ID'),
  63. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  64. 'mobileid' => array('name' => 'mobileid', 'type' => 'string', 'desc' => '手机唯一识别码'),
  65. ),
  66. 'getComments' => array(
  67. 'uid' => array('name' => 'uid', 'type' => 'int','desc' => '用户ID'),
  68. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  69. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  70. ),
  71. 'getReplys' => array(
  72. 'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'desc' => '用户ID'),
  73. 'commentid' => array('name' => 'commentid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '评论ID'),
  74. 'last_replyid' => array('name' => 'last_replyid', 'type' => 'int', 'min' => 0, 'default'=>0, 'require' => true, 'desc' => '上一次请求时最小的回复id,第一次请求时为评论列表里的回复id'),
  75. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  76. ),
  77. 'delComments' => array(
  78. 'uid' => array('name' => 'uid', 'type' => 'int','desc' => '用户ID'),
  79. 'token' => array('name' => 'token', 'type' => 'string', 'require' => false, 'desc' => '用户Token'),
  80. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  81. 'commentid' => array('name' => 'commentid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '评论ID'),
  82. 'commentuid' => array('name' => 'commentuid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '评论者用户ID'),
  83. ),
  84. 'getMyVideo' => array(
  85. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  86. 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => '用户Token'),
  87. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  88. ),
  89. 'del' => array(
  90. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  91. 'token' => array('name' => 'token', 'type' => 'string', 'min' => 1, 'require' => true, 'desc' => 'token'),
  92. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  93. ),
  94. 'report' => array(
  95. 'uid' => array('name' => 'uid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '用户ID'),
  96. 'token' => array('name' => 'token', 'type' => 'string', 'require' => true, 'desc' => 'token'),
  97. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  98. 'content' => array('name' => 'content', 'type' => 'string', 'min' => 1, 'require' => true, 'desc' => '举报内容'),
  99. ),
  100. 'getHomeVideo' => array(
  101. 'uid' => array('name' => 'uid', 'type' => 'int', 'desc' => '用户ID'),
  102. 'touid' => array('name' => 'touid', 'type' => 'int', 'require' => true, 'desc' => '对方ID'),
  103. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  104. ),
  105. 'getRecommendVideos'=>array(
  106. 'uid' => array('name' => 'uid', 'type' => 'int', 'desc' => '用户ID'),
  107. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  108. 'isstart' => array('name' => 'isstart', 'type' => 'int', 'default'=>0, 'desc' => '是否启动App'),
  109. 'mobileid' => array('name' => 'mobileid', 'type' => 'string', 'desc' => '手机唯一识别码'),
  110. ),
  111. 'setConversion'=>array(
  112. 'uid' => array('name' => 'uid', 'type' => 'int', 'require' => true, 'desc' => '用户ID'),
  113. 'videoid' => array('name' => 'videoid', 'type' => 'int', 'min' => 1, 'require' => true, 'desc' => '视频ID'),
  114. 'random_str'=>array('name' => 'random_str', 'type' => 'string', 'require' => true, 'desc' => '加密串'),
  115. ),
  116. 'getVideoListByMusic'=>array(
  117. 'uid' => array('name' => 'uid', 'type' => 'int','desc' => '用户ID'),
  118. 'musicid' => array('name' => 'musicid', 'type' => 'string', 'min' => 1, 'require' => true, 'desc' => '音乐ID'),
  119. 'p' => array('name' => 'p', 'type' => 'int', 'min' => 1, 'default'=>1, 'desc' => '页数'),
  120. ),
  121. 'getCitys'=>array(
  122. /* 'key' => array('name' => 'key', 'type' => 'string', 'default'=>'' ,'desc' => '关键词'), */
  123. ),
  124. );
  125. }
  126. /**
  127. * 发布短视频
  128. * @desc 用于发布短视频
  129. * @return int code 操作码,0表示成功
  130. * @return array info
  131. * @return string info[0].id 视频记录ID
  132. * @return string msg 提示信息
  133. */
  134. public function setVideo() {
  135. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  136. $uid=checkNull($this->uid);
  137. $token=checkNull($this->token);
  138. $title=checkNull($this->title);
  139. $thumb=checkNull($this->thumb);
  140. $href=checkNull($this->href);
  141. $href_w=checkNull($this->href_w);
  142. $lat=checkNull($this->lat);
  143. $lng=checkNull($this->lng);
  144. $city=checkNull($this->city);
  145. $music_id=checkNull($this->music_id);
  146. $anyway=checkNull($this->anyway);
  147. $checkToken=checkToken($uid,$token);
  148. if($checkToken==700){
  149. $rs['code'] = $checkToken;
  150. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  151. return $rs;
  152. }else if($checkToken==10020){
  153. $rs['code'] = 700;
  154. $rs['msg'] = '该账号已被禁用';
  155. return $rs;
  156. }
  157. $configpri=getConfigPri();
  158. if(!$thumb){
  159. $rs['code'] = 1004;
  160. $rs['msg'] = '请选择视频封面';
  161. return $rs;
  162. }
  163. if($configpri['cloudtype']==1){ //七牛
  164. $thumb_s=$thumb.'?imageView2/2/w/200/h/200';
  165. }else{
  166. $thumb_s=$thumb;
  167. }
  168. if(!$href){
  169. $rs['code'] = 1004;
  170. $rs['msg'] = '请上传视频';
  171. return $rs;
  172. }
  173. $configpub=getConfigPub();
  174. $watermark=$configpub['watermark'];
  175. if($watermark!=""){
  176. if($href_w==""){
  177. $rs['code'] = 1004;
  178. $rs['msg'] = '请上传视频';
  179. return $rs;
  180. }
  181. }else{
  182. $href_w=$href;
  183. }
  184. $data=array(
  185. "uid"=>$uid,
  186. "title"=>$title,
  187. "thumb"=>$thumb,
  188. "thumb_s"=>$thumb_s,
  189. "href"=>$href,
  190. "href_w"=>$href_w,
  191. "lat"=>$lat,
  192. "lng"=>$lng,
  193. "city"=>$city,
  194. "likes"=>0,
  195. "views"=>1, //因为涉及到推荐排序问题,所以初始值要为1
  196. "comments"=>0,
  197. "addtime"=>time(),
  198. "music_id"=>$music_id,
  199. 'anyway'=>$anyway,
  200. );
  201. $domain = new Domain_Video();
  202. $info = $domain->setVideo($data,$music_id);
  203. if(!$info){
  204. $rs['code']=1001;
  205. $rs['msg']='发布失败';
  206. return $rs;
  207. }
  208. $rs['info'][0]['id']=$info['id'];
  209. $rs['info'][0]['thumb_s']=$thumb_s;
  210. $rs['info'][0]['title']=$title;
  211. return $rs;
  212. }
  213. /**
  214. * 用户评论视频/回复别人评论
  215. * @desc 用于用户评论视频/回复别人评论
  216. * @return int code 操作码,0表示成功
  217. * @return array info
  218. * @return int info[0].isattent 对方是否关注我
  219. * @return int info[0].u2t 我是否拉黑对方
  220. * @return int info[0].t2u 对方是否拉黑我
  221. * @return int info[0].comments 评论总数
  222. * @return int info[0].replys 回复总数
  223. * @return string msg 提示信息
  224. */
  225. public function setComment() {
  226. $rs = array('code' => 0, 'msg' => '评论成功', 'info' => array());
  227. $uid=checkNull($this->uid);
  228. $token=checkNull($this->token);
  229. $touid=$this->touid;
  230. $videoid=$this->videoid;
  231. $commentid=$this->commentid;
  232. $parentid=$this->parentid;
  233. $content=checkNull($this->content);
  234. $checkToken=checkToken($uid,$token);
  235. if($checkToken==700){
  236. $rs['code'] = $checkToken;
  237. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  238. return $rs;
  239. }else if($checkToken==10020){
  240. $rs['code'] = 700;
  241. $rs['msg'] = '该账号已被禁用';
  242. return $rs;
  243. }
  244. if($content==''){
  245. $rs['code'] = 1002;
  246. $rs['msg'] = '请输入内容';
  247. return $rs;
  248. }
  249. //检测敏感词
  250. $keywordsIsExist=checkSensitiveWords($content);
  251. if($keywordsIsExist){
  252. $rs['code'] = 1001;
  253. $rs['msg'] = '输入非法,请重新输入';
  254. return $rs;
  255. }
  256. if($commentid==0 && $commentid!=$parentid){
  257. $commentid=$parentid;
  258. }
  259. $data=array(
  260. 'uid'=>$uid,
  261. 'touid'=>$touid,
  262. 'videoid'=>$videoid,
  263. 'commentid'=>$commentid,
  264. 'parentid'=>$parentid,
  265. 'content'=>$content,
  266. 'addtime'=>time(),
  267. );
  268. $domain = new Domain_Video();
  269. $result = $domain->setComment($data);
  270. if($result==1001){
  271. $rs['code']=1001;
  272. $rs['msg']="评论失败";
  273. return $rs;
  274. }
  275. $info=array(
  276. 'isattent'=>'0',
  277. 'comments'=>$result['comments'],
  278. 'replys'=>$result['replys'],
  279. );
  280. if($touid>0){
  281. $isattent=isAttention($touid,$uid);
  282. $info['isattent']=(string)$isattent;
  283. }
  284. $rs['info'][0]=$info;
  285. if($parentid!=0){
  286. $rs['msg']='回复成功';
  287. }
  288. return $rs;
  289. }
  290. /**
  291. * 更新视频阅读次数
  292. * @desc 用于更新视频阅读次数
  293. * @return int code 操作码,0表示成功
  294. * @return string msg 提示信息
  295. */
  296. public function addView() {
  297. $rs = array('code' => 0, 'msg' => '更新视频阅读次数成功', 'info' => array());
  298. $uid=checkNull($this->uid);
  299. $token=checkNull($this->token);
  300. $videoid=checkNull($this->videoid);
  301. $random_str=checkNull($this->random_str);
  302. //md5加密验证字符串
  303. $str=md5($uid.'-'.$videoid.'-'.'#2hgfk85cm23mk58vncsark');
  304. if($random_str!==$str){
  305. $rs['code'] = 1001;
  306. $rs['msg'] = '更新视频阅读次数失败';
  307. return $rs;
  308. }
  309. $checkToken=checkToken($uid,$token);
  310. if($checkToken==700){
  311. $rs['code'] = $checkToken;
  312. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  313. return $rs;
  314. }else if($checkToken==10020){
  315. $rs['code'] = 700;
  316. $rs['msg'] = '该账号已被禁用';
  317. return $rs;
  318. }
  319. $domain = new Domain_Video();
  320. $res = $domain->addView($uid,$videoid);
  321. return $rs;
  322. }
  323. /**
  324. * 视频点赞数累计
  325. * @desc 用于视频点赞数累计
  326. * @return int code 操作码,0表示成功
  327. * @return array info
  328. * @return string info[0].islike 是否点赞
  329. * @return string info[0].likes 点赞数量
  330. * @return string msg 提示信息
  331. */
  332. public function addLike() {
  333. $rs = array('code' => 0, 'msg' => '点赞成功', 'info' => array());
  334. $uid=checkNull($this->uid);
  335. $token=checkNull($this->token);
  336. $videoid=checkNull($this->videoid);
  337. $isBlackUser=isBlackUser($uid);
  338. if($isBlackUser=='0'){
  339. $rs['code'] = 700;
  340. $rs['msg'] = '该账号已被禁用';
  341. return $rs;
  342. }
  343. $checkToken=checkToken($uid,$token);
  344. if($checkToken==700){
  345. $rs['code'] = $checkToken;
  346. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  347. return $rs;
  348. }else if($checkToken==10020){
  349. $rs['code'] = 700;
  350. $rs['msg'] = '该账号已被禁用';
  351. return $rs;
  352. }
  353. $domain = new Domain_Video();
  354. $result = $domain->addLike($uid,$videoid);
  355. if($result==1001){
  356. $rs['code'] = 1001;
  357. $rs['msg'] = "视频已删除";
  358. return $rs;
  359. }else if($result==1002){
  360. $rs['code'] = 1002;
  361. $rs['msg'] = "不能给自己点赞";
  362. return $rs;
  363. }
  364. $rs['info'][0]=$result;
  365. return $rs;
  366. }
  367. /**
  368. * 视频分享数累计
  369. * @desc 用于视频分享数累计
  370. * @return int code 操作码,0表示成功
  371. * @return array info
  372. * @return string info[0].isshare 是否分享
  373. * @return string info[0].shares 分享数量
  374. * @return string msg 提示信息
  375. */
  376. public function addShare() {
  377. $rs = array('code' => 0, 'msg' => '分享成功', 'info' => array());
  378. $uid=checkNull($this->uid);
  379. $videoid=checkNull($this->videoid);
  380. $random_str=checkNull($this->random_str);
  381. //md5加密验证字符串
  382. $str=md5($uid.'-'.$videoid.'-'.'#2hgfk85cm23mk58vncsark');
  383. if($random_str!==$str){
  384. $rs['code'] = 1001;
  385. $rs['msg'] = '视频分享数修改失败';
  386. return $rs;
  387. }
  388. $domain = new Domain_Video();
  389. $rs['info'][0] = $domain->addShare($uid,$videoid);
  390. return $rs;
  391. }
  392. /**
  393. * 评论/回复 点赞数累计
  394. * @desc 用于评论/回复 点赞数累计
  395. * @return int code 操作码,0表示成功
  396. * @return array info
  397. * @return string info[0].islike 是否点赞
  398. * @return string info[0].likes 点赞数量
  399. * @return string msg 提示信息
  400. */
  401. public function addCommentLike() {
  402. $rs = array('code' => 0, 'msg' => '点赞成功', 'info' => array());
  403. $uid=checkNull($this->uid);
  404. $token=checkNull($this->token);
  405. $commentid=checkNull($this->commentid);
  406. $isBlackUser=isBlackUser($uid);
  407. if($isBlackUser=='0'){
  408. $rs['code'] = 700;
  409. $rs['msg'] = '该账号已被禁用';
  410. return $rs;
  411. }
  412. $checkToken=checkToken($uid,$token);
  413. if($checkToken==700){
  414. $rs['code'] = $checkToken;
  415. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  416. return $rs;
  417. }else if($checkToken==10020){
  418. $rs['code'] = 700;
  419. $rs['msg'] = '该账号已被禁用';
  420. return $rs;
  421. }
  422. $domain = new Domain_Video();
  423. $res= $domain->addCommentLike($uid,$commentid);
  424. if($res==1001){
  425. $rs['code']=1001;
  426. $rs['msg']='评论信息不存在';
  427. return $rs;
  428. }
  429. $rs['info'][0]=$res;
  430. return $rs;
  431. }
  432. /**
  433. * 获取热门视频
  434. * @desc 用于获取热门视频
  435. * @return int code 操作码,0表示成功
  436. * @return array info 视频列表
  437. * @return object info[].userinfo 用户信息
  438. * @return string info[].datetime 格式后的发布时间
  439. * @return string info[].islike 是否点赞
  440. * @return string info[].isattent 是否关注
  441. * @return string info[].thumb_s 封面小图,分享用
  442. * @return string info[].comments 评论总数
  443. * @return string info[].likes 点赞数
  444. * @return string msg 提示信息
  445. */
  446. public function getVideoList() {
  447. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  448. $uid=checkNull($this->uid);
  449. $p=checkNull($this->p);
  450. $isBlackUser=isBlackUser($uid);
  451. if($isBlackUser=='0'){
  452. $rs['code'] = 700;
  453. $rs['msg'] = '该账号已被禁用';
  454. return $rs;
  455. }
  456. $key='videoHot_'.$p;
  457. $info=getcache($key);
  458. if(!$info){
  459. $domain = new Domain_Video();
  460. $info= $domain->getVideoList($uid,$p);
  461. if($info==10010){
  462. $rs['code'] = 0;
  463. $rs['msg'] = "暂无视频列表";
  464. return $rs;
  465. }
  466. setcaches($key,$info,2);
  467. }
  468. $rs['info'] =$info;
  469. return $rs;
  470. }
  471. /**
  472. * 获取视频详情
  473. * @desc 用于获取视频详情
  474. * @return int code 操作码,0表示成功,1000表示视频不存在 1001 需要登录 1002 购买vip 1003 支付钻石
  475. * @return array info[0] 视频详情
  476. * @return object info[0].userinfo 用户信息
  477. * @return string info[0].datetime 格式后的时间差
  478. * @return string info[0].isattent 是否关注
  479. * @return string info[0].likes 点赞数
  480. * @return string info[0].comments 评论数
  481. * @return string info[0].views 阅读数
  482. * @return string info[0].steps 踩一踩数量
  483. * @return string info[0].shares 分享数量
  484. * @return string info[0].islike 是否点赞
  485. * @return string info[0].isstep 是否踩
  486. * @return string msg 提示信息
  487. */
  488. public function getVideo() {
  489. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  490. $uid=checkNull($this->uid);
  491. $videoid=checkNull($this->videoid);
  492. $mobileid=checkNull($this->mobileid);
  493. if($uid<0&&!$mobileid){
  494. $rs['code'] = 999;
  495. $rs['msg'] = "手机识别码获取失败";
  496. return $rs;
  497. }
  498. $domain = new Domain_Video();
  499. $result = $domain->getVideo($uid,$videoid);
  500. if($result==1000){
  501. $rs['code'] = 999;
  502. $rs['msg'] = "视频已删除";
  503. return $rs;
  504. }
  505. $rs['info'][0]=$result;
  506. return $rs;
  507. }
  508. /**
  509. * 获取视频评论列表
  510. * @desc 用于获取视频评论列表
  511. * @return int code 操作码,0表示成功
  512. * @return array info
  513. * @return string info[0].comments 评论总数
  514. * @return array info[0].commentlist 评论列表
  515. * @return object info[0].commentlist[].userinfo 用户信息
  516. * @return string info[0].commentlist[].datetime 格式后的时间差
  517. * @return string info[0].commentlist[].replys 回复总数
  518. * @return string info[0].commentlist[].likes 点赞数
  519. * @return string info[0].commentlist[].islike 是否点赞
  520. * @return string msg 提示信息
  521. */
  522. public function getComments() {
  523. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  524. $uid=checkNull($this->uid);
  525. $videoid=checkNull($this->videoid);
  526. $p=checkNull($this->p);
  527. $isBlackUser=isBlackUser($uid);
  528. if($isBlackUser=='0'){
  529. $rs['code'] = 700;
  530. $rs['msg'] = '该账号已被禁用';
  531. return $rs;
  532. }
  533. $domain = new Domain_Video();
  534. $rs['info'][0] = $domain->getComments($uid,$videoid,$p);
  535. return $rs;
  536. }
  537. /**
  538. * 获取视频评论回复列表
  539. * @desc 用于获取视频评论回复列表
  540. * @return int code 操作码,0表示成功
  541. * @return array info 评论列表
  542. * @return object info[].userinfo 用户信息
  543. * @return string info[].datetime 格式后的时间差
  544. * @return object info[].tocommentinfo 回复的评论的信息
  545. * @return object info[].tocommentinfo.content 评论内容
  546. * @return string info[].likes 点赞数
  547. * @return string info[].islike 是否点赞
  548. * @return string msg 提示信息
  549. */
  550. public function getReplys() {
  551. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  552. $uid=checkNull($this->uid);
  553. $commentid=checkNull($this->commentid);
  554. $last_replyid=checkNull($this->last_replyid);
  555. $p=checkNull($this->p);
  556. $isBlackUser=isBlackUser($uid);
  557. if($isBlackUser=='0'){
  558. $rs['code'] = 700;
  559. $rs['msg'] = '该账号已被禁用';
  560. return $rs;
  561. }
  562. $domain = new Domain_Video();
  563. $res = $domain->getReplys($uid,$commentid,$last_replyid,$p);
  564. $rs['info'][0]['lists']=$res['lists'];
  565. $rs['info'][0]['replys']=$res['replys'];
  566. return $rs;
  567. }
  568. /**
  569. * 删除评论以及子级评论
  570. * @desc 用于删除评论以及子级评论
  571. * @return int code 操作码,0表示成功
  572. * @return string msg 提示信息
  573. */
  574. public function delComments() {
  575. $rs = array('code' => 0, 'msg' => '删除成功', 'info' => array());
  576. $uid=checkNull($this->uid);
  577. $token=checkNull($this->token);
  578. $videoid=checkNull($this->videoid);
  579. $commentid=checkNull($this->commentid);
  580. $commentuid=checkNull($this->commentuid);
  581. $checkToken=checkToken($uid,$token);
  582. if($checkToken==700){
  583. $rs['code'] = $checkToken;
  584. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  585. return $rs;
  586. }else if($checkToken==10020){
  587. $rs['code'] = 700;
  588. $rs['msg'] = '该账号已被禁用';
  589. return $rs;
  590. }
  591. $domain = new Domain_Video();
  592. $info = $domain->delComments($uid,$videoid,$commentid,$commentuid);
  593. if($info==1001){
  594. $rs['code'] = 1001;
  595. $rs['msg'] = '视频信息错误,请稍后操作~';
  596. }else if($info==1002){
  597. $rs['code'] = 1002;
  598. $rs['msg'] = '您无权进行删除操作~';
  599. }
  600. return $rs;
  601. }
  602. /**
  603. * 获取用户发布的视频
  604. * @desc 用于获取我发布的视频
  605. * @return int code 操作码,0表示成功
  606. * @return array info 视频列表
  607. * @return array info[].userinfo 用户信息
  608. * @return string info[].datetime 格式后的发布时间
  609. * @return string info[].islike 是否点赞
  610. * @return string msg 提示信息
  611. */
  612. public function getMyVideo() {
  613. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  614. $uid=checkNull($this->uid);
  615. $token=checkNull($this->token);
  616. $p=$this->p;
  617. $checkToken=checkToken($uid,$token);
  618. if($checkToken==700){
  619. $rs['code'] = $checkToken;
  620. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  621. return $rs;
  622. }else if($checkToken==10020){
  623. $rs['code'] = 700;
  624. $rs['msg'] = '该账号已被禁用';
  625. return $rs;
  626. }
  627. $domain = new Domain_Video();
  628. $rs['info'] = $domain->getMyVideo($uid,$p);
  629. return $rs;
  630. }
  631. /**
  632. * 下架视频以及相关信息
  633. * @desc 用于下架视频以及相关信息
  634. * @return int code 操作码,0表示成功
  635. * @return string msg 提示信息
  636. */
  637. public function del() {
  638. $rs = array('code' => 0, 'msg' => '删除成功', 'info' => array());
  639. $uid=checkNull($this->uid);
  640. $token=checkNull($this->token);
  641. $videoid=checkNull($this->videoid);
  642. $checkToken=checkToken($uid,$token);
  643. if($checkToken==700){
  644. $rs['code'] = $checkToken;
  645. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  646. return $rs;
  647. }else if($checkToken==10020){
  648. $rs['code'] = 700;
  649. $rs['msg'] = '该账号已被禁用';
  650. return $rs;
  651. }
  652. $domain = new Domain_Video();
  653. $info = $domain->del($uid,$videoid);
  654. return $rs;
  655. }
  656. /**
  657. * 举报视频
  658. * @desc 用于举报视频
  659. * @return int code 操作码,0表示成功
  660. * @return string msg 提示信息
  661. */
  662. public function report() {
  663. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  664. $uid=checkNull($this->uid);
  665. $token=checkNull($this->token);
  666. $videoid=checkNull($this->videoid);
  667. $content=checkNull($this->content);
  668. $checkToken=checkToken($uid,$token);
  669. if($checkToken==700){
  670. $rs['code'] = $checkToken;
  671. $rs['msg'] = '您的登陆状态失效,请重新登陆!';
  672. return $rs;
  673. }else if($checkToken==10020){
  674. $rs['code'] = 700;
  675. $rs['msg'] = '该账号已被禁用';
  676. return $rs;
  677. }
  678. $data=array(
  679. 'uid'=>$uid,
  680. 'videoid'=>$videoid,
  681. 'content'=>$content,
  682. 'addtime'=>time(),
  683. );
  684. $domain = new Domain_Video();
  685. $info = $domain->report($data);
  686. if($info==1000){
  687. $rs['code'] = 1001;
  688. $rs['msg'] = '视频不存在';
  689. return $rs;
  690. }
  691. return $rs;
  692. }
  693. /**
  694. * 获取个人主页视频
  695. * @desc 用于获取个人主页视频
  696. * @return int code 操作码,0表示成功
  697. * @return string msg 提示信息
  698. */
  699. public function getHomeVideo() {
  700. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  701. $uid=checkNull($this->uid);
  702. $touid=checkNull($this->touid);
  703. $p=checkNull($this->p);
  704. $isBlackUser=isBlackUser($uid);
  705. if($isBlackUser=='0'){
  706. $rs['code'] = 700;
  707. $rs['msg'] = '该账号已被禁用';
  708. return $rs;
  709. }
  710. $domain = new Domain_Video();
  711. $info = $domain->getHomeVideo($uid,$touid,$p);
  712. $rs['info']=$info;
  713. return $rs;
  714. }
  715. /**
  716. * 检测文件后缀
  717. * @desc 用于检测文件后缀
  718. * @return int code 操作码,0表示成功
  719. * @return int code 操作码,0表示成功
  720. * @return string msg 提示信息
  721. */
  722. public function checkExt($filename){
  723. $config=array("jpg","png","jpeg");
  724. $ext = pathinfo(strip_tags($filename), PATHINFO_EXTENSION);
  725. return empty($config) ? true : in_array(strtolower($ext), $config);
  726. }
  727. /**
  728. * 获取七牛上传Token
  729. * @desc 用于获取七牛上传Token
  730. * @return int code 操作码,0表示成功
  731. * @return string msg 提示信息
  732. * @return array info 返回信息
  733. */
  734. private function getQiniuToken(){
  735. //获取后台配置的七牛云存储信息
  736. $configPri=getConfigPri();
  737. $token = DI()->qiniu->getQiniuToken1($configPri['qiniu_accesskey'],$configPri['qiniu_secretkey'],$configPri['qiniu_bucket']);
  738. return $token;
  739. }
  740. /**
  741. * 获取推荐视频
  742. * @desc 用户获取推荐视频
  743. * @return int code 状态码,0表示成功
  744. * @return string msg 提示信息
  745. * @return array info 返回信息
  746. * @return string info[0].id 视频id
  747. * @return string info[0].uid 视频发布者id
  748. * @return string info[0].title 视频标题
  749. * @return string info[0].thumbs 视频封面
  750. * @return string info[0].thumbs 视频小封面
  751. * @return string info[0].href 视频链接
  752. * @return string info[0].likes 视频被喜欢总数
  753. * @return string info[0].views 视频被观看总数
  754. * @return string info[0].comments 视频评论总数
  755. * @return string info[0].steps 视频被踩总数
  756. * @return string info[0].shares 视频分享总数
  757. * @return string info[0].addtime 视频发布时间
  758. * @return string info[0].lat 纬度
  759. * @return string info[0].lng 经度
  760. * @return string info[0].city 城市
  761. * @return string info[0].isdel 是否删除
  762. * @return string info[0].datetime 视频发布时间格式化
  763. * @return string info[0].islike 是否喜欢了该视频
  764. * @return string info[0].isattent 是否关注
  765. * @return string info[0].isstep 是否踩了该视频
  766. * @return array info[0].userinfo 视频发布者信息
  767. * @return string info[0].userinfo.id 视频发布者id
  768. * @return string info[0].userinfo.user_nicename 视频发布者昵称
  769. * @return string info[0].userinfo.avatar 视频发布者头像
  770. * @return string info[0].userinfo.avatar_thumb 视频发布者小头像
  771. * @return string info[0].userinfo.sex 视频发布者性别
  772. * @return string info[0].userinfo.signature 视频发布者签名
  773. * @return string info[0].userinfo.privince 视频发布者省份
  774. * @return string info[0].userinfo.city 视频发布者市
  775. * @return string info[0].userinfo.birthday 视频发布者生日
  776. * @return string info[0].userinfo.age 视频发布者年龄
  777. * @return string info[0].userinfo.praise 视频发布者被赞总数
  778. * @return string info[0].userinfo.fans 视频发布者粉丝数
  779. * @return string info[0].userinfo.follows 视频发布者关注数
  780. * @return array info[0].musicinfo 背景音乐信息
  781. * @return array info[0].musicinfo.id 背景音乐id
  782. * @return array info[0].musicinfo.title 背景音乐标题
  783. * @return array info[0].musicinfo.author 背景音乐作者
  784. * @return array info[0].musicinfo.img_url 背景音乐封面地址
  785. * @return array info[0].musicinfo.length 背景音乐长度
  786. * @return array info[0].musicinfo.file_url 背景音乐地址
  787. * @return array info[0].musicinfo.use_nums 背景音乐使用次数
  788. */
  789. public function getRecommendVideos(){
  790. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  791. $uid=checkNull($this->uid);
  792. $p=checkNull($this->p);
  793. $isstart=checkNull($this->isstart);
  794. $mobileid=checkNull($this->mobileid);
  795. if($uid>0){ //非游客
  796. $isBlackUser=isBlackUser($uid);
  797. if($isBlackUser=='0'){
  798. $rs['code'] = 700;
  799. $rs['msg'] = '该账号已被禁用';
  800. return $rs;
  801. }
  802. }
  803. $key='videoRecommend_'.$p;
  804. $info=getcache($key);
  805. if(!$info){
  806. $domain=new Domain_Video();
  807. $info=$domain->getRecommendVideos($uid,$p,$isstart,$mobileid);
  808. if($info==1001 || !$info){
  809. $rs['code']=0;
  810. $rs['msg']="暂无视频列表";
  811. return $rs;
  812. }
  813. setcaches($key,$info,2);
  814. }
  815. $rs['info']=$info;
  816. return $rs;
  817. }
  818. /**
  819. * 获取视频举报分类列表
  820. * @desc 获取视频举报分类列表
  821. * @return int code 操作码,0表示成功
  822. * @return string msg 提示信息
  823. * @return array info 返回信息
  824. */
  825. public function getReportContentlist() {
  826. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  827. $domain = new Domain_Video();
  828. $res = $domain->getReportContentlist();
  829. if($res==1001){
  830. $rs['code']=1001;
  831. $rs['msg']='暂无举报分类列表';
  832. return $rs;
  833. }
  834. $rs['info']=$res;
  835. return $rs;
  836. }
  837. /**
  838. * 更新视频看完次数
  839. * @desc 更新视频看完次数
  840. * @return int code 操作码,0表示成功
  841. * @return string msg 提示信息
  842. * @return array info 返回信息
  843. */
  844. public function setConversion(){
  845. $rs = array('code' => 0, 'msg' => '视频完整观看次数更新成功', 'info' => array());
  846. $uid=checkNull($this->uid);
  847. $videoid=checkNull($this->videoid);
  848. $random_str=checkNull($this->random_str);
  849. //md5加密验证字符串
  850. $str=md5($uid.'-'.$videoid.'-'.'#2hgfk85cm23mk58vncsark');
  851. if($random_str!==$str){
  852. $rs['code'] = 1001;
  853. $rs['msg'] = '视频完整观看次数更新失败';
  854. return $rs;
  855. }
  856. $domain = new Domain_Video();
  857. $res = $domain->setConversion($videoid);
  858. return $rs;
  859. }
  860. /**
  861. * 根据音乐id获取视频列表
  862. * @desc 根据音乐id获取视频列表
  863. * @return int code 操作码,0表示成功
  864. * @return string msg 提示信息
  865. * @return array info 返回信息
  866. * @return array info[0]['videolist'] 返回视频列表
  867. * @return array info[0]['musicinfo']['title'] 音乐名称
  868. * @return array info[0]['musicinfo']['author'] 音乐作者
  869. * @return array info[0]['musicinfo']['img_url'] 音乐封面地址
  870. * @return array info[0]['musicinfo']['file_url'] 音乐地址
  871. * @return array info[0]['musicinfo']['use_nums'] 音乐使用人数
  872. * @return array info[0]['musicinfo']['length'] 音乐长度
  873. */
  874. public function getVideoListByMusic(){
  875. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  876. $uid=checkNull($this->uid);
  877. $musicid=checkNull($this->musicid);
  878. $p=checkNull($this->p);
  879. if(!$uid){ //保险起见,防止app用户被顶替登录时,点击拍同款app提示错误
  880. $uid=-999;
  881. }
  882. $domain=new Domain_Video();
  883. $musicinfo=$domain->getMusicInfo($musicid);
  884. if($musicinfo==1001){
  885. $rs['code']=1001;
  886. $rs['msg']="音乐已下架";
  887. return $rs;
  888. }
  889. $res=$domain->getVideoListByMusic($uid,$musicid,$p);
  890. $rs['info'][0]['videolist']=$res;
  891. $rs['info'][0]['musicinfo']=$musicinfo;
  892. return $rs;
  893. }
  894. /**
  895. * 获取云存储方式、获取七牛上传验证token字符串、获取腾讯云存储相关配置信息、获取亚马逊存储相关配置信息
  896. * @desc 用于获取云存储方式、获取七牛上传验证token字符串、获取腾讯云存储相关配置信息、获取亚马逊存储相关配置信息
  897. * @return int code 操作码,0表示成功
  898. * @return string msg 提示信息
  899. * @return array info 返回信息
  900. */
  901. public function getCosInfo(){
  902. $rs=array("code"=>0,"msg"=>"","info"=>array());
  903. //获取七牛信息
  904. $qiniuToken=$this->getQiniuToken();
  905. //获取腾讯云存储配置信息
  906. $configpri=getConfigPri();
  907. if(!$configpri['cloudtype']){
  908. $rs['code']=1001;
  909. $rs['msg']="无指定存储方式";
  910. return $rs;
  911. }
  912. $qiniu_domain_url=$configpri['qiniu_protocol']."://".$configpri['qiniu_domain']."/";
  913. $qiniuInfo=array(
  914. 'qiniuToken'=>$qiniuToken,
  915. 'qiniu_domain'=>$qiniu_domain_url,
  916. 'qiniu_zone'=>'qiniu_hd' //华东:qiniu_hd 华北:qiniu_hb 华南:qiniu_hn 北美:qiniu_bm 新加坡:qiniu_xjp 不可随意更改,app已固定好规则
  917. );
  918. $rs['info'][0]['qiniuInfo']=$qiniuInfo;
  919. $cloudtype="qiniu";
  920. $rs['info'][0]['cloudtype']=$cloudtype;
  921. return $rs;
  922. }
  923. /**
  924. * 获取城市列表
  925. * @desc 用于获取城市列表
  926. * @return int code 操作码,0表示成功
  927. * @return array info
  928. * @return string info[0].id 视频记录ID
  929. * @return string msg 提示信息
  930. */
  931. public function getCitys() {
  932. $rs = array('code' => 0, 'msg' => '', 'info' => array());
  933. $key='getCitys';
  934. $info=getcaches($key);
  935. if(!$info){
  936. $city=API_ROOT.'/../PhalApi/Config/city.json';
  937. // 从文件中读取数据到PHP变量
  938. $json_string = file_get_contents($city);
  939. // 用参数true把JSON字符串强制转成PHP数组
  940. $data = json_decode($json_string, true);
  941. $info=$data['city']; //城市
  942. setcaches($key,$info);
  943. }
  944. $rs['info']=$info;
  945. return $rs;
  946. }
  947. }