622 lines
27 KiB
PHP
622 lines
27 KiB
PHP
<?php
|
||
declare (strict_types = 1);
|
||
|
||
namespace plugin\admin\app\controller;
|
||
|
||
use app\model\LocationAr;
|
||
use app\model\LocationEn;
|
||
use app\model\LocationRu;
|
||
use app\model\VehicleAr;
|
||
use app\model\VehicleEn;
|
||
use app\model\VehicleRu;
|
||
use app\service\OssService;
|
||
use plugin\admin\app\common\Util;
|
||
use plugin\admin\app\model\Location;
|
||
use support\Log;
|
||
use support\Request;
|
||
use support\Response;
|
||
use plugin\admin\app\model\Vehicle;
|
||
use plugin\admin\app\controller\Crud;
|
||
use support\exception\BusinessException;
|
||
|
||
/**
|
||
* 车辆信息
|
||
*/
|
||
class VehicleController extends Crud
|
||
{
|
||
/**
|
||
* 不需要登录的方法
|
||
* @var string[]
|
||
*/
|
||
protected $noNeedLogin = ['detail'];
|
||
|
||
/**
|
||
* 不需要鉴权的方法
|
||
* @var string[]
|
||
*/
|
||
protected $noNeedAuth = ['detail', 'status', 'updateLogistics'];
|
||
|
||
protected $status = [
|
||
'zh-cn' => ['未知','待发车','在途(发往fbo港口)','抵达发货港口','在途(发往目的地仓库)','抵达目的地','售出'],
|
||
// 'zh' => ['未知','待发车','在途(发往fbo港口)','抵达发货港口','在途(发往目的地仓库)','抵达目的地','售出'],
|
||
'en' => ['unknown','Awaiting departure','In transit (to FBO port)','Arriving at the port of shipment','In transit (to destination warehouse)','Arriving at the destination','Sold'],
|
||
'ru' => ['Неизвестно','Ожидание отправления','В пути (в порт FBO)','Прибытие в порт отправления','В пути (отправлено на склад назначения)','Прибытие в пункт назначения','Продано'],
|
||
'ar' => ['غير معروف','في انتظار سيارة','على الطريق ( ميناء FBO )','الوصول إلى ميناء الشحن','في الطريق ( مستودع الوجهة )','الوصول إلى الوجهة','بيع'],
|
||
];
|
||
|
||
/**
|
||
* @var Vehicle
|
||
*/
|
||
protected $model = null;
|
||
|
||
/**
|
||
* 构造函数
|
||
* @return void
|
||
*/
|
||
public function __construct()
|
||
{
|
||
$this->model = new Vehicle;
|
||
}
|
||
|
||
public function status()
|
||
{
|
||
$lang = session('lang', 'zh-cn');
|
||
$status = $this->status[$lang];
|
||
return json(['code' => 0, 'msg' => 'success', 'data' => $status]);
|
||
}
|
||
|
||
/**
|
||
* 浏览
|
||
* @return Response
|
||
*/
|
||
public function index(): Response
|
||
{
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($common, $translations); // 确保 common.php 的翻译优先
|
||
|
||
// 添加默认翻译,确保所有语言都有基本翻译
|
||
$required_translations = [
|
||
'title' => $lang === 'zh-cn' ? '车辆管理' : 'Vehicle Management', // 确保title翻译存在
|
||
'brand' => $lang === 'zh-cn' ? '车辆品牌' : 'Vehicle Brand',
|
||
'brand_placeholder' => $lang === 'zh-cn' ? '请输入车辆品牌' : 'Please enter vehicle brand',
|
||
'model' => $lang === 'zh-cn' ? '车辆型号' : 'Vehicle Model',
|
||
'model_placeholder' => $lang === 'zh-cn' ? '请输入车辆型号' : 'Please enter vehicle model',
|
||
'vin' => 'VIN',
|
||
'vin_placeholder' => $lang === 'zh-cn' ? '请输入车架号' : 'Please enter VIN',
|
||
'status' => $lang === 'zh-cn' ? '车辆状态' : 'Status',
|
||
'status_placeholder' => $lang === 'zh-cn' ? '请选择状态' : 'Please select status',
|
||
'purchase_location' => $lang === 'zh-cn' ? '买车地点' : 'Purchase Location',
|
||
'purchase_location_placeholder' => $lang === 'zh-cn' ? '请输入买车地点' : 'Please enter purchase location',
|
||
'procedure_location' => $lang === 'zh-cn' ? '手续办理地' : 'Procedure Location',
|
||
'procedure_location_placeholder' => $lang === 'zh-cn' ? '请输入手续办理地' : 'Please enter procedure location',
|
||
'fbo_location' => 'FBO Location',
|
||
'fbo_location_placeholder' => $lang === 'zh-cn' ? '请选择FBO目的地' : 'Please select FBO location',
|
||
'current_location' => $lang === 'zh-cn' ? '车辆所在地' : 'Current Location',
|
||
'current_location_placeholder' => $lang === 'zh-cn' ? '请选择车辆所在地' : 'Please select current location',
|
||
'final_location' => $lang === 'zh-cn' ? '最终目的地' : 'Final Location',
|
||
'final_location_placeholder' => $lang === 'zh-cn' ? '请选择最终目的地' : 'Please select final location',
|
||
'departure_time' => $lang === 'zh-cn' ? 'FBO发车时间' : 'FBO Departure Time',
|
||
'departure_time_placeholder' => $lang === 'zh-cn' ? '请选择发车时间' : 'Please select departure time',
|
||
'arrival_time' => $lang === 'zh-cn' ? 'FBO到达时间' : 'FBO Arrival Time',
|
||
'arrival_time_placeholder' => $lang === 'zh-cn' ? '请选择到达时间' : 'Please select arrival time',
|
||
'shipping_cycle' => $lang === 'zh-cn' ? '运输周期' : 'Shipping Cycle',
|
||
'shipping_cycle_placeholder' => $lang === 'zh-cn' ? '请输入运输周期' : 'Please enter shipping cycle',
|
||
'img_url' => $lang === 'zh-cn' ? '图片' : 'Image',
|
||
'img_url_placeholder' => $lang === 'zh-cn' ? '请输入图片URL' : 'Please enter image URL',
|
||
'operation' => $lang === 'zh-cn' ? '操作' : 'Operation',
|
||
'refresh' => $lang === 'zh-cn' ? '刷新' : 'Refresh',
|
||
'filter' => $lang === 'zh-cn' ? '筛选' : 'Filter',
|
||
'print' => $lang === 'zh-cn' ? '打印' : 'Print',
|
||
'export' => $lang === 'zh-cn' ? '导出' : 'Export',
|
||
'id' => 'ID',
|
||
'created_at' => $lang === 'zh-cn' ? '创建时间' : 'Created At',
|
||
'updated_at' => $lang === 'zh-cn' ? '更新时间' : 'Updated At'
|
||
];
|
||
|
||
// 合并翻译,确保语言文件中的翻译优先
|
||
$translations = array_merge($required_translations, $translations);
|
||
|
||
|
||
|
||
return view('vehicle/index', [
|
||
'lang' => $lang,
|
||
'translations' => $translations
|
||
]);
|
||
}
|
||
/**
|
||
* 浏览
|
||
* @return Response
|
||
*/
|
||
public function logistics(): Response
|
||
{
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($common, $translations); // 确保 common.php 的翻译优先
|
||
|
||
// 添加默认翻译,确保所有语言都有基本翻译
|
||
$required_translations = [
|
||
'title' => $lang === 'zh-cn' ? '车辆管理' : 'Vehicle Management', // 确保title翻译存在
|
||
'brand' => $lang === 'zh-cn' ? '车辆品牌' : 'Vehicle Brand',
|
||
'brand_placeholder' => $lang === 'zh-cn' ? '请输入车辆品牌' : 'Please enter vehicle brand',
|
||
'model' => $lang === 'zh-cn' ? '车辆型号' : 'Vehicle Model',
|
||
'model_placeholder' => $lang === 'zh-cn' ? '请输入车辆型号' : 'Please enter vehicle model',
|
||
'vin' => 'VIN',
|
||
'vin_placeholder' => $lang === 'zh-cn' ? '请输入车架号' : 'Please enter VIN',
|
||
'status' => $lang === 'zh-cn' ? '车辆状态' : 'Status',
|
||
'status_placeholder' => $lang === 'zh-cn' ? '请选择状态' : 'Please select status',
|
||
'purchase_location' => $lang === 'zh-cn' ? '买车地点' : 'Purchase Location',
|
||
'purchase_location_placeholder' => $lang === 'zh-cn' ? '请输入买车地点' : 'Please enter purchase location',
|
||
'procedure_location' => $lang === 'zh-cn' ? '手续办理地' : 'Procedure Location',
|
||
'procedure_location_placeholder' => $lang === 'zh-cn' ? '请输入手续办理地' : 'Please enter procedure location',
|
||
'fbo_location' => 'FBO Location',
|
||
'fbo_location_placeholder' => $lang === 'zh-cn' ? '请选择FBO目的地' : 'Please select FBO location',
|
||
'current_location' => $lang === 'zh-cn' ? '车辆所在地' : 'Current Location',
|
||
'current_location_placeholder' => $lang === 'zh-cn' ? '请选择车辆所在地' : 'Please select current location',
|
||
'final_location' => $lang === 'zh-cn' ? '最终目的地' : 'Final Location',
|
||
'final_location_placeholder' => $lang === 'zh-cn' ? '请选择最终目的地' : 'Please select final location',
|
||
'departure_time' => $lang === 'zh-cn' ? 'FBO发车时间' : 'FBO Departure Time',
|
||
'departure_time_placeholder' => $lang === 'zh-cn' ? '请选择发车时间' : 'Please select departure time',
|
||
'arrival_time' => $lang === 'zh-cn' ? 'FBO到达时间' : 'FBO Arrival Time',
|
||
'arrival_time_placeholder' => $lang === 'zh-cn' ? '请选择到达时间' : 'Please select arrival time',
|
||
'shipping_cycle' => $lang === 'zh-cn' ? '运输周期' : 'Shipping Cycle',
|
||
'shipping_cycle_placeholder' => $lang === 'zh-cn' ? '请输入运输周期' : 'Please enter shipping cycle',
|
||
'img_url' => $lang === 'zh-cn' ? '图片' : 'Image',
|
||
'img_url_placeholder' => $lang === 'zh-cn' ? '请输入图片URL' : 'Please enter image URL',
|
||
'operation' => $lang === 'zh-cn' ? '操作' : 'Operation',
|
||
'refresh' => $lang === 'zh-cn' ? '刷新' : 'Refresh',
|
||
'filter' => $lang === 'zh-cn' ? '筛选' : 'Filter',
|
||
'print' => $lang === 'zh-cn' ? '打印' : 'Print',
|
||
'export' => $lang === 'zh-cn' ? '导出' : 'Export',
|
||
'id' => 'ID',
|
||
'created_at' => $lang === 'zh-cn' ? '创建时间' : 'Created At',
|
||
'updated_at' => $lang === 'zh-cn' ? '更新时间' : 'Updated At'
|
||
];
|
||
|
||
// 合并翻译,确保语言文件中的翻译优先
|
||
$translations = array_merge($required_translations, $translations);
|
||
|
||
|
||
|
||
return view('vehicle/logistics', [
|
||
'lang' => $lang,
|
||
'translations' => $translations
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 插入
|
||
* @param Request $request
|
||
* @return Response
|
||
* @throws BusinessException
|
||
*/
|
||
public function insert(Request $request): Response
|
||
{
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($translations, $common);
|
||
|
||
// 只在中文时使用默认翻译
|
||
if ($lang === 'zh-cn') {
|
||
$required_translations = [
|
||
'brand' => '车辆品牌',
|
||
'brand_placeholder' => '请输入车辆品牌',
|
||
'model' => '车辆型号',
|
||
'model_placeholder' => '请输入车辆型号',
|
||
'vin' => '车架号',
|
||
'vin_placeholder' => '请输入车架号',
|
||
'status' => '车辆状态',
|
||
'status_placeholder' => '请选择状态',
|
||
'purchase_location' => '买车地点',
|
||
'purchase_location_placeholder' => '请输入买车地点',
|
||
'procedure_location' => '手续办理地',
|
||
'procedure_location_placeholder' => '请输入手续办理地',
|
||
'fbo_location' => 'FBO目的地',
|
||
'fbo_location_placeholder' => '请选择FBO目的地',
|
||
'current_location' => '车辆所在地',
|
||
'current_location_placeholder' => '请选择车辆所在地',
|
||
'final_location' => '最终目的地',
|
||
'final_location_placeholder' => '请选择最终目的地',
|
||
'departure_time' => 'FBO发车时间',
|
||
'departure_time_placeholder' => '请选择发车时间',
|
||
'arrival_time' => 'FBO到达时间',
|
||
'arrival_time_placeholder' => '请选择到达时间',
|
||
'shipping_cycle' => '运输周期',
|
||
'shipping_cycle_placeholder' => '请输入运输周期',
|
||
'img_url' => '图片',
|
||
'img_url_placeholder' => '请输入图片URL'
|
||
];
|
||
$translations = array_merge($required_translations, $translations);
|
||
}
|
||
|
||
// 如果是 POST 请求,处理数据保存和翻译
|
||
if ($request->method() === 'POST') {
|
||
$this->save($request);
|
||
}
|
||
|
||
return view('vehicle/insert', [
|
||
'lang' => $lang,
|
||
'translations' => $translations
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 保存
|
||
*/
|
||
public function save(Request $request)
|
||
{
|
||
// 获取表单数据
|
||
$data = $request->all();
|
||
$data['shipping_cycle'] = !empty($data['shipping_cycle'])?$data['shipping_cycle']:0;
|
||
|
||
$lang = session('lang', 'zh-cn');
|
||
list($vehicleModel,$local) = $this->getModel($lang);
|
||
|
||
// 保存主表数据
|
||
if(!empty($data['id'])){
|
||
$vehicle = $vehicleModel::find($data['id']);
|
||
}else{
|
||
$vehicle =$vehicleModel;
|
||
}
|
||
$vehicle->fill($data);
|
||
|
||
$vehicle->save();
|
||
|
||
// 处理多语言翻译
|
||
$languages = ['zh-cn' => 'cn', 'en' => 'en', 'ar' => 'ar', 'ru' => 'ru'];
|
||
$translationModels = [
|
||
'cn' => Vehicle::class,
|
||
'en' => VehicleEn::class,
|
||
'ar' => VehicleAr::class,
|
||
'ru' => VehicleRu::class
|
||
];
|
||
//删除已保存的模型
|
||
unset($translationModels[$lang]);
|
||
unset($languages[$lang]);
|
||
|
||
// 创建翻译服务实例
|
||
$translatorService = new \app\service\TranslatorService();
|
||
|
||
foreach ($languages as $language) {
|
||
$translationModel = $translationModels[$language];
|
||
if(!empty($data['id'])){
|
||
// $vehicle = Vehicle::find($data['id']);
|
||
$translation = $translationModel::find($data['id']);
|
||
}else{
|
||
$translation = new $translationModel();
|
||
}
|
||
|
||
// 复制主表数据
|
||
$translation->fill($data);
|
||
$translation->id = $vehicle->id;
|
||
|
||
// 使用翻译服务处理需要翻译的字段
|
||
log::info('lang:',[$language,$lang]);
|
||
$translatedData = $translatorService->vehicle($data, $language,$lang);
|
||
|
||
// 更新翻译后的字段
|
||
$translation->brand = $translatedData['brand'] ?? $data['brand'];
|
||
$translation->model = $translatedData['model'] ?? $data['model'];
|
||
// $translation->status = $translatedData['status'] ?? $data['status'];
|
||
$translation->purchase_location = $translatedData['purchase_location'] ?? $data['purchase_location'];
|
||
$translation->procedure_location = $translatedData['procedure_location'] ?? $data['procedure_location'];
|
||
// $translation->fbo_destination = $translatedData['fbo_destination'] ?? $data['fbo_destination'];
|
||
|
||
$translation->save();
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 更新
|
||
* @param Request $request
|
||
* @return Response
|
||
* @throws BusinessException
|
||
*/
|
||
public function update(Request $request): Response
|
||
{
|
||
$id = $request->input('id');
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($translations, $common);
|
||
|
||
// 只在中文时使用默认翻译
|
||
if ($lang === 'zh-cn') {
|
||
$required_translations = [
|
||
'brand' => '车辆品牌',
|
||
'brand_placeholder' => '请输入车辆品牌',
|
||
'model' => '车辆型号',
|
||
'model_placeholder' => '请输入车辆型号',
|
||
'vin' => '车架号',
|
||
'vin_placeholder' => '请输入车架号',
|
||
'status' => '车辆状态',
|
||
'status_placeholder' => '请选择状态',
|
||
'purchase_location' => '买车地点',
|
||
'purchase_location_placeholder' => '请输入买车地点',
|
||
'procedure_location' => '手续办理地',
|
||
'procedure_location_placeholder' => '请输入手续办理地',
|
||
'fbo_location' => 'FBO目的地',
|
||
'fbo_location_placeholder' => '请选择FBO目的地',
|
||
'current_location' => '车辆所在地',
|
||
'current_location_placeholder' => '请选择车辆所在地',
|
||
'final_location' => '最终目的地',
|
||
'final_location_placeholder' => '请选择最终目的地',
|
||
'departure_time' => 'FBO发车时间',
|
||
'departure_time_placeholder' => '请选择发车时间',
|
||
'arrival_time' => 'FBO到达时间',
|
||
'arrival_time_placeholder' => '请选择到达时间',
|
||
'shipping_cycle' => '运输周期',
|
||
'shipping_cycle_placeholder' => '请输入运输周期',
|
||
'img_url' => '图片',
|
||
'img_url_placeholder' => '请输入图片URL'
|
||
];
|
||
$translations = array_merge($required_translations, $translations);
|
||
}
|
||
|
||
// 如果是 POST 请求,处理数据保存和翻译
|
||
if ($request->method() === 'POST') {
|
||
$this->save($request);
|
||
}
|
||
|
||
$data = Vehicle::where('id', $id)->first();
|
||
if (!$data) {
|
||
return json(['code' => 1, 'msg' => $translations['data_not_found'] ?? '数据不存在']);
|
||
}
|
||
|
||
return view('vehicle/update', [
|
||
'id' => $id,
|
||
'data' => $data,
|
||
'lang' => $lang,
|
||
'translations' => $translations
|
||
]);
|
||
} /**
|
||
* 更新
|
||
* @param Request $request
|
||
* @return Response
|
||
* @throws BusinessException
|
||
*/
|
||
public function updateLogistics(Request $request): Response
|
||
{
|
||
$id = $request->input('id');
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($translations, $common);
|
||
|
||
// 只在中文时使用默认翻译
|
||
if ($lang === 'zh-cn') {
|
||
$required_translations = [
|
||
'brand' => '车辆品牌',
|
||
'brand_placeholder' => '请输入车辆品牌',
|
||
'model' => '车辆型号',
|
||
'model_placeholder' => '请输入车辆型号',
|
||
'vin' => '车架号',
|
||
'vin_placeholder' => '请输入车架号',
|
||
'status' => '车辆状态',
|
||
'status_placeholder' => '请选择状态',
|
||
'purchase_location' => '买车地点',
|
||
'purchase_location_placeholder' => '请输入买车地点',
|
||
'procedure_location' => '手续办理地',
|
||
'procedure_location_placeholder' => '请输入手续办理地',
|
||
'fbo_location' => 'FBO目的地',
|
||
'fbo_location_placeholder' => '请选择FBO目的地',
|
||
'current_location' => '车辆所在地',
|
||
'current_location_placeholder' => '请选择车辆所在地',
|
||
'final_location' => '最终目的地',
|
||
'final_location_placeholder' => '请选择最终目的地',
|
||
'departure_time' => 'FBO发车时间',
|
||
'departure_time_placeholder' => '请选择发车时间',
|
||
'arrival_time' => 'FBO到达时间',
|
||
'arrival_time_placeholder' => '请选择到达时间',
|
||
'shipping_cycle' => '运输周期',
|
||
'shipping_cycle_placeholder' => '请输入运输周期',
|
||
'img_url' => '图片',
|
||
'img_url_placeholder' => '请输入图片URL'
|
||
];
|
||
$translations = array_merge($required_translations, $translations);
|
||
}
|
||
|
||
// 如果是 POST 请求,处理数据保存和翻译
|
||
if ($request->method() === 'POST') {
|
||
$this->save($request);
|
||
}
|
||
|
||
$data = Vehicle::where('id', $id)->first();
|
||
if (!$data) {
|
||
return json(['code' => 1, 'msg' => $translations['data_not_found'] ?? '数据不存在']);
|
||
}
|
||
|
||
return view('vehicle/updateLogistics', [
|
||
'id' => $id,
|
||
'data' => $data,
|
||
'lang' => $lang,
|
||
'translations' => $translations
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 详情
|
||
* @param Request $request
|
||
* @return Response
|
||
* @throws BusinessException
|
||
*/
|
||
public function detail(Request $request): Response
|
||
{
|
||
$id = $request->input('id');
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($translations, $common);
|
||
|
||
// 只在中文时使用默认翻译
|
||
if ($lang === 'zh-cn') {
|
||
$required_translations = [
|
||
'brand' => '车辆品牌',
|
||
'brand_placeholder' => '请输入车辆品牌',
|
||
'model' => '车辆型号',
|
||
'model_placeholder' => '请输入车辆型号',
|
||
'vin' => '车架号',
|
||
'vin_placeholder' => '请输入车架号',
|
||
'status' => '车辆状态',
|
||
'status_placeholder' => '请选择状态',
|
||
'purchase_location' => '买车地点',
|
||
'purchase_location_placeholder' => '请输入买车地点',
|
||
'procedure_location' => '手续办理地',
|
||
'procedure_location_placeholder' => '请输入手续办理地',
|
||
'fbo_location' => 'FBO目的地',
|
||
'fbo_location_placeholder' => '请选择FBO目的地',
|
||
'current_location' => '车辆所在地',
|
||
'current_location_placeholder' => '请选择车辆所在地',
|
||
'final_location' => '最终目的地',
|
||
'final_location_placeholder' => '请选择最终目的地',
|
||
'departure_time' => 'FBO发车时间',
|
||
'departure_time_placeholder' => '请选择发车时间',
|
||
'arrival_time' => 'FBO到达时间',
|
||
'arrival_time_placeholder' => '请选择到达时间',
|
||
'shipping_cycle' => '运输周期',
|
||
'shipping_cycle_placeholder' => '请输入运输周期',
|
||
'img_url' => '图片',
|
||
'img_url_placeholder' => '请输入图片URL'
|
||
];
|
||
$translations = array_merge($required_translations, $translations);
|
||
}
|
||
|
||
$data = Vehicle::where('id', $id)->first();
|
||
if (!$data) {
|
||
return json(['code' => 1, 'msg' => $translations['data_not_found'] ?? '数据不存在']);
|
||
}
|
||
|
||
return view('vehicle/detail', [
|
||
'data' => $data,
|
||
'lang' => $lang,
|
||
'translations' => $translations
|
||
]);
|
||
}
|
||
|
||
/**
|
||
* 查询后置处理,添加位置信息
|
||
* @param mixed $items
|
||
* @return mixed
|
||
*/
|
||
protected function afterQuery($items)
|
||
{
|
||
$lang = session('lang', 'zh-cn');
|
||
switch ($lang) {
|
||
case 'zh-cn':
|
||
$vehicle = new \app\model\Vehicle();
|
||
$hz = new \app\model\Location();
|
||
break;
|
||
|
||
case 'en':
|
||
$vehicle = new \app\model\VehicleEn();
|
||
$hz = new \app\model\LocationEn();
|
||
break;
|
||
|
||
case 'ru':
|
||
$vehicle = new \app\model\VehicleRu();
|
||
$hz = new \app\model\LocationRu();
|
||
break;
|
||
case 'ar':
|
||
$vehicle = new \app\model\VehicleAr();
|
||
$hz = new \app\model\LocationAr();
|
||
break;
|
||
}
|
||
|
||
foreach ($items as &$item) {
|
||
$item = $vehicle::find($item['id']);
|
||
$location = $hz::find($item->locations_id);
|
||
$item['status_txt'] = $this->status[$lang][$item->status]??$this->status[$lang][0];
|
||
// $item->status = "已到达迪拜仓库";
|
||
$item->location_name = $location ? $location->name : '';
|
||
$final_location = $hz::find($item->final_locations_id);
|
||
// log::info('final_location_name:',[$item->final_locations_id]);
|
||
$item->final_location_name = $final_location ? $final_location->name : '';
|
||
$fbo_location = $hz::find($item->fbo_locations_id);
|
||
$item->fbo_location_name = $fbo_location ? $fbo_location->name : '';
|
||
|
||
$location = $hz::find($item->locations_id);
|
||
$item->location_name = $location ? $location->name : '';
|
||
// $car = $vehicle::find($item->id);
|
||
// $item->status = $car ? $car->status : $item->status;
|
||
// $location = $hz::find($item->final_location_id);
|
||
// $item->final_location_name = $location ? $location->name : '';
|
||
$location = $hz::find($item->fbo_locations_id);
|
||
$item->fbo_location_name = $location ? $location->name : '';
|
||
|
||
if(!str_starts_with($item['img_url'], 'http')){
|
||
try {
|
||
$ossservice = new OssService();
|
||
$img_url = $ossservice->generatePrivateUrl($item['img_url']);
|
||
|
||
// $ossservice = new OssService();
|
||
// $oss_picture = $ossservice->generatePrivateUrl($follow['picture'],86400);
|
||
Log::info("Vehicle image URL generation:", [
|
||
'original_url' => $item['img_url'],
|
||
'generated_url' => $img_url,
|
||
'current_time' => time()
|
||
]);
|
||
$item['img_url'] = $img_url;
|
||
} catch (\Exception $e) {
|
||
Log::error("Vehicle image URL generation failed:", [
|
||
'error' => $e->getMessage(),
|
||
'original_url' => $item['img_url'],
|
||
'error_code' => $e->getCode(),
|
||
'trace' => $e->getTraceAsString()
|
||
]);
|
||
}
|
||
}
|
||
}
|
||
|
||
return $items;
|
||
}
|
||
|
||
|
||
/**
|
||
* @param $lang
|
||
* @return array
|
||
*/
|
||
protected function getModel($lang){
|
||
|
||
switch ($lang) {
|
||
case 'en':
|
||
$vehicle = new \app\model\VehicleEn();
|
||
$hz = new \app\model\LocationEn();
|
||
break;
|
||
|
||
case 'ru':
|
||
$vehicle = new \app\model\VehicleRu();
|
||
$hz = new \app\model\LocationRu();
|
||
break;
|
||
case 'ar':
|
||
$vehicle = new \app\model\VehicleAr();
|
||
$hz = new \app\model\LocationAr();
|
||
break;
|
||
default:
|
||
$vehicle = new \app\model\Vehicle();
|
||
$hz = new \app\model\Location();
|
||
break;
|
||
}
|
||
return array($vehicle, $hz);
|
||
}
|
||
|
||
/**
|
||
* 获取翻译
|
||
* @param Request $request
|
||
* @return Response
|
||
*/
|
||
public function getTranslations(Request $request): Response
|
||
{
|
||
$lang = session('lang', 'zh-cn');
|
||
$translations = (array)require __DIR__ . '/../lang/' . $lang . '/vehicle.php';
|
||
$common = (array)require __DIR__ . '/../lang/' . $lang . '/common.php';
|
||
$translations = array_merge($translations, $common);
|
||
|
||
return json(['code' => 0, 'msg' => 'success', 'data' => $translations]);
|
||
}
|
||
}
|