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