| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 | <?phpnamespace app\api\controller\h5;use app\hander\HelpHander;use think\facade\Request;use think\Db;class VisitorOrder extends Base{    // 获取我的预约记录    public function list(){        $lists = Db::name('visitor_order')            ->field('id,org_id,status,service_id,service_time_id,name,phone')            ->where('user_id',$this->userId)            ->where('del',0)            ->whereIn('type',[1,2])            ->select();        foreach ($lists as $k=>$v){            $lists[$k]['org_name'] = Db::name('org')->where('id',$v['org_id'])->value('name');            $lists[$k]['title'] = '';            $lists[$k]['day'] = '';            $lists[$k]['start'] = '';            $lists[$k]['end'] = '';            if($v['service_time_id'] > 0){                $time = Db::name('service_time')->where('id',$v['service_time_id'])->find();                $lists[$k]['day'] = $time?$time['day']:'';                $lists[$k]['start'] = date('H:i',strtotime($time['day'].' '.$time['start']));                $lists[$k]['end'] = date('H:i',strtotime($time['day'].' '.$time['end']));                $lists[$k]['title'] = Db::name('service')->where('id',$v['service_id'])->value('title');                $v = $this->autoCheck($v,$time);                $lists[$k]['status'] = $v['status'];            }            $lists[$k]['qrcode'] = Request::domain().'/admin/Qrcode/qrcode?code='.get_qrcode_str('visitor',$v['id']);        }        HelpHander::success($lists);    }    // 获取我的预约记录--小程序    public function list2(){        $type = input('type/d',0);        if(!in_array($type,[0,1,2])){            HelpHander::error('参数错误');        }        $map[] = ['del','=',0];        $map[] = ['user_id','=',$this->userId];        if($type==1){            $map[] = ['status','=',0];        }else if($type==2){            $map[] = ['status','in',[1,4]];        }        $lists = Db::name('visitor_order')->where($map)->select();        $lists = $lists?$lists:[];        foreach ($lists as $k=>$v){            $lists[$k]['org_name'] = Db::name('org')->where('id',$v['org_id'])->value('name');            $lists[$k]['from_user_name'] = Db::name('user')->where('id',$v['from_user_id'])->value('real_name');            $lists[$k]['qrcode'] = Request::domain().'/admin/Qrcode/qrcode?code='.get_qrcode_str('visitor',$v['id']);        }        HelpHander::success($lists);    }    // 提交确认    public function order(){        $type = input('type');        $serviceTimeId = input('serviceTimeId',0);        $name = input('name','','trim');        $phone = input('phone','','trim');        if(!in_array($type,[1,2])){           HelpHander::error('参数错误');        }        if($type == 1 && $serviceTimeId <= 0){            HelpHander::error('未选择预约时间');        }        if(!$name){          HelpHander::error('请填写姓名');        }        if(!check_mobile($phone)){           HelpHander::error('手机号格式不正确');        }        $data = [            'name' => $name,            'phone' => $phone,            'org_id' => $this->orgId,            'user_id' => $this->userId,            'status' => 0,            'type' => $type,            'create_time' => date('Y-m-d H:i:s')        ];        if($type == 1){            $service = Db::name('service_time')                ->alias('st')                ->join('service s','s.id = st.service_id')                ->where('st.id',$serviceTimeId)                ->where('s.enable',1)                ->where('s.del',0)                ->where('st.enable',1)                ->where('st.del',0)                ->find();            if(!$service){                HelpHander::error('该服务已关闭');            }            // 检查时间段是否已过            $endTime = strtotime($service['day'].' '.$service['end']);            if(time() >= $endTime){                 HelpHander::error('该时间段已过,无法预约');            }            // 检查是否还有名额            $count = Db::name('visitor_order')                ->where('service_time_id',$serviceTimeId)                ->whereIn('status',[0,1,2,3])                ->where('del',0)                ->count();            if($service['limit'] <= $count){                HelpHander::error('该时间段已无预约名额');            }            // 检查用户是否已预约改时间段            $ret = Db::name('visitor_order')                ->where('user_id',$this->userId)                ->where('service_time_id',$serviceTimeId)                ->whereIn('status',[0,1,2,3])                ->where('del',0)                ->find();            if($ret){                HelpHander::error('已预约该时段,无重复预约');            }            $data['service_id'] = $service['service_id'];            $data['service_time_id'] = $serviceTimeId;        }        $add = Db::name('visitor_order')->insert($data);        if ($add) {            HelpHander::success([],'提交成功');        }else{            HelpHander::error('提交失败');        }    }    // 提交确认--小程序    public function order2(){        $type = 3;        $company = input('company','','trim');        $name = input('name','','trim');        $phone = input('phone','','trim');        $plateSn = input('plateSn','','trim');        $bookTime = input('bookTime','','trim');        $content = input('content','','trim');        $fromUserId = input('fromUserId/d',0);        if(!$fromUserId){            HelpHander::error('参数错误');        }        if($fromUserId == $this->userId){            HelpHander::error('不能填写自己分享的预约单');        }        if(!$company){            HelpHander::error('请填写单位');        }        if(!$name){            HelpHander::error('请填写姓名');        }        if(!check_mobile($phone)){            HelpHander::error('手机号格式不正确');        }        if(!$bookTime){            HelpHander::error('请选择到访时间');        }        if(!$content){            HelpHander::error('请填写到访事由');        }        $data = [            'name' => $name,            'phone' => $phone,            'org_id' => $this->orgId,            'user_id' => $this->userId,            'from_user_id' => $fromUserId,            'status' => 0,            'type' => $type,            'create_time' => date('Y-m-d H:i:s'),            'book_time' => $bookTime,            'plate_sn' => $plateSn,            'company' => $company,            'content' => $content        ];        $ret = Db::name('visitor_order')->insert($data);        if ($ret) {            HelpHander::success([],'提交成功');        }else{            HelpHander::error('提交失败');        }    }    public function detail(){        $id = input('id/d',0);        $info = Db::name('visitor_order')->where('id',$id)->where('del',0)->find();        if($info){            $info['ORG_NAME'] = Db::name('org')->where('id',$info['org_id'])->value('name');            $info['from_user_name'] = Db::name('user')->where('id',$info['from_user_id'])->value('real_name');            $info['qrcode'] = Request::domain().'/admin/Qrcode/qrcode?code='.get_qrcode_str('visitor',$info['id']);        }else{            HelpHander::error('记录不存在');        }        HelpHander::success($info);    }    // 自动检测预约已失效    private function autoCheck($info,$time){        if($info['status'] == 1){            $curTime = time();            $endTime = strtotime($time['day'].' '.$time['end']);            if($curTime >= $endTime){                Db::name('visitor_order')->where('id',$info['id'])->update(['status'=>3]);                $info['status'] = 3;            }        }        return $info;    }}
 |