From 96b4dc9453229bfb37f246b76d59ae37c6c4e06c Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Wed, 6 Aug 2025 14:40:31 +0800 Subject: [PATCH] update --- .../Admin/CourseContentController.php | 4 +- .../Controllers/Mobile/CourseController.php | 40 +++++++++++++++++++ ..._24_111502_alert_course_contents_table.php | 4 +- routes/api.php | 2 + 4 files changed, 46 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Admin/CourseContentController.php b/app/Http/Controllers/Admin/CourseContentController.php index ddd85cc..7af167d 100755 --- a/app/Http/Controllers/Admin/CourseContentController.php +++ b/app/Http/Controllers/Admin/CourseContentController.php @@ -150,8 +150,8 @@ class CourseContentController extends BaseController * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer"), required=true, description="课程ID(存在则更新,不存在则新增)"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="验证token"), * @OA\Parameter(name="course_id", in="query", @OA\Schema(type="integer"), description="课程ID"), - * @OA\Parameter(name="start_time", in="query", @OA\Schema(type="string"), description="开始时间"), - * @OA\Parameter(name="end_time", in="query", @OA\Schema(type="string"), description="结束时间"), + * @OA\Parameter(name="start_time", in="query", @OA\Schema(type="string"), description="开始时间,例如:11:00"), + * @OA\Parameter(name="end_time", in="query", @OA\Schema(type="string"), description="结束时间,例如:11:00"), * @OA\Parameter(name="date", in="query", @OA\Schema(type="string", format="date"), description="日期"), * @OA\Parameter(name="teacher_id", in="query", @OA\Schema(type="integer"), description="老师ID"), * @OA\Parameter(name="address", in="query", @OA\Schema(type="string"), description="地址"), diff --git a/app/Http/Controllers/Mobile/CourseController.php b/app/Http/Controllers/Mobile/CourseController.php index b49e1d2..699ee47 100755 --- a/app/Http/Controllers/Mobile/CourseController.php +++ b/app/Http/Controllers/Mobile/CourseController.php @@ -450,6 +450,46 @@ class CourseController extends CommonController return $this->success(compact('list')); } + /** + * @OA\Get( + * path="/api/mobile/course/distance", + * tags={"小程序-计算距离"}, + * summary="签到", + * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="string"), required=false, description="课表id"), + * @OA\Parameter(name="longitude", in="query", @OA\Schema(type="string"), required=false, description="longitude"), + * @OA\Parameter(name="latitude", in="query", @OA\Schema(type="string"), required=false, description="latitude"), + * @OA\Response( + * response=200, + * description="操作成功" + * ) + * ) + */ + public function distance() + { + $all = \request()->all(); + $messages = [ + 'longitude.required' => '经度必填', + 'latitude.required' => '纬度必填', + 'course_content_id.required' => '课程id必填', + ]; + $validator = Validator::make($all, [ + 'longitude' => 'required', + 'latitude' => 'required', + 'course_content_id' => 'required' + ], $messages); + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + // 获取打卡范围,千米 + $content_check_range = Config::getValueByKey('content_check_range'); + $courseContent = CourseContent::find($all['course_content_id']); + $distance = getDistance($courseContent->longitude, $courseContent->latitude, $all['longitude'], $all['latitude']); + if ($distance > $content_check_range) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '超出打卡范围']); + } + return $this->success('成功'); + } + /** * @OA\Get( * path="/api/mobile/course/content-check", diff --git a/database/migrations/2025_06_24_111502_alert_course_contents_table.php b/database/migrations/2025_06_24_111502_alert_course_contents_table.php index 13ad53d..e95daca 100644 --- a/database/migrations/2025_06_24_111502_alert_course_contents_table.php +++ b/database/migrations/2025_06_24_111502_alert_course_contents_table.php @@ -19,9 +19,9 @@ return new class extends Migration // 纬度 $table->string('latitude')->nullable()->comment('纬度'); // 开始时间 - $table->dateTime('start_time')->nullable()->comment('开始时间'); + $table->string('start_time')->nullable()->comment('开始时间'); // 结束时间 - $table->dateTime('end_time')->nullable()->comment('结束时间'); + $table->string('end_time')->nullable()->comment('结束时间'); $table->json('file_ids')->nullable()->comment('文件id数组'); // 详细地址 $table->string('address_detail')->nullable()->comment('详细地址'); diff --git a/routes/api.php b/routes/api.php index 1e79c8a..7c26c4b 100755 --- a/routes/api.php +++ b/routes/api.php @@ -279,6 +279,8 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () { Route::get('course/pay', [\App\Http\Controllers\Mobile\CourseController::class, "pay"]); Route::get('course/contents', [\App\Http\Controllers\Mobile\CourseController::class, "contents"]); + // 计算距离 + Route::get('course/distance', [\App\Http\Controllers\Mobile\CourseController::class, "distance"]); // 签到 Route::get('course/content-check', [\App\Http\Controllers\Mobile\CourseController::class, "contentCheck"]); // 签到列表