You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
7.6 KiB
211 lines
7.6 KiB
<?php
|
|
/**
|
|
* 其他
|
|
*/
|
|
|
|
namespace App\Http\Controllers\Mobile;
|
|
|
|
use App\Helpers\ResponseCode;
|
|
use App\Models\AppointmentConfig;
|
|
use App\Models\AppointmentType;
|
|
use App\Models\Banner;
|
|
use App\Models\Company;
|
|
use App\Models\Config;
|
|
use App\Repositories\YuanheRepository;
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
|
class OtherController extends CommonController
|
|
{
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/mobile/other/config",
|
|
* tags={"小程序-其他"},
|
|
* summary="获取配置信息",
|
|
* @OA\Parameter(name="appointment_type_id", in="query", @OA\Schema(type="integer"), required=true, description="场地类型"),
|
|
* @OA\Response(
|
|
* response=200,
|
|
* description="操作成功"
|
|
* )
|
|
* )
|
|
*/
|
|
public function config()
|
|
{
|
|
$all = request()->all();
|
|
$config = Config::get();
|
|
$appointment = AppointmentConfig::where(function ($query) use ($all) {
|
|
if (isset($all['appointment_type_id'])) {
|
|
$query->where('appointment_type_id', $all['appointment_type_id']);
|
|
}
|
|
})->where('show_front', 1)->get();
|
|
// 场地类型
|
|
$appointment_type = AppointmentType::get();
|
|
return $this->success(compact('config', 'appointment', 'appointment_type'));
|
|
}
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/mobile/other/banner",
|
|
* tags={"小程序-其他"},
|
|
* summary="获取banner",
|
|
* @OA\Parameter(name="position", in="query", @OA\Schema(type="integer"), required=true, description="位置1首页"),
|
|
* @OA\Response(
|
|
* response=200,
|
|
* description="操作成功"
|
|
* )
|
|
* )
|
|
*/
|
|
public function banner()
|
|
{
|
|
$position = request('position', 1);
|
|
$config = Banner::with('image')->where(function ($query) use ($position) {
|
|
if (isset($position)) {
|
|
$query->where('position', $position);
|
|
}
|
|
})->orderBy('sort')->get();
|
|
return $this->success($config);
|
|
}
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/mobile/other/company",
|
|
* tags={"小程序-其他"},
|
|
* summary="公司搜索",
|
|
* @OA\Parameter(name="company_name", in="query", @OA\Schema(type="integer"), required=true, description="公司名字"),
|
|
* @OA\Response(
|
|
* response=200,
|
|
* description="操作成功"
|
|
* )
|
|
* )
|
|
*/
|
|
public function company()
|
|
{
|
|
$all = \request()->all();
|
|
$messages = [
|
|
'company_name.required' => '公司名称必填',
|
|
];
|
|
$validator = Validator::make($all, [
|
|
'company_name' => 'required',
|
|
], $messages);
|
|
if ($validator->fails()) {
|
|
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
|
|
}
|
|
$YuanheRepository = new YuanheRepository();
|
|
// $result = $YuanheRepository->companyInfo(['enterpriseName' => $all['company_name']]);
|
|
$result[] = [
|
|
"createBy" => null,
|
|
"createDt" => null,
|
|
"updateBy" => null,
|
|
"updateDt" => null,
|
|
"enterpriseId" => "1950060660573786112",
|
|
"enterpriseName" => "苏州元瞰科技有限公司",
|
|
"creditCode" => "91320594MA7F0G9W6A",
|
|
"keyNo" => "db5ppy5kbsprbbhjbjlarvmvphjhp3mrkv",
|
|
"isAbroad" => "0",
|
|
"status" => "注销",
|
|
"logo" => "https://image.qcc.com/logo/EntImage.png",
|
|
"operName" => "刘杰杰",
|
|
"contactMail" => "425039148@qq.com",
|
|
"contactPhone" => "15298866552",
|
|
"startDate" => "2021-12-21",
|
|
"endDate" => null,
|
|
"updatedDate" => "2025-08-17",
|
|
"registCapi" => "100万元",
|
|
"registAmount" => "1000000.0000",
|
|
"registCapiType" => "1",
|
|
"currencyType" => null,
|
|
"termStart" => "2021-12-21",
|
|
"termEnd" => null,
|
|
"checkDate" => "2025-07-03",
|
|
"orgNo" => "MA7F0G9W-6",
|
|
"isOnStock" => "0",
|
|
"stockNumber" => "",
|
|
"stockType" => "",
|
|
"stockDate" => null,
|
|
"province" => "江苏省",
|
|
"city" => "苏州市",
|
|
"country" => "苏州工业园区",
|
|
"areaCode" => "320576",
|
|
"address" => "苏州工业园区亭新街11号B1栋二楼",
|
|
"businessScope" => "一般项目:人工智能应用软件开发",
|
|
"tagList" => null,
|
|
"qccIndustry" => null,
|
|
"isYhInvested" => false
|
|
];
|
|
if (!$result) {
|
|
return $this->fail([ResponseCode::ERROR_PARAMETER, '获取失败']);
|
|
}
|
|
return $this->success($result);
|
|
}
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/api/mobile/other/company-list",
|
|
* tags={"小程序-其他"},
|
|
* summary="公司列表",
|
|
* @OA\Parameter(name="company_longitude", in="query", @OA\Schema(type="string"), required=false, description="经度"),
|
|
* @OA\Parameter(name="company_latitude", in="query", @OA\Schema(type="string"), required=false, description="纬度"),
|
|
* @OA\Parameter(name="page_size", in="query", @OA\Schema(type="string"), required=false, description="每页显示的条数"),
|
|
* @OA\Parameter(name="page", in="query", @OA\Schema(type="string"), required=false, description="页码"),
|
|
* @OA\Parameter(name="sort_name", in="query", @OA\Schema(type="string"), required=false, description="排序字段名字"),
|
|
* @OA\Parameter(name="sort_type", in="query", @OA\Schema(type="string"), required=false, description="排序类型"),
|
|
* @OA\Response(
|
|
* response=200,
|
|
* description="操作成功"
|
|
* )
|
|
* )
|
|
*/
|
|
public function companyList()
|
|
{
|
|
$all = \request()->all();
|
|
$messages = [
|
|
'company_longitude.required' => '经度必填',
|
|
'company_latitude.required' => '纬度必填',
|
|
];
|
|
$validator = Validator::make($all, [
|
|
'company_longitude' => 'required',
|
|
'company_latitude' => 'required',
|
|
], $messages);
|
|
if ($validator->fails()) {
|
|
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;
|
|
$sortName = $all['sort_name'] ?? 'distance';
|
|
$sortType = $all['sort_type'] ?? 'asc';
|
|
|
|
// 使用 Haversine 公式计算距离
|
|
$distanceFormula = "
|
|
(6371 * acos(
|
|
cos(radians(?)) *
|
|
cos(radians(CAST(company_latitude AS DECIMAL(10,8)))) *
|
|
cos(radians(CAST(company_longitude AS DECIMAL(10,8))) - radians(?)) +
|
|
sin(radians(?)) *
|
|
sin(radians(CAST(company_latitude AS DECIMAL(10,8))))
|
|
)) AS distance
|
|
";
|
|
|
|
$query = Company::select('*')
|
|
->selectRaw($distanceFormula, [$latitude, $longitude, $latitude])
|
|
->whereNotNull('company_longitude')
|
|
->whereNotNull('company_latitude')
|
|
->where('company_longitude', '!=', '')
|
|
->where('company_latitude', '!=', '');
|
|
|
|
// 根据排序字段进行排序
|
|
if ($sortName === 'distance') {
|
|
$query->orderBy('distance', $sortType);
|
|
} else {
|
|
$query->orderBy($sortName, $sortType);
|
|
}
|
|
|
|
$result = $query->paginate($pageSize, ['*'], 'page', $page);
|
|
|
|
return $this->success($result);
|
|
}
|
|
|
|
}
|