param('student_id', '');//学生资源表id $where = [ 'student_id' => $student_id, ]; $res = (new PhysicalTestService())->getList($where); return success($res); } //详情 public function info(Request $request) { $id = $request->param('id', '');//体测报告的id if (empty($id)) { return fail('缺少参数'); } $where = [ 'id' => $id, ]; $res = (new PhysicalTestService())->getInfo($where); if(!$res['code']){ return fail($res['msg']); } return success($res['data']); } //添加体测记录 public function add(Request $request) { $data = $request->param(); // 验证必填字段 - 根据新的数据库表结构调整 $required_fields = ['resource_id', 'student_id', 'height', 'weight']; foreach ($required_fields as $field) { if (empty($data[$field])) { return fail("缺少参数:{$field}"); } } try { $res = (new PhysicalTestService())->add($data); if (!$res['code']) { return fail($res['msg']); } return success($res['data'], '添加成功'); } catch (\Exception $e) { return fail('添加失败:' . $e->getMessage()); } } //编辑体测记录 public function edit(Request $request) { $data = $request->param(); if (empty($data['id'])) { return fail('缺少参数:id'); } try { $res = (new PhysicalTestService())->edit($data); if (!$res['code']) { return fail($res['msg']); } return success($res['data'], '修改成功'); } catch (\Exception $e) { return fail('修改失败:' . $e->getMessage()); } } //删除体测记录 public function delete(Request $request) { $id = $request->param('id', ''); if (empty($id)) { return fail('缺少参数:id'); } try { $res = (new PhysicalTestService())->delete($id); if (!$res['code']) { return fail($res['msg']); } return success([], '删除成功'); } catch (\Exception $e) { return fail('删除失败:' . $e->getMessage()); } } // 上传PDF文件 public function uploadPdf(Request $request) { try { $file = $request->file('file'); if (empty($file)) { return fail('未找到上传文件'); } // 验证文件类型 $allowedTypes = ['pdf']; $extension = strtolower($file->getOriginalExtension()); if (!in_array($extension, $allowedTypes)) { return fail('只允许上传PDF文件'); } // 验证文件大小 (最大10MB) $maxSize = 10 * 1024 * 1024; // 10MB if ($file->getSize() > $maxSize) { return fail('文件大小不能超过10MB'); } $res = (new PhysicalTestService())->uploadPdf($file); if ($res['code']) { return success($res['data'], '文件上传成功'); } else { return fail($res['msg']); } } catch (\Exception $e) { return fail('上传失败:' . $e->getMessage()); } } public function pdfToImage(Request $request){ $pdfUrl = $request->param('pdf_url', ''); $saveDir = public_path() . "/uploads/pdf_images/"; if (!is_dir($saveDir)) { mkdir($saveDir, 0777, true); } $tempPdf = $saveDir . uniqid() . ".pdf"; file_put_contents($tempPdf, file_get_contents($pdfUrl)); try { $imagick = new Imagick(); $imagick->setResolution(150, 150); // 清晰度 DPI $imagick->readImage($tempPdf."[0]"); // 只取第一页 $imagick->setImageFormat('jpg'); // 输出 jpg $imagePath = $saveDir . uniqid("pdf_preview_") . ".jpg"; $imagick->writeImage($imagePath); $imagick->clear(); $imagick->destroy(); // 删除临时 PDF unlink($tempPdf); // 返回 URL $imageUrl = "https://api.hnhbty.cn/uploads/pdf_images/" . basename($imagePath); header('Content-Type: application/json'); echo json_encode([ 'code' => 1, 'data' => ['image_url' => $imageUrl] ]); } catch (Exception $e) { echo json_encode([ 'code' => 0, 'message' => $e->getMessage() ]); } } }