<?php

namespace app\controller\admin;

use crmeb\basic\BaseController;
use think\facade\Db;
use think\facade\Log;
use crmeb\services\UploadService;
use think\api\Client;
use GuzzleHttp\Client as http_client;

class ProductLibrary extends BaseController
{

    public function lst()
    {
        [$page, $limit] = $this->getPage();
        $param = $this->request->param();
        $where = ['is_del' => 0];
        $list = Db::name('product_library')->where($where)->page($page)->limit($limit)->order('id desc')->select();
        $count = Db::name('product_library')->count();
        return app('json')->success(['list' => $list, 'count' => $count]);
    }

    public function add()
    {
        $param = $this->request->param();
        $data['store_name'] = $param['store_name'];
        $data['store_info'] = $param['store_info'];
        $data['keyword'] = $param['keyword'];
        $data['bar_code'] = $param['bar_code'];
        $data['is_used'] = 1;
        $data['status'] = 1;
        $data['cate_id'] = $param['cate_id'];
        $data['unit_name'] = $param['unit_name'];
        $data['price'] = $param['price'];
        $data['cost'] = $param['cost'];
        $data['ot_price'] = $param['ot_price'];
        $data['stock'] = $param['stock'];
        $data['create_time'] = date('Y-m-d H:i:s');
        $data['image'] = $param['image'];
        $data['slider_image'] = $param['slider_image'];
        $data['images'] = $param['images'];
        $res = Db::name('product_library')->insert($data);
        if ($res) {
            return app('json')->success('添加成功');
        } else {
            return app('json')->fail('添加失败');
        }
    }

    public function edit()
    {
        $param = $this->request->param();
        $data['store_name'] = $param['store_name'];
        $data['store_info'] = $param['store_info'];
        $data['keyword'] = $param['keyword'];
        $data['bar_code'] = $param['bar_code'];
        $data['is_used'] = 1;
        $data['status'] = 1;
        $data['cate_id'] = $param['cate_id'];
        $data['unit_name'] = $param['unit_name'];
        $data['price'] = $param['price'];
        $data['cost'] = $param['cost'];
        $data['ot_price'] = $param['ot_price'];
        $data['stock'] = $param['stock'];
        $data['create_time'] = date('Y-m-d H:i:s');
        $data['image'] = $param['image'];
        $data['slider_image'] = $param['slider_image'];
        $data['images'] = $param['images'];
        $res = Db::name('product_library')->where('id', $param['id'])->update($data);
        if ($res) {
            return app('json')->success('修改成功');
        } else {
            return app('json')->fail('修改失败');
        }
    }

    public function del()
    {
        $param = $this->request->param();
        $res = Db::name('product_library')->where('id', $param['id'])->update(['is_del' => 1]);
        if ($res) {
            return app('json')->success('删除成功');
        } else {
            return app('json')->fail('删除失败');
        }
    }

    public  function caiji($code = '')
    {
        if ($code == '') {
            return app('json')->fail('编码不能为空');
        }
        $first_char = substr($code, 0, 1);
        if($first_char!=0){
            $codes='0'.$code;
        }else{
            $codes=$code;
        }
        $client = new Client("b1eb52b9-0379-4c56-b795-47d90a73ca6a");

        $result = $client->barcodeQuery()
            ->withCode($codes)
            ->request();
        try {
            if ($result['code'] == 0) {
                $upload = UploadService::create();
                $dir = 'def/' . date('Y-m-d');

                $param = $result['data'];
                $data['store_name'] = $param['goodsName'];
                $data['store_info'] = '';
                $data['keyword'] = '';
                $data['bar_code'] = $code;
                $data['is_used'] = 1;
                $data['status'] = 1;
                $data['cate_id'] = 0;
                $data['unit_name'] = '';
                $data['spec'] =$param['spec'];
                $data['trademark'] =$param['trademark'];
                $data['goods_type'] =$param['goodsType'];
                $data['ycg'] =$param['ycg'];
                $data['note'] =$param['note'];
                $data['manu_address'] =$param['manuAddress'];
                $data['price'] = $param['price']??0;
                $data['cost'] = 0;
                $data['ot_price'] = 0;
                $data['stock'] = 9999999;
                $data['create_time'] = date('Y-m-d H:i:s');
                $data['images'] = '';
                $arr=[];
                if ($param['img'] != '') {
                    $oss = $upload->to($dir)->stream($this->getPic($param['img']));
                    $data['image'] = $oss->filePath;
                    $arr[]=$oss->filePath;
                } else {
                    $data['image'] = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230130/00ebcfdf75684f5494c0193075055d1.png';
                    $data['slider_image'] = 'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230130/00ebcfdf75684f5494c0193075055d1.png';
                }
                foreach($param['imgList'] as  $k=>$v){
                    $oss=$upload->to($dir)->stream($this->getPic($v));
                    $arr[] = $oss->filePath;
                }
                if(count($arr)>0){
                    $data['slider_image'] =implode(',',$arr);
                }else{
                    $data['slider_image']=$data['image'];
                }
                $data['images'] = '';
                $res = Db::name('product_library')->insert($data);

                if ($res) {
                    $group_id=Db::name('system_group')->where('group_key','product_caiji_count')->value('group_id');
                    if($group_id){
                        $find=Db::name('system_group_data')->where('group_id',$group_id)->whereDay('create_time')->find();
                        if($find){
                            $count=json_decode($find['value'],true)['count']+1;
                            Db::name('system_group_data')->where('group_data_id',$find['group_data_id'])->update(['value'=>json_encode(['count'=>$count])]);
                        }else{
                            Db::name('system_group_data')->insert(['group_id'=>$group_id,'value'=>'{"count":1}','create_time'=>date('Y-m-d H:i:s')]);
                        }
                    }
                    return app('json')->success('添加成功');
                } else {
                    throw new \think\exception\ValidateException('添加失败');
                }
            } else {
                Log::error('一维码商品采集错误:' . $result['data']['remark']);
                throw new \think\exception\ValidateException('一维码商品采集错误:'. $result['data']['remark']);
            }
        } catch (\Exception $e) {
            throw new \think\exception\ValidateException('一维码商品采集错误:'.$e->getMessage());
        }
    }

    public function getPic($url){
        $client = new http_client();
        $a=$client->get($url);
        return $a->getBody()->getContents();
    }
}