From 5b335240ee76c4261d45ecfc4d580b6bf9befac4 Mon Sep 17 00:00:00 2001 From: cody <648753004@qq.com> Date: Thu, 28 Aug 2025 14:34:42 +0800 Subject: [PATCH] update --- ...pdateCourseUrls.php => UpdateCalendar.php} | 4 ++-- .../Controllers/Mobile/OtherController.php | 21 +++++++++++------- 课程台账.xlsx | Bin 15669 -> 16590 bytes 3 files changed, 15 insertions(+), 10 deletions(-) rename app/Console/Commands/{UpdateCourseUrls.php => UpdateCalendar.php} (99%) diff --git a/app/Console/Commands/UpdateCourseUrls.php b/app/Console/Commands/UpdateCalendar.php similarity index 99% rename from app/Console/Commands/UpdateCourseUrls.php rename to app/Console/Commands/UpdateCalendar.php index 80363c8..c5d2647 100644 --- a/app/Console/Commands/UpdateCourseUrls.php +++ b/app/Console/Commands/UpdateCalendar.php @@ -9,7 +9,7 @@ use Illuminate\Support\Facades\DB; use Maatwebsite\Excel\Facades\Excel; use PhpOffice\PhpSpreadsheet\IOFactory; -class UpdateCourseUrls extends Command +class UpdateCalendar extends Command { /** * The name and signature of the console command. @@ -398,7 +398,7 @@ class UpdateCourseUrls extends Command try { // 处理Excel数字格式的日期时间 if (is_numeric($dateTimeString)) { - $excelDate = (float) $dateTimeString; + $excelDate = (float)$dateTimeString; // Excel日期从1900年1月1日开始计算天数 // 需要减去2是因为Excel错误地认为1900年是闰年 diff --git a/app/Http/Controllers/Mobile/OtherController.php b/app/Http/Controllers/Mobile/OtherController.php index 90fc56c..86797b3 100755 --- a/app/Http/Controllers/Mobile/OtherController.php +++ b/app/Http/Controllers/Mobile/OtherController.php @@ -132,14 +132,14 @@ class OtherController extends CommonController return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $longitude = $all['company_longitude']; - $latitude = $all['company_latitude']; - $pageSize = $all['page_size'] ?? 10; - $page = $all['page'] ?? 1; + $longitude = floatval($all['company_longitude']); + $latitude = floatval($all['company_latitude']); + $pageSize = intval($all['page_size'] ?? 10); + $page = intval($all['page'] ?? 1); $sortName = $all['sort_name'] ?? 'distance'; $sortType = $all['sort_type'] ?? 'asc'; - // 使用 Haversine 公式计算距离 + // 使用 Haversine 公式计算距离,确保经纬度数据有效 $distanceFormula = " (6371 * acos( cos(radians(?)) * @@ -150,16 +150,21 @@ class OtherController extends CommonController )) AS distance "; - $query = Company::select('*') + $query = Company::with('users')->select('*') ->selectRaw($distanceFormula, [$latitude, $longitude, $latitude]) ->whereNotNull('company_longitude') ->whereNotNull('company_latitude') ->where('company_longitude', '!=', '') - ->where('company_latitude', '!=', ''); + ->where('company_latitude', '!=', '') + ->whereRaw('company_longitude REGEXP \'^-?[0-9]+\.?[0-9]*$\'') + ->whereRaw('company_latitude REGEXP \'^-?[0-9]+\.?[0-9]*$\'') + ->whereRaw('CAST(company_longitude AS DECIMAL(10,8)) BETWEEN -180 AND 180') + ->whereRaw('CAST(company_latitude AS DECIMAL(10,8)) BETWEEN -90 AND 90'); // 根据排序字段进行排序 if ($sortName === 'distance') { - $query->orderBy('distance', $sortType); + // 距离排序始终按升序(从近到远) + $query->orderBy('distance', 'asc'); } else { $query->orderBy($sortName, $sortType); } diff --git a/课程台账.xlsx b/课程台账.xlsx index 4a2659a7261919437197f93c010761754a27b238..b1e5186f0e8afd1e8898485ac40b009433f3e9d8 100644 GIT binary patch delta 12231 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 S>;Hcn#;^JLVQcySk^Dc%aUsb7 delta 11358 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 RudXKk6cK>N<@*Qm{{T6e#(@9;