ArticleController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Handlers\AudioUploadHandler;
  4. use App\Handlers\VideoUploadHandler;
  5. use App\Models\Article;
  6. use App\Models\ArticleGroup;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\Storage;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Log;
  11. class ArticleController extends Controller
  12. {
  13. //获取文章信息列表
  14. public function getArticleList(Request $request){
  15. $input=$request->all();
  16. $page_size=$input['page_size'];
  17. $page_index=$input['page_index'];
  18. $num = ($page_index - 1) * $page_size;
  19. $search_name=$input['search_name'];
  20. $where=[];
  21. $wheres=[];
  22. if (isset($input['group_id'])){
  23. $group_id=$input['group_id'];
  24. $wheres=function ($q)use($group_id){
  25. $q->where('group_id',$group_id);
  26. };
  27. }
  28. $count=Article::where('title', 'like', '%' . $search_name . '%')
  29. ->where(function ($query) {
  30. $query->where('type', '=', '1')
  31. ->orWhere('type', '=', '0');
  32. })
  33. ->where($where)
  34. ->where($wheres)
  35. ->count();
  36. if($count==0){
  37. $this->error('400001','没有数据');
  38. }
  39. $list=Article::where('title', 'like', '%' . $search_name . '%')
  40. ->where(function ($query) {
  41. $query->where('type', '=', '1')
  42. ->orWhere('type', '=', '0');
  43. })
  44. ->where($where)
  45. ->where($wheres)
  46. ->orderBy('id','desc')
  47. ->skip($num)->take($page_size)
  48. ->get();
  49. if(empty($list)){
  50. return $this->error('400002','没有获取到数据');
  51. }
  52. return $this->success_list($list,'success',$count);
  53. }
  54. //获取直播信息列表
  55. public function getLiveViewList(Request $request){
  56. $input=$request->all();
  57. $page_size=$input['page_size'];
  58. $page_index=$input['page_index'];
  59. $num = ($page_index - 1) * $page_size;
  60. $search_name=$input['search_name'];
  61. $where=[];
  62. $where['type']=2;
  63. $count=Article::where('title', 'like', '%' . $search_name . '%')
  64. ->where($where)
  65. ->count();
  66. if($count==0){
  67. $this->error('400001','没有数据');
  68. }
  69. $list=Article::where('title', 'like', '%' . $search_name . '%')
  70. ->where($where)
  71. ->orderBy('id','desc')
  72. ->skip($num)->take($page_size)
  73. ->get();
  74. if(empty($list)){
  75. return $this->error('400002','没有获取到数据');
  76. }
  77. return $this->success_list($list,'success',$count);
  78. }
  79. //上传图片
  80. public function uploadArticleImage(Request $request){
  81. $path = $request->file('file')->store('articel');
  82. $url = Storage::url($path);
  83. if($url){
  84. return $this->success($url);
  85. }
  86. return $this->error();
  87. }
  88. //添加直播信息
  89. public function uploadLiveView(Request $request){
  90. $input=$request->all();
  91. $data['title']=$input['title'];
  92. $data['label']=2;// 1表示clwz,2表示其他
  93. $data['aid']=Auth::user()->id;
  94. $data['status']=1; // 0为草稿 1为正常 2为删除
  95. $data['type']=2;// 1表示视频, 0表示文章 ,2直播
  96. $data['imgurl']=$input['thumb'];
  97. $data['avatar']=$input['avatar'];
  98. $data['contents']=$input['link'];
  99. $data['summary']=$input['desc'];
  100. $data['startime']=$input['start_time'];
  101. $row=Article::create($data);
  102. if($row){
  103. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加直播成功,id:'.$row->id);
  104. return $this->success([]);
  105. }
  106. return $this->error();
  107. }
  108. //添加社区信息
  109. public function uploadArticle(Request $request){
  110. $input=$request->all();
  111. $data['title']=$input['title'];
  112. $data['label']=$input['label'];// 1表示clwz,2表示其他
  113. $data['aid']=Auth::user()->id;
  114. $data['author']=$input['author'];
  115. $data['avatar']=$input['avatar'];
  116. if (isset($input['is_top'])){
  117. $data['is_top']=$input['is_top'];
  118. $data['recommended']=$input['recommended'];
  119. if ($input['recommended']==1){
  120. Article::where('status',1)->update(['recommended'=>0]);
  121. }
  122. $data['group_id']=$input['group_id'];
  123. $data['issue']=$input['issue'];
  124. $re=ArticleGroup::find($input['group_id']);
  125. $data['group_name']=$re->group_name;
  126. }
  127. $data['status']=1;
  128. $data['type']=$input['type'];// 1表示视频,0表示文章
  129. $data['contents']=$input['contents'];
  130. $data['summary']=$this->make_excerpt($input['contents']);
  131. $row=Article::create($data);
  132. if($row){
  133. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加文章成功,id:'.$row->id);
  134. return $this->success([]);
  135. }
  136. return $this->error();
  137. }
  138. //截取简介
  139. function make_excerpt($value, $length = 200)
  140. {
  141. $excerpt = trim(preg_replace('/\r\n|\r|\n+/', ' ', strip_tags($value)));
  142. return str_limit($excerpt, $length);
  143. }
  144. //修改社区信息
  145. public function updateArticle(Request $request){
  146. $input=$request->all();
  147. $data['title']=$input['title'];
  148. $data['label']=$input['label'];// 1表示clwz,2表示其他
  149. $data['aid']=Auth::user()->id;
  150. $data['author']=$input['author'];
  151. $data['avatar']=$input['avatar'];
  152. $data['type']=$input['type'];// 1表示视频,0表示文章
  153. if (isset($input['is_top'])){
  154. $data['is_top']=$input['is_top'];
  155. $data['recommended']=$input['recommended'];
  156. if ($input['recommended']==1){
  157. Article::where('status',1)->update(['recommended'=>0]);
  158. }
  159. $data['group_id']=$input['group_id'];
  160. $data['issue']=$input['issue'];
  161. $re=ArticleGroup::find($input['group_id']);
  162. $data['group_name']=$re->group_name;
  163. }
  164. // $data['imgurl']=$input['imgurl'];
  165. $data['contents']=$input['contents'];
  166. $data['summary']=$this->make_excerpt($input['contents']);
  167. $row=Article::where('id',$input['id'])->update($data);
  168. if($row){
  169. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改文章成功,id:'.$input['id']);
  170. return $this->success([]);
  171. }
  172. return $this->error();
  173. }
  174. //删除社区信息
  175. public function destoryArticle(Request $request){
  176. $input=$request->all();
  177. $article=Article::find($input['id']);
  178. $row=$article->delete();
  179. if($row){
  180. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除文章成功,id:'.$input['id']);
  181. return $this->success([]);
  182. }
  183. return $this->error();
  184. }
  185. //修改直播信息
  186. public function updateArticleLive(Request $request){
  187. $input=$request->all();
  188. $data['title']=$input['title'];
  189. // $data['label']=2;// 1表示clwz,2表示其他
  190. $data['aid']=Auth::user()->id;
  191. // $data['status']=1; // 0为草稿 1为正常 2为删除
  192. // $data['type']=2;// 1表示视频, 0表示文章 ,2直播
  193. $data['imgurl']=$input['thumb'];
  194. $data['contents']=$input['link'];
  195. $data['summary']=$input['desc'];
  196. $data['startime']=$input['start_time'];
  197. $row=Article::where('id',$input['id'])->update($data);
  198. if($row){
  199. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改直播成功,id:'.$input['id']);
  200. return $this->success([]);
  201. }
  202. return $this->error();
  203. }
  204. //删除直播信息
  205. public function destoryArticleLive(Request $request){
  206. $input=$request->all();
  207. $article=Article::find($input['id']);
  208. $row=$article->delete();
  209. if($row){
  210. Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除直播成功,id:'.$input['id']);
  211. return $this->success([]);
  212. }
  213. return $this->error();
  214. }
  215. /*
  216. * 上传音频
  217. * ***/
  218. public function upload_audio(Request $request,AudioUploadHandler $audioUploadHandler){
  219. $re=$audioUploadHandler->save($request->audio,'audio','audio');
  220. if ($re){
  221. return $this->success(['path'=>$re['path']]);
  222. }
  223. return $this->error(50024,'长传失败');
  224. }
  225. /*
  226. * 上传视频
  227. * ***/
  228. public function upload_video(Request $request,VideoUploadHandler $videoUploadHandler){
  229. $re=$videoUploadHandler->save($request->video,'video','video');
  230. if ($re){
  231. return $this->success(['path'=>$re['path']]);
  232. }
  233. return $this->error(50024,'长传失败');
  234. }
  235. /*
  236. * 获取分组
  237. * ***/
  238. public function GetArticleGroup(Request $request){
  239. $input=$request->all();
  240. // $page_index=$input['page_index'];
  241. // $page_size=$input['page_size'];
  242. $status=$input['status'];
  243. $search_content=$input['search_content'];
  244. $g=ArticleGroup::where('status',$status);
  245. if ($search_content){
  246. $g->where('group_name','like','%'.$search_content.'%');
  247. }
  248. $data=$g->select('group_name','id','sort')->orderBy('sort')->get();
  249. return $this->success_list($data);
  250. }
  251. public function AddArticleGroup(Request $request){
  252. $input=$request->all();
  253. $re=ArticleGroup::where('group_name',$input['group_name'])->first();
  254. if ($re){
  255. return $this->error(50021,'已有当前分组');
  256. }
  257. $g=new ArticleGroup();
  258. $g->group_name=$input['group_name'];
  259. $g->status=$input['status'];
  260. $g->save();
  261. return $this->success([]);
  262. }
  263. /*
  264. * 设置置顶
  265. * **/
  266. public function SetArticleTop(Request $request){
  267. $data=Article::find($request->id);
  268. if ($data->is_top==1){
  269. $data->is_top=0;
  270. }else{
  271. $data->is_top=1;
  272. }
  273. $data->save();
  274. return $this->success([]);
  275. }
  276. /*
  277. * 设置推荐
  278. * ***/
  279. public function SetArticleRecom(Request $request){
  280. $data=Article::find($request->type);
  281. Article::update(['recommended'=>0]);
  282. $data->recommended=1;
  283. $data->save();
  284. return $this->success([]);
  285. }
  286. }