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; } }