<?php

namespace App\Http\Controllers\Api;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use JiGuang\JSMS as JSMS;
use Illuminate\Support\Facades\Redis;
use App\Models\Check;
use App\Models\Product;
use App\Models\CartItem;
use Image;
/**
 *
 * Copyright: Copyright (c) 2019 LanRu-Caifu
 *
 * @Description:  商城
 * @version: v1.0.0
 * @author: fengyichao
 * @date: 2019年7月31日 下午1:37:30
 *
 * Modification History:
 * Date         Author          Version            Description
 *---------------------------------------------------------*
 * 2019年7月31日     fengyichao           v1.0.0               修改原因
 */
class ProductController extends ApiController {

	/**
	 *
	 * @api {post} product/detail 商品详情
	 * @apiName product/product
	 * @apiGroup product
	 * @apiParam {int} product_id 商品id
	 * @apiSuccess {int}  id 商品id
	 * @apiSuccess {string}  title 商品短标题
	 * @apiSuccess {string}  long_title 商品长标题
	 * @apiSuccess {string}  description 商品详情
	 * @apiSuccess {string}  price 商品售价
	 * @apiSuccess {string}  image 商品主图
	 * @apiSuccess {List}  image_list 商品详情图片list
	 * @apiSuccess {List[Map]}  image_list_ext 商品详情图片list 带宽高
	 * @apiSuccess {int}  cart_num 购物车数量 未登录返0
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/product/detail?product_id=42
	 */
	function detail(Request $request) {
		$cartNum=0;
		$rules = [ 
				'product_id' => [ 
						'required'
				]
		];
		
		$validator = app ( 'validator' )->make ( $request->all (), $rules );
		if ($validator->fails ()) {
			return $this->throwErrors ( $validator );
		}
		$product=Product::find($request->product_id);
		//如果已经登录读取购物车数量
		if($request->exists('user_id')){
			$cartNum=CartItem::where('user_id',$request->user_id)->where('product_id',$request->product_id)->count();
		}
		if(isset($product->image_list)){
			foreach ( $product->image_list as $picture ) {
				$url = env ( 'OSS_URL' ) . $picture;
				$img = Image::make ( $url );
				
				$imgArr ['img_url'] = env('OSS_URL').$picture;
				$imgArr ['width'] = $img->width ();
				$imgArr ['height'] = $img->height ();
				$imageList [] = $imgArr;
			}
			$product->image_list_ext=$imageList;
		}

		
		$product->cart_num=$cartNum;
		return $this->success($product);
	}
	/**
	 *
	 * @api {post} product/list 商城-商品列表 【搜索/分类】
	 * @apiName product/list
	 * @apiGroup product
	 * @apiParam {int} page 页码 default:1
	 * @apiParam {string} keywords 关键字 非必传【搜索时传入】
	 * @apiParam {string} category_id 分类id 非必传 【需要根据分类id获取商品列表时传入】
	 * @apiSuccess {int}  current_page 当前页
	 * @apiSuccess {List[Map]}  data 商品列表
	 * @apiSuccess (data) {int}  id 商品id
	 * @apiSuccess (data) {string}  title 标题
	 * @apiSuccess (data) {string}  long_title 长标题
	 * @apiSuccess (data) {string}  price 价格
	 * @apiSuccess (data) {string}  image 图片地址 需要前端自行拼接阿里云前缀
	 * @apiSuccess {int}  current_page 当前页
	 * @apiSuccess {int}  total 总页数
	 * @apiParamExample {curl} Example usage:
	 * http://59.110.137.245:8080/api/product/list
	 */
	function list(Request $request){
		$page = $request->input ( 'page', 1 );
		$queryBuild=Product::select(['id','title','image','price']);
		if($request->keywords){
			$queryBuild=$queryBuild->where('title','like',"%$request->keywords%");
		}
		if($request->category_id){
			$queryBuild=$queryBuild->where('category_id',$request->category_id);
		}
		$products=$queryBuild->orderBy('id','desc')->paginate ( 15, ['id','title','image','price','long_title'], 'page', $page );
		$resultData=$products;
		return $this->success ($resultData);
	}
	
}
