Merge branch 'master' of ssh://47.101.48.251:/data/git/wx.sstbc.com

master
lion 3 months ago
commit 37c5ab64e9

@ -553,25 +553,25 @@ class CourseController extends CommonController
{
$all = \request()->all();
$messages = [
'longitude.required' => '经度必填',
'latitude.required' => '纬度必填',
// 'longitude.required' => '经度必填',
// 'latitude.required' => '纬度必填',
'course_content_id.required' => '课表id必填',
];
$validator = Validator::make($all, [
'longitude' => 'required',
'latitude' => 'required',
// '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');
// $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, '超出打卡范围']);
}
// $distance = getDistance($courseContent->longitude, $courseContent->latitude, $all['longitude'], $all['latitude']);
// if ($distance > $content_check_range) {
// return $this->fail([ResponseCode::ERROR_BUSINESS, '超出打卡范围']);
// }
// 判断当天才能签到
$today = date('Y-m-d');
if ($today != $courseContent->date) {
@ -588,8 +588,8 @@ class CourseController extends CommonController
'course_content_id' => $all['course_content_id'],
'course_id' => $courseContent->course_id,
'user_id' => $this->getUserId(),
'longitude' => $all['longitude'],
'latitude' => $all['latitude'],
'longitude' => $all['longitude']??'',
'latitude' => $all['latitude']??'',
]);
// 同日期课程批量签到
$batch_sign = request('batch_sign', 0);
@ -639,12 +639,12 @@ class CourseController extends CommonController
$all = \request()->all();
$messages = [
'longitude.required' => '经度必填',
'latitude.required' => '纬度必填',
'course_id.required' => '课表id必填',
// 'latitude.required' => '纬度必填',
// 'course_id.required' => '课表id必填',
];
$validator = Validator::make($all, [
'longitude' => 'required',
'latitude' => 'required',
// 'longitude' => 'required',
// 'latitude' => 'required',
'course_id' => 'required'
], $messages);
if ($validator->fails()) {
@ -653,13 +653,13 @@ class CourseController extends CommonController
// 获取打卡范围,千米
$content_check_range = Config::getValueByKey('content_check_range');
$course = Course::find($all['course_id']);
if (empty($course->longitude) || empty($course->latitude)) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '请先设置课程经纬度']);
}
$distance = getDistance($course->longitude, $course->latitude, $all['longitude'], $all['latitude']);
if ($distance > $content_check_range) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '超出打卡范围']);
}
// if (empty($course->longitude) || empty($course->latitude)) {
// return $this->fail([ResponseCode::ERROR_BUSINESS, '请先设置课程经纬度']);
// }
// $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) {
@ -675,8 +675,8 @@ class CourseController extends CommonController
CourseContentCheck::create([
'course_id' => $all['course_id'],
'user_id' => $this->getUserId(),
'longitude' => $all['longitude'],
'latitude' => $all['latitude'],
'longitude' => $all['longitude']??'',
'latitude' => $all['latitude']??'',
]);
return $this->success('课程签到成功');
}

@ -521,4 +521,96 @@ class UserController extends CommonController
return $this->success(compact('qrcode'));
}
/**
* @OA\Get(
* path="/api/mobile/user/mobile-login",
* tags={"小程序-用户管理"},
* summary="手机号登陆",
* @OA\Parameter(name="code", in="query", @OA\Schema(type="string"), required=false, description="code"),
* @OA\Parameter(name="mobile", in="query", @OA\Schema(type="string"), required=false, description="手机号"),
* @OA\Response(
* response=200,
* description="操作成功"
* )
* )
*/
public function mobileLogin()
{
$all = \request()->all();
$messages = [
'code.required' => 'code必填',
'mobile.required' => '手机号必填'
];
$validator = Validator::make($all, [
'code' => 'required',
'mobile' => 'required'
], $messages);
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
$key = 'sms_login_' . $all['mobile'];
$check = Cache::get($key);
if (empty($check)) return $this->fail([ResponseCode::ERROR_BUSINESS, '请先发送验证码']);
if ($check['code'] != $all['code']) return $this->fail([ResponseCode::ERROR_BUSINESS, '验证码错误']);
$user = User::where('mobile', $all['mobile'])->first();
$token = $user->createToken("mobile-token")->plainTextToken;
return $this->success(compact('token'));
}
/**
* @OA\Get (
* path="/api/mobile/user/mobile-login-code",
* tags={"手机端-用户管理"},
* summary="短信登陆发送验证码",
* description="",
* @OA\Parameter(name="course_id", in="query", @OA\Schema(type="string"), required=true, description="课程id"),
* @OA\Parameter(name="mobile", in="query", @OA\Schema(type="string"), required=true, description="手机号"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
* @OA\Response(
* response="200",
* description=""
* )
* )
*/
public function mobileLoginCode()
{
$all = \request()->all();
$messages = [
'course_id.required' => '课程id必填',
'mobile.required' => '手机号必填',
'mobile.numeric' => '手机号格式错误',
];
$validator = Validator::make($all, [
'course_id' => 'required',
'mobile' => 'required|numeric'
], $messages);
if ($validator->fails()) {
return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
// 监测是否正常报名并通过
$courseSigns = CourseSign::where('course_id', $all['course_id'])
->whereHas('user', function ($query) use ($all) {
$query->where('mobile', $all['mobile']);
})->where('status', 1)
->first();
if (empty($courseSigns)) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '未报名课程']);
}
$key = 'sms_login_' . $all['mobile'];
$check = Cache::get($key);
if (isset($check) && time() - $check['time'] <= 60) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '请勿频繁发送']);
}
$code = rand(1000, 9999);
$smsSign = Config::getValueByKey('sms_sign');
$content = "{$smsSign}您的验证码是:{$code},验证码五分钟内有效,如非本人操作,请忽略。";
$result = ymSms($all['mobile'], $content);
if ($result) {
// 缓存
Cache::put($key, ['code' => $code, 'time' => time()], 300);
return $this->success("发送成功");
}
return $this->fail([StarterResponseCode::START_ERROR_PARAMETER, "发送失败"]);
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -255,10 +255,16 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () {
Route::get('course/course-detail-pc', [\App\Http\Controllers\Mobile\CourseController::class, "courseDetailPc"]);
// 小程序登陆
Route::get('user/applet-login', [\App\Http\Controllers\Mobile\UserController::class, "appletLogin"]);
// 手机号登陆
Route::get('user/mobile-login', [\App\Http\Controllers\Mobile\UserController::class, "mobileLogin"]);
// 手机号登陆发送验证码
Route::get('user/mobile-login-code', [\App\Http\Controllers\Mobile\UserController::class, "mobileLoginCode"]);
// 新闻列表
Route::get('course/news', [\App\Http\Controllers\Mobile\CourseController::class, "news"]);
// 新闻详情
Route::get('course/news-detail', [\App\Http\Controllers\Mobile\CourseController::class, "newsDetail"]);
Route::get('course/course-detail', [\App\Http\Controllers\Mobile\CourseController::class, "courseDetail"]);
Route::get('course/course-content-detail', [\App\Http\Controllers\Mobile\CourseController::class, "courseContentDetail"]);
// 支付回调
Route::any('course/pay_callback', [\App\Http\Controllers\Mobile\CourseController::class, "payCallback"]);
Route::group(['middleware' => ['sanctum.jwt:mobile']], function () {
@ -275,13 +281,13 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile"], function () {
Route::post('user/update-donates', [\App\Http\Controllers\Mobile\UserController::class, "updateDonates"]);
// 课程信息
Route::get('course/course-detail', [\App\Http\Controllers\Mobile\CourseController::class, "courseDetail"]);
Route::get('course/evaluation-detail', [\App\Http\Controllers\Mobile\CourseController::class, "evaluationDetail"]);
Route::post('course/sign', [\App\Http\Controllers\Mobile\CourseController::class, "sign"]);
Route::get('course/my-course', [\App\Http\Controllers\Mobile\CourseController::class, "myCourse"]);
Route::get('course/my-course-content', [\App\Http\Controllers\Mobile\CourseController::class, "myCourseContent"]);
Route::get('course/course-content-detail', [\App\Http\Controllers\Mobile\CourseController::class, "courseContentDetail"]);
Route::post('course/course-form', [\App\Http\Controllers\Mobile\CourseController::class, "courseForm"]);
Route::get('course/get-sign', [\App\Http\Controllers\Mobile\CourseController::class, "getSign"]);
Route::post('course/update-sign', [\App\Http\Controllers\Mobile\CourseController::class, "updateSign"]);

Loading…
Cancel
Save