master
cody 4 months ago
parent 8883c2f05d
commit 03a730d1e9

@ -462,7 +462,8 @@ class CourseController extends CommonController
* 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="course_id", in="query", @OA\Schema(type="string"), required=false, description="课程id二选一"),
* @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(
@ -477,20 +478,26 @@ class CourseController extends CommonController
$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 (isset($all['course_id'])) {
$info = Course::find($all['course_id']);
}
if (isset($all['course_content_id'])) {
$info = CourseContent::find($all['course_content_id']);
}
if (!isset($info)) {
return $this->fail([ResponseCode::ERROR_PARAMETER, '数据不存在']);
}
$distance = getDistance($info->longitude, $info->latitude, $all['longitude'], $all['latitude']);
return $this->success(compact('distance', 'content_check_range'));
}
@ -498,7 +505,7 @@ class CourseController extends CommonController
* @OA\Get(
* path="/api/mobile/course/content-check",
* tags={"小程序-课程"},
* summary="签到",
* summary="课堂签到",
* @OA\Parameter(name="batch_sign", in="query", @OA\Schema(type="string"), required=false, description="是否同日期批量签到0否1是"),
* @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"),
@ -515,7 +522,7 @@ class CourseController extends CommonController
$messages = [
'longitude.required' => '经度必填',
'latitude.required' => '纬度必填',
'course_content_id.required' => '课id必填',
'course_content_id.required' => '课id必填',
];
$validator = Validator::make($all, [
'longitude' => 'required',
@ -546,6 +553,7 @@ class CourseController extends CommonController
}
CourseContentCheck::create([
'course_content_id' => $all['course_content_id'],
'course_id' => $courseContent->course_id,
'user_id' => $this->getUserId(),
'longitude' => $all['longitude'],
'latitude' => $all['latitude'],
@ -579,6 +587,64 @@ class CourseController extends CommonController
return $this->success('签到成功');
}
/**
* @OA\Get(
* path="/api/mobile/course/course-content-check",
* tags={"小程序-课程"},
* summary="课程签到",
* @OA\Parameter(name="course_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 courseContentCheck()
{
$all = \request()->all();
$messages = [
'longitude.required' => '经度必填',
'latitude.required' => '纬度必填',
'course_id.required' => '课表id必填',
];
$validator = Validator::make($all, [
'longitude' => 'required',
'latitude' => 'required',
'course_id' => 'required'
], $messages);
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
// 获取打卡范围,千米
$content_check_range = Config::getValueByKey('content_check_range');
$course = Course::find($all['course_id']);
$distance = getDistance($course->longitude, $course->latitude, $all['longitude'], $all['latitude']);
if ($distance > $content_check_range) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '超出打卡范围']);
}
// 判断当天才能签到
$today = date('Y-m-d');
if ($today != $course->start_date) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '不在签到时间']);
}
// 不能重复签到
$courseContentCheck = CourseContentCheck::where('course_id', $all['course_id'])
->where('user_id', $this->getUserId())
->first();
if ($courseContentCheck) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '不能重复签到']);
}
CourseContentCheck::create([
'course_id' => $all['course_id'],
'user_id' => $this->getUserId(),
'longitude' => $all['longitude'],
'latitude' => $all['latitude'],
]);
return $this->success('课程签到成功');
}
/**
* @OA\Get(
* path="/api/mobile/course/content-check-list",

@ -284,8 +284,10 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () {
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"]);
// 课程签到
Route::get('course/course-content-check', [\App\Http\Controllers\Mobile\CourseController::class, "courseContentCheck"]);
// 签到列表
Route::get('course/content-check-list', [\App\Http\Controllers\Mobile\CourseController::class, "contentCheckList"]);
// 校友库

Loading…
Cancel
Save