ExportController.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. class ExportController extends Controller
  11. {
  12. /**
  13. * Display a listing of the resource.
  14. *
  15. * @return \Illuminate\Http\Response
  16. */
  17. public function index(Request $request)
  18. {
  19. //
  20. $filename = Str::uuid().'.'.$request->get('format');
  21. Mq::publish('export',[
  22. 'book'=>$request->get('book'),
  23. 'para'=>$request->get('par'),
  24. 'channel'=>$request->get('channel'),
  25. 'format'=>$request->get('format'),
  26. 'filename'=>$filename,
  27. ]);
  28. return $this->ok($filename);
  29. }
  30. /**
  31. * Store a newly created resource in storage.
  32. *
  33. * @param \Illuminate\Http\Request $request
  34. * @return \Illuminate\Http\Response
  35. */
  36. public function store(Request $request)
  37. {
  38. //
  39. }
  40. /**
  41. * Display the specified resource.
  42. *
  43. * @param string $id
  44. * @return \Illuminate\Http\Response
  45. */
  46. public function show($filename)
  47. {
  48. //
  49. if(RedisClusters::has('export/done/'.$filename)){
  50. if (App::environment('local')) {
  51. $s3Link = Storage::url('export/'.$filename);
  52. }else{
  53. try{
  54. $s3Link = Storage::temporaryUrl('export/'.$filename, now()->addDays(1));
  55. }catch(\Exception $e){
  56. Log::error('export {Exception}',['exception'=>$e]);
  57. return $this->error('temporaryUrl fail',404,404);
  58. }
  59. }
  60. Log::info('export: link='.$s3Link);
  61. }else{
  62. return $this->error('no file',200,200);
  63. }
  64. return $this->ok(['link'=>$s3Link]);
  65. }
  66. /**
  67. * Update the specified resource in storage.
  68. *
  69. * @param \Illuminate\Http\Request $request
  70. * @param int $id
  71. * @return \Illuminate\Http\Response
  72. */
  73. public function update(Request $request, $id)
  74. {
  75. //
  76. }
  77. /**
  78. * Remove the specified resource from storage.
  79. *
  80. * @param int $id
  81. * @return \Illuminate\Http\Response
  82. */
  83. public function destroy($id)
  84. {
  85. //
  86. }
  87. }