IssueService.php 3.4 KB
<?php

namespace App\Services;

use App\Helper\AesEncrypt;
use App\Helper\CosHelper;
use App\Helper\ErrorCode;
use App\Helper\Response;
use App\Models\Legal\SongsApply;
use App\Models\Legal\Stakeholder;
use App\Models\Legal\Subject;
use Illuminate\Support\Facades\Log;

/**
 * Class IssueService
 * @package App\Services
 */
class IssueService extends Service
{
    /**
     * 转发
     * @return \Illuminate\Http\JsonResponse
     */
    public function forward()
    {
        $client = new \GuzzleHttp\Client([
            'base_uri'  =>   env('resource_url'),
            'timeout'   =>   3.0,
        ]);

        $token = uniqid();

        try {

            $params['data']             =   $this->request->all();
            $params['ext']              =   [
                'user_id'           =>  $this->request->get('identifier')->company_id, //机构id
                'operator'          =>  $this->request->get('identifier')->user_id,    //操作人id
                'stakeholder_ids'   =>  $this->request->get('stakeholder_ids'),
            ];

            Log::info(__METHOD__.':请求参数', ['params'=>$params, 'token'=>$token, 'uri'=>$client->post($this->request->getRequestUri())]);

            $data       =   ['params'   =>  AesEncrypt::encrypt(json_encode($params))];
            $response   =   $client->post($this->request->getRequestUri(), [
                'json'  =>  $data,
            ]);
            $respArr    =   json_decode($response->getBody()->getContents(), true);

            $respArr['msg'] = $respArr['message'];
            unset($respArr['message']);

            Log::info(__METHOD__.':请求返回体', ['respArr'=>$respArr,  'token'=>$token, 'data'=>$data, 'uri'=>$client->post($this->request->getRequestUri())]);

            return response()->json($respArr, 200);
        } catch (\Throwable $throwable) {
            return Response::error(ErrorCode::SERVER_ERROR, $throwable->getMessage());
        }
    }

    /**
     * 版权方
     * @return \Illuminate\Http\JsonResponse
     */
    public function subCompany()
    {
        $company_ids = Stakeholder::query()->whereIn('id', $this->request->get('stakeholder_ids'))->pluck('company_id')->toArray();
        $subject = Subject::query()->whereIn('company_id', $company_ids)
            ->where('attr', 'like', "%3%")
            ->groupBy('no')
            ->get(['no as value', 'name']);

        return Response::success($subject);
    }

    /**
     * 发行(上架成功记录)
     * @return \Illuminate\Http\JsonResponse
     */
    public function latestOnlineRecord()
    {
        $res = SongsApply::query()->where(['from'=>1])
                        ->whereNotNull('qy_url')->with(['songs_album:id,cover_map_id', 'songs_album.cover:id,link_id,key'])
                        ->select(['name', 'version_note', 'album_id','singer','online_time','qy_url'])->orderByDesc('online_time')
                        ->paginate($this->pageSize);

        $cos = new CosHelper(env('MATERIAL_BUCKET'));

        foreach ($res as &$item) {
            if (!empty($item->songs_album->cover)) {
                $item->cover = $cos->getPreviewUrl($item->songs_album->cover->key);
            }

            if ($item->version_note) {
                $item->name = $item->name."({$item->version_note})";
            }

            unset($item->songs_album);
            $item->singer = explode(',', $item->singer);
        }

        return Response::success($res);
    }


}