授权歌曲信息
Showing
6 changed files
with
109 additions
and
28 deletions
| 1 | <?php | ||
| 2 | |||
| 3 | namespace App\Http\Controllers\Musician\V2; | ||
| 4 | |||
| 5 | use App\Http\Controllers\Controller; | ||
| 6 | use App\Services\V2\MusicianSongService; | ||
| 7 | |||
| 8 | /** | ||
| 9 | * Class MusicianSongController | ||
| 10 | * @package App\Http\Controllers\Musician | ||
| 11 | */ | ||
| 12 | class MusicianSongController extends Controller | ||
| 13 | { | ||
| 14 | /** | ||
| 15 | * @var MusicianSongService | ||
| 16 | */ | ||
| 17 | protected $musicianSongService; | ||
| 18 | |||
| 19 | /** | ||
| 20 | * MusicianSongController constructor. | ||
| 21 | * @param MusicianSongService $musicianSongService | ||
| 22 | */ | ||
| 23 | public function __construct(MusicianSongService $musicianSongService) | ||
| 24 | { | ||
| 25 | $this->musicianSongService = $musicianSongService; | ||
| 26 | } | ||
| 27 | |||
| 28 | /** | ||
| 29 | * @return \Illuminate\Http\JsonResponse | ||
| 30 | */ | ||
| 31 | public function list() | ||
| 32 | { | ||
| 33 | return $this->musicianSongService->releaseSong(); | ||
| 34 | } | ||
| 35 | } |
| ... | @@ -58,6 +58,8 @@ class BaseModel extends Model | ... | @@ -58,6 +58,8 @@ class BaseModel extends Model |
| 58 | return $builder; | 58 | return $builder; |
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | |||
| 62 | |||
| 61 | /** | 63 | /** |
| 62 | * @param Builder $builder | 64 | * @param Builder $builder |
| 63 | * @return Builder | 65 | * @return Builder |
| ... | @@ -67,5 +69,21 @@ class BaseModel extends Model | ... | @@ -67,5 +69,21 @@ class BaseModel extends Model |
| 67 | return $builder->whereIn('stakeholder_id', request()->get('stakeholder_ids')); | 69 | return $builder->whereIn('stakeholder_id', request()->get('stakeholder_ids')); |
| 68 | } | 70 | } |
| 69 | 71 | ||
| 72 | /** | ||
| 73 | * 排序 | ||
| 74 | * @param $sort | ||
| 75 | * @return mixed | ||
| 76 | */ | ||
| 77 | public function scopeSorted(Builder $query, $sort): Builder | ||
| 78 | { | ||
| 79 | $table = (new static)->getTable(); | ||
| 80 | |||
| 81 | try { | ||
| 82 | $sort = json_decode($sort, true); | ||
| 83 | return $query->orderBy($sort['prop'] ?? "{$table}.updated_at", $sort['order'] ?? 'desc'); | ||
| 84 | } catch (\Exception $e) { | ||
| 85 | return $query->orderBy("{$table}.updated_at", 'desc'); | ||
| 86 | } | ||
| 87 | } | ||
| 70 | 88 | ||
| 71 | } | 89 | } | ... | ... |
| ... | @@ -44,18 +44,13 @@ class RouteServiceProvider extends ServiceProvider | ... | @@ -44,18 +44,13 @@ class RouteServiceProvider extends ServiceProvider |
| 44 | ->namespace($this->namespace . '\Musician') | 44 | ->namespace($this->namespace . '\Musician') |
| 45 | ->group(base_path('routes/api.php')); | 45 | ->group(base_path('routes/api.php')); |
| 46 | 46 | ||
| 47 | //公用 | 47 | //后台 |
| 48 | Route::prefix('common') | ||
| 49 | ->middleware('api') | ||
| 50 | ->namespace($this->namespace . '\Common') | ||
| 51 | ->group(base_path('routes/common.php')); | ||
| 52 | |||
| 53 | Route::prefix('admin') | 48 | Route::prefix('admin') |
| 54 | ->middleware('api') | 49 | ->middleware('api') |
| 55 | ->namespace($this->namespace . '\Admin') | 50 | ->namespace($this->namespace . '\Admin') |
| 56 | ->group(base_path('routes/admin.php')); | 51 | ->group(base_path('routes/admin.php')); |
| 57 | 52 | ||
| 58 | 53 | //web | |
| 59 | Route::middleware('web') | 54 | Route::middleware('web') |
| 60 | ->namespace($this->namespace) | 55 | ->namespace($this->namespace) |
| 61 | ->group(base_path('routes/web.php')); | 56 | ->group(base_path('routes/web.php')); | ... | ... |
app/Services/V2/MusicianSongService.php
0 → 100644
| 1 | <?php | ||
| 2 | |||
| 3 | namespace App\Services\V2; | ||
| 4 | |||
| 5 | |||
| 6 | use App\Helper\CosHelper; | ||
| 7 | use App\Helper\Response; | ||
| 8 | use App\Models\Legal\Contract; | ||
| 9 | use App\Models\Legal\Song; | ||
| 10 | use App\Models\Legal\SongsIp; | ||
| 11 | use App\Models\Legal\SongsIpExts; | ||
| 12 | use App\Models\Legal\SongStakeholder; | ||
| 13 | use App\Services\Service; | ||
| 14 | use Illuminate\Database\Eloquent\Builder; | ||
| 15 | |||
| 16 | /** | ||
| 17 | * Class MusicianSongService | ||
| 18 | * @package App\Services | ||
| 19 | */ | ||
| 20 | class MusicianSongService extends Service | ||
| 21 | { | ||
| 22 | /** | ||
| 23 | * 授权发行歌曲 | ||
| 24 | * @return \Illuminate\Http\JsonResponse | ||
| 25 | */ | ||
| 26 | public function releaseSong() | ||
| 27 | { | ||
| 28 | $song_ids = array_filter(array_unique(SongStakeholder::query()->identify()->pluck('song_id')->toArray())); | ||
| 29 | |||
| 30 | if (empty($song_ids)) return Response::success(); | ||
| 31 | |||
| 32 | $res = Song::query()->join('songs_ip', "songs.id", '=', "songs_ip.song_id") | ||
| 33 | ->join('songs_ip_exts as ext', 'songs_ip.id', '=', 'ext.song_ip_id') | ||
| 34 | ->whereIn("songs.id", $song_ids)->whereNull("songs_ip.deleted_at") | ||
| 35 | ->where('auth_channel', 1)->select(["songs.id", "songs_ip.id as sp_id", 'track_name', | ||
| 36 | 'singer_name', 'album_name', 'public_time', 'track_version', 'favCnt', 'playCnt', 'downloadCnt', | ||
| 37 | 'favCnt_week', 'playCnt_week', 'downloadCnt_week', 'favCnt_years', 'playCnt_years', 'downloadCnt_years', | ||
| 38 | ]) | ||
| 39 | ->when(filled($this->request->name), function (Builder $builder) { | ||
| 40 | $builder->where(function (Builder $builder){ | ||
| 41 | $builder->where('album_name', 'like', "{$this->request->name}") | ||
| 42 | ->orWhere('track_name', 'like', "{$this->request->name}"); | ||
| 43 | }); | ||
| 44 | }) | ||
| 45 | ->sorted($this->request->sort)->paginate($this->pageSize); | ||
| 46 | |||
| 47 | return Response::success($res); | ||
| 48 | } | ||
| 49 | } |
routes/common.php
deleted
100644 → 0
| 1 | <?php | ||
| 2 | |||
| 3 | use Illuminate\Support\Facades\Route; | ||
| 4 | |||
| 5 | /* | ||
| 6 | |-------------------------------------------------------------------------- | ||
| 7 | | API Routes | ||
| 8 | |-------------------------------------------------------------------------- | ||
| 9 | | | ||
| 10 | | Here is where you can register API routes for your application. These | ||
| 11 | | routes are loaded by the RouteServiceProvider within a group which | ||
| 12 | | is assigned the "api" middleware group. Enjoy building your API! | ||
| 13 | | | ||
| 14 | */ | ||
| 15 | |||
| 16 | Route::group([], function (){ | ||
| 17 | |||
| 18 | //首页-最新发行作品 | ||
| 19 | Route::get('release_song', 'ReleaseSongController@list'); | ||
| 20 | |||
| 21 | }); |
-
Please register or sign in to post a comment