windModel = $windModel; } /** * 列表 * @time 2022年04月27日 10:49 * @param Request $request */ public function index(Request $request): \think\Response { return CatchResponse::paginate($this->windModel->getList()); } /** * 列表 * @time 2022年04月27日 10:49 * @param Request $request */ public function getWindList(Request $request): \think\Response { $list = $this->windModel->getWindList(); foreach ($list as $val) { if ($val['wind_shape'] == 'circle') { $val['center_lng'] = $val['wind_info']['center']['lng']; $val['center_lat'] = $val['wind_info']['center']['lat']; } if ($val['wind_shape'] == 'polygon') { $val['center_lng'] = $val['wind_info'][0]['lng']; $val['center_lat'] = $val['wind_info'][0]['lat']; } } return CatchResponse::success($list); } /** * 保存信息 * @time 2022年04月27日 10:49 * @param Request $request */ public function save(Request $request): \think\Response { $post = $request->post(); if (!isset($post['name']) || !$post['name']) { return CatchResponse::fail('风场名称不能为空'); } if (!isset($post['wind_shape']) || !$post['wind_shape']) { return CatchResponse::fail('获取风场类型失败'); } if (!isset($post['wind_info']) || !is_array($post['wind_info'])) { return CatchResponse::fail('获取风场坐标数据失败'); } if (!isset($post['department_id']) || !is_array($post['department_id'])) { return CatchResponse::fail('获取风场所属部门失败'); } // 检测名称重复 if ($this->windModel->where('name', $post['name'])->count()) { return CatchResponse::fail('风场名称已存在'); } if ($this->windModel->where('number', $post['number'])->count()) { return CatchResponse::fail('风场编号已存在'); } $post['wind_info'] = json_encode($post['wind_info']); $post['department_id'] = array_pop($post['department_id']); return CatchResponse::success($this->windModel->storeBy($post)); } /** * 读取 * @time 2022年04月27日 10:49 * @param $id */ public function read($id): \think\Response { return CatchResponse::success($this->windModel->findBy($id)); } /** * 更新 * @time 2022年04月27日 10:49 * @param Request $request * @param $id */ public function update(Request $request, $id): \think\Response { $post = $request->post(); $post['id'] = $id; if (isset($post['name'])) { // 检测名称重复 $n_id = $this->windModel->where('name', $post['name'])->value('id'); if ($n_id && ($n_id != $id)) { return CatchResponse::fail('风场名称已存在'); } } if (isset($post['number'])) { // 检测名称重复 $n_id = $this->windModel->where('number', $post['number'])->value('id'); if ($n_id && ($n_id != $id)) { return CatchResponse::fail('风场编号已存在'); } } if (isset($post['department_id']) && is_array($post['department_id'])) { $post['department_id'] = array_pop($post['department_id']); } $post['wind_info'] = json_encode($post['wind_info']); return CatchResponse::success($this->windModel->updateBy($id, $post)); } /** * 删除 * @time 2022年04月27日 10:49 * @param $id */ public function delete($id): \think\Response { $count = Fan::where('wind_id', $id)->count(); if ($count > 0) { return CatchResponse::fail('存在所属风场的风机'); } $plan_count = Workplan::where('wind_id', $id)->count(); if ($plan_count > 0) { return CatchResponse::fail('存在所属风场的工作计划'); } return CatchResponse::success($this->windModel->deleteBy($id, true)); } /** * 获取风场下拉菜单 * @time 2022年04月28日 19:53 */ public function getWindOptions(Request $request) { $list = $this->windModel->field('id as value,name as text')->select(); return CatchResponse::success($list); } }