validator; } // 枚举 private const MAPS = [ 'BODY' => [ 'SEDAN' => '三厢轿车', 'SUV'=>'SUV', 'HB'=>'两厢/掀背', 'MPV'=>'MPV', 'PICKUP'=>'皮卡' ], 'DRIVE' => [ 'FWD'=>'前驱', 'RWD'=>'后驱', 'AWD'=>'四驱(AWD)', '4WD'=>'四驱(4WD)' ], 'MOTOR_LAYOUT' => [ 'FWD'=>'前置单电机', 'RWD'=>'后置单电机', 'AWD'=>'双电机四驱', 'DM-I'=>'DM-i', 'DM-P'=>'DM-p' ], 'FUEL' => [ 'GAS'=>'汽油', 'HEV'=>'油电混动', 'PHEV'=>'插电混动', 'EV'=>'纯电', 'EREV'=>'增程' ], 'TRANS' => [ 'MT'=>'手动', 'AT'=>'自动', 'CVT'=>'无级', 'DCT'=>'双离合', '1SPEED'=>'单速' ], 'RANGE_STD' => [ 'CLTC'=>'CLTC', 'WLTP'=>'WLTP', 'EPA'=>'EPA', 'NEDC'=>'NEDC' ], 'EMISSION' => [ 'CHN6'=>'国六', 'EURO6'=>'欧6', 'EPA'=>'美国EPA' ], ]; // *_code取中文 public function label(string $dict, ?string $code): ?string { if ($code === null || $code === '') return null; $dict = strtoupper($dict); $code = strtoupper($code); return self::MAPS[$dict][$code] ?? $code; } // 静态映射把 *_code → 中文 private function backfill(array $d): array { $d['body_type'] = $this->label('BODY', $d['body_type_code']); $d['drive_type'] = $this->label('DRIVE', $d['drive_type_code']); $d['motor_layout'] = $this->label('MOTOR_LAYOUT', $d['motor_layout_code']); $d['fuel_type'] = $this->label('FUEL', $d['fuel_type_code']); $d['transmission'] = $this->label('TRANS', $d['transmission_code']); $d['range_std'] = $this->label('RANGE_STD', $d['range_std_code']); $d['emission_std'] = $this->label('EMISSION', $d['emission_std_code']); return $d; } protected function buildQueryConfig(Request $request, string $scene = 'default'): array { $p = $request->all(); $config = []; $config['model'] = $this->modelClass; switch ($scene) { case 'default': $config['where']['is_active'] = 1; $config['order']['id'] = 'desc'; break; case 'index': $config['where']['is_active'] = 1; $config['order']['id'] = 'desc'; break; case 'show': $config['where']['id'] = $p['id']; $config['where']['is_active'] = 1; break; case 'store': break; case 'update': $config['where']['id'] = $p['id']; break; case 'destroy': $config['where']['id'] = $p['id']; break; } return $config; } public function beforeServiceStore($data, Request $request) { // $data = $this->backfill($data); if (empty($data['model_code'])) { $data['model_code'] = ModelNaming::buildModelCode($data); } if (empty($data['model_name'])) { $data['model_name'] = ModelNaming::buildModelName($data); } $data['sku_code'] = SkuCodeBuilder::build($data); $data['corp_id'] = 0; $data['created_by'] = $request->user->uid; $data['updated_by'] = $request->user->uid; // 指纹 $data['fingerprint'] = Fingerprint::makeFromArray($data); return $data; } protected function afterServiceStore($res) { return $res; } public function beforeServiceUpdate($data, Request $request) { // $data = $this->backfill($data); if (empty($data['model_code'])) { $data['model_code'] = ModelNaming::buildModelCode($data); } if (empty($data['model_name'])) { $data['model_name'] = ModelNaming::buildModelName($data); } // 填充系统字段 $data['updated_by'] = $request->user->uid; // 指纹 $data['fingerprint'] = Fingerprint::makeFromArray($data); return $data; } protected function afterServiceUpdate($res) { return $res; } }