<?php

namespace App\Imports;

use App\Models\Goods;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToArray;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithChunkReading;

//use Maatwebsite\Excel\Concerns\ToModel;

class GoodsImport implements ToArray/*, WithChunkReading, ShouldQueue*/ {
//	/**
//	 *
//	 * @param array $row
//	 *
//	 * @return \Illuminate\Database\Eloquent\Model|null
//	 */
//	public function model(array $row) {
//		if (!isset($row[0])) {
//			return null;
//		}
//		return new Goods ( [
//				'product_id'=>$row [0],
//				'price'=>$row [1],
//				'sku'=>$row [2],
//				'name' => $row [3],
//				'activity_id'=>request ()->activity_id
//
//		] );
//	}

    public function Array(Array $rows)
    {
        unset($rows[0]);
        $skus = array_column($rows, '0');
        if(count($skus) != count(array_unique($skus))){
            //有重复的sku
            throw new \Exception('Excel中有重复的SKU');
        }

        //排重
        $exists = Goods::where([
            'activity_id' => request()->activity_id,
        ])->whereIn('sku', $skus)->select('sku')->get()->toArray();
        if($exists){
            $skus = implode(',', array_column($exists, 'sku'));
            throw new \Exception('以下SKU已存在: '.$skus);
        }
        foreach ($rows as $row)
        {
            $data ['sku'] = $row[1];
            $result = curlJavaB2cJsonApi ( 'lyproduct/getProductStaticInfo', $data );
            if ($result) {
                if (is_null(json_decode($result))) {
                    throw new \Exception('价格服务：返回值不是json');
                }
                if (json_decode($result, true) ['header'] ['res_code'] == 0) {
                    $resultData = json_decode($result, true) ['body'];
                    $goodsData['sku'] = $resultData['sku'];
                    //如果该sku前9位已经在表里，则是同一商品
                    $goodsData['product_id'] =

                    $res = Goods::create([
                        'product_id' => Goods::getProductId($resultData['sku']),
                        'sku' => $row[0],
                        'name' => $row[1],
                        'base_price' => number_format($row[2], 2),
                        'cut_num' => intval($row[3]),
                        'price' => $resultData['list_price'],
                        'img_url' => $resultData['image_colors'][0]['main_image'],
                        'activity_id' => request()->activity_id
                    ]);
                }else{
                    admin_toastr($row[0].':'.json_decode($result, true) ['header']['message'], 'warning');
                }
            }
        }
    }
}
