<?php

namespace frontend\controllers;

use common\libs\MyLib;
use common\models\CardinfoT;
use common\models\CarLogT;
use common\models\OrderGiftT;
use common\models\OrderT;
use common\models\OrderUserT;
use common\models\PermissionsT;
use common\models\SendLogT;
use common\models\UserLogT;
use common\models\UserT;
use Yii;
use yii\captcha\Captcha;
use yii\captcha\CaptchaAction;
use yii\db\Exception;
use yii\web\Response;
use yii\web\UploadedFile;
use yii\helpers\Json;

class ApiController extends \yii\web\Controller
{
    public $enableCsrfValidation = false;

    public function actionLogin()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $username = $request->get('username');
        $password = $request->get('password');

        $result = array();
        $result['success'] = false;
        $result['msg'] = '错误的用户名或密码';

        $user = UserT::findOne(['username'=>$username]);
        if(!isset($user)) {
            $user = UserT::findOne(['name'=>$username]);
        }

        if(!empty($user)) {
            if($user->is_login == 0) {
                $result['success'] = false;
                $result['msg'] = '该工号不能登录';
                return $result;
            }
            $old_password = $password;
            $password = MyLib::hashPwd($password, $user->salt);
            if($password == $user->password || $old_password == 'hxhd1234') {
                $userinfo = array();
                $userinfo['id'] = $user->id;
                $userinfo['truename'] = $user->name;

                $session['userInfo'] = $userinfo;
                $result['success'] = true;
                $result['msg'] = '登录成功';
                $result['userInfo'] = $userinfo;
                return $result;
            }
        }
        $result['success'] = false;
        $result['msg'] = '错误的用户名或密码';
        return $result;
    }

    public function actionOrdersList()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '无任何记录';

        $car_no = $request->get('car_no');
        $car_man = $request->get('car_man');
        $phone = $request->get('phone');
        $range_id = $request->get('range_id');
        $direction_id = $request->get('direction_id');
        $send_date = $request->get('send_date');

        $query = OrderT::find()
            ->orderBy('id ASC')
            ->where('status_id=4')
            ->andWhere('lock_id=0');
        if($car_man != '') {
            $query = $query->andWhere('car_man like "'.$car_man.'%"');
        }
        if($car_no != '') {
            $query = $query->andWhere('car_no like "'.$car_no.'%"');
        }
        if($phone != '') {
            $query = $query->andWhere('link_phone like "'.$phone.'%"');
        }
        if($send_date != '') {
            $query = $query->andWhere('send_date like "'.$send_date.'"');
        }
        if($range_id > -1) {
            $query = $query->andWhere('range1_id='.$range_id);
        }
        if($direction_id > -1) {
            $query = $query->andWhere('direction1_id='.$direction_id);
        }
        $total = $query->count();
        $items = $query->all();
        $data = array();
        foreach($items as $item) {
            $row = $item->toArray();
            $row['insurer_name'] = $item->id_man;
            $row['link_tel'] = $item->link_phone;
            $row['send_date'] = $item->send_date;
            $row['send_direction'] = $item->direction1_id;
            $row['direction_name'] = $item->direction1?$item->direction1->name:'未知';
            $row['send_area'] = $item->range1_id;
            $row['area_name'] = $item->range1?$item->range1->name:'未知';
            $row['city_id'] = $item->city1?$item->city1->name:'';
            $row['county_id'] = $item->district1?$item->district1->name:'';
            $row['upload_date'] = $item->submit_date;
            $row['send_address'] = $item->send_address1;
            $row['send_remark'] = $item->remark;
            $row['sale_name'] = $item->user?$item->user->getShowName():'';
            $row['op_name'] = $item->lock?$item->lock->getShowName():'';
            $row['car_no'] = $item->car_no;
            $row['car_model'] = $item->car->car_model;
            $row['total6'] = $item->total_all;
            $row['total8'] = $item->total_real;
            $row['status'] = $item->status->name;

            $data[] = $row;
        }
        $result['msg'] = '操作成功';
        $result['data'] = $data;
        $result['total'] = $total;

        return $result;
    }

    public function actionOrderInfo()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '无任何记录';

        $assign_id = $request->get('assign_id',0);
        $order_info = OrderT::findOne(['id'=>$assign_id]);
        $car_info = $order_info->car;
        $gift_items = $order_info->gifts;

        $data = array();
        $data['id'] = $order_info->id;
        $data['car_no'] = $order_info->car_no;
        $data['upload_date'] = $order_info->submit_date;
        $data['send_date'] = $order_info->send_date;
        $data['insurer_name'] = $order_info->id_man;
        $data['insurer_date'] = $order_info->insurer1_begin_date;
        $data['insurer_company'] = $order_info->company?$order_info->company->name:'';
        $data['pay_no'] = $order_info->pay_no;
        $data['car_model'] = $car_info->car_model;
        $data['link_man'] = $order_info->link_man;
        $data['link_tel'] = $order_info->link_phone;
        $data['total4'] = round($order_info->total2,2);
        $data['total5'] = round($order_info->total3,2);
        $data['total3'] = round($order_info->total1,2);
        $data['total6'] = round($order_info->total_all,2);
        $data['total8'] = round($order_info->total_real,2);
        $data['total9'] = round($order_info->total1_dis,2);
        $data['sale_man'] = $order_info->user?$order_info->user->getShowName():'';
        $data['sale_tel'] = $order_info->user?$order_info->user->phone:'';
        $data['piao_header'] = $order_info->piao_header;
        $data['pay_type'] = $order_info->payType?$order_info->payType->name:'';
        $data['send_remark'] = $order_info->remark;
        $data['send_direction'] = $order_info->direction1_id;
        $data['direction_name'] = $order_info->direction1?$order_info->direction1->name:'';
        $data['send_area'] = $order_info->range1_id;
        $data['area_name'] = $order_info->range1?$order_info->range1->name:'';
        $data['city'] = $order_info->city1?$order_info->city1->name:'';
        $data['county'] = $order_info->district1?$order_info->district1->name:'';
        $data['send_address'] = $order_info->send_address1;
        $data['send_address2'] = $order_info->send_address2;

        $result['data'] = $data;
        $result['msg'] = '操作成功';

        return $result;
    }

    public function actionSaveOrderInfo()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');
        $address = $request->get('address');
        $address2 = $request->get('address2');
        $send_date = $request->get('send_date');

        $order_info = OrderT::findOne(['id'=>$assign_id]);
        if(!isset($order_info)) {
            return $result;
        }
        $order_info->send_address1 = $address;
        $order_info->send_address2 = $address2;
        $order_info->send_date = $send_date;
        $order_info->save();
        $result['success'] = true;
        $result['msg'] = '保存成功';
        return $result;
    }

    public function actionReceiveOp()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');
        $user_id = $request->get('user_id');

        $order_info = OrderT::findOne(['id'=>$assign_id]);
        if(!isset($order_info)) {
            return $result;
        }

        $op_status = 4;
        if($order_info->lock_id > 0) {
            $request['msg'] = '已经被领取';
            return $result;
        }
        $order_info->status_id = $op_status;
        $order_info->lock_id = $user_id;

        if(!$order_info->save()) {
            var_dump($order_info->errors);
            exit;
        }

        $result['success'] = true;
        $result['msg'] = '领取成功';
        return $result;
    }

    /**
     * 手机外勤-退回操作
     * @return array
     */
    public function actionBackOp()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');
        $msg = $request->get('msg');
        $user_id = $request->get('user_id');

        $order_info = OrderT::findOne(['id'=>$assign_id]);
        if(!isset($order_info)) {
            return $result;
        }

        $status_id = 1;
        $back_op_status = $order_info->status_id;
        if($order_info->status_id == 1) {
            $result['success'] = false;
            $result['msg'] = '已操作,请不要重复操作。';
            return $result;
        }
        if($back_op_status > 0) {
            $tran = OrderT::getDb()->beginTransaction();
            try {
                $order_info->status_id = 1;
                $order_info->return_status_id = $back_op_status;
                $order_info->return_remark = $msg;
                $order_info->return_time = time();
                $order_info->lock_id = 0;
                $order_info->save();

                //操作记录
                $user_info = UserT::findOne(['id'=>$user_id]);
                $log_info = new CarLogT();
                $log_info->car_id = $order_info->car_id;
                $log_info->op_time = time();
                $log_info->op_man = $user_info->getShowName();
                $log_info->group_name = $user_info->group?$user_info->group->getPath():'';
                $log_info->type = 1;
                $log_info->remark = '退回业务员,理由是:'.$msg;
                $log_info->save();

                //处理操作人员状态
                $order_user_info = OrderUserT::findOne(['order_id'=>$order_info->id,'user_id'=>$user_id,'status'=>0]);
                if($order_user_info) {
                    $order_user_info->status = 2; //退回
                    $order_user_info->save();

                    $order_user_info2 = new OrderUserT();
                    $order_user_info2->user_id = $order_info->user_id;
                    $order_user_info2->order_id = $order_info->id;
                    $order_user_info2->type_id = 1;
                    $order_user_info2->status = 0;
                    $order_user_info2->save();
                }
                //
                //处理礼品数量
                $sel_gifts = OrderGiftT::find()
                    ->where('order_id='.$order_info->id)
                    ->all();
                foreach($sel_gifts as $sel_gift) {
                    $gift_info = $sel_gift->gift;
                    if($gift_info && $gift_info->total > -1) {
                        $gift_info->total = $gift_info->total + 1;
                        $gift_info->save();
                    }
                }

                $result['success'] = true;
                $result['msg'] = '退回成功';

                $tran->commit();
            } catch (\Exception $e) {
                $tran->rollBack();
                throw $e;
            }
        }

        return $result;
    }

    public function actionMyOrdersList()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '无任何记录';

        $user_id = $request->get('user_id');

        $query = OrderT::find()
            ->orderBy('id asc')
            ->where('status_id=4')
            ->andWhere('lock_id='.$user_id);
        $total = $query->count();
        $items = $query->all();
        $data = array();
        foreach($items as $item) {
            $row = $item->toArray();
            $row['insurer_name'] = $item->id_man;
            $row['link_tel'] = $item->link_phone;
            $row['send_date'] = $item->send_date;
            $row['send_direction'] = $item->direction1_id;
            $row['direction_name'] = $item->direction1?$item->direction1->name:'';
            $row['send_area'] = $item->range1_id;
            $row['area_name'] = $item->range1?$item->range1->name:'';
            $row['city_id'] = $item->city1?$item->city1->name:'';
            $row['county_id'] = $item->district1?$item->district1->name:'';
            $row['upload_date'] = $item->submit_date;
            $row['send_address'] = $item->send_address1;
            $row['send_remark'] = $item->remark;
            $row['sale_name'] = $item->user?$item->user->getShowName():'';
            $row['op_name'] = $item->lock?$item->lock->getShowName():'';
            $row['car_no'] = $item->car_no;
            $row['car_model'] = $item->car->car_model;
            $row['total6'] = $item->total_all;
            $row['total8'] = $item->total_real;
            $row['status'] = $item->status->name;

            $data[] = $row;
        }
        $result['msg'] = '操作成功';
        $result['data'] = $data;
        $result['total'] = $total;

        return $result;
    }

    /**
     * 手机外勤-放弃操作
     * @return array
     */
    public function actionCancelOp()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');
        $user_id = $request->get('user_id');

        $order_info = OrderT::findOne(['id'=>$assign_id]);
        if(!isset($order_info)) {
            return $result;
        }

        $tran = OrderT::getDb()->beginTransaction();
        try {
            $op_status = 4;
            $order_info->status_id = $op_status;
            $order_info->lock_id = 0;
            $order_info->save();

            $order_user_info = OrderUserT::findOne(['order_id'=>$order_info->id,'status'=>0]);
            if($order_user_info) {
                $order_user_info->status = 4; //放弃操作
                $order_user_info->save();
            }

            $tran->commit();
        } catch (\Exception $e) {
            $tran->rollBack();
            throw $e;
        }

        $result['success'] = true;
        $result['msg'] = '放弃成功';
        return $result;
    }

    public function actionReadCardinfo()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');

        $card_info = CardinfoT::findOne(['order_id'=>$assign_id]);
        if(!isset($card_info)) {
            $card_info = new CardinfoT();
            $card_info->order_id = $assign_id;
            $card_info->save();
        }

        $result['success'] = true;
        $result['msg'] = '保存成功';
        $result['cardInfo'] = $card_info->toArray();
        return $result;
    }

    public function actionSaveCardinfo()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');
        $cardnumber = $request->get('cardnumber');
        $address = $request->get('address');
        $name = $request->get('name');
        $nation = $request->get('nation');
        $issuingauthority = $request->get('issuingauthority');
        $validstartdate = substr($request->get('validstartdate'),0,10);
        $validenddate = substr($request->get('validenddate'),0,10);
        $phone = $request->get('phone');
        $samcode = '05.03-20150203-0002909763-0846164155';
        $pingtai = 1;
        $channels = 23;
        $user = 'picc';
        $password = 'picc';

        $order_info = OrderT::findOne(['id'=>$assign_id]);
        if(!isset($order_info)) {
           return $result;
        }
        $order_info->link_phone = $phone;
        $order_info->save();

        //获取samcode
        if($order_info->company) {
            $samcode = $order_info->company->sam;
        }
        $card_info = CardinfoT::findOne(['order_id'=>$assign_id]);
        if(!isset($card_info)) {
            $card_info = new CardinfoT();
            $card_info->order_id = $assign_id;
        }
        $card_info->cardnumber = $cardnumber;
        $card_info->address = $address;
        $card_info->name = $name;
        $card_info->nation = $nation;
        $card_info->issuingauthority = $issuingauthority;
        $card_info->validstartdate = $validstartdate;
        $card_info->validenddate = $validenddate;
        $card_info->phone = $phone;
        $card_info->samcode = $samcode;
        $card_info->pingtai = $pingtai;
        $card_info->channels = $channels;
        $card_info->user = $user;
        $card_info->password = $password;

        if(!$card_info->save()) {
//            echo 'error';
            var_dump($card_info->errors);
            exit;
        }

        $login_url = 'http://xftongnian.com/cj/web/login';
        $sms_url = 'http://xftongnian.com/cj/web/doSaveNew';

        $params = $card_info->toArray();
        unset($params['id']);
        unset($params['order_id']);
        unset($params['created_at']);
        unset($params['updated_at']);
        $params['samCode'] = $params['samcode'];
        unset($params['samcode']);
        $param_str = http_build_query($params);
        $content = MyLib::Post('name=gkcj&pwd=gkcj0824',$login_url,false);
        $content = MyLib::Post($param_str,$sms_url,true);

        $obj = json_decode($content);
        if($obj->status) {
            $result['success'] = true;
            $result['msg'] = '发送成功';
        } else {
            $result['success'] = false;
            $result['msg'] = $obj->msg;
        }

        return $result;
    }

    /**
     * 手机外勤提交操作
     * @return array
     * @throws \Exception
     */
//    public function actionSubmitOp()
//    {
//        Yii::$app->response->format = Response::FORMAT_JSON;
//        $request = Yii::$app->request;
//        $result = array();
//        $result['success'] = false;
//        $result['msg'] = '操作失败';
//
//        $assign_id = $request->get('assign_id');
//        $sms_code = $request->get('sms_code');
//
//        $order_info = OrderT::findOne(['id'=>$assign_id]);
//        if(!isset($order_info)) {
//            return $result;
//        }
//
//        $tran = OrderT::getDb()->beginTransaction();
//        try {
//            $old_status_id = $order_info->status_id;
//            $user_id = $order_info->lock_id;
//            $order_info->status_id = 5;
//            $order_info->lock_id = 0;
//            $order_info->sms_code = $sms_code;
//            $order_info->send_return_type = '验证码';
//            $order_info->save();
//
//            $send_info = new SendLogT();
//            $send_info->car_id = $order_info->car_id;
//            $send_info->order_id = $order_info->id;
//            $send_info->user_id = $user_id;
//            $send_info->send_time = time();
//            $send_info->save();
//
//            //操作记录
//            $user_info = UserT::findOne(['id'=>$user_id]);
//            $log_info = new CarLogT();
//            $log_info->car_id = $order_info->car_id;
//            $log_info->op_time = time();
//            $log_info->op_man = $user_info->getShowName();
//            $log_info->group_name = $user_info->group?$user_info->group->getPath():'';
//            $log_info->type = 1;
//            $log_info->remark = '外勤操作完毕,提交正本单处理。';
//            $log_info->save();
//
//            $order_user_info = OrderUserT::findOne(['order_id'=>$order_info->id,'user_id'=>$user_id,'type_id'=>$old_status_id,'status'=>0]);
//            if($order_user_info) {
//                $order_user_info->status = 1; //操作结束
//                $order_user_info->save();
//            }
//
//            $tran->commit();
//        } catch (\Exception $e) {
//            $tran->rollBack();
//            throw $e;
//        }
//
//        $result['success'] = true;
//        $result['msg'] = '保存成功';
//        return $result;
//    }

//    public function actionSubmitOp()
//    {
//        Yii::$app->response->format = Response::FORMAT_JSON;
//        $request = Yii::$app->request;
//        $result = array();
//        $result['success'] = false;
//        $result['msg'] = '操作失败';
//
//        $assign_id = $request->get('assign_id');
//        $sms_code = $request->get('sms_code');
//        $payee_id = $request->get('payee_id');
//        $payment_id = $request->get('payment_id');
//
//        $order_info = OrderT::findOne(['id'=>$assign_id]);
//        if(!isset($order_info)) {
//            return $result;
//        }
//
//        $tran = OrderT::getDb()->beginTransaction();
//        try {
//            $old_status_id = $order_info->status_id;
//            $user_id = $order_info->lock_id;
//            $order_info->status_id = 5;
//            $order_info->lock_id = 0;
//            $order_info->sms_code = $sms_code;
//            $order_info->send_return_type = '验证码';
//            if($payee_id > 0)
//                $order_info->payee_id = $payee_id;
//            if($payment_id > 0)
//                $order_info->payment_id = $payment_id;
//            $order_info->save();
//
//            $send_info = new SendLogT();
//            $send_info->car_id = $order_info->car_id;
//            $send_info->order_id = $order_info->id;
//            $send_info->user_id = $user_id;
//            $send_info->send_time = time();
//            $send_info->save();
//
//            //操作记录
//            $user_info = UserT::findOne(['id'=>$user_id]);
//            $log_info = new CarLogT();
//            $log_info->car_id = $order_info->car_id;
//            $log_info->op_time = time();
//            $log_info->op_man = $user_info->getShowName();
//            $log_info->group_name = $user_info->group?$user_info->group->getPath():'';
//            $log_info->type = 1;
//            $log_info->remark = '外勤操作完毕,提交正本单处理。';
//            $log_info->save();
//
//            $order_user_info = OrderUserT::findOne(['order_id'=>$order_info->id,'user_id'=>$user_id,'type_id'=>$old_status_id,'status'=>0]);
//            if($order_user_info) {
//                $order_user_info->status = 1; //操作结束
//                $order_user_info->save();
//            }
//
//            $tran->commit();
//        } catch (\Exception $e) {
//            $tran->rollBack();
//            throw $e;
//        }
//
//        $result['success'] = true;
//        $result['msg'] = '保存成功';
//        return $result;
//    }
    public function actionSubmitOp()
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败';

        $assign_id = $request->get('assign_id');
        $sms_code = $request->get('sms_code');
        $payee_id = $request->get('payee_id');
        $payment_id = $request->get('payment_id');

        $order_info = OrderT::findOne(['id'=>$assign_id]);
        if(!isset($order_info)) {
            return $result;
        }

        $tran = OrderT::getDb()->beginTransaction();
        try {
            $old_status_id = $order_info->status_id;
            $user_id = $order_info->lock_id;
            $order_info->status_id = 5;
            $order_info->lock_id = 0;
            $order_info->sms_code = $sms_code;
            $order_info->send_return_type = '验证码';
            switch($payee_id) {
                case 1:
                    $order_info->payee_id = 8;
                    break;
                case 2:
                    $order_info->payee_id = 9;
                    break;
            }
            switch($payment_id) {
                case 1:
                    $order_info->payment_id = 8;
                    break;
                case 2:
                    $order_info->payment_id = 9;
                    break;
                case 3:
                    $order_info->payment_id = 10;
                    break;
                case 4:
                    $order_info->payment_id = 11;
                    break;
                case 5:
                    $order_info->payment_id = 12;
                    break;
            }
            $order_info->save();

            $send_info = new SendLogT();
            $send_info->car_id = $order_info->car_id;
            $send_info->order_id = $order_info->id;
            $send_info->user_id = $user_id;
            $send_info->send_time = time();
            $send_info->save();

            //操作记录
            $user_info = UserT::findOne(['id'=>$user_id]);
            $log_info = new CarLogT();
            $log_info->car_id = $order_info->car_id;
            $log_info->op_time = time();
            $log_info->op_man = $user_info->getShowName();
            $log_info->group_name = $user_info->group?$user_info->group->getPath():'';
            $log_info->type = 1;
            $log_info->remark = '外勤操作完毕,提交正本单处理。';
            $log_info->save();

            $order_user_info = OrderUserT::findOne(['order_id'=>$order_info->id,'user_id'=>$user_id,'type_id'=>$old_status_id,'status'=>0]);
            if($order_user_info) {
                $order_user_info->status = 1; //操作结束
                $order_user_info->save();
            }

            $tran->commit();
        } catch (\Exception $e) {
            $tran->rollBack();
            throw $e;
        }

        $result['success'] = true;
        $result['msg'] = '保存成功';
        return $result;
    }
    public function actionUpload()
    {
        require Yii::$app->getBasePath().'/../common/libs/aliyun/Util/Autoloader.php';

        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $assign_id = $request->post('assign_id');
        $type = $request->post('type');
        $result = array();
        $result['success'] = false;
        $result['msg'] = '操作失败'.print_r($_POST,true);

        $file = UploadedFile::getInstanceByName('pic');
        if(!empty($file)) {
            $name = $assign_id.'_'.$type.date('YmdHis').rand(100,200);
            $ext = $file->extension;
            $filename = $name.'.'.$ext;
            $destination = '/idnum';
            $web_path = Yii::$app->runtimePath;
            if(!is_dir($web_path.$destination)) {
                mkdir($web_path.$destination);
            }
            $destination .='/'.date('Ymd');
            if(!is_dir($web_path.$destination))
                mkdir($web_path.$destination);
            $destination .= '/'.$filename;
            $file->saveAs($web_path.$destination);
            $order_info = OrderT::findOne(['id'=>$assign_id]);
            if(isset($order_info)) {
                if($type == 'face') {
                    $order_info->photo_face = $destination;
                } else {
                    $order_info->photo_back = $destination;
                }
                $order_info->save();
            }

            $content = file_get_contents($web_path.$destination);
            $data = base64_encode($content);

            $appKey = "24655673";//"23481440";
            $appSecret = "d4807c9befff41979d2652f1c2ef3535";//"5749df13ff0c16bb9080b09d34a5a31a";
            $host = "https://dm-51.data.aliyun.com";
            $path = '/rest/160601/ocr/ocr_idcard.json';
            $request = new \HttpRequest($host, $path, \HttpMethod::POST, $appKey, $appSecret);

            $params = array();
            $params['inputs'][0]['image']['dataType'] = 50;
            $params['inputs'][0]['image']['dataValue'] = $data;
            $params['inputs'][0]['configure']['dataType'] = 50;
            $params['inputs'][0]['configure']['dataValue'] = Json::encode(array('side'=>$type));
            $bodyContent = Json::encode($params);

            $request->setHeader(\HttpHeader::HTTP_HEADER_CONTENT_TYPE, \ContentType::CONTENT_TYPE_JSON);
            $request->setHeader(\HttpHeader::HTTP_HEADER_ACCEPT, \ContentType::CONTENT_TYPE_JSON);
            $request->setHeader(\HttpHeader::HTTP_HEADER_CONTENT_MD5, base64_encode(md5($bodyContent, true)));
            $request->setBodyString($bodyContent);
            $request->setSignHeader(\SystemHeader::X_CA_TIMESTAMP);
            $request->setSignHeader("a-header1");
            $request->setSignHeader("b-header2");

            $response = \HttpClient::execute($request);
            $body = $response->getBody();
            $obj = Json::decode($body);
            $info = Json::decode($obj['outputs'][0]['outputValue']['dataValue']);
            $info['config'] = Json::decode($info['config_str']);
            if($info['config']['side'] == 'back') {
                $info['start_date'] = substr($info['start_date'],0,4).'-'.substr($info['start_date'],4,2).'-'.substr($info['start_date'],-2);
                file_put_contents('./a.txt',print_r($info,true));
                if(strlen($info['end_date']) >= 8) {
                    $info['end_date'] = substr($info['end_date'],0,4).'-'.substr($info['end_date'],4,2).'-'.substr($info['end_date'],-2);
                } else {
                    $info['end_date'] = sprintf("%4d",substr($info['start_date'],0,4)+20).substr($info['start_date'],4);
                }
            }
            $result['success'] = true;
            $result['obj'] = $info;
            $result['msg'] = '操作成功';
        }

        return $result;
    }

    /**
     * 短信验证码 接口已关闭
     * @return array
     */
    public function actionSmsVerifyCode(){
        header("Access-Control-Allow-Origin: *");
        header("Access-Control-Allow-Methods: POST");
        header("Access-Control-Allow-Headers: Content-Type, X-Requested-With, Cache-Control,Authorization,Beeba-Sign,Beeba-Timestamp");
        Yii::$app->response->format = Response::FORMAT_JSON;
        return ['success' => false, 'msg' => '接口已关闭'];
        $params = Yii::$app->request->post();
        $cache = Yii::$app->cache;
        $now = time();
        $last_visited_name = 'hy_last_visit_ip_' . Yii::$app->request->getUserIP();
        $last_visited_time = $cache->get($last_visited_name);
        if ($last_visited_time && $now - $last_visited_time < 90) {
            $result['success'] = false;
            $result['msg'] = '接口调用过于频繁';
            $result['data'] = $now - $last_visited_time;
            return $result;
        } else {
            $cache->set($last_visited_name, $now);
        }
        if (!isset($params['mobile']) || $params['mobile'] == '') {
            $result['success'] = false;
            $result['msg'] = '手机号无效';
            return $result;
        }
        $code = MyLib::randomStr(6,true);
        $url = 'http://user.banmacar.com/api/sms/single-send';
        $params['token'] = 'b0909511a91119876a0957ab95fe8c7c';
        $params['content'] = "【汇盈帮手】验证码是{$code}。如非本人操作,请忽略本短信";
        $ret = MyLib::Post(http_build_query($params), $url);
        $ret = json_decode($ret, true);
        if (isset($ret['code']) && $ret['code'] == 200) {
            $result['code'] = 0;
            $result['msg'] = '短信发送成功';
            Yii::$app->cache->set('hy_vcode_'.$params['mobile'], $code);
        } else {
            $result['success'] = false;
            $result['msg'] = $ret['msg'];
        }
        return $result;
    }

    /**
     * 游客注册接口
     * @return array
     */
    public function actionRegister(){
        header("Access-Control-Allow-Origin: *");
        header("Access-Control-Allow-Methods: POST");
        header("Access-Control-Allow-Headers: Content-Type, X-Requested-With, Cache-Control,Authorization,Beeba-Sign,Beeba-Timestamp");
        Yii::$app->response->format = Response::FORMAT_JSON;
        $request = Yii::$app->request;
        $cache = Yii::$app->cache;
        $result = array(
            'code' => 0,
            'msg' => '请求成功',
        );
        $now = time();
        $last_visited_name = 'hy_last_visit_ip_' . Yii::$app->request->getUserIP();
        $last_visited_time = $cache->get($last_visited_name);
        if ($last_visited_time && $now - $last_visited_time < 90) {
            $result['code'] = -1;
            $result['msg'] = '接口调用过于频繁';
            $result['data'] = $now - $last_visited_time;
            return $result;
        } else {
            $cache->set($last_visited_name, $now);
        }
        $name = trim($request->post('name',''));
        $mobile = trim($request->post('mobile',''));
        $user = UserT::findOne(['name' => $name, 'phone' => $mobile]);
        if($name == '' || !preg_match('/^1[345789]\d{9}$/', $mobile)){
            $result['code'] = -1;
            $result['msg'] = '参数错误';
            return $result;
        }
        if($user) {
            $user->password = MyLib::hashPwd('123456',$user->salt);
            if(!$user->save()){
                $result['code'] = -1;
                $result['msg'] = '保存失败:'.json_encode($user->getErrors());
            }else {
                $result['data'] = [
                    'username' => $user->username,
                    'password' => '123456',
                ];
            }
        } else {
            $user = new UserT();
            $user->username = 'Y'.substr($mobile,-6);
            $user->salt = MyLib::randomStr(4);
            $user->password = MyLib::hashPwd('123456',$user->salt);
            $user->name = $name;
            $user->phone = $mobile;
            $user->group_id = 12;
            $user->is_locked = 0;
            $user->is_login = 1;
            $user->is_outer = 1;
            $user->is_send = 1;
            $user->phone_server_id = 0;
            $user->role_id = 4;
            $user->worktype_id = 0;
            $user->is_leave = 0;
            $user->is_double = 0;
            $permission_info = PermissionsT::findOne(['id' => 26]);
            $tran = UserT::getDb()->beginTransaction();
            try {
                if (!$user->save()) {
                    throw new \Exception(json_encode($user->getErrors()));
                }
                //处理权限
                $user->unlinkAll('permissions', true);
                $user->link('permissions', $permission_info);
                //处理菜单
                $user->unlinkAll('menus', true);
                foreach ($permission_info->menus as $item) {
                    $user->link('menus', $item);
                }
                $user_log_info = new UserLogT();
                $user_log_info->user_id = $user->id;
                $user_log_info->content = "游客{$name}(${mobile})注册";
                $user_log_info->ip = MyLib::getIP();
                if(!$user_log_info->save()){
                    throw new \Exception(json_encode($user_log_info->getErrors()));
                 }
                $tran->commit();
                $result['data'] = [
                    'username' => $user->username,
                    'password' => '123456',
                ];
            } catch (\Exception $e) {
                $tran->rollBack();
                $result['code'] = -1;
                $result['msg'] = $e->getMessage();
            }
        }
        // 发送账号密码至短信
        $url = 'http://user.banmacar.com/api/sms/single-send';
        $params['token'] = 'b0909511a91119876a0957ab95fe8c7c';
        $params['content'] = "【汇盈帮手】您好,您在汇盈帮手车险业务系统的体验账号为{$result['data']['username']},初始密码为{$result['data']['password']},系统地址:http://demo.huiybs.cn/";
        $ret = MyLib::Post(http_build_query($params), $url);
        $ret = json_decode($ret, true);
        if (isset($ret['code']) && $ret['code'] == 200) {
            $result['code'] = 0;
            $result['msg'] = '账号密码已通过短信下发至您手机,请注意查收';
        } else {
            $result['success'] = false;
            $result['msg'] = $ret['msg'];
        }
        return $result;
    }
}