Просмотр исходного кода

wesmiler 报恩寺项目提交

wesmiler 4 лет назад
Родитель
Сommit
4edd6a59ec
3 измененных файлов с 117 добавлено и 0 удалено
  1. 70 0
      app/Http/Controllers/Api/v1/MusicController.php
  2. 41 0
      app/Services/MusicService.php
  3. 6 0
      routes/api.php

+ 70 - 0
app/Http/Controllers/Api/v1/MusicController.php

@@ -0,0 +1,70 @@
+<?php
+
+namespace App\Http\Controllers\Api\v1;
+
+use App\Http\Controllers\Api\BaseController;
+use App\Http\Validator\ArticleValidator;
+use App\Services\ArticleBooksService;
+use App\Services\ArticleCatesService;
+use App\Services\ArticleService;
+use App\Services\ConfigService;
+use App\Services\MusicService;
+use App\Services\MusicSheetsService;
+use Illuminate\Http\Request;
+
+/**
+ * 佛音控制器类
+ * @author wesmiler
+ * @since 2020/11/10
+ * Class MusicController
+ * @package App\Http\Controllers
+ */
+class MusicController extends BaseController
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * MusicController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+
+        $this->service = new MusicService();
+        $this->cateService = new MusicSheetsService();
+    }
+
+    /**
+     * 列表
+     * @return array
+     */
+    public function index(){
+        $params = request()->all();
+        $type = request()->get('type', 1);
+        return $this->service->getDataList($params);
+    }
+
+    /**
+     * 详情
+     * @return array|mixed
+     */
+    public function detail(){
+        $id = request()->get('id',0);
+        if($id<=0){
+            return message(1006, false);
+        }
+
+        $this->service->updateVisit($this->userId);
+        $info = $this->service->getDetail($id, $this->userId);
+        return message(1005, true, $info);
+    }
+
+    /**
+     * 获取分类
+     * @return mixed
+     */
+    public function cates(){
+        return $this->cateService->getOptions();
+    }
+}

+ 41 - 0
app/Services/MusicService.php

@@ -11,6 +11,7 @@
 
 namespace App\Services;
 
+use App\Models\MusicCollectModel;
 use App\Models\MusicModel;
 
 /**
@@ -182,4 +183,44 @@ class MusicService extends BaseService
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
 
+    /**
+     * 获取详情
+     * @param $id
+     */
+    public function getDetail($id, $userId=0){
+        $info = $this->model::from('musics as a')
+            ->leftJoin('music_sheets as c', 'a.sheet_id', '=', 'c.id')
+            ->where(['a.mark'=> 1,'a.status'=> 1,'a.id'=> $id])
+            ->select(['a.id','a.title','a.thumb','a.author','a.sheet_id','a.play_num','a.file_url','c.name as sheet_name','a.description','a.create_time'])
+            ->first();
+        $info = $info? $info->toArray() : [];
+        if($info){
+            $info['thumb'] = $info['thumb']? get_image_url($info['thumb']) : '';
+            $info['file_url'] = $info['file_url']? get_file_url($info['file_url']) : '';
+            $info['create_time'] = $info['create_time']? datetime($info['create_time'],'Y-m-d H:i:s') : '';
+
+            // 是否已收藏
+            $info['is_collect'] = 0;
+            if($userId){
+                if(MusicCollectModel::where(['user_id'=> $userId,'source_id'=> $id,'mark'=> 1,'status'=> 1])->value('id')){
+                    $info['is_collect'] = 1;
+                }
+            }
+        }
+        return $info;
+    }
+
+    /**
+     * 访问量
+     * @return mixed
+     */
+    public function updateVisit($userId=0){
+        $id = request()->get('id');
+        $cacheKey = "caches:music:visit:{$userId}_{$id}";
+        $check = RedisService::get($cacheKey);
+        if($id && !$check){
+            RedisService::set($cacheKey, $id, 3600);
+            return $this->model::where(['id'=> $id])->increment('play_num', 1);
+        }
+    }
 }

+ 6 - 0
routes/api.php

@@ -220,5 +220,11 @@ Route::post('/buddhist/collect', [\App\Http\Controllers\Api\v1\BuddhistControlle
 Route::post('/buddhist/collectList', [\App\Http\Controllers\Api\v1\BuddhistController::class, 'collectList']);
 Route::post('/buddhist/page', [\App\Http\Controllers\Api\v1\BuddhistController::class, 'page']);
 
+// 佛音
+Route::post('/music/list', [\App\Http\Controllers\Api\v1\MusicController::class, 'index']);
+Route::post('/music/detail', [\App\Http\Controllers\Api\v1\MusicController::class, 'detail']);
+Route::post('/music/cates', [\App\Http\Controllers\Api\v1\MusicController::class, 'cates']);
+
+