<?php



/**
 * Class pjlWxcAction
 */
class pjlWxcAction extends baseAction
{

    /**
     * @var string[]
     */
    private $reasonArr = [
        2=>[2, '恭喜您成功入驻跑街令'], //，请移步PC端导入产品目录，地址为：https://pc.paojd.cn
        3=>[-1, '营业执照或法人身份证图片不清晰，请重新上传！'],
        5=>[-1, '营业执照、法人身份证图片不匹配，请重新上传！'],
        8=>[-1, '请上传营业执照、法人身份证的原件图片！'],
        10=>[-1, '此营业执照不允许申请维修成厂入驻，请提供汽车维修相关的营业执照！'],
    ];

    /**
     * @method 店铺管理主页
     * @author xu
     * @copyright 2017.01.04
     */
    function index()
    {
        //todo 权限
        LibRule::Check('JS01');
        LibTpl::Set('title','维修厂-跑街令');
        LibTpl::Put();
    }


    /**
     * @店铺列表页
     * @author xu
     * @copyright 2017.12.19
     */
    function lists()
    {
        //todo 权限
        LibRule::Check('JS01');
        $Params = mvc::$URL_PARAMS;
        $PjlBase= new PjlBase();

        $perPage = isset($_COOKIE['perPage']) ? $_COOKIE['perPage'] : 20;
        $page = isset($Params['page']) ? $Params['page'] : 1;
        $where = '';

        $endDayArr = [
            7=>'7天内',
            15=>'15天内',
            30=>'30天内',
            60=>'60天内',
            90=>'90天内',
            -7=>'过期7天',
            -15=>'过期15天',
            -30=>'过期30天',
            -60=>'过期60天',
            -365=>'所有过期'
        ];
        LibTpl::Set('endDayArr', $endDayArr);
        foreach($Params as $k=>$v)
        {
            $v = trim($v);
            if($v == '') continue;
            switch($k)
            {
                case 'status':
                    switch ($v)
                    {
                        case 'stop':
                            $where .= " and shopr_status =-1";
                            break;
                        case 'write':
                            $where .= " and shopr_status = 0";
                            break;
                        case 'wait':
                            $where .= " and shopr_status = 1";
                            break;
                        case 'use':
                            $where .= " and shopr_status = 2";
                            break;
                    }
                    break;
                case 'shopname':
                    $where .= sprintf(' and shopr_name like "%%%s%%"', LibFc::Escape($Params['shopname']));
                    break;
                case 'username':
                    //根据用户名搜索
                    $LibYpApi = new LibYpApi();
                    $post = [
                        'filed'=>['u_id'],
                        'where'=>sprintf(" and (u_name like '%%%s%%' or u_nickname like '%%%s%%' or u_mobile like '%%%s%%')", LibFc::Escape($Params['username']), LibFc::Escape($Params['username']), LibFc::Escape($Params['username'])),
                        'oneRow'=>false
                    ];
                    $userArr = $LibYpApi->Get('user/getUser',[], $post);
                    $userArr = array_column($userArr['data'], 'u_id');
                    if(!empty($userArr))
                        $where .= sprintf(" and shopr_pu_id in(%s)", implode(',', $userArr));
                    else
                        $where .= " and shop_idr < 0";
                    break;
            }
        }

        $pctArr = [];
        if(!empty($Params['data%5Bprovince%5D'])) $pctArr[] = (int) $Params['data%5Bprovince%5D'];
        if(!empty($Params['data%5Bcity%5D'])) $pctArr[] = (int) $Params['data%5Bcity%5D'];
        if(!empty($Params['data%5Bregion%5D'])) $pctArr[] = (int) $Params['data%5Bregion%5D'];
        if(!empty($Params['data%5Bstreet%5D'])) $pctArr[] = (int) $Params['data%5Bstreet%5D'];
        if(!empty($pctArr))
            $where .= sprintf(" and concat(shopr_pct_ids, ',') like '%s,%%'", implode(',', $pctArr));

        LibTpl::Set('pctArr', $pctArr);

        $table = "pl_repair";
        $res = $PjlBase->get($table, ['count(distinct shopr_id) as count'], $where, true);
        $total = $res['data']['count'];
        if ($total > 0)
        {
            $table = "pl_repair left join (select resl_shopr_id,group_concat(reps_name) as reps_name from pl_repair_serve_link inner join pl_repair_serve on resl_reps_id=reps_id group by resl_shopr_id order by reps_seq) as tt on tt.resl_shopr_id=shopr_id";
            $sres = $PjlBase->get($table, ['*'], sprintf("%s group by shopr_id order by shopr_status desc,shopr_apply_time desc limit %d,%d", $where, ($page-1)*$perPage, $perPage));

            $YpwAddr = new YpwAddr();
            foreach($sres['data'] as $v)
            {
                $v['shopr_worktime'] = json_decode($v['shopr_worktime'],true);
                $pres = $YpwAddr->getAddrByIds($v['shopr_pct_ids']);
                $v['shopr_pcts'] = implode(' ', $pres['data']);
                $v['shopr_license'] = json_decode($v['shop_license'], true);
                $shopArr[$v['shopr_id']] = $v;
            }

            if(!empty($shopArr))
            {
                //todo
                $YpwBase = new YpwBase();
                $res = $YpwBase->get('yp_user', ['u_id','u_name', 'u_mobile'], sprintf(" and u_id in (%s)", implode(',', array_column($shopArr, 'shopr_pu_id'))));
                LibTpl::Set('userArr', array_column($res['data'], null, 'u_id'));

            }
            LibTpl::Set('shopArr', $shopArr);

            // 店铺状况枚举
            LibTpl::Set('shopStatusDes', ['-1'=>'停用','0'=>'资料填写中','1'=>'待审核','2'=>'正常']);

            // 条件下总数
            $Page = LibPage::Show($total, $perPage);
            LibTpl::Set('Page', $Page);
        }
        LibTpl::Set('Params', $Params);
        LibTpl::Set('title','维修厂列表-跑街的');
        LibTpl::Put();
    }

    /**
     * [shopDisplay 显示店铺的展示]
     * @Author   Yangxing
     * @DateTime 2020-06-01T14:04:35+0800
     * @return   [view]                   [模板]
     */
    public function shopDisplay()
    {
        //todo 权限
        LibRule::Check('JS03');
        $Params = mvc::$URL_PARAMS;
        $nowPage = isset($Params['page']) && $Params['page'] > 0 ? (int) $Params['page']:1;
        $perPage=isset($_COOKIE['perPage'])? $_COOKIE['perPage'] : 10;
        $model = new BaseDb(mvc::$cfg['DB']['API_TJ']);
        $table = 'tj_pjl_shop_date';
        $field = ["tpsd_date","tpsd_devcode_count","tpsd_pv_count"];
        $where = sprintf(" and tpsd_shop_id=%d",$Params['id']);
        LibTpl::Set('Params', $Params);
        // 获取所有提现人员的名称   自动完成
        $count = $model->get($table,['count(*) as total'],$where,true);
        $total = $count['data']['total'];
        if($total > 0)
        {
            $totalPage = ceil($total/$perPage);
            // 判断当前页码是否大于总页数或小于0
            $realPage = ($nowPage>$totalPage)?$totalPage:$nowPage;
            $realPage = ($realPage<=0)?1:$realPage;

            //计算偏移量
            $start = ($realPage-1)*$perPage;
            $where = sprintf(' %s order by tpsd_date desc limit %s,%s',$where,$start,$perPage);
            $list = $model->get($table,$field,$where,false);
            LibTpl::Set('list',$list['data']);
            $Page = LibPage::Show($total, $perPage);
            LibTpl::Set('Page', $Page);
        }
        LibTpl::Put();
    }

    /**
     * @method 店铺详情
     * @author xu
     * @copyright 2017.12.19
     */
    function detail()
    {
        //todo
        LibRule::Check('JS03');
        // 店铺基本信息
        $Params = mvc::$URL_PARAMS;
        $error = true;
        if(LibFc::Int($Params['id']))
        {
            $model = new PjlWxc();
            // 编辑店铺信息
            $repData = [];
            if($_SERVER['REQUEST_METHOD'] == 'POST')
            {
                if (!empty($_POST['resl_reps_id'])) {
                    if(count($_POST['resl_reps_id']) > 5){
                        $error = "服务项目不能超过5个";
                        LibTpl::Set('error',$error);
                        LibTpl::Set('title','维修厂详情-跑街的');
                        LibTpl::Put();exit();
                    }
                    foreach ($_POST['resl_reps_id'] as $reps_id)
                    {
                        $repData[] = [
                            'resl_shopr_id' => (int) $Params['id'],
                            'resl_reps_id' => (int) $reps_id
                        ];
                    }
                }
                if(empty($_POST['data']['shopr_addr'])){
                    $error = "地址不可为空";
                    LibTpl::Set('error',$error);
                    LibTpl::Set('title','维修厂详情-跑街的');
                    LibTpl::Put();exit();
                }
                if(empty($_POST['data']['shopr_name'])){
                    $error = "维修名称不可为空";
                    LibTpl::Set('error',$error);
                    LibTpl::Set('title','维修厂详情-跑街的');
                    LibTpl::Put();exit();
                }
                $_POST['data']['shopr_worktime']['btime'] = implode(":",$_POST['data']['shopr_worktime']['btime']);
                $_POST['data']['shopr_worktime']['etime'] = implode(":",$_POST['data']['shopr_worktime']['etime']);
                $data = [
                    'shopr_status' => $_POST['data']['shopr_status'],
                    'shopr_logo' => trim($_POST['data']['shopr_logo']),
                    'shopr_name' => trim($_POST['data']['shopr_name']),
                    'shopr_worktime' => json_encode($_POST['data']['shopr_worktime']),
                    'shopr_addr' => $_POST['data']['shopr_addr'],
                    'shopr_tel' => trim($_POST['data']['shopr_tel']),
                    'shopr_img' => $_POST['data']['shopr_img'],
                    'shopr_license' => json_encode($_POST['data']['shop_license']),
                    'shopr_gongwei' => (int) $_POST['data']['shopr_gongwei'],
                    'shopr_worker' => (int) $_POST['data']['shopr_worker'],
                    'shopr_youhui' => trim($_POST['data']['shopr_youhui'])
                ];
                $data['shopr_img'] =  implode(',', array_filter($_POST['data']['shopr_img'],'trim'));
                $data['shopr_pct_ids'] =  implode(',', array_filter([$_POST['data']['province'],$_POST['data']['city'],$_POST['data']['region']],'LibFc::Int'));

                $res = $model->update((int) $Params['id'],$data,$repData);
				
				$LibYpApi = new LibYpApi();
				$LibYpApi->Get('pjl/updateShopAddr',['shop_id'=>$Params['id']]);

                if(!$res){
                    LibTpl::Set('error','修改失败');
                    LibTpl::Set('title','维修厂详情-跑街的');
                    LibTpl::Put();exit();
                }
            }

            $shopMsg = $model->get(sprintf("pl_repair left join (select resl_shopr_id,group_concat(reps_id) as reps_id from pl_repair_serve_link inner join pl_repair_serve on resl_reps_id=reps_id where resl_shopr_id=%d group by resl_shopr_id order by reps_seq) as tt on tt.resl_shopr_id=shopr_id",$Params['id']),['*'],sprintf("and shopr_id=%d",$Params['id']),true);
            $shopMsg = $shopMsg['data'];


            $shopMsg['shopr_worktime'] = json_decode($shopMsg['shopr_worktime'],true);
            $shopMsg['shopr_worktime']['btime'] = explode(":",$shopMsg['shopr_worktime']['btime']);
            $shopMsg['shopr_worktime']['etime'] = explode(":",$shopMsg['shopr_worktime']['etime']);

            //服务项目
            if(!empty($shopMsg['reps_id'])) $shopMsg['reps_id'] = explode(',',$shopMsg['reps_id']);
            //营业信息
            if(!empty($shopMsg['shopr_license']))  $shopMsg['shopr_license'] = json_decode($shopMsg['shopr_license'],true);
            //审核信息
            if(!empty($shopMsg['shopr_checkby'])) $shopMsg['shopr_checkby'] = json_decode($shopMsg['shopr_checkby'],true);
            //公司门面图
            if(!empty($shopMsg['shopr_img'])) $shopMsg['shopr_img'] = array_filter(explode(',', $shopMsg['shopr_img']));
            $fwxm = $model->get("pl_repair_serve",['reps_id as id','reps_name as name'],' order by reps_seq');
            $hour = [];
            for ($i = 0 ; $i < 24; $i++)
            {
                if($i <= 9){
                    $hour[] = '0'.$i;
                }else{
                    $hour[] = $i;
                }
            }
            $minute = [];
            for ($i = 0; $i < 60; $i++ )
            {
                if($i <= 9){
                    $minute [] = '0'.$i;
                }else{
                    $minute[] = $i;
                }
            }
            LibTpl::Set('week',['周一', '周二', '周三', '周四', '周五', '周六', '周日']);
            LibTpl::Set('hour',$hour);
            LibTpl::Set("minute",$minute);
            LibTpl::Set('fwxm',$fwxm['data'] ?: []);
            LibTpl::Set('data', $shopMsg);

        }else
            $error = false;

        LibTpl::Set('error',$error);
        LibTpl::Set('title','维修厂详情-跑街的');
        LibTpl::Put();
    }


    /**
     * 获取用户的所在区域
     * @author xu
     * @copyright 2017.12.25
     */
    function initAddr()
    {
        $LibYpApi = new LibYpApi();
        // 省份选择器
        $AllProvince = $LibYpApi->Get('pjl/getProvinceCity',['field'=>['pc_id','pc_name'],'where'=>sprintf(' and pc_pid = 0')]);

        LibTpl::Set('AllProvince',$AllProvince['data']);
        // 市选择器
        if(isset($_POST['province']) && LibFc::Int($province = $_POST['province']))
        {
            LibTpl::Set('province',$province);
            $AllCity = $LibYpApi->Get('pjl/getProvinceCity',['field'=>['pc_id','pc_name'],'where'=>sprintf(' and pc_pid ='.$province)]);
            LibTpl::Set('AllCity',$AllCity['data']);
        }
        // 区选择器
        if(isset($_POST['city']) && LibFc::Int($city = $_POST['city']))
        {
            LibTpl::Set('city',$city);
            $AllRegion = $LibYpApi->Get('pjl/getProvinceCity',['field'=>['pc_id','pc_name'],'where'=>sprintf(' and pc_pid ='.$city)]);
            LibTpl::Set('AllRegion',$AllRegion['data']);
            LibTpl::Set('region',$_POST['region']);
        }
        // // 街道选择器
        // if(isset($_POST['region']) && LibFc::Int($region = $_POST['region']))
        // {
        // 	LibTpl::Set('region',$region);
        // 	$AllStreet = $LibYpApi->Get('pjl/getProvinceCity',['field'=>['pc_id','pc_name'],'where'=>sprintf(' and pc_pid ='.$region)]);
        // 	LibTpl::Set('AllStreet',$AllStreet['data']);
        // }
        // if(isset($_POST['street']) && LibFc::Int($street = $_POST['street'])) LibTpl::Set('street',$street);
        $html = LibTpl::Fetch('pjlShop/initAddr.php');
        LibFc::ajaxJsonEncode(['status'=>true,'data'=>$html]);
    }

    /**
     *@method ajax获取地址
     * @author 卢 2017/6/7
     */
    function ajaxGetAddr()
    {
        $Params = mvc::$URL_PARAMS;
        $Pid = isset($Params['pid']) ? (int) $Params['pid']: 0;
        $YpwBase = new YpwBase();
        $Res = $YpwBase->get('yp_province_city', ['pc_id as id', 'pc_name as name'], sprintf(" and pc_pid=%d", $Pid));
        LibFc::ajaxJsonEncode($Res);
    }

    /**
     * @method    开店申请列表
     * @author 卢
     * @copyright 2018-04-10
     */
    function openShopApply()
    {
        //todo 权限
        LibRule::Check('JS02');

        $Params = mvc::$URL_PARAMS;
        $PjlBase= new PjlBase();
        $nowPage = isset($Params['page']) && $Params['page'] > 0 ? (int) $Params['page']:1;
        $perPage=isset($_COOKIE['perPage'])? $_COOKIE['perPage'] : 10;
        $where='';
        $LibYpApi = new LibYpApi();
        if(!empty($Params['status']))
        {
            $where.=sprintf(' and shopr_status=%d',$Params['status']);
        }
        if(!empty($Params['shopName']))
        {
            $where.=sprintf(" and shopr_name like '%%%s%%'",LibFc::Escape($Params['shopName']));
        }
        $apiWhere='';
        if(!empty($Params['user']))
        {
            $apiWhere.=sprintf(" and u_name = '%s'", LibFc::Escape($Params['user']));
        }
        if(LibFc::Int($Params['mobile']))
        {
            $apiWhere.=sprintf(" and u_mobile = '%s'", LibFc::Escape($Params['mobile']));

        }
        if(!empty($apiWhere))
        {
            $post = [
                'filed'=>['u_id'],
                'where'=>$apiWhere,
                'oneRow'=>false
            ];
            $res = $LibYpApi->Get('user/getUser',[], $post);
            if(!empty($res['data']))
            {
                $where.=sprintf(' and shopr_pu_id in(%s)',implode(',',array_column($res['data'], 'u_id')));
            }
            else
            {
                $where.=' and shopr_id <0';
            }
        }
        if(!empty($Params['time']))
        {
            if(strpos($Params['time'], ' - ')!==false)
            {
                $timeArr=explode(' - ', $Params['time']);
                $where.=sprintf(' and shopr_apply_time>=%d and shopr_apply_time<=%d',strtotime($timeArr[0]),strtotime($timeArr[1]));
            }
            else{
                $where.=' and shop_id <0';
            }
        }
        //计算总数

        $res = $PjlBase->get('pl_repair',['count(*) as count'], $where, true);
        $total=$res['data']['count'];
        if ($total > 0)
        {
            $where .= sprintf('  order by shopr_apply_time desc limit %s,%s',($nowPage-1)*$perPage,$perPage);
            $res = $PjlBase->get('pl_repair',['*'], $where);
            $shopArr = array_column($res['data'], null, 'shopr_id');
            if(!empty($shopArr))
            {
                foreach ($shopArr as $k => $v)
                {
                    $address = $LibYpApi->Get('pjl/getAddrByIds',['ids'=>$v['shopr_pct_ids']]);
                    $shopArr[$k]['shopr_address']=implode('',$address['data']).$v['shopr_address'];
                    $shopArr[$k]['shopr_license'] = json_decode($v['shopr_license'], true);
                    $shopArr[$k]['shopr_checkby'] = json_decode($v['shopr_checkby'], true);
                    if(!empty($v['shopr_img'])){
                       $v['shopr_img'] = trim($v['shopr_img'],',');
                       $shopArr[$k]['shopr_img'] = explode(",", $v['shopr_img']);
                    }
                }
                $uidArr=array_column($shopArr, 'shopr_pu_id');
                if(!empty($uidArr))
                {
                    $post = [
                        'filed'=>['u_id','u_name', 'u_mobile'],
                        'where'=>sprintf(" and u_id in (%s) ", implode(',', $uidArr)),
                        'oneRow'=>false
                    ];
                    $userArr = $LibYpApi->Get('user/getUser',[], $post);
                    $userArr=array_column($userArr['data'],null, 'u_id');
                    LibTpl::Set('userArr', $userArr);
                }
            }
            $Page = LibPage::Show($total, $perPage);
            LibTpl::Set('Page', $Page);
            LibTpl::Set('data', $shopArr);

        }
        //var_dump($shopArr);exit();
        LibTpl::Set('reasonArr', $this->reasonArr);
        LibTpl::Set('Params', $Params);
        LibTpl::Set('title','维修厂申请-跑街令后台');
        LibTpl::Put();
    }

    /**
     * @method    维修厂审核
     * @author 卢
     * @copyright 2018-04-10
     */
    function changeApply()
    {
        LibRule::Check('JS02');
        $res=['status'=>false,'data'=>'参数错误'];
        if(isset($_POST['status'])&&LibFc::Int($_POST['shop']))
        {
            switch ($_POST['status'])
            {
                case '2':
                    $dataArr['shopr_status'] = 2;
                    break;
                case '0':
                    $dataArr['shopr_status'] = 0;
                    break;
                case '1':
                    $dataArr['shopr_status'] = 1;
                    break;
                case '-1':
                    $dataArr['shopr_status'] = -1;
                    break;
            }
            $checkby = [
                'name' => $_SESSION['admin_username'],
                'result' => $dataArr['shopr_status'] == 2 ? 1 : 0,
                'remark' => $this->reasonArr[$_POST['reason_key']][1],
                'time' => time()
            ];
            $updateData = [
                'shopr_status' => $dataArr['shopr_status'],
                'shopr_checkby' => json_encode($checkby)
            ];
            if($dataArr['shopr_status'] == 2){
                $updateData['shopr_enter_time'] = time();
               // $updateData['shopr_apply_time'] = time();
            }

            $res = (new PjlBase())->set('pl_repair',$updateData,sprintf(" and shopr_id=%d", (int) $_POST['shop']));
			
			if($_POST['status'] == 2)
			{
				$LibYpApi = new LibYpApi();
				$LibYpApi->Get('pjl/updateShopAddr',['shop_id'=>$_POST['shop']]);
			}
			
			$sendStyle=[
				'-1'=>'pjlShoprError',
				'2'=>'pjlShoprOk'
			];
			if(in_array($dataArr['shopr_status'], array_keys($sendStyle)))
			{	
				$LibYpApi = new LibYpApi();
				$post = [
					'filed'=>['u_id','u_mobile'],
					'where'=>sprintf(" and u_id =%d ", $_POST['shop']),
					'oneRow'=>true
				];
				$userArr = $LibYpApi->Get('user/getUser',[], $post);
				if(empty($userArr['data']['u_mobile'])) LibFc::ajaxJsonEncode(['status'=>false,'data'=>'用户手机号码为空,短信发送失败']);
				
				$dataArr = [
					'sms_type'=>'紧急',
					'sms_from'=>'PJL',
					'sms_style'=>$sendStyle[$dataArr['shopr_status']],
					'sms_to_mobile'=>$userArr['data']['u_mobile'],//负责人电话
					'sms_text'=>'{}'
				];
				$LibYpApi->Get('sms/send',[], $dataArr);
			}
            LibFc::ajaxJsonEncode($res);
        }else{
            LibFc::ajaxJsonEncode(['status' => false,'data' => '参数错误']);
        }

    }

    /**
     * @method    维修厂申请详情
     * @author 卢
     * @copyright 2018-04-10
     */
    function applyShopDetail()
    {
        //todo 权限
        LibRule::Check('JS02');
        $Params = mvc::$URL_PARAMS;
        if(LibFc::Int($Params['shoprId']))
        {
            $LibYpApi = new LibYpApi();
            $db = new PjlBase();
            $res = $db->get('pl_repair',['*'],sprintf(' and shopr_id=%d',$Params['shoprId']),true);
            $fwxm = $db->get("pl_repair_serve_link inner join pl_repair_serve on reps_id = resl_reps_id",['*'],sprintf(" and resl_shopr_id=%d",$Params['shoprId']));
            if(!empty($res['data']))
            {
                $addrArr = $LibYpApi->Get('pjl/getAddrByIds',['ids' => $res['data']['shopr_pct_ids']]);
                $res['data']['address'] = !empty($addrArr['data']) ? implode('',$addrArr['data']) : '';
                $res['data']['shopr_license'] = json_decode($res['data']['shopr_license'], true);
                $res['data']['shopr_checkby'] = json_decode($res['data']['shopr_checkby'], true);
                $res['data']['shopr_worktime'] = json_decode($res['data']['shopr_worktime'],true);
                if (!empty($res['data']['shopr_img']))
                {
                    $res['data']['shopr_img'] = array_filter(explode(',', $res['data']['shopr_img']));
                }
                $post = [
                    'filed' => ['u_id','u_name','u_mobile'],
                    'where' => sprintf(" and u_id  =%d ", $res['data']['shopr_pu_id']),
                    'oneRow' => true
                ];
                $userArr = $LibYpApi->Get('user/getUser',[], $post);
                LibTpl::Set('userArr',$userArr['data']);
            }
        }
        LibTpl::Set('fwxm',!empty($fwxm['data']) ? implode(',',array_column($fwxm['data'],'reps_name')): '');
        LibTpl::Set('data',$res['data']);
        LibTpl::Set('title','维修厂申请详情-跑街令后台');
        LibTpl::Put();
    }

    //列表页
    function serveList()
    {
        $param = mvc::$URL_PARAMS;
        $pageSize = isset($_COOKIE['perPage']) ? $_COOKIE['perPage'] : 20;
        $page = LibFc::Int($param['page']) ? LibFc::Int($param['page']) : 1;
        $db = new PjlBase();
        $count = $db->get("pl_repair_serve",['count(*) as count'],'',true);
        $count = $count['data']['count'];
        if($count > 0){
            $list = $db->get("pl_repair_serve",['*'],sprintf(" order by reps_seq asc limit %s,%s",($page-1)*$pageSize,$pageSize));
            LibTpl::Set('list',$list['data']);
        }
        $pages = LibPage::Show($count, $pageSize);
        LibTpl::Set('page', $pages);
        LibTpl::Set('title', '服务项目管理');
        LibTpl::Put();
        
    }

    //添加和编辑项目
    function editServe()
    {
        $id = (int) $_POST['reps_id'];
        $data = [
            'reps_name' => trim($_POST['reps_name']),
            'reps_seq' => (int) $_POST['reps_seq'] ?: 99
        ];
        if(mb_strlen($data['reps_name'])  > 16)  LibFc::ajaxJsonEncode(['status' => false,'data' => '项目名称长度超过了限制16']);
        $result = $id <= 0 ? (new PjlWxc)->add("pl_repair_serve",$data) : (new PjlWxc)->set("pl_repair_serve",$data,sprintf(" and reps_id=%d",$id));
        LibFc::ajaxJsonEncode($result);
    }

    //删除项目
    function deleteServe()
    {
        $repsId = (int) $_POST['reps_id'];

        if($repsId <= 0){
            LibFc::ajaxJsonEncode(['status' => false,'data' => '参数错误']);
        }
        $result = (new PjlWxc)->deleteServe($repsId);

        if($result){
            LibFc::ajaxJsonEncode(['status' => true,'data' => '删除成功']);
        }else{
            LibFc::ajaxJsonEncode(['status' => false,'删除失败，请稍后再试']);
        }
    }

    /**
     * @method 维修厂统计
     * @author zhengweihua 
     * @copyright 2025-05-30
     */
    public function repairStatistics()
    {
        $Params = mvc::$URL_PARAMS; 

        $pageSize = isset($_COOKIE['perPage']) ? $_COOKIE['perPage'] : 20;
        $page = LibFc::Int($Params['page']) ? LibFc::Int($Params['page']) : 1;

        $PjlBase = new PjlBase();
        $swhere = '';
        foreach($Params as $k=>$v)
        {
            $v = trim($v);
            if($v == '') continue;
            switch($k)
            {
                case 'shopname':
                    $swhere .= sprintf(' and shopr_name like "%%%s%%"', LibFc::Escape($Params['shopname']));
                    break;
                case 'username':
                    //根据用户名搜索
                    $LibYpApi = new LibYpApi();
                    $post = [
                        'filed'=>['u_id'],
                        'where'=>sprintf(" and (u_name like '%%%s%%' or u_nickname like '%%%s%%' or u_mobile like '%%%s%%')", LibFc::Escape($Params['username']), LibFc::Escape($Params['username']), LibFc::Escape($Params['username'])),
                        'oneRow'=>false
                    ];
                    $userArr = $LibYpApi->Get('user/getUser',[], $post);
                    $userArr = array_column($userArr['data'], 'u_id');
                    if(!empty($userArr))
                        $swhere .= sprintf(" and ord_shopr_id in(%s)", implode(',', $userArr));
                    else
                        $swhere .= " and ord_shopr_id < 0";
                    break;
            }
        }
       
        $table =  sprintf("(select * from reb_order left join pl_repair on shopr_id=ord_shopr_id where 1=1 %s GROUP BY ord_shopr_id) as t",$swhere);
        $cntres = $PjlBase->get($table,['count(*) AS total'], '', true);

        if($cntres['data']['total']>0)
        {
            $field = ['shopr_name,count(DISTINCT ord_car_numplate) as carCnt,count(ord_id) as orderCnt,SUM(ord_money) as moneyCnt,MIN(ord_atime) as firstOrder,MAX(ord_atime) as lastOrder,ord_shopr_id'];
            $where = sprintf(" %s GROUP BY ord_shopr_id limit %s,%s",$swhere,($page-1)*$pageSize,$pageSize);
            $res = $PjlBase->get('reb_order left join pl_repair on shopr_id=ord_shopr_id',$field,$where);
            if($res['data'])
            {   
                $data = $res['data'];
                $uidArr = array_column($data, 'ord_shopr_id');
                //获取用户账号信息
                $YpwBase = new YpwBase();
                $ures = $YpwBase->get('yp_user', ['u_id','u_name', 'u_mobile'], sprintf(" and u_id in (%s)", implode(',', $uidArr)));
                $userArr = array_column($ures['data'], null, 'u_id');
                LibTpl::Set('userArr', $userArr);

                //维修项目总数
                $table = 'reb_order_xiangmu left join reb_order on rox_ord_id = ord_id';
                $xmres = $PjlBase->get($table,['count(*) as total','ord_shopr_id'],sprintf(" and ord_shopr_id in (%s) GROUP BY ord_shopr_id",implode(',',$uidArr)));
                $xmArr = array_column($xmres['data'],null, 'ord_shopr_id');
                LibTpl::Set('xmArr', $xmArr);
                LibTpl::Set('data', $data);
            }
        }
        $pages = LibPage::Show($cntres['data']['total'], $pageSize);
        LibTpl::Set('Params', $Params);
        LibTpl::Set('page', $pages);
        LibTpl::Set('title', '接车宝统计');
        LibTpl::Put();
    }

    /**
     * @method 维修厂订单列表
     * @author zhengweihua 
     * @copyright 2025-05-30
     */
    public function orderList()
    {
        $Params = mvc::$URL_PARAMS; 
        $pageSize = isset($_COOKIE['perPage']) ? $_COOKIE['perPage'] : 20;
        $page = LibFc::Int($Params['page']) ? LibFc::Int($Params['page']) : 1;

        $PjlBase = new PjlBase();
        $where = '';

        if($Params)
        {
            foreach($Params as $k=>$v)
            {
                $v = trim($v);
                if($v == '') continue;
                switch($k)
                {
                    case 'username':
                        //根据用户名搜索
                        $LibYpApi = new LibYpApi();
                        $post = [
                            'filed'=>['u_id'],
                            'where'=>sprintf(" and (u_name like '%%%s%%' or u_nickname like '%%%s%%' or u_mobile like '%%%s%%')", LibFc::Escape($Params['username']), LibFc::Escape($Params['username']), LibFc::Escape($Params['username'])),
                            'oneRow'=>false
                        ];
                        $userArr = $LibYpApi->Get('user/getUser',[], $post);
                        $userArr = array_column($userArr['data'], 'u_id');
                        if(!empty($userArr))
                            $where .= sprintf(" and ord_shopr_id in(%s)", implode(',', $userArr));
                        else
                            $where .= " and ord_shopr_id < 0";
                        break;
                    case 'keyword':
                        //项目名、客户姓名、电话、车牌、备注
                        $where .=sprintf(" AND (ord_cus_tel like '%%%s%%'
                         or ord_cus_name like '%%%s%%' 
                         or ord_car_numplate like '%%%s%%' 
                         or ord_remark like '%%%s%%'
                         or ord_id in (select distinct rox_ord_id from reb_order_xiangmu where rox_xm_name like '%%%s%%')) ", 
                            LibFc::Escape($Params['keyword']), 
                            LibFc::Escape($Params['keyword']), 
                            LibFc::Escape($Params['keyword']),
                            LibFc::Escape($Params['keyword']),
                            LibFc::Escape($Params['keyword']));
                        break;
                    case 'time':
                        if(strpos($Params['time'], ' - ')!==false)
                        {
                            $timeArr=explode(' - ', $Params['time']);
                            $where.=sprintf(' and ord_atime>=%d and ord_atime<=%d',strtotime($timeArr[0]),strtotime($timeArr[1]));
                        }
                        else{
                            $where.=' and ord_id <0';
                        }
                        break;
                }
            }
        }

        $res = $PjlBase->get('reb_order left join pl_repair on shopr_id=ord_shopr_id ', ['count(*) AS total'], $where, true);
        if($res['data']['total']>0)
        {
            $listres = $PjlBase->get('reb_order left join pl_repair on shopr_id=ord_shopr_id',['*'],sprintf(" %s order by ord_atime desc limit %s,%s",$where,($page-1)*$pageSize,$pageSize));
            
            if($listres['data'])
            {
                $uidArr = array_column($listres['data'], 'ord_shopr_id');
                //获取用户账号信息
                $YpwBase = new YpwBase();
                $ures = $YpwBase->get('yp_user', ['u_id','u_name', 'u_mobile'], sprintf(" and u_id in (%s)", implode(',', $uidArr)));
                $userArr = array_column($ures['data'], null, 'u_id');
                LibTpl::Set('userArr', $userArr);
                //服务项目
                $xmres = $PjlBase->get('reb_order_xiangmu',["group_concat(rox_xm_name SEPARATOR '/') as rox_xm_names,rox_ord_id"],sprintf(" and rox_ord_id in (%s) group by rox_ord_id", implode(',', array_column($listres['data'], 'ord_id'))));
                $xmArr = array_column($xmres['data'],null,'rox_ord_id');
                LibTpl::Set('xmArr', $xmArr);

                foreach ($listres['data'] as $key => &$val) {
                    $val['ord_imgs'] = json_decode($val['ord_imgs'],true)?:[];
                }
                unset($val);
            }

            LibTpl::Set('list', $listres['data']);
        } 
        
        $pages = LibPage::Show($res['data']['total'], $pageSize);
        LibTpl::Set('Params', $Params);
        LibTpl::Set('page', $pages);
        LibTpl::Set('title', '接车宝工单历史');
        LibTpl::Put();
    }
}
