CompanyAudioController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <?php
  2. namespace Modules\Manager\Http\Controllers;
  3. use App\Handlers\UploadFilesHandler;
  4. use Illuminate\Http\Request;
  5. use Dingo\Api\Routing\Helpers;
  6. use App\Http\Controllers\Controller;
  7. use App\Models\CompanyAudio;
  8. use Illuminate\Support\Facades\Auth;
  9. use getID3;
  10. class CompanyAudioController extends Controller
  11. {
  12. //
  13. use Helpers;
  14. /****
  15. * BaseController constructor.
  16. */
  17. public function __construct()
  18. {
  19. }
  20. //列表
  21. public function list(Request $request){
  22. $page_index=$request->input('page_index');
  23. $page_size=$request->input('page_size');
  24. $search_name=$request->input('search_name');
  25. $num=$page_size*($page_index-1);
  26. $status=$request->input('status');
  27. $data=CompanyAudio::query();
  28. if($status != 'all'){
  29. $data->where('status',$status);
  30. }
  31. if($search_name){
  32. $data->where('title','%'.$search_name.'%');
  33. }
  34. $count=$data->count();
  35. $list=$data->orderByDesc('rank')->orderByDesc('created_at')
  36. ->skip($num)->take($page_size)->get();
  37. return $this->success_list($list,'成功',$count);
  38. }
  39. //添加
  40. public function add(Request $request){
  41. $title=$request->input('title');
  42. $url=$request->input('url');
  43. $rank=$request->input('rank');
  44. $status=$request->input('status');
  45. $audio_url=$request->input('audio_url');
  46. $duration=$this->getTime($audio_url);
  47. $res=CompanyAudio::create([
  48. 'title'=>$title,
  49. 'url'=>$url,
  50. 'rank'=>$rank,
  51. 'audio_url'=>$audio_url,
  52. 'status'=>$status,
  53. 'op_name'=>Auth::user()->name,
  54. 'duration'=>$duration
  55. ]);
  56. if($res){
  57. return $this->success([]);
  58. }
  59. return $this->error();
  60. }
  61. //修改
  62. public function edit(Request $request){
  63. $id=$request->input('id');
  64. $title=$request->input('title');
  65. $url=$request->input('url');
  66. $rank=$request->input('rank');
  67. $status=$request->input('status');
  68. $audio_url=$request->input('audio_url');
  69. $duration=$this->getTime($audio_url);
  70. $res=CompanyAudio::where('id',$id)->update([
  71. 'title'=>$title,
  72. 'url'=>$url,
  73. 'rank'=>$rank,
  74. 'audio_url'=>$audio_url,
  75. 'status'=>$status,
  76. 'op_name'=>Auth::user()->name,
  77. 'duration'=>$duration
  78. ]);
  79. if($res){
  80. return $this->success([]);
  81. }
  82. return $this->error();
  83. }
  84. //删除
  85. public function delete(Request $request){
  86. $id=$request->input('id');
  87. $res=CompanyAudio::where('id',$id)->delete();
  88. if($res){
  89. return $this->success([]);
  90. }
  91. return $this->error();
  92. }
  93. //上传文件
  94. public function uploadFile(Request $request){
  95. $type=$request->input('type');
  96. $file= $request->file('file');
  97. if($type=='img'){
  98. $path_url='company_audio/image';
  99. $t="image";
  100. }else{
  101. $path_url='company_audio/audio';
  102. $t="audio";
  103. }
  104. $upload= new UploadFilesHandler();
  105. $result= $upload->save($file, $path_url, null, $t);
  106. if($result){
  107. return $this->success($result['path']);
  108. }
  109. return $this->error();
  110. // $type=$request->input('type');
  111. // if($type=='img'){
  112. // $path_url='company/image';
  113. // }else{
  114. // $path_url='company/audio';
  115. // }
  116. // $path = $request->file('file')->store($path_url);
  117. // $url = Storage::url($path);
  118. // if($url){
  119. // return $this->success($url);
  120. // }
  121. // return $this->error();
  122. }
  123. //详情
  124. public function detail(Request $request){
  125. $id=$request->input('id');
  126. $info=CompanyAudio::where('id',$id)->first();
  127. return $this->success($info);
  128. }
  129. //获取音频时长
  130. public function getTime($url){
  131. $getID3 = new getID3;
  132. $pathinfo=explode("storage/",$url);
  133. $fileUrl=storage_path('app/public/'.$pathinfo[1]);
  134. $ThisFileInfo = $getID3->analyze($fileUrl);
  135. // $fileduration = $ThisFileInfo['playtime_seconds']; //这个获得的便是音频文件的时长(秒)
  136. // $playtime_string = $ThisFileInfo['playtime_string']; //这个获得的便是音频文件的时长(分)
  137. if(array_key_exists('playtime_string',$ThisFileInfo)){
  138. return $ThisFileInfo['playtime_string'];
  139. }else{
  140. return 0;
  141. }
  142. }
  143. //客户端音频列表
  144. public function audio_list(Request $request){
  145. $page_index=$request->input('page_index');
  146. $page_size=$request->input('page_size');
  147. $num=$page_size*($page_index-1);
  148. $data=CompanyAudio::query()->where('status',1);
  149. $count=$data->count();
  150. $list=$data->orderByDesc('rank')->orderByDesc('created_at')
  151. ->skip($num)->take($page_size)->get();
  152. return $this->success_list($list,'成功',$count);
  153. }
  154. }