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

@ -521,4 +521,96 @@ class UserController extends CommonController
return $this->success(compact('qrcode')); 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('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/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', [\App\Http\Controllers\Mobile\CourseController::class, "news"]);
// 新闻详情 // 新闻详情
Route::get('course/news-detail', [\App\Http\Controllers\Mobile\CourseController::class, "newsDetail"]); 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::any('course/pay_callback', [\App\Http\Controllers\Mobile\CourseController::class, "payCallback"]);
Route::group(['middleware' => ['sanctum.jwt:mobile']], function () { 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::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::get('course/evaluation-detail', [\App\Http\Controllers\Mobile\CourseController::class, "evaluationDetail"]);
Route::post('course/sign', [\App\Http\Controllers\Mobile\CourseController::class, "sign"]); 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', [\App\Http\Controllers\Mobile\CourseController::class, "myCourse"]);
Route::get('course/my-course-content', [\App\Http\Controllers\Mobile\CourseController::class, "myCourseContent"]); 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::post('course/course-form', [\App\Http\Controllers\Mobile\CourseController::class, "courseForm"]);
Route::get('course/get-sign', [\App\Http\Controllers\Mobile\CourseController::class, "getSign"]); Route::get('course/get-sign', [\App\Http\Controllers\Mobile\CourseController::class, "getSign"]);
Route::post('course/update-sign', [\App\Http\Controllers\Mobile\CourseController::class, "updateSign"]); Route::post('course/update-sign', [\App\Http\Controllers\Mobile\CourseController::class, "updateSign"]);

Loading…
Cancel
Save