<?php

namespace app\admin\job;

use app\admin\service\AdminBaseService;
use app\admin\service\setting\IPOService;
use think\Db;
use think\queue\Job;

class SendGo
{

    /**
     * @param Job $job
     * @param $data
     * @return void
     */
    public function fire(Job $job, $data)
    {

        try {
            trace('--接收-通知go---' . json_encode($data), 'error');
            switch ($data['type']) {
                // 通知交易
                case 'trade':
                    $bool = (new IPOService())->sendStockToGo($data['id'], $data['stock_code'], $data['market_type']);
                    if (!$bool) {
                        trace('---通知交易异常---', 'error');
                        $status = 2;
                    } else {
                        $status = 1;
                    }
                    (new IPOService())->updateIPOStatus($data['market_type'], $data['id'], $data['type'], $status);
                    break;
                //后支付通知交易
                case 'last_trade':
                    $bool = (new IPOService())->sendStockToTrade($data['order_no'], $data['stock_code'], $data['market_type']);
                    if (!$bool) {
                        trace('---通知交易异常---', 'error');
                        $status = 2;
                    } else {
                        $status = 1;
                    }
                    (new IPOService())->updateIPOStatus($data['market_type'], $data['id'], $data['type'], $status, $data['order_no']);
                    break;
                // 通知行情
                case 'hq':
                    $bool = (new IPOService())->sendNewStockToGo($data['country'], $data['stock_code'], $data['stock_code'], $data['stock_name'], $data['tape'], $data['price'], $data['isReal'], $data['company_info'], $data['source'], $data['numeric_code'] ?? 0);
                    if (!$bool) {
                        trace('---通知行情异常---', 'error');
                        $status = 2;
                    } else {
                        $status = 1;
                    }
                    (new IPOService())->updateIPOStatus($data['market_type'], $data['id'], $data['type'], $status);
                    break;
                case 'fee':
                    $bool = (new IPOService())->stockIPOFee($data['market_type'], $data['id'], $data['stock_code']);
                    if (!$bool) {
                        trace('---通知扣除异常---', 'error');
                    }
                    break;
            }

        } catch (\Exception $exception) {
            trace('---通知GO异常---' . $exception->getMessage(), 'error');
        }

        $job->delete();
    }

}