223 lines
10 KiB
PHP
223 lines
10 KiB
PHP
<?php
|
||
namespace app\common\controller;
|
||
|
||
use app\common\controller\BaseController;
|
||
use app\common\model\BrandSeries;
|
||
use app\common\service\VehModificationService;
|
||
use app\common\traits\crud\CrudControllerTrait;
|
||
use app\common\service\VehVehicleSkuService;
|
||
use support\exception\BusinessException;
|
||
use support\Request;
|
||
|
||
class VehVehicleSkuController extends BaseController
|
||
{
|
||
use CrudControllerTrait;
|
||
|
||
protected $service;
|
||
|
||
public function __construct()
|
||
{
|
||
$this->service = new VehVehicleSkuService();
|
||
}
|
||
|
||
/**
|
||
* 列表页数据格式化
|
||
*
|
||
* @param array $data
|
||
* @return array
|
||
*/
|
||
protected function indexFormat($data)
|
||
{
|
||
if (isset($data['created_at']))
|
||
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
|
||
if (isset($data['updated_at']))
|
||
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
|
||
return $data;
|
||
}
|
||
|
||
protected function showFormat($data)
|
||
{
|
||
if (isset($data['created_at']))
|
||
$data['created_at'] = date('Y-m-d H:i:s', $data['created_at']);
|
||
if (isset($data['updated_at']))
|
||
$data['updated_at'] = date('Y-m-d H:i:s', $data['updated_at']);
|
||
return $data;
|
||
}
|
||
|
||
|
||
public function store(Request $request)
|
||
{
|
||
return $this->error('请优先抓取车辆信息,如抓取不到相应车型请联系管理员,暂停手动录入车辆信息');
|
||
try {
|
||
$data = $this->validate($this->service->getValidator(), $request->post(), 'store');
|
||
$res = $this->service->serviceStore($request, $data);
|
||
return $this->success($res, '创建成功');
|
||
} catch (\PDOException $e) {
|
||
$errorCode = $e->getCode();
|
||
$errorMessage = $e->getMessage();
|
||
if ($errorCode == '23000') {
|
||
if (strpos($errorMessage, "Duplicate entry") !== false && strpos($errorMessage, "uk_fingerprint") !== false) {
|
||
return $this->error("该车辆指纹已存在,请勿重复提交");
|
||
}
|
||
// 其他类型的完整性约束错误
|
||
throw new BusinessException("数据完整性错误", 0, $e);
|
||
}
|
||
// 重新抛出其他类型的异常
|
||
throw $e;
|
||
} catch (\Throwable $e) {
|
||
return $this->error($e->getMessage());
|
||
}
|
||
}
|
||
|
||
public function update(Request $request)
|
||
{
|
||
try {
|
||
$data = $this->validate($this->service->getValidator(), $request->post(), 'update');
|
||
$res = $this->service->serviceUpdate($request, $data);
|
||
return $this->success([], '更新成功');
|
||
} catch (\PDOException $e) {
|
||
$errorCode = $e->getCode();
|
||
$errorMessage = $e->getMessage();
|
||
if ($errorCode == '23000') {
|
||
if (strpos($errorMessage, "Duplicate entry") !== false && strpos($errorMessage, "uk_fingerprint") !== false) {
|
||
return $this->error("该车辆指纹已存在,请勿重复提交");
|
||
}
|
||
// 其他类型的完整性约束错误
|
||
throw new BusinessException("数据完整性错误", 0, $e);
|
||
}
|
||
// 重新抛出其他类型的异常
|
||
throw $e;
|
||
} catch (\Throwable $e) {
|
||
return $this->error($e->getMessage());
|
||
}
|
||
}
|
||
|
||
public function preset(Request $request){
|
||
|
||
|
||
try {
|
||
$series_id = $request->input('series_id');
|
||
$series_code = BrandSeries::where('id', $series_id)->value('series_code');
|
||
$data = [
|
||
'series_code' => $series_code,
|
||
];
|
||
$result = $this->service->getList($data);
|
||
return $this->success($result, '获取车型列表');
|
||
} catch (\Throwable $e) {
|
||
return $this->error($e->getMessage());
|
||
}
|
||
}
|
||
|
||
|
||
public function fields_desc(Request $request)
|
||
{
|
||
$data = [
|
||
'sku_code' , // 'SKU编码,系统生成',
|
||
'fingerprint' , // '规格指纹(sha256)去重',
|
||
'brand_code' , // '品牌代码,如 BYD、HYUNDAI、KIA',
|
||
'brand_name' , // '品牌名称展示,如 比亚迪、现代、起亚',
|
||
'series_code' , // '车系代码,如 ELANTRA、SONGPLUS',
|
||
'series_name' , // '车系名称展示',
|
||
'model_code' , // '车型/配置代码(工厂/内部编码)',
|
||
'model_name' , // '车型/配置名称(可读,如 伊兰特 1.5L、海狮07)',
|
||
'model_year' , // '年款(YYYY)',
|
||
'trim_code' , // '版型代码(TRIM)',
|
||
'trim_level_code' , // '配置等级代码(TRIM_LEVEL)',
|
||
'edition_code' , // '特别版代码(EDITION)',
|
||
'trim' , // '版型/细分配置(如 TOP旗舰版、荣耀版)',
|
||
'trim_level' , // '配置等级(豪华型/旗舰型等,便于筛选)',
|
||
'edition_name' , // '特别版/纪念版(如 荣耀版、致敬版等)',
|
||
'body_type_code' , // '车身类型:SEDAN/SUV/HB/MPV/Pickup',
|
||
'drive_type_code' , // '驱动:FWD/RWD/AWD/4WD',
|
||
'motor_layout_code' , // '电驱/电机布置(MOTOR_LAYOUT):FWD/RWD/AWD/DM-i/DM-p 等',
|
||
'fuel_type_code' , // '能源:GAS/HEV/PHEV/EV/EREV',
|
||
'engine_disp_l' , // '排量(L),如 1.5;纯电为空',
|
||
'engine_turbo' , // '0' COMMENT '是否涡轮(0/1)',
|
||
'engine_power_kw' , // '最大功率(kW)',
|
||
'battery_kwh' , // '电池容量(kWh)',
|
||
'transmission_code' , // '变速箱:MT/AT/CVT/DCT/1SPEED',
|
||
'gears' , // '挡位数(EV多为1)',
|
||
'range_km' , // '续航里程(km)',
|
||
'range_std_code' , // '续航标准:CLTC/WLTP/EPA/NEDC',
|
||
'doors' , // '门数',
|
||
'seats' , // '座位数',
|
||
'weight_kg' , // '整备质量(kg)',
|
||
'dimensions_mm' , // '尺寸(mm):{length,width,height,wheelbase}',
|
||
'color_exterior_code' , // '外观色代码',
|
||
'color_exterior_text' , // '外观色名称',
|
||
'color_interior_code' , // '内饰色代码',
|
||
'color_interior_text' , // '内饰色名称',
|
||
'options_official' , // '官方选装(结构化 JSON)',
|
||
'features' , // '功能/安全/智能配置(结构化 JSON)',
|
||
'emission_std_code' , // '排放标准:CHN6/EURO6/EPA',
|
||
'origin_country' , // '原产国 ISO-3166-1 alpha-2',
|
||
'currency' , // 'CNY' COMMENT '币种 ISO-4217',
|
||
'msrp' , // '建议零售价/参考价',
|
||
'is_active' , // '1' COMMENT '启用(1)/禁用(0)',
|
||
'corp_id' , // '0' COMMENT '租户/公司(全局库可写0)',
|
||
'remark' , // '备注',
|
||
'created_by' , // '0',
|
||
'updated_by' , // '0',
|
||
];
|
||
|
||
|
||
$data = [
|
||
'fingerprint' , // '规格指纹(sha256)去重',
|
||
'brand_name' , // '品牌名称展示,如 比亚迪、现代、起亚',
|
||
'series_name' , // '车系名称展示',
|
||
'model_name' , // '车型/配置名称(可读,如 伊兰特 1.5L、海狮07)',
|
||
'model_year' , // '年款(YYYY)',
|
||
'trim' , // '版型/细分配置(如 TOP旗舰版、荣耀版)',
|
||
'trim_level' , // '配置等级(豪华型/旗舰型等,便于筛选)',
|
||
'edition_name' , // '特别版/纪念版(如 荣耀版、致敬版等)',
|
||
'engine_disp_l' , // '排量(L),如 1.5;纯电为空',
|
||
'engine_turbo' , // '0' COMMENT '是否涡轮(0/1)',
|
||
'engine_power_kw' , // '最大功率(kW)',
|
||
'battery_kwh' , // '电池容量(kWh)',
|
||
'gears' , // '挡位数(EV多为1)',
|
||
'range_km' , // '续航里程(km)',
|
||
'doors' , // '门数',
|
||
'seats' , // '座位数',
|
||
'weight_kg' , // '整备质量(kg)',
|
||
'dimensions_mm' , // '尺寸(mm):{length,width,height,wheelbase}',
|
||
'color_exterior_text' , // '外观色名称',
|
||
'color_interior_text' , // '内饰色名称',
|
||
'options_official' , // '官方选装(结构化 JSON)',
|
||
'features' , // '功能/安全/智能配置(结构化 JSON)',
|
||
'origin_country' , // '原产国 ISO-3166-1 alpha-2',
|
||
'currency' , // 'CNY' COMMENT '币种 ISO-4217',
|
||
'msrp' , // '建议零售价/参考价',
|
||
'is_active' , // '1' COMMENT '启用(1)/禁用(0)',
|
||
'corp_id' , // '0' COMMENT '租户/公司(全局库可写0)',
|
||
'remark' , // '备注',
|
||
'created_by' , // '0',
|
||
'updated_by' , // '0',
|
||
|
||
'body_type', // '车身类型'
|
||
'drive_type', // '驱动:FWD/RWD/AWD/4WD',
|
||
'motor_layout', // '电机布置(MOTOR_LAYOUT):FWD/RWD/AWD/DM-i/DM-p 等'
|
||
'fuel_type', // '能源:GAS/HEV/PHEV/EV/EREV'
|
||
'transmission', // '变速箱:MT/AT/CVT/DCT/1SPEED'
|
||
'range_std', // '续航标准:CLTC/WLTP/EPA/NEDC'
|
||
'emission_std', // '排放标准:CHN6/EURO6/EPA'
|
||
|
||
'sku_code' , // 'SKU编码,系统生成',
|
||
'brand_code' , // '品牌代码,如 BYD、HYUNDAI、KIA',
|
||
'series_code' , // '车系代码,如 ELANTRA、SONGPLUS',
|
||
'model_code' , // '车型/配置代码(工厂/内部编码)',
|
||
'trim_code' , // '版型代码(TRIM)',
|
||
'trim_level_code' , // '配置等级代码(TRIM_LEVEL)',
|
||
'edition_code' , // '特别版代码(EDITION)',
|
||
'color_exterior_code' , // '外观色代码',
|
||
'color_interior_code' , // '内饰色代码',
|
||
|
||
'body_type_code' , // '车身类型:SEDAN/SUV/HB/MPV/Pickup',
|
||
'drive_type_code' , // '驱动:FWD/RWD/AWD/4WD',
|
||
'motor_layout_code' , // '电驱/电机布置(MOTOR_LAYOUT):FWD/RWD/AWD/DM-i/DM-p 等',
|
||
'fuel_type_code' , // '能源:GAS/HEV/PHEV/EV/EREV',
|
||
'transmission_code' , // '变速箱:MT/AT/CVT/DCT/1SPEED',
|
||
'range_std_code' , // '续航标准:CLTC/WLTP/EPA/NEDC',
|
||
'emission_std_code' , // '排放标准:CHN6/EURO6/EPA',
|
||
];
|
||
}
|
||
} |