<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;
use EasyWeChat\Foundation\Application;

/**
 * 用户接口
 */
class User extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = '*';

    public function _initialize()
    {
        parent::_initialize();
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-授权登陆)
     * @ApiSummary  (授权登陆)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/SignLogin)
     * @ApiParams   (name="code", type="integer", required=true, description="Code")
     * @ApiParams   (name="avatar", type="integer", required=true, description="头像")
     * @ApiParams   (name="nickname", type="integer", required=true, description="微信名")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/0wpUDw5m0LRvdDueia3uMWmrYb53GXRaTnYwMWC18kRmX6P6PIaPDgQqarEIfwroicx1z51D6bjQicOV0PibBx2PqQ/132",
    "nickname": "Gody",
    "token": "3dda6e452f4778fcc72e21178494bbc1",
    "mobile": null
    }
    })
     */
    public function SignLogin()
    {
        $param = $this->request->param();
//        授权登录
        $ch = curl_init();
        $appid = "wx55afbe753b153a68";
        $secret = "428f6ca70764b0fceee65e1d4991f50a";
        $code = $param['code'];
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        if ($output === FALSE) {
            echo "CURL Error:" . curl_error($ch);
        }
        curl_close($ch);
        $curl_result = json_decode($output, true);
        $openid = $curl_result['openid'];
        $is_open = Db::name('user')->where(['openid' => $openid])->find();
        if ($is_open['is_black'] == 1) {
            $this->error('您已被拉黑', 0);
            die;
        }
        if (empty($is_open)) {
            $data = [
                'openid' => $openid,
                'updatetime' => time(),
                'createtime' => time(),
                'avatar' => $param['avatar'],
                'nickname' => $param['nickname'],
                'vip' => 0,
                'is_black' => 0,
                'type' => 1
            ];
            Db::name('user')->insert($data);
        }
        $token = $this->request->token();
        $arr = [
            'nickname' => $param['nickname'],
            'avatar' => $param['avatar'],
            'token' => $token,
            'updatetime' => time(),
        ];
        $res = Db::name("user")->where(['openid' => $openid])->update($arr);
        if (!$res) {
            $this->error('授权失败', 0);
            die;
        }
        $rult = Db::name("user")->where(['openid' => $openid])->find();
        $return = [
            'avatar' => $rult['avatar'],
            'nickname' => $rult['nickname'],
            'token' => $rult['token'],
            'mobile' => $rult['mobile']
        ];
        $this->success('成功', $return);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-开屏页Code)
     * @ApiSummary  (开屏页Code)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/OpenCode)
     * @ApiParams   (name="code", type="integer", required=true, description="Code")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/0wpUDw5m0LRvdDueia3uMWmrYb53GXRaTnYwMWC18kRmX6P6PIaPDgQqarEIfwroicx1z51D6bjQicOV0PibBx2PqQ/132",
    "nickname": "Gody",
    "token": "3dda6e452f4778fcc72e21178494bbc1",
    "mobile": null,
    "is_user":1=已注册,0=未注册,
    "vip":会员状态:1=会员,0=非会员,
    "exptime":会员到期时间,
    "type":身份:1=用户,2=找车工,3=洗车工
    }
    })
     */
    public function OpenCode()
    {
//        授权登录
        $ch = curl_init();
        $appid = "wx55afbe753b153a68";
        $secret = "428f6ca70764b0fceee65e1d4991f50a";
        $code = input('code');
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        if ($output === FALSE) {
            echo "CURL Error:" . curl_error($ch);
        }
        curl_close($ch);
        $curl_result = json_decode($output, true);
        $openid = $curl_result['openid'];
        $is_open = Db::name('user')->where(['openid' => $openid])->find();
        if ($is_open['is_black'] == 1) {
            $this->error('您已被拉黑', 0);
            die;
        }
        if (empty($is_open)) {
            $type = 0;
            $return = [
                'is_user' => $type,
                'nickname' => '',
                'avatar' => '',
                'mobile' => null,
                'vip' => '',
                'exptime' => '',
                'type' => '',
                'token' => ''
            ];
        } else {
            $type = 1;
            $token = $this->request->token();
            $res = Db::name("user")->where(['openid' => $openid])->update(['token' => $token,]);
            if (!$res) {
                $this->error('令牌更新失败', 0);
                die;
            }
            $return = [
                'is_user' => $type,
                'nickname' => $is_open['nickname'],
                'avatar' => $is_open['avatar'],
                'mobile' => $is_open['mobile'],
                'vip' => $is_open['vip'],
                'exptime' => $is_open['exptime'],
                'type' => $is_open['type'],
                'token' => $token
            ];
        }
        $this->success('成功', $return);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-绑定手机)
     * @ApiSummary  (绑定手机)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/CheckMobile)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="integer", required=true, description="1=手机号授权,2=验证码授权")
     * @ApiParams   (name="mobile", type="integer", required=true, description="手机号")
     * @ApiParams   (name="code", type="integer", required=true, description="验证码")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    }
    })
     */
    public function CheckMobile()
    {
        $user_id = $this->is_token($this->request->header());
        $param = $this->request->param();
        if ($param['type'] == 2) {
            $this->CheckCode($param['mobile'], $param['code']);
        }
        $res = Db::name('user')->where('id', $user_id)->update(['mobile' => $param['mobile']]);
        $this->res($res);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-完善信息)
     * @ApiSummary  (完善信息)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/AddUserCon)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="mobile", type="integer", required=true, description="手机号")
     * @ApiParams   (name="code", type="integer", required=true, description="code")
     * @ApiParams   (name="car_num", type="integer", required=true, description="车牌号")
     * @ApiParams   (name="car_type", type="integer", required=true, description="车型")
     * @ApiParams   (name="color", type="integer", required=true, description="车辆颜色")
     * @ApiParams   (name="address", type="integer", required=true, description="我的地址")
     * @ApiParams   (name="address_con", type="integer", required=true, description="详细地址")
     * @ApiParams   (name="lng", type="integer", required=true, description="经度")
     * @ApiParams   (name="lat", type="integer", required=true, description="纬度")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    }
    })
     */
    public function AddUserCon()
    {
        $param = $this->request->param();
        $user_id = $this->is_token($this->request->header());
        $mobile = Db::name('user')->where('id', $user_id)->value('mobile');
        $this->CheckCode($mobile, $param['code']);
        $data = [
            'mobile' => $param['mobile'],
            'car_num' => $param['car_num'],
            'car_type' => $param['car_type'],
            'color' => $param['color'],
            'address' => $param['address'],
            'address_con' => $param['address_con'],
            'lng' => $param['lng'],
            'lat' => $param['lat'],
        ];
        $res = Db::name('user')->where('id', $user_id)->update($data);
        if (!$res) {
            $this->error('请填写完整信息', 0);
            die;
        }
        $this->success('成功', 1);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-用户协议)
     * @ApiSummary  (用户协议)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/UserBook)
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    "content": "<p>这是用户协议,1</p>"
    }
    })
     */
    public function UserBook()
    {
        $rult = Db::name('user_xieyi')->order('id desc')->find();
        if (empty($rult)) {
            $list = [
                'content' => ''
            ];
        } else {
            $list = [
                'content' => $rult['content']
            ];
        }
        $this->success('成功', $list);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-完善信息渲染)
     * @ApiSummary  (完善信息渲染)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/My)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    "nickname": "Gody",
    "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/0wpUDw5m0LRvdDueia3uMWmrYb53GXRaTnYwMWC18kRmX6P6PIaPDgQqarEIfwroicx1z51D6bjQicOV0PibBx2PqQ/132",
    "mobile": "13292442918",
    "car_num": "冀B123456",
    "car_type": "AE86",
    "color": "五颜六色的白",
    "address": "河北省唐山市路南区",
    "address_con": "万达广场第五棵大杨树旁",
    "lng": "116.39050",
    "lat": "39.89223",
    "vip": 0,
    "exptime": null
    }
    })
     */
    public function My()
    {
        $user_id = $this->is_token($this->request->header());
        $user = Db::name('user')->where('id', $user_id)->find();
        $return = [
            'nickname' => $user['nickname'],
            'avatar' => $user['avatar'],
            'mobile' => $user['mobile'],
            'car_num' => $user['car_num'],
            'car_type' => $user['car_type'],
            'color' => $user['color'],
            'address' => $user['address'],
            'address_con' => $user['address_con'],
            'lng' => $user['lng'],
            'lat' => $user['lat'],
            'vip' => $user['vip'],
            'exptime' => $user['exptime'],
        ];
        $this->success('成功', $return);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-联系客服)
     * @ApiSummary  (联系客服)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/Kefu)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="con", type="string", required=true, description="内容")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    }
    })
     */
    public function Kefu()
    {
        $user_id = $this->is_token($this->request->header());
        $con = input('con');
        $data = [
            'user_id' => $user_id,
            'con' => $con,
            'createtime' => time()
        ];
        $res = Db::name('kefu')->insert($data);
        $this->res($res);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-我的订单)
     * @ApiSummary  (我的订单)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/MyOrder)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="int", required=true, description="1=全部,2=已支付,3=未支付")
     * @ApiParams   (name="pages", type="int", required=true, description="pages")
     * @ApiParams   (name="rows", type="int", required=true, description="rows)
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    "count": 3,
    "list": [
    {
    "id": 3,
    "status": 0, 1=已支付,0=未支付
    "createtime": "2020-09-03 16:47:37",
    "start": "2020-09-07 16:47:37", //开始时间
    "address": "河北省唐山市路南区",
    "address_con": "万达广场第五棵大杨树旁",
    "car_num": "冀B123456",
    "color": "五颜六色的白",
    "car_type": "AE86"
    }
    ]
    }
    })
     */
    public function MyOrder()
    {
        $user_id = $this->is_token($this->request->header());
        $param = $this->request->param();
        if ($param['type'] == 1) {
            $map = [];
        }
        if ($param['type'] == 2) {
            $map['status'] = ['eq', 1];
        }
        if ($param['type'] == 3) {
            $map['status'] = ['eq', 0];
        }
        $rult = Db::name('order')->where($map)->where('user_id', $user_id)->order('id desc')->page($param['pages'], $param['rows'])
            ->alias('a')
            ->join('user u', 'u.id=a.user_id')
            ->join('vip v', 'v.id=a.vip_id')
            ->field('a.id,a.order_sn,v.title,v.price,a.status,a.createtime,u.address,u.address_con,u.car_num,u.color,u.car_type')
            ->select();
        $count = Db::name('order')->where($map)->where('user_id', $user_id)->order('id desc')
            ->alias('a')
            ->join('user u', 'u.id=a.user_id')
            ->join('vip v', 'v.id=a.vip_id')
            ->field('a.id,a.order_sn,v.title,v.price,a.status,a.createtime,u.address,u.address_con,u.car_num,u.color,u.car_type')
            ->select();
        if (empty($rult)) {
            $List = [
                'count' => 0,
                'list' => []
            ];
        } else {
            foreach ($rult as $k => $v) {
                $list[$k]['id'] = $v['id'];
                $list[$k]['order_sn'] = $v['order_sn'];
                $list[$k]['title'] = $v['title'];
                $list[$k]['price'] = $v['price'];
                $list[$k]['status'] = $v['status'];
                $list[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
                $list[$k]['start'] = date('Y-m-d H:i:s', $v['createtime'] + 86400 * 4);
                $list[$k]['address'] = $v['address'];
                $list[$k]['address_con'] = $v['address_con'];
                $list[$k]['car_num'] = $v['car_num'];
                $list[$k]['color'] = $v['color'];
                $list[$k]['car_type'] = $v['car_type'];
            }
            $List = [
                'count' => count($count),
                'list' => $list
            ];
        }
        $this->success('成功', $List);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-员工页面)
     * @ApiSummary  (员工页面)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/CarPeopleWork)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="int", required=true, description="1=全部,2=待找车(洗车),3=未找到(洗车),4=已找到(洗车)")
     * @ApiParams   (name="pages", type="int", required=true, description="pages")
     * @ApiParams   (name="rows", type="int", required=true, description="rows)
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    })
     */
    public function CarPeopleWork()
    {
        $user_id = $this->is_token($this->request->header());
        $param = $this->request->param();
        //2=找车,3=洗车
        $type = Db::name('user')->where('id', $user_id)->value('type');
        if ($type == 2) {
            $type_map['zhao_id'] = ['eq', $user_id];
            if ($param['type'] == 1) {
                $map = [];
            }
            if ($param['type'] == 2) {
                $map['zhao_type'] = ['eq', 2];
            }
            if ($param['type'] == 3) {
                $map['zhao_type'] = ['eq', 0];
            }
            if ($param['type'] == 4) {
                $map['zhao_type'] = ['eq', 1];
            }
            $arr = Db::name('renwu')
                ->alias('a')
                ->where($type_map)
                ->where($map)
                ->order('id desc')
                ->join('vip v', 'v.id=a.vip_id')
                ->field('a.id,v.title,a.zhao_type,a.createtime')
                ->page($param['pages'], $param['rows'])
                ->select();
            $count = Db::name('renwu')
                ->alias('a')
                ->where($type_map)
                ->where($map)
                ->order('id desc')
                ->join('vip v', 'v.id=a.vip_id')
                ->field('a.id,v.title,a.zhao_type,a.createtime')
                ->select();
        } else {
            $type_map['xi_id'] = ['eq', $user_id];
            if ($param['type'] == 1) {
                $map = [];
            }
            if ($param['type'] == 2) {
                $map['xi_type'] = ['eq', 2];
            }
            if ($param['type'] == 3) {
                $map['xi_type'] = ['eq', 0];
            }
            if ($param['type'] == 4) {
                $map['xi_type'] = ['eq', 1];
            }
            $arr = Db::name('renwu')
                ->where($type_map)
                ->where($map)
                ->order('id desc')
                ->alias('a')
                ->join('vip v', 'v.id=a.vip_id')
                ->field('a.id,v.title,a.xi_type,a.createtime')
                ->page($param['pages'], $param['rows'])
                ->select();
            $count = Db::name('renwu')
                ->where($type_map)
                ->where($map)
                ->order('id desc')
                ->alias('a')
                ->join('vip v', 'v.id=a.vip_id')
                ->field('a.id,v.title,a.xi_type,a.createtime')
                ->select();
        }
        if (empty($arr)) {
            $list = [
                'count' => 0,
                'list' => []
            ];
        } else {
            if ($type == 2) {
                foreach ($arr as $k => $v) {
                    $List[$k]['id'] = $v['id'];
                    $List[$k]['title'] = $v['title'];
                    if ($v['zhao_type'] == 1) {
                        $List[$k]['status'] = '已找到';

                    } elseif ($v['zhao_type'] == 0) {
                        $List[$k]['status'] = '未找到';

                    } elseif ($v['zhao_type'] == 2) {
                        $List[$k]['status'] = '待找车';
                    }
                    $List[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
                    $List[$k]['start'] = date('Y-m-d H:i:s', $v['createtime'] + 86400 * 4);
                }
            } else {
                foreach ($arr as $k => $v) {
                    $List[$k]['id'] = $v['id'];
                    $List[$k]['title'] = $v['title'];
                    if ($v['xi_type'] == 1) {
                        $List[$k]['status'] = '已清洗';

                    } elseif ($v['xi_type'] == 0) {
                        $List[$k]['status'] = '未清洗';

                    } elseif ($v['xi_type'] == 2) {
                        $List[$k]['status'] = '待清洗';
                    }
                    $List[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
                    $List[$k]['start'] = date('Y-m-d H:i:s', $v['createtime'] + 86400 * 4);
                }
            }
            $list = [
                'count' => count($count),
                'list' => $List
            ];
        }
        $this->success('成功', $list);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-员工订单详情)
     * @ApiSummary  (员工订单详情)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/OrderContent)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="int", required=true, description="ID")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    "data": {
    "id": 1,
    "title": "洗车季卡",
    "time": 1599209757,
    "mobile": "13292442918",
    "address": "河北省唐山市路南区",
    "address_con": "万达广场第五棵大杨树旁",
    "userlng": "116.39050",
    "userlat": "39.89223",
    "car_num": "冀B123456",
    "car_type": "AE86",
    "color": "五颜六色的白",
    "zhao_type": 0,
    "zhao_images": [],
    "car_address": "",
    "lat": "",
    "lng": "",
    "order_sn": "202009031647068127236526",
    "xi_type": 0,
    "xi_images": [],
    "createtime": "2020-09-04 16:55:57",
    "times": "2020-09-04 16:55:57",
    "user_level": 1
    }
    })
     */
    public function OrderContent()
    {
        $user_id = $this->is_token($this->request->header());
        $id = input('id');
        $list = Db::name('renwu')->where('a.id', $id)
            ->alias('a')
            ->join('vip v', 'v.id=a.vip_id')
            ->join('user u', 'u.id=a.user_id')
            ->field('a.id,v.title,a.createtime as time,u.mobile,u.address,u.address_con,u.lng as userlng,u.lat as userlat,u.car_num,u.car_type,u.color,a.zhao_type,a.zhao_images,a.car_address,a.lat,a.lng,a.order_sn,a.xi_type,a.xi_images')
            ->find();
        if (empty($list)) {
            $this->error('参数错误', 0);
            die;
        }
        if (empty($list['zhao_images'])) {
            $zhao_images = [];
        } else {
            if (strstr($list['zhao_images'], ',')) {
                $zhao_images = explode(',', $list['zhao_images']);
            } else {
                $zhao_images = explode(' ', $list['zhao_images']);
            }
            foreach ($zhao_images as $k => $v) {
                $zhao_images[$k] = cdnurl($v);
            }
        }
        if (empty($list['xi_images'])) {
            $xi_images = [];
        } else {
            if (strstr($list['xi_images'], ',')) {
                $xi_images = explode(',', $list['xi_images']);
            } else {
                $xi_images = explode(' ', $list['xi_images']);
            }
            foreach ($xi_images as $k => $v) {
                $xi_images[$k] = cdnurl($v);
            }
        }
        $list['createtime'] = date('Y-m-d H:i:s', $list['time']);
        $list['times'] = date('Y-m-d H:i:s', $list['time'] + 86400 * 3);
        $list['zhao_images'] = $zhao_images;
        $list['xi_images'] = $xi_images;
        $user_type = Db::name('user')->where('id', $user_id)->value('type');
        $list['user_level'] = $user_type;
        $this->success('成功', $list);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-找车操作)
     * @ApiSummary  (找车操作)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/WhereCarPeople)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="order_id", type="int", required=true, description="订单ID")
     * @ApiParams   (name="type", type="int", required=true, description="找车工状态:1=已找到,0=未找到")
     * @ApiParams   (name="address", type="int", required=true, description="车辆地址")
     * @ApiParams   (name="lng", type="int", required=true, description="经度")
     * @ApiParams   (name="lat", type="int", required=true, description="纬度")
     * @ApiParams   (name="images", type="string", required=true, description="图片,多张图,拼接")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    })
     */
    public function WhereCarPeople()
    {
        $user_id = $this->is_token($this->request->header());
        $param = $this->request->param();
        $type = Db::name('user')->where('id', $user_id)->value('type');
        if ($type != 2) {
            $this->error('身份错误!', 0);
            die;
        }
        if (empty($param['images']) || $param['images'] == null || $param['images'] == '' || $param['images'] == "") {
            $this->error('请上传找车图');
        }
        if ($param['type'] == 0) {
            $data = [
                'zhao_type' => $param['type'],
                'updatetime' => time()
            ];
        } else {
            $data = [
                'zhao_type' => $param['type'],
                'car_address' => $param['address'],
                'lat' => $param['lat'],
                'lng' => $param['lng'],
                'zhao_images' => $param['images'],
                'updatetime' => time()
            ];
        }
        $res = Db::name('renwu')->where('id', $param['order_id'])->where('zhao_id', $user_id)->update($data);
        $this->res($res);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-洗车操作)
     * @ApiSummary  (洗车操作)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/CleanCarPeople)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="order_id", type="int", required=true, description="订单ID")
     * @ApiParams   (name="type", type="int", required=true, description="洗车工状态:1=已清洗,0=未清洗")
     * @ApiParams   (name="images", type="string", required=true, description="图片,多张图,拼接")
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    })
     */
    public function CleanCarPeople()
    {
        $user_id = $this->is_token($this->request->header());
        $param = $this->request->param();
        $type = Db::name('user')->where('id', $user_id)->value('type');
        if ($type != 3) {
            $this->error('身份错误!', 0);
            die;
        }
        if (empty($param['images']) || $param['images'] == null || $param['images'] == '' || $param['images'] == "") {
            $this->error('请上传洗车图');
        }
        $data = [
            'xi_type' => $param['type'],
            'xi_images' => $param['images'],
            'updatetime' => time()
        ];
        $res = Db::name('renwu')->where('id', $param['order_id'])->where('xi_id', $user_id)->update($data);
        $this->res($res);
    }


    /**
     * 用户接口
     * @ApiTitle    (用户接口-手机号解析)
     * @ApiSummary  (员工页面)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/User/MobileVi)
     * @ApiParams   (name="encryptedData", type="int", required=true, description="encryptedData")
     * @ApiParams   (name="iv", type="int", required=true, description="iv")
     * @ApiParams   (name="sessionKey", type="int", required=true, description="sessionKey)
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    })
     */
    public function MobileVi()
    {
        $param = $this->request->param();
        //SessionKey
        $ch = curl_init();
        $appid = "wx55afbe753b153a68";
        $secret = "428f6ca70764b0fceee65e1d4991f50a";
        $code = $param['code'];
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=$appid&secret=$secret&js_code=$code&grant_type=authorization_code";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $output = curl_exec($ch);
        if ($output === FALSE) {
            echo "CURL Error:" . curl_error($ch);
        }
        curl_close($ch);
        $curl_result = json_decode($output, true);
        $sessionKey = $curl_result['session_key'];
        $options = [
            'mini_program' => [
                'app_id' => 'component-app-id',
                'secret' => 'component-app-secret',
                'token' => 'component-token',
                'aes_key' => 'component-aes-key'
            ],
        ];
        $app = new Application($options);
        $miniProgram = $app->mini_program;
        $mobile = $miniProgram->encryptor->decryptData($sessionKey, $param['iv'], $param['encryptedData']);
        $this->success('成功', $mobile);
    }
}