model = new Safeconference(); $this->signModel = new SafeconferenceSign(); } /** * 安全会议列表 * * @param Request $request * @return Response */ public function index(Request $request): Response { $name = $request->get('name', ''); $page = $request->get('page', 1); $limit = $request->get('limit', 3); $where = []; if ($name) { $where[] = ['name', 'like', '%' . $name . '%']; } $list = $this->model->getPaginateList($where, ['*'], ['id' => 'desc'], ['org', 'typeInfo'], $limit); return sparKSuccess(dataReturn(0, '获取成功', $list)); } /** * 安全会议添加 * * @param Request $request * @return Response */ public function store(Request $request): Response { $param = $request->post(); $this->model->create($param); return sparkSuccess(dataReturn(0, '新建成功')); } /** * 安全会议详情 * * @param Request $request * @param $id * @return Response */ public function show(Request $request, $id): Response { $data = $this->model->where('id', $id)->with(['org', 'typeInfo'])->first(); if (!$data) { return sparkSuccess(dataReturn(1, '数据不存在')); } return sparkSuccess(dataReturn(0, '获取成功', $data)); } /** * 安全会议修改 * * @param Request $request * @param $id * @return Response */ public function update(Request $request, $id): Response { $data = $this->model->find($id); if (!$data) { return sparkSuccess(dataReturn(1, '数据不存在')); } $param = $request->post(); $data->fill($param)->save(); return sparkSuccess(dataReturn(0, '编辑成功')); } /** * 安全会议删除 * * @param Request $request * @return Response */ public function destroy(Request $request): Response { $ids = $request->get('ids'); $res = $this->model->delByIds($ids); return sparKSuccess(dataReturn(0, '删除成功')); } /** * 管理员列表 * @param Request $request * @return Response */ public function userList(Request $request): Response { $adminService = new AdminService(); $res = $adminService->getList($request->all()); return sparkSuccess($res); } /** * 协作人员列表 * * @param Request $request * @return Response */ public function collaborator(Request $request): Response { $collaboratorService = new CollaboratorService(); $res = $collaboratorService->index($request); return sparkSuccess($res); } /** * 类型列表 * * @return void */ public function typeList() { $res = (new SafeconferenceType())->getAllList([]); return sparkSuccess(dataReturn(0, '获取成功', $res)); } /** * 通知 * * @param Request $request * @return Response */ public function notify(Request $request, $id): Response { $notifyErrArr = []; $model = SafeConference::find($id); foreach ($model->writer_info as $user) { if ($user['mobile']) { $message = '安全会议通知:' . $model->name . ',将在' . $model->drawup . '开始,请及时签到'; $messageUrl = 'https://anquansys.sxlq.com:37100/h5/#/pages/responsibility/safeconference/sign?s_id=' . $id; try { DingTalk::ding_send_message_do($user['mobile'], $model->name, $message, $messageUrl); } catch (Throwable $e) { $notifyErrArr[] = $user['nickname']; } } } return sparkSuccess(dataReturn(0, '推送成功', $notifyErrArr)); } /** * 签到 * * @param Request $request * @return void */ public function signUp(Request $request): Response { $param = $request->all(); $id = $param['id']; $uid = $param['user_id']; $longitude = $param['longitude']; $latitude = $param['latitude']; if (!$id || !$uid || !$longitude || !$latitude) { return sparkSuccess(dataReturn(-1, '签到失败')); } $info = Safeconference::where('id', $id)->first(); if (!$info) { return sparkSuccess(dataReturn(-1, '签到失败')); } $distance = getDistances($latitude, $longitude, $info->latitude, $info->longitude); if ($distance > 3000) { return sparkSuccess(dataReturn(-1, '不在可签到范围内,签到失败')); } $endtime = strtotime($info->enddrawup); if (time() > $endtime) { return sparkSuccess(dataReturn(-1, '已结束,不可签到')); } //判断是否已经签到 $sign = SafeconferenceSign::where('s_id', $id)->where('admin_user_id', $uid)->first(); if ($sign) { return sparkSuccess(dataReturn(-1, '已经签到,签到失败')); } $adminUser = AdminUser::where('id', $uid)->first(); if (!$adminUser) { return sparkSuccess(dataReturn(-1, '用户不存在,签到失败')); } $data = []; $data['s_id'] = $id; if ($adminUser) { $data['admin_user_id'] = $adminUser->id; } $data['mobile'] = $adminUser->mobile; $data['longitude'] = $longitude; $data['latitude'] = $latitude; $data['distance'] = $distance; $data['create_time'] = time(); $sign = new SafeconferenceSign(); $sign->insertOne($data); return sparkSuccess(dataReturn(0, '签到成功')); } }