<?php

namespace app\api\controller;

use app\common\controller\Api;
use think\Db;

/**
 * 首页接口
 */
class Index extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];

    /**
     * 首页接口
     * @ApiTitle    (服务商申请)
     * @ApiSummary  (服务商申请)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/SellerStatus)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="CompanyMain", type="integer", required=true, description="公司主营业务")
     * @ApiParams   (name="CompanyType", type="string", required=true, description="申请业务类型:1=换电商,2=经营商,3=维修商,4=代理商")
     * @ApiParams   (name="Person", type="string", required=true, description="负责人")
     * @ApiParams   (name="Mobile", type="string", required=true, description="联系电话")
     * @ApiParams   (name="PersonEmail", type="string", required=true, description="负责人邮箱地址")
     * @ApiParams   (name="BusinessPeople", type="string", required=true, description="业务专员")
     * @ApiParams   (name="BusinessPeopleEmail", type="string", required=true, description="业务专员邮箱地址")
     * @ApiParams   (name="OpenBank", type="string", required=true, description="开户银行")
     * @ApiParams   (name="Number", type="string", required=true, description="账号")
     * @ApiParams   (name="LastYearMoney", type="string", required=true, description="上年营业额")
     * @ApiParams   (name="CompanyPeopleNum", type="string", required=true, description="公司员工数")
     * @ApiParams   (name="image", type="string", required=true, description="营业执照或负责人身份证照片")
     * @ApiParams   (name="CompanyName", type="string", required=true, description="公司或商号名称")
     * @ApiParams   (name="fa_address", type="string", required=true, description="法定地址")
     * @ApiParams   (name="yingye_address", type="string", required=true, description="营业地址")
     * @ApiParams   (name="mianji", type="string", required=true, description="营业场地面积")
     * @ApiParams   (name="tel", type="string", required=true, description="通信地址")
     * @ApiParams   (name="web", 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 SellerStatus()
    {
        $UserId = $this->IsToken($this->request->header());
        //验证申请是否唯一
        $this->OnlySeller($UserId);
        $params = $this->MyParams();
        $params['user_id'] = $UserId;
        $params['Status'] = 0;
        $params['createtime'] = time();
        $params['updatetime'] = time();
        try {
            $Res = Db::name('seller')->insert($params);
        } catch (\Exception  $e) {
            $this->error($e->getMessage());
        }
        $this->Res($Res);
    }


    /**
     * 首页接口
     * @ApiTitle    (新增/更改门店)
     * @ApiSummary  (新增/更改门店)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/InsertUpdateStor)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="integer", required=true, description="类型:1=新增,2=更改")
     * @ApiParams   (name="id", type="integer", required=true, description="门店ID/新增时不传")
     * @ApiParams   (name="URL", type="string", required=true, description="路径/新增时传")
     * @ApiParams   (name="avatar", type="string", required=true, description="门牌照")
     * @ApiParams   (name="name", type="string", required=true, description="店铺名称")
     * @ApiParams   (name="address", type="string", required=true, description="店铺位置")
     * @ApiParams   (name="lng", type="string", required=true, description="经度")
     * @ApiParams   (name="lat", type="string", required=true, description="纬度")
     * @ApiParams   (name="address_con", type="string", required=true, description="详细地址")
     * @ApiParams   (name="mobile", type="string", required=true, description="联系电话")
     * @ApiParams   (name="hours", type="string", required=true, description="营业时间")
     * @ApiParams   (name="Battery", type="string", required=true, description="电池分类Json数组type_id.num)
     * @ApiReturnParams   (name="code", type="integer", required=true, sample="0")
     * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
     * @ApiReturn   ({
    'code':'1',
    'msg':'返回成功',
    'data':{
    })
     */
    public function InsertUpdateStor()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        if ($params['type'] == 1) {
            $data = [
                'user_id' => $UserId,
                'createtime' => time(),
                'updatetime' => time(),
                'avatar' => $params['avatar'],
                'name' => $params['name'],
                'address' => $params['address'],
                'address_con' => $params['address_con'],
                'mobile' => $params['mobile'],
                'hours' => $params['hours'],
                'Battery' => htmlspecialchars_decode($params['Battery']),
            ];
            if(!empty($params['lng'])){
              $data['lng']  = $params['lng'];
              $data['lat']  = $params['lat'];
            }
            $Res = Db::name('stor')->insert($data);

            $StorID = Db::name('stor')->where(['user_id' => $UserId,
                'createtime' => time(),
                'updatetime' => time(),
                'avatar' => $params['avatar'],
                'name' => $params['name'],
                'address' => $params['address'],
                'lng' => $params['lng'],
                'lat' => $params['lat'],
                'address_con' => $params['address_con'],
                'mobile' => $params['mobile'],
                'hours' => $params['hours'],
                'Battery' => htmlspecialchars_decode($params['Battery'])])->value('id');
            $this->NameCarQrCode('storID' . $StorID, $params['url'] . '?stor_id=' . $StorID);
            Db::name('stor')->where('user_id', $UserId)->where('id', $StorID)->update(['stor_image' => '/images/storID' . $StorID . '.png']);
        } else {
            $data = [
                'updatetime' => time(),
                'avatar' => $params['avatar'],
                'name' => $params['name'],
                'address' => $params['address'],
                'lng' => $params['lng'],
                'lat' => $params['lat'],
                'address_con' => $params['address_con'],
                'mobile' => $params['mobile'],
                'hours' => $params['hours'],
                'Battery' => htmlspecialchars_decode($params['Battery']),
            ];
            $Res = Db::name('stor')->where('id', $params['id'])->update($data);
        }
        $this->Res($Res);
    }


    /**
     * 首页接口
     * @ApiTitle    (门店更改回显)
     * @ApiSummary  (门店更改回显)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/UpdateStorBack)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="integer", 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": {
    "avatar": "http://kcd.qiniu.bronet.cn/uploads/20201027/lhOJtzf7HMlBaF2HRJXbDb9OaaZ_.jpg",
    "name": "王二蛋的店",
    "address": "天津市河东区大直沽街道汇贤里安教小区",
    "lng": "117.244942",
    "lat": "39.119204",
    "address_con": "天津市",
    "mobile": "13292442918", //联系方式
    "hours": "1213", 营业时间
    "stor_image": "", 店铺吗
    "Battery": [  //电池分类
    {
    "type_id": "1",
    "num": "10"
    },
    {
    "type_id": "2",
    "num": "10"
    }
    ]
    }
    })
     */
    public function UpdateStorBack()
    {
        $UserId = $this->IsToken($this->request->header());
        $ID = input('id');
        $Arr = Db::name('stor')->where('id', $ID)->where('user_id', $UserId)->find();
        if (empty($Arr)) {
            $this->error('参数错误', 0);
        }
        $BatteryArr = json_decode($Arr['Battery'], true);
        foreach ($BatteryArr as $k => $v) {
            $BatteryArr[$k]['title'] = Db::name('battery_code')->where('id', $v['type_id'])->value('title');
        }
        $data = [
            'avatar' => cdnurl($Arr['avatar']),
            'name' => $Arr['name'],
            'address' => $Arr['address'],
            'lng' => $Arr['lng'],
            'lat' => $Arr['lat'],
            'address_con' => $Arr['address_con'],
            'mobile' => $Arr['mobile'],
            'hours' => $Arr['hours'],
            'stor_image' => $this->request->domain() . $Arr['stor_image'],
            'Battery' => $BatteryArr,
        ];
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (我的门店)
     * @ApiSummary  (我的门店)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/MyStor)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="keywords", type="string", required=true, description="搜索关键字")
     * @ApiParams   (name="start", type="string", required=true, description="开始日期")
     * @ApiParams   (name="end", type="string", required=true, description="结束日期")
     * @ApiParams   (name="pages", type="string", required=true, description="pages")
     * @ApiParams   (name="rows", type="string", 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':{
    })
     */
    public function MyStor()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $mapA = [];
        $mapB = [];
        $mapC = [];
        if (!empty($params['keywords']) || $params['keywords'] != '' || $params['keywords'] != "" || $params['keywords'] != null) {
            $mapA['name'] = ['LIKE', '%' . $params['keywords'] . '%'];
        }
        if (!empty($params['start']) || $params['start'] != '' || $params['start'] != "" || $params['start'] != null) {
            $StartTime = strtotime($params['start']);
            $mapB['createtime'] = ['GT', $StartTime];
        }
        if (!empty($params['end']) || $params['end'] != '' || $params['end'] != "" || $params['end'] != null) {
            $EndTime = strtotime($params['end']);
            $mapC['createtime'] = ['LT', $EndTime];
        }
        $Arr = Db::name('stor')->where('user_id', $UserId)->where($mapA)->where($mapB)->where($mapC)->order('createtime desc')->page($params['pages'], $params['rows'])->select();
        $Count = Db::name('stor')->where('user_id', $UserId)->where($mapA)->where($mapB)->where($mapC)->order('createtime desc')->select();
        $StorCount = Db::name('stor')->where('user_id', $UserId)->select();
        if (empty($Arr)) {
            $data = [
                'StorCount' => count($StorCount),
                'Count' => 0,
                'List' => []
            ];
        } else {
            foreach ($Arr as $k => $v) {
                $List[$k]['id'] = $v['id'];
                $List[$k]['name'] = $v['name'];
                $List[$k]['createtime'] = date('Y.m.d', $v['createtime']);
            }
            $data = [
                'StorCount' => count($StorCount),
                'Count' => count($Count),
                'List' => $List
            ];
        }
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (检查是否重复签订)
     * @ApiSummary  (检查是否重复签订)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/IsDobelAgreement)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="seller_id", type="string", 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": 1=已经签订过,0=未签订协议
    })
     */
    public function IsDobelAgreement()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $res111 = Db::name('agreement')->where('user_id', $UserId)->where('seller_id', $params['seller_id'])->where('status', 'IN', '0,1')->find();
        if (!empty($res111)) {
            $this->success('成功', 1);
        } else {
            $this->success('成功', 0);
        }
    }


    /**
     * 首页接口
     * @ApiTitle    (签订协议)
     * @ApiSummary  (签订协议)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/Agreement)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="name", type="string", required=true, description="姓名")
     * @ApiParams   (name="seller_id", type="string", required=true, description="服务商ID")
     * @ApiParams   (name="battery_id", type="string", required=true, description="电池类型")
     * @ApiParams   (name="card_image", type="string", required=true, description="身份证照片")
     * @ApiParams   (name="mobile", 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": "202010290928196016917223" //订单号 用订单号去调支付
    })
     */
    public function Agreement()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        //订单号
        $OrderSn = $this->order_sn();
        //押金
        $MoneyArr = Db::name('money_config')->where('battery_id', $params['battery_id'])->find();
        $res111 = Db::name('agreement')->where('user_id', $UserId)->where('seller_id', $params['seller_id'])->where('status', 'IN', '0,1')->where('pay', 'NEQ', 0)
            ->find();
        if (!empty($res111)) {
            $this->error('禁止重复签订协议', 0);
            die;
        }
        $data = [
            'OrderSn' => $OrderSn,
            'user_id' => $UserId,
            'name' => $params['name'],
            'battery_id' => $params['battery_id'],
            'seller_id' => $params['seller_id'],
            'mobile' => $params['mobile'],
            'UpMoney' => $MoneyArr['UpMoney'],
            'MonthMoney' => $MoneyArr['MonthMoney'] * 3,
            'Money' => $MoneyArr['MonthMoney'] * 2,
            'card_image' => $params['card_image'],
            'status' => 0,
            'refind_status' => 3,
            'pay' => 0,
            'createtime' => time(),
            'updatetime' => time(),
            'EXP_time' => time() + 86400 * 30
        ];
        $res = Db::name('agreement')->insert($data);
        if (!$res) {
            $this->error('失败', 0);
        } else {
            $this->success('成功', $OrderSn);
        }
    }


    /**
     * 首页接口
     * @ApiTitle    (服务商空间)
     * @ApiSummary  (服务商空间)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/SellerQzone)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="stor_id", type="string", required=true, description="门店ID /首次渲染 传0")
     * @ApiParams   (name="start", type="string", required=true, description="开始日期 /首次渲染 传空字符串''")
     * @ApiParams   (name="end", type="string", required=true, description="结束日期 /首次渲染 传空字符串''")
     * @ApiParams   (name="pages", type="string", required=true, description="pages")
     * @ApiParams   (name="rows", type="string", 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':{
    })
     */
    public function SellerQzone()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $mapA = [];
        $mapB = [];
        $mapC = [];
        if ($params['stor_id'] != 0) {
            $mapA['o.stor_id'] = ['eq', $params['stor_id']];
        }
        if (!empty($params['start']) || $params['start'] != '' || $params['start'] != "" || $params['start'] != null) {
            $StartTime = strtotime($params['start']);
            $mapB['o.createtime'] = ['GT', $StartTime];
        }
        if (!empty($params['end']) || $params['end'] != '' || $params['end'] != "" || $params['end'] != null) {
            $EndTime = strtotime($params['end']);
            $mapC['o.createtime'] = ['LT', $EndTime];
        }
        $Arr = Db::name('order')
            ->alias('o')
            ->join('stor s', 's.id=o.stor_id')
            ->where('s.user_id', $UserId)
            ->join('user u', 'u.id=o.user_id')
            ->where($mapA)
            ->where($mapB)
            ->where($mapC)
            ->order('id desc')
            ->page($params['pages'], $params['rows'])
            ->field('o.id,u.nickname,u.avatar,o.createtime')
            ->select();
        $Count = Db::name('order')
            ->alias('o')
            ->join('stor s', 's.id=o.stor_id')
            ->where('s.user_id', $UserId)
            ->join('user u', 'u.id=o.user_id')
            ->where($mapA)
            ->where($mapB)
            ->where($mapC)
            ->order('id desc')
            ->page($params['pages'], $params['rows'])
            ->field('o.id,u.nickname,u.avatar,o.createtime')
            ->select();
        $OrderCount = Db::name('order')
            ->alias('o')
            ->join('stor s', 's.id=o.stor_id')
            ->where('s.user_id', $UserId)
            ->select();
        if (empty($Arr)) {
            $data = [
                'OrderCount' => count($OrderCount),
                'Count' => count($Count),
                'List' => []
            ];
        } else {
            foreach ($Arr as $k => $v) {
                $List[$k]['id'] = $v['id'];
                $List[$k]['nickname'] = $v['nickname'];
                $List[$k]['avatar'] = $v['avatar'];
                $List[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
            }
            $data = [
                'OrderCount' => count($OrderCount),
                'Count' => count($Count),
                'List' => $List
            ];
        }
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (我的客户)
     * @ApiSummary  (我的客户)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/MyCustomer)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="string", required=true, description="协议审核状态:0=待审核,1=协议中,2=已终止,3=已欠费")
     * @ApiParams   (name="pages", type="string", required=true, description="pages")
     * @ApiParams   (name="rows", type="string", 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": 1, //数量
    "List": [
    {
    "id": 1,  //id
    "nickname": "王叨叨",
    "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/5xl51Ja2tE9bZOVqrntjJX1He1xx6OfCEY6HIep0p4YtDzmM00NB6ia5S50AVLJv0dKHKPjOCF6jXQqhfrlKkyQ/132",
    "UpMoney": "300.00", //押金
    "Money": "200.00",  //剩余租金
    "mobile": "13292442918",  //联系方式
    "status": 0,   //协议审核状态:0=待审核,1=协议中,2=已终止,3=已欠费,4=签约失败
    "createtime": "2020-10-29" //协议生成时间
    }
    ]
    }
    })
     */
    public function MyCustomer()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        if ($params['type'] == 0 || $params['type'] == 1 || $params['type'] == 3) {
            $map['a.status'] = ['eq', $params['type']];
        } else {
            $map['a.status'] = ['IN', '2,4'];
        }
        $Arr = Db::name('agreement')
            ->alias('a')
            ->join('seller s', 's.id=a.seller_id')
            ->where('s.user_id', $UserId)
            ->join('user u', 'u.id=a.user_id')
            ->where('a.pay', 'NEQ', 0)
            ->where($map)
            ->page($params['pages'], $params['rows'])
            ->order('id desc')
            ->field('a.id,a.mobile,u.nickname,a.status,u.avatar,a.UpMoney,a.Money,a.createtime')
            ->select();
        $Count = Db::name('agreement')
            ->alias('a')
            ->join('seller s', 's.id=a.seller_id')
            ->where('s.user_id', $UserId)
            ->where('a.pay', 'NEQ', 0)
            ->join('user u', 'u.id=a.user_id')
            ->where('a.status', $params['type'])
            ->order('id desc')
            ->field('a.id,a.mobile,u.nickname,a.status,u.avatar,a.UpMoney,a.Money,a.createtime')
            ->select();
        if (empty($Arr)) {
            $data = [
                'Count' => 0,
                'List' => []
            ];
        } else {
            foreach ($Arr as $k => $v) {
                $List[$k]['id'] = $v['id'];
                $List[$k]['nickname'] = $v['nickname'];
                $List[$k]['avatar'] = $v['avatar'];
                $List[$k]['UpMoney'] = $v['UpMoney'];
                $List[$k]['Money'] = $v['Money'];
                $List[$k]['mobile'] = $v['mobile'];
                $List[$k]['status'] = $v['status'];
                $List[$k]['createtime'] = date('Y-m-d H:i', $v['createtime']);
            }
            $data = [
                'Count' => count($Count),
                'List' => $List
            ];
        }
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (押金退还列表)
     * @ApiSummary  (押金退还列表)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/UpMoneyList)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="string", required=true, description="状态:0=待审核,1=已通过,2=已拒绝")
     * @ApiParams   (name="pages", type="string", required=true, description="pages")
     * @ApiParams   (name="rows", type="string", 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':{
    })
     */
    public function UpMoneyList()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $Arr = Db::name('agreement')
            ->alias('a')
            ->join('seller s', 's.id=a.seller_id')
            ->join('user u', 'u.id=a.user_id')
            ->where('s.user_id', $UserId)
            ->where('a.refind_status', $params['type'])
            ->where('a.pay', 'NEQ', 0)
            ->page($params['pages'], $params['rows'])
            ->order('id desc')
            ->field('a.id,a.OrderSn,u.avatar,u.nickname,a.updatetime,a.status')
            ->select();
        $Count = Db::name('agreement')
            ->alias('a')
            ->join('seller s', 's.id=a.seller_id')
            ->join('user u', 'u.id=a.user_id')
            ->where('a.pay', 'NEQ', 0)
            ->where('s.user_id', $UserId)
            ->where('a.refind_status', $params['type'])
            ->order('id desc')
            ->field('a.id,a.OrderSn,u.avatar,u.nickname,a.updatetime,a.status')
            ->select();
        if (empty($Arr)) {
            $data = [
                'Count' => 0,
                'List' => []
            ];
        } else {
            foreach ($Arr as $k => $v) {
                $List[$k]['id'] = $v['id'];
                $List[$k]['OrderSn'] = $v['OrderSn'];
                $List[$k]['avatar'] = $v['avatar'];
                $List[$k]['nickname'] = $v['nickname'];
                $List[$k]['updatetime'] = date('Y-m-d H:i:s', $v['updatetime']);
                $List[$k]['status'] = $v['status'];
            }
            $data = [
                'Count' => count($Count),
                'List' => $List
            ];
        }
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (首页地图门店)
     * @ApiSummary  (首页地图门店)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/MapStor)
     * @ApiParams   (name="battery_code", 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 MapStor()
    {
        $Arr = Db::name('stor')->select();
        $Code = input('battery_code');
        $battery_code = explode('-', $Code);
        if (empty($Code) || $Code == '' || $Code == "" || $Code == null) {
            $this->error('请先链接蓝牙', 0);
            die;
        }
        $map['BatteryCode'] = ['LIKE', '%' . $battery_code[0] . '%'];
        //用户电池分类ID
        $Id = Db::name('battery_code')->where($map)->value('id');
        if (empty($Id)) {
            $this->error('系统没有找到该电池分类', 0);
            die;
        }
        if (empty($Arr)) {
            $List = [];
        } else {
            foreach ($Arr as $k => $v) {
                $i = 0;
                $List[$k]['id'] = $v['id'];
                $List[$k]['name'] = $v['name'];
                $List[$k]['lng'] = $v['lng'];
                $List[$k]['lat'] = $v['lat'];
                $JsonArr = json_decode($v['Battery'], true);
                foreach ($JsonArr as $k1 => $v1) {
                    if ($v1['type_id'] == $Id) {
                        $List[$k]['num'] = $v1['num'];
                        $i++;
                    }
                }
                if ($i == 0) {
                    $List[$k]['num'] = 0;
                }
            }
        }
        $this->success('成功', $List);
    }


    /**
     * 首页接口
     * @ApiTitle    (去换电)
     * @ApiSummary  (去换电)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/GoGoing)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="string", required=true, description="门店id")
     * @ApiParams   (name="battery_code", type="string", required=true, description="电池编号")
     * @ApiParams   (name="manufactor", type="string", required=true, description="厂家")
     * @ApiParams   (name="Voltage", 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',  //99998 请先签订协议 跳转签订
    'msg':'返回成功',
    'data':{
    })
     */
    public function GoGoing()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $battery_code = explode('-', $params['battery_code']);
        $map['BatteryCode'] = ['LIKE', '%' . $battery_code[0] . '%'];
        //用户电池分类ID
        $Id = Db::name('battery_code')->where($map)->value('id');
        if (empty($Id)) {
            $this->error('系统没有找到该电池分类', 0);
            die;
        }
        $IsAgreement = Db::name('stor')
            ->alias('r')
            ->where('r.id', $params['id'])
            ->join('seller s', 'r.user_id=s.user_id')
            ->join('agreement a', 'a.seller_id=s.id')
            ->where('a.user_id', $UserId)
            ->where('a.status', 1)
            ->find();
        if (empty($IsAgreement)) {
            $this->error('请先签订协议', '', '99998');
        }
        $OrderSn = $this->order_sn();
        $data = [
            'OrderSn' => $OrderSn,
            'stor_id' => $params['id'],
            'user_id' => $UserId,
            'battery_id' => $Id,
            'battery_code' => $params['battery_code'],
            'manufactor' => $params['manufactor'],
            'Voltage' => $params['Voltage'],
            'status' => 0,
            'EXP_time' => time() + 60 * 30,
            'createtime' => time(),
            'updatetime' => time()
        ];
        $res = Db::name('order')->insert($data);
        $this->res($res);
    }


    /**
     * 首页接口
     * @ApiTitle    (我的订单)
     * @ApiSummary  (我的订单)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/MyOrder)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="type", type="string", required=true, description="订单状态:0=待换电,1=已换电,9=全部")
     * @ApiParams   (name="pages", type="string", required=true, description="pages")
     * @ApiParams   (name="rows", type="string", 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": 1, //总数
    "List": [
    {
    "id": 1,
    "OrderSn": "202010291005404651432049",
    "battery_code": "123", //设备号
    "nickname": "王叨叨",
    "avatar": "https://thirdwx.qlogo.cn/mmopen/vi_32/5xl51Ja2tE9bZOVqrntjJX1He1xx6OfCEY6HIep0p4YtDzmM00NB6ia5S50AVLJv0dKHKPjOCF6jXQqhfrlKkyQ/132",
    "status": 0,  订单状态:0=待换电,1=已换电,2=已过期,3=异常订单
    "createtime": 2020-10-27, //下单时间
    "ok_time": "", //完成时间
    "title": "电池类型一", // 电池类型
    "manufactor": "1231", //厂家
    "Voltage": "123", // 电压
    "yes_time": "" //商家确认时间
    }
    ]
    }
    })
     */
    public function MyOrder()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $Map = [];
        if ($params['type'] != 9) {
            $Map['o.status'] = ['eq', $params['type']];
        }
        $Arr = Db::name('order')
            ->alias('o')
            ->join('stor s', 's.id=o.stor_id')
            ->where('s.user_id', $UserId)
            ->page($params['pages'], $params['rows'])
            ->where($Map)
            ->join('user u', 'u.id=o.user_id')
            ->join('battery_code b', 'b.id=o.battery_id')
            ->order('id desc')
            ->field('o.id,o.OrderSn,o.battery_code,u.nickname,u.avatar,o.status,o.createtime,o.ok_time,b.title,o.manufactor,o.Voltage,o.yes_time')
            ->select();
        $Count = Db::name('order')
            ->alias('o')
            ->join('stor s', 's.id=o.stor_id')
            ->where('s.user_id', $UserId)
            ->where($Map)
            ->join('user u', 'u.id=o.user_id')
            ->join('battery_code b', 'b.id=o.battery_id')
            ->order('id desc')
            ->field('o.id,o.OrderSn,o.battery_code,u.nickname,u.avatar,o.status,o.createtime,o.ok_time,b.title,o.manufactor,o.Voltage,o.yes_time')
            ->select();
        if (empty($Arr)) {
            $data = [
                'Count' => 0,
                'List' => []
            ];
        } else {
            foreach ($Arr as $k => $v) {
                $List[$k]['id'] = $v['id'];
                $List[$k]['OrderSn'] = $v['OrderSn'];
                $List[$k]['battery_code'] = $v['battery_code'];
                $List[$k]['nickname'] = $v['nickname'];
                $List[$k]['avatar'] = $v['avatar'];
                $List[$k]['status'] = $v['status'];
                $List[$k]['createtime'] = date('Y-m-d H:i:s', $v['createtime']);
                if ($v['ok_time'] == null) {
                    $List[$k]['ok_time'] = '';
                } else {
                    $List[$k]['ok_time'] = date('Y-m-d H:i:s', $v['ok_time']);
                }
                $List[$k]['title'] = $v['title'];
                $List[$k]['manufactor'] = $v['manufactor'];
                $List[$k]['Voltage'] = $v['Voltage'];
                if ($v['yes_time'] == null) {
                    $List[$k]['yes_time'] = '';
                } else {
                    $List[$k]['yes_time'] = date('Y-m-d H:i:s', $v['yes_time']);
                }
            }
            $data = [
                'Count' => count($Count),
                'List' => $List
            ];
        }
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (账户押金)
     * @ApiSummary  (账户押金)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/MyUpMoney)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="pages", type="string", required=true, description="pages")
     * @ApiParams   (name="rows", type="string", 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": 1, //总数
    "List": [
    {
    "id": 1,
    "OrderSn": "202010290928196016917223", //订单
    "UpMoney": "300.00", //押金
    "Money": "200.00", //剩余租金
    "status": 2, 协议审核状态:0=待审核,1=协议中,2=已终止,3=已欠费,4=签约失败
    "refind_status": 3, 退款审核状态:0=待审核,1=已通过,2=已拒绝,3=未发起退款
    "CompanyName": "王二蛋的垃圾站"
    }
    ]
    }
    })
     */
    public function MyUpMoney()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $Arr = Db::name('agreement')
            ->alias('a')
            ->where('a.user_id', $UserId)
            ->join('seller s', 's.id=a.seller_id')
            ->page($params['pages'], $params['rows'])
            ->where('a.pay', 'NEQ', 0)
            ->order('id desc')
            ->field('a.id,a.OrderSn,a.UpMoney,a.Money,a.status,a.refind_status,s.CompanyName,a.createtime,a.EXP_time')
            ->select();
        $Count = Db::name('agreement')
            ->alias('a')
            ->join('seller s', 's.id=a.seller_id')
            ->where('a.user_id', $UserId)
            ->where('a.pay', 'NEQ', 0)
            ->order('id desc')
            ->field('a.id,a.OrderSn,a.UpMoney,a.Money,a.status,a.refind_status,s.CompanyName')
            ->select();
        if (empty($Arr)) {
            $data = [
                'Count' => 0,
                'List' => []
            ];
        } else {
            foreach ($Arr as $k => $v) {
                $List[$k]['id'] = $v['id'];
                $List[$k]['OrderSn'] = $v['OrderSn'];
                $List[$k]['UpMoney'] = $v['UpMoney'];
                $List[$k]['Money'] = $v['Money'];
                $List[$k]['status'] = $v['status'];
                $List[$k]['refind_status'] = $v['refind_status'];
                $List[$k]['CompanyName'] = $v['CompanyName'];
                $List[$k]['create_time'] = date('Y-m-d H:i',$v['createtime']);
                $List[$k]['EXP_time'] = date('Y-m-d H:i',$v['EXP_time']);
            }
            $data = [
                'Count' => count($Count),
                'List' => $List
            ];
        }
        $this->success('成功', $data);
    }


    /**
     * 首页接口
     * @ApiTitle    (门店删除)
     * @ApiSummary  (门店删除)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/DeleteStor)
     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
     * @ApiParams   (name="id", type="string", 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": {
    }
    })
     */
    public function DeleteStor()
    {
        $UserId = $this->IsToken($this->request->header());
        $params = $this->request->param();
        $res = Db::name('stor')->where('id', $params['id'])->where('user_id', $UserId)->delete();
        $this->res($res);
    }


    /**
     * 首页接口
     * @ApiTitle    (电池电量存储)
     * @ApiSummary  (电池电量存储)
     * @ApiMethod   (POST)
     * @ApiRoute    (/api/Index/InsertBattery)
     * @ApiParams   (name="code", type="string", required=true, description="电池编码")
     * @ApiParams   (name="battery", 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 InsertBattery()
    {
        $Params = $this->request->param();
        $data = [
            'code' => $Params['code'],
            'battery' => $Params['battery'],
            'createtime' => time()
        ];
        $Res = Db::name('battery')->insert($data);
        $this->Res($Res);
    }
}