master
cody 4 months ago
parent 0f97b1511f
commit 96b4dc9453

@ -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="地址"),

@ -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",

@ -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('详细地址');

@ -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"]);
// 签到列表

Loading…
Cancel
Save