ExportController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Str;
  5. use App\Http\Api\Mq;
  6. use Illuminate\Support\Facades\Log;
  7. use App\Tools\RedisClusters;
  8. use Illuminate\Support\Facades\App;
  9. use Illuminate\Support\Facades\Storage;
  10. use App\Console\Commands\ExportChapter;
  11. class ExportController extends Controller
  12. {
  13. /**
  14. * Display a listing of the resource.
  15. *
  16. * @return \Illuminate\Http\Response
  17. */
  18. public function index(Request $request)
  19. {
  20. //
  21. $filename = $request->get('book').'-'.
  22. $request->get('par').'-'.
  23. Str::uuid().'.'.$request->get('format');
  24. Mq::publish('export',[
  25. 'book'=>$request->get('book'),
  26. 'para'=>$request->get('par'),
  27. 'channel'=>$request->get('channel'),
  28. 'format'=>$request->get('format'),
  29. 'filename'=>$filename,
  30. ]);
  31. return $this->ok($filename);
  32. }
  33. /**
  34. * Store a newly created resource in storage.
  35. *
  36. * @param \Illuminate\Http\Request $request
  37. * @return \Illuminate\Http\Response
  38. */
  39. public function store(Request $request)
  40. {
  41. //
  42. }
  43. /**
  44. * Display the specified resource.
  45. *
  46. * @param string $id
  47. * @return \Illuminate\Http\Response
  48. */
  49. public function show($filename)
  50. {
  51. //
  52. $exportChapter = new ExportChapter();
  53. $exportStatus = $exportChapter->getStatus($filename);
  54. if(empty($exportStatus)){
  55. return $this->error('no file',200,200);
  56. };
  57. $output = array();
  58. $output['status'] = $exportStatus;
  59. if($exportStatus['progress']===1){
  60. if (App::environment('local')) {
  61. $s3Link = Storage::url('export/'.$filename);
  62. }else{
  63. try{
  64. $s3Link = Storage::temporaryUrl('export/'.$filename, now()->addDays(1));
  65. }catch(\Exception $e){
  66. Log::error('export {Exception}',['exception'=>$e]);
  67. return $this->error('temporaryUrl fail',404,404);
  68. }
  69. }
  70. $output['url'] = $s3Link;
  71. }
  72. return $this->ok($output);
  73. }
  74. /**
  75. * Update the specified resource in storage.
  76. *
  77. * @param \Illuminate\Http\Request $request
  78. * @param int $id
  79. * @return \Illuminate\Http\Response
  80. */
  81. public function update(Request $request, $id)
  82. {
  83. //
  84. }
  85. /**
  86. * Remove the specified resource from storage.
  87. *
  88. * @param int $id
  89. * @return \Illuminate\Http\Response
  90. */
  91. public function destroy($id)
  92. {
  93. //
  94. }
  95. }