| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | <?php/** * Created by PhpStorm. * User: tandunzhao * Date: 2018/1/19 * Time: 下午3:15 */namespace App\Http\Controllers\Channel\Book;use GuzzleHttp\Client;use GuzzleHttp\Exception\RequestException;use Hashids;use Illuminate\Http\Request;use App\Http\Controllers\Channel\BaseController;use App\Http\Controllers\Channel\Book\Transformers\ChapterImageTransformer;use App\Libs\ChapterToImage;use App\Modules\Book\Services\ChapterImageService;use App\Modules\Book\Services\ChapterService;use Psr\Http\Message\ResponseInterface;class ChapterImageController extends BaseController{    /**     * @apiDefine promotion 推广     */    /**     * @apiVersion 1.0.0     * @apiDescription 获取章节图片列表     * @api {GET} api/book/fiveChapterImage 获取章节图片列表     * @apiGroup promotion     * @apiName api/book/fiveChapterImage     * @apiParam   {String}  bid  图书ID     * @apiSuccessExample {json} Success-Response:     *     *     {     *         "code": 0,     *         "msg": "",     *         "data":[     *              {     *               }     *          ]     *     }     */    public function getTopFiveChapter(Request $request) {        $bid = $request->has('bid') ? $request->input('bid') : '';        if (empty($bid)) return response()->error("PARAM_EMPTY");        $bid = Hashids::decode($bid)[0];        $chapter_count = ChapterImageService::getChapterImgCount($bid);        $chapters = ChapterService::getTopFiveChapter($bid);        $result = ChapterImageService::getChapterImage($bid);        if(empty($result) || sizeof($result) == 0 || $chapter_count < sizeof($chapters)) {            ChapterToImage::createChapterImage($bid,'',$chapters);            $result = ChapterImageService::getChapterImage($bid);        }        $resultAA = array();        if($result && sizeof($result) > 0) {            foreach ($result as $rr) {                $cid = $rr['cid'];                $resultAA[$cid][] = ['image_url'=>$rr['image_url'],'height'=>$rr['image_height'],'id'=>$rr['id']];            }        }        $resultBB = array();        $client = new Client();        if($resultAA && sizeof($resultAA) > 0) {            foreach ($resultAA as $key => $value) {                //$resultBB[] = $value;                $temp = [];                foreach ($value as $img){                    $height = $img['height'];                    //$imageInfo = @file_get_contents($img.'?x-oss-process=image/info');                    if(!$height){                        preg_match("/(\w+:\/\/)([^\/:]+)([^?]+)?([\/s\/S]*)/",$img['image_url'],$matches);                        $imageInfo = $client->request('GET', env('OSS_INTERNAL_DOMAIN').$matches[3].'?x-oss-process=image/info')->getBody()->getContents();                        //\Log::info($imageInfo);                        if($imageInfo){                            $imageInfo = json_decode($imageInfo,true);                            if(isset($imageInfo['ImageHeight']['value'])){                                $height = $imageInfo['ImageHeight']['value'];                                $param = array(                                    'file_size'=>$imageInfo['FileSize']['value'],                                    'image_height'=>$imageInfo['ImageHeight']['value'],                                    'image_width'=>$imageInfo['ImageWidth']['value']                                );                                ChapterImageService::updateChapterImage($img['id'],$param);                            }                        }                        if(!$height){                            $height = 300;                        }                    }                    $temp[] = ['image_url'=>$img['image_url'],'height'=>$height];                }                $resultBB[] = $temp;            }        }//        return response()->collection(new ChapterImageTransformer(), $result);        return response()->success($resultBB);    }}
 |