<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Request;
use RedisDB;

class SupplierExtendModel extends Model
{
    protected $connection='web';
    protected $table='supplier_extend';
    public $timestamps = false;

    /*
     * 方法作废于20200402,原因附加费改版
     */
    public function AddInfo($supplierID='', $supplierSn='', $data='', $isUpdate = false){
        if(empty($supplierID) || empty($data) || !is_array($data)) return false;
        empty($data['price']) && $data['price'] = 0;
        empty($data['max']) && $data['max'] = 0;

        $charge_content[0] = [
            'max' => $data['max'],
            'price' => $data['price'],
        ];
        $charge_content_json = json_encode($charge_content);
        $Add['charge_content'] = $charge_content_json;
        if (!empty($isUpdate)) { // 编辑
            $Add['update_time'] = time();
            $Add['status'] = $data['status'];
            $res = $this->where('supplier_id','=',$supplierID)->update($Add);
            // 修改redis
            if (!empty($data['status']) && $data['status'] == '-1') { // 禁用
                $charge_content_json = '';
            }
        } else { // 新增
            $Add['supplier_id'] = $supplierID;
            $Add['create_time'] = time();
            $res = $this->insert($Add);
        }
        //redis 处理
        $Redis = RedisDB::connection();
        $pre = Config('fixed.SUPPLIER_REDIS_PRE');
        $SUPPLIER_ID = Config('fixed.SUPPLIER_ID'); // 联营供应商ID 17
        $Redis->hset($pre, $SUPPLIER_ID. '.' . $supplierSn, $charge_content_json); // 联营供应商ID是17,储存内容格式如下{"max":2000,"price":10}
        return $res;
    }

    public function ExtendInfo($SupplierID=''){
        $collert=Request::only('supplier_id');
        $collert=TrimX($collert,true,['supplier_id']);
        empty($collert) && $collert['supplier_id']=$SupplierID;
        if(empty($collert['supplier_id'])) return false;
        $info=$this->where('supplier_id','=',$collert['supplier_id'])->first();
        if(!$info) return false;$info = $info->toArray();
        if (!empty($info)) {
            if ($info['charge_content']) {
                $charge_content = json_decode($info['charge_content'], true);
                $info['charge_content'] = $charge_content;
            }
        }
        return $info ? $info : '';
    }

    // 获取附加费信息
    public function getExtendExtra($SupplierCode='', $SupplierID=''){
        if(empty($SupplierCode)) return false;
        $Redis = new RedisModel();
        $pre = Config('fixed.SUPPLIER_REDIS_PRE');
        $SUPPLIER_ID = Config('fixed.SUPPLIER_ID'); // 联营供应商ID 17
        $extendInfo = $Redis->hget($pre, $SUPPLIER_ID. '.' . $SupplierCode); // 联营供应商ID是17,储存内容格式如下{"max":2000,"price":10}
        if (empty($extendInfo)) {
            $charge_content = $this->select(['charge_content'])->where('supplier_id','=',$SupplierID)->where('status', '=', 1)->first();
            if (!empty($charge_content)) {
                $charge_content = $charge_content->toArray();
                $extendInfo = $charge_content['charge_content'];
            }
            if (!empty($extendInfo)) {
                $Redis->hset($pre, $SUPPLIER_ID. '.' . $SupplierCode, $extendInfo);
            }
        }
        if ($extendInfo) {
            $extendInfo = json_decode($extendInfo, true);
        }
        return $extendInfo ? $extendInfo : '';
    }

    /**
     * 此方法废弃于20200402,原因是附加费改版
     * @param string $UserInfo
     * @return array
     */
    private function changeExtra($UserInfo=''){
        // return [20001,'新增供应商失败'];
        $arr=['extra'];
        $collert=Request::only($arr);
        $collert=TrimX($collert,true,$arr);
        $extra = $collert['extra'];
        // 根据supplier_code 和supplier_id
        $extra['status'] = '1'; // 目前暂时皆为1启用(默认)
        $re = $this->select(['supplier_id'])->where('supplier_id', '=', $extra['supplier_id'])->get()->toArray();
        $isUpdate = false;
        if (!empty($re[0]['supplier_id'])) $isUpdate = true;
        $FeeInfo=$this->getExtendExtra($extra['supplier_code'],$extra['supplier_id']);
        $res = $this->AddInfo($extra['supplier_id'], $extra['supplier_code'], $extra, $isUpdate);
        if ($res) {
            $url=Config('website.Feer_Robot_Url');
            $UserModel=new UserModel();
            $UserName=$UserModel->FinduserInfoName($UserInfo->userId);
            $RemindInfo  ='附加费调整通知'."\n";
            $RemindInfo  .='渠道编码:'.$extra['supplier_code']."\n";
            if($FeeInfo){
                $RemindInfo  .='原附加费:不满'.$FeeInfo['max'].'收取'.$FeeInfo['price']."运费\n";
            }
            $RemindInfo  .='新附加费:不满'.$extra['max'].'收取'.$extra['price']."运费\n";
            $RemindInfo  .='调整人:'.$UserName;
            if(config('website.data')=='http://supplier.ichunt.net') SendRobot($url,$RemindInfo);
            return [0,'修改成功'];
        } else {
            return [11010,'修改失败,失败原因:数据库修改更新失败'];
        }
    }

    public function save_change_extra($data, $supplier_code){
        $data['status'] = 1;
        $data['update_time'] = time();
        $res = $this->where('supplier_id','=',$data['supplier_id'])->update($data);
        if(!$res){
            return false;
        }
        $this->set_change_extra_cache($supplier_code, $data['charge_content']);
        return true;
    }

    public function add_change_extra($data, $supplier_code){
        $data['status'] = 1;
        $data['create_time'] = time();
        $data['update_time'] = time();
        $res = $this->insert($data);
        if(!$res){
            return false;
        }
        $this->set_change_extra_cache($supplier_code, $data['charge_content']);
        return true;
    }

    public function set_change_extra_cache($supplier_code, $charge_content){
        $Redis = new RedisModel();
        $pre = Config('fixed.SUPPLIER_REDIS_PRE');
        $SUPPLIER_ID = Config('fixed.SUPPLIER_ID'); // 联营供应商ID 17
        // 联营供应商ID是17
        $Redis->hset($pre, $SUPPLIER_ID. '.' . $supplier_code, $charge_content);
        return true;
    }


}