李帅

1.临境新增字段。

...@@ -4,6 +4,7 @@ namespace App\Http\Controllers\V1; ...@@ -4,6 +4,7 @@ namespace App\Http\Controllers\V1;
4 4
5 use App\Http\Controllers\Controller; 5 use App\Http\Controllers\Controller;
6 use App\Models\Immerse; 6 use App\Models\Immerse;
7 +use App\Models\OnePoem;
7 use App\Models\PackPoem; 8 use App\Models\PackPoem;
8 use Illuminate\Http\Request; 9 use Illuminate\Http\Request;
9 use Jiannei\Response\Laravel\Support\Facades\Response; 10 use Jiannei\Response\Laravel\Support\Facades\Response;
...@@ -69,4 +70,13 @@ class HomeController extends Controller ...@@ -69,4 +70,13 @@ class HomeController extends Controller
69 return Response::success($packpoems); 70 return Response::success($packpoems);
70 } 71 }
71 72
73 +
74 + public function poem($id)
75 + {
76 + try{
77 + return Response::success(OnePoem::query()->find($id));
78 + }catch (\Exception $exception){
79 + return Response::fail($exception->getMessage());
80 + }
81 + }
72 } 82 }
......
...@@ -101,6 +101,38 @@ class SettingController extends Controller ...@@ -101,6 +101,38 @@ class SettingController extends Controller
101 ]); 101 ]);
102 } 102 }
103 103
104 + public function uploadAudio(Request $request)
105 + {
106 + $validator = Validator::make($request->all(),[
107 + 'audio' => 'required|mimes:aac,mp3,wav,m4a,amr'
108 + ]);
109 +
110 + if ($validator->fails()){
111 + return Response::fail('',500,$validator->errors());
112 + }
113 +
114 + $hashName = $request->file('audio')->hashName();
115 +
116 + $hash_hex = md5($hashName);
117 +
118 + // 16进制表示的字符串一共32字节,表示16个二进制字节。
119 + // 前16个字符用来第一级求摸,后16个用做第二级
120 + $hash_hex_l1 = substr($hash_hex, 0, 8);
121 + $hash_hex_l2 = substr($hash_hex, 8, 8);
122 + $dir_l1 = hexdec($hash_hex_l1) % 256;
123 + $dir_l2 = hexdec($hash_hex_l2) % 512;
124 + $dir = 'uploads/'. $dir_l1. '/' . $dir_l2;
125 +
126 + if( !Storage::disk('public')->exists($dir)) Storage::disk('public')->makeDirectory($dir);
127 +
128 + $file = $request->file('audio')->store($dir,'public');
129 +
130 + return Response::success([
131 + 'relative_path' => $file,
132 + 'absolute_path' => Storage::disk('public')->url($file),
133 + ]);
134 + }
135 +
104 136
105 public function protocol() 137 public function protocol()
106 { 138 {
......
...@@ -46,6 +46,13 @@ class Immerse extends Model ...@@ -46,6 +46,13 @@ class Immerse extends Model
46 return Storage::disk('public')->url($url); 46 return Storage::disk('public')->url($url);
47 } 47 }
48 48
49 + public function getHuangliAttribute($huangli)
50 + {
51 + if ($huangli == null) return '';
52 +
53 + return $huangli;
54 + }
55 +
49 public function poem() 56 public function poem()
50 { 57 {
51 return $this->hasOne(OnePoem::class,'id','poem_id'); 58 return $this->hasOne(OnePoem::class,'id','poem_id');
......
...@@ -45,6 +45,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route ...@@ -45,6 +45,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route
45 /** 视频上传 */ 45 /** 视频上传 */
46 $api->post('/upload/video', 'SettingController@uploadVideo'); 46 $api->post('/upload/video', 'SettingController@uploadVideo');
47 47
48 + /** 音频上传 */
49 + $api->post('/upload/audio', 'SettingController@uploadAudio');
50 +
48 /** 会员页 */ 51 /** 会员页 */
49 $api->get('/membership', 'MembershipController@index'); 52 $api->get('/membership', 'MembershipController@index');
50 }); 53 });
...@@ -73,6 +76,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->middleware('auth:sanc ...@@ -73,6 +76,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->middleware('auth:sanc
73 /** 作品详情 */ 76 /** 作品详情 */
74 $api->delete('/my/videos/{id}', 'UserController@deleteVideo'); 77 $api->delete('/my/videos/{id}', 'UserController@deleteVideo');
75 78
79 + /** 查询一言 */
80 + $api->get('/poem/{id}', 'HomeController@poem');
81 +
76 /** 临境 */ 82 /** 临境 */
77 $api->apiResource('/immersive', 'ImmerseController'); 83 $api->apiResource('/immersive', 'ImmerseController');
78 84
......