post(); $data['org_id'] = cur_org_id(); $result = validate('MeetingRoom')->check($data,[],''); if(true !== $result){ $this->error = validate('MeetingRoom')->getError(); return false; } $id = $data['id']; unset($data['id']); if($id > 0){ $data['update_time'] = date('Y-m-d H:i:s'); $ret = $this->allowField(true)->save($data,['id'=>$id]); }else{ $data['create_time'] = date('Y-m-d H:i:s'); $ret = $this->allowField(true)->save($data); } if(!$ret){ $this->error = '操作失败'; return false; } return true; } //app接口 public function checkApprover($userId,$orgId){ $info = db('meeting_room')->where('enable',1)->where('del',0)->where('approver',$userId)->where('org_id',$orgId)->find(); if(!$info){ $this->error = '不是会议室审批人'; return false; } $undeal = db('meeting_apply')->where('status',0)->where('del',0)->where('approver',$userId)->where('org_id',$orgId)->count(); return ['count' => $undeal]; } public function getRoomByDay($day,$orgId){ $lists = db('meeting_room') ->field('id,title,content,address,img,limit') ->where('enable',1) ->where('del',0) ->where('org_id',$orgId) ->order(['sort'=>'desc','id'=>'desc']) ->select(); $lists = $lists?$lists:[]; // 获取48个时间段 $times = $this->getTimesDay($day); foreach ($lists as $k=>$v){ $stime = $times; foreach ($stime as $kk=>$vv){ $ret = db('meeting_apply') ->whereIn('status',[0,1]) ->where('del',0) ->where('org_id',$orgId) ->where('start_time','<',$vv['etime']) ->where('end_time','>',$vv['stime']) ->where('meeting_room_id',$v['id']) ->find(); if($ret){ if($vv['status'] == 0){ $stime[$kk]['status'] = 3; }else{ $stime[$kk]['status'] = 2; } } } $lists[$k]['times'] = $stime; } return $lists; } private function getTimesDay($day){ $times = []; $curTime = date('Y-m-d H:i:s'); $nextday = date('Y-m-d',strtotime($day)+24*60*60); for ($i=0;$i<24;$i++){ if($i == 23){ $a = [ 'stime' => $day.' '.$i.':00:00', 'etime' => $day.' '.$i.':30:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; $b = [ 'stime' => $day.' '.$i.':30:00', 'etime' => $nextday.' '.'00:00:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; }else if($i>9&&$i<23){ $a = [ 'stime' => $day.' '.$i.':00:00', 'etime' => $day.' '.$i.':30:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; $b = [ 'stime' => $day.' '.$i.':30:00', 'etime' => $day.' '.($i+1).':00:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; }else if($i == 9){ $a = [ 'stime' => $day.' 0'.$i.':00:00', 'etime' => $day.' 0'.$i.':30:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; $b = [ 'stime' => $day.' 0'.$i.':30:00', 'etime' => $day.' '.'10:00:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; }else{ $a = [ 'stime' => $day.' 0'.$i.':00:00', 'etime' => $day.' 0'.$i.':30:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; $b = [ 'stime' => $day.' 0'.$i.':30:00', 'etime' => $day.' 0'.($i+1).':00:00', 'status' => 0 // 0=白色 1=灰色 2=黄色(历史预订) 3=蓝色(已预订) ]; } if($curTime > $a['stime']){ $a['status'] = 1; } if($curTime > $b['stime']){ $b['status'] = 1; } $times[] = $a; $times[] = $b; } return $times; } public function details($id,$time,$orgId){ $info = db('meeting_room') ->field('id,title,content,address,img,approver,meeting_device_ids,limit') ->where('enable',1) ->where('del',0) ->where('org_id',$orgId) ->where('id',$id) ->find(); if(!$info){ $this->error = '记录不存在'; return false; } $info['devices'] = db('meeting_device') ->field('id,title') ->whereIn('id',$info['meeting_device_ids']) ->select(); $day = $time; $times = $this->getTimesDay($day); $newtimes = []; foreach ($times as $k=>$v){ if($v['status'] == 0){ $status = 0; $ret = db('meeting_apply') ->whereIn('status',[0,1]) ->where('del',0) ->where('org_id',$orgId) ->where('start_time','<',$v['etime']) ->where('end_time','>',$v['stime']) ->where('meeting_room_id',$info['id']) ->find(); if($ret){ $status = 1; } $newtimes[] = [ 'status' => $status, 'stime' => $v['stime'], 'etime' => $v['etime'], 'stimetext' => date('H:i',strtotime($v['stime'])), 'etimetext' => date('H:i',strtotime($v['etime'])) ]; } } $info['times'] = $newtimes; $approver = db('user')->where('id',$info['approver'])->field('head_image,real_name')->find(); $info['approver_img'] =$approver?$approver['head_image']:''; $info['approver_name'] =$approver?$approver['real_name']:''; return $info; } // 保存会议室预定 public function saveBook($data){ Db::startTrans(); try{ $approver = db('meeting_room')->where('id',$data['meeting_room_id'])->value('approver'); $data['approver'] = $approver; $data['create_time'] = getTime(); $roomInfo = db('meeting_room')->where('id',$data['meeting_room_id'])->find(); if($roomInfo['is_check'] == 0){ $data['status'] = 1; $data['approver'] = 0;//不需要审核 $data['apply_time'] = getTime(); } //添加 $applyId = db('meeting_apply')->insertGetId($data); if($applyId < 1){ exception('操作失败'); } //通知审批人员 send_jpush([$approver],19,['id' => $applyId]); Db::commit(); }catch (\Exception $e){ Db::rollback(); $this->error = $e->getMessage(); return false; } return true; } }