model = new Venue(); } /** * 获取场地列表 * @param array $where * @return array */ public function getPage(array $where = []) { $field = 'id,campus_id,venue_name,capacity,availability_status,time_range_type,time_range_start,time_range_end,fixed_time_ranges,created_at,updated_at,deleted_at'; $order = 'updated_at desc'; $search_model = $this->model->withSearch(["campus_id", "venue_name", "capacity", "availability_status", "time_range_type", "created_at", "updated_at"], $where)->with(['campus'])->field($field)->order($order); $list = $this->pageQuery($search_model); return $list; } /** * 获取场地信息 * @param int $id * @return array */ public function getInfo(int $id) { $field = 'id,campus_id,venue_name,capacity,availability_status,time_range_type,time_range_start,time_range_end,fixed_time_ranges,created_at,updated_at,deleted_at'; $info = $this->model->field($field)->where([['id', "=", $id]])->with(['campus'])->findOrEmpty()->toArray(); $info['availability_status'] = strval($info['availability_status']); $info['time_range_type'] = strval($info['time_range_type']); $info['fixed_time_ranges'] = json_decode($info['fixed_time_ranges'], true); return $info; } /** * 添加场地 * @param array $data * @return mixed */ public function add(array $data) { if ($data['time_range_type'] === 'fixed') { $data['fixed_time_ranges'] = json_encode($data['fixed_time_ranges']); } $res = $this->model->create($data); return $res->id; } /** * 场地编辑 * @param int $id * @param array $data * @return bool */ public function edit(int $id, array $data) { if ($data['time_range_type'] === 'fixed') { $data['fixed_time_ranges'] = json_encode($data['fixed_time_ranges']); } $this->model->where([['id', '=', $id]])->update($data); return true; } /** * 删除场地 * @param int $id * @return bool */ public function del(int $id) { $model = $this->model->where([['id', '=', $id]])->find(); $res = $model->delete(); return $res; } /** * 获取校区列表 * @return array */ public function getCampusAll() { $campusModel = new Campus(); return $campusModel->select() ->where('campus_status', '=', 1) ->toArray(); } /** * 获取校区下的场地列表 * @param $campus_id * @return array * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function getVenueAll($campus_id) { return $this->model->where('availability_status', '=', 1) ->where('campus_id', $campus_id) ->select() ->toArray(); } /** * 获取场地那天的可预约时间 */ public function getVenueTime($venue_id, $date) { $venue_info = $this->model->where('id', '=', $venue_id)->find(); $venue_info['time_range'] = []; //可用时间范围 if ($venue_info['time_range_type'] === 'range') { $time_range_start = $venue_info['time_range_start']; $time_range_end = $venue_info['time_range_end']; for ($i = $time_range_start; $i <= $time_range_end; $i++) { $venue_info['time_range'][] = $i; } } // 固定使用时间 if ($venue_info['time_range_type'] === 'fixed') { $venue_info['time_range'] = json_decode($venue_info['fixed_time_ranges'], true); for ($i = 0; $i < count($venue_info['time_range']); $i++) { $venue_info['time_range'][$i]['start'] = strtotime($date . ' ' . $venue_info['time_range'][$i]['start_time']); $venue_info['time_range'][$i]['end'] = strtotime($date . ' ' . $venue_info['time_range'][$i]['end_time']); } } // 全天可用从早上8点开始到晚上22点结束 if ($venue_info['time_range_type'] === 'all') { for ($i = 8; $i <= 22; $i++) { $venue_info['time_range'][] = $i; } } return $venue_info; } }