logService = $logService; $this->logService->menuTitle = 'translation'; } /** * @param array $data * @throws Exception */ public function createModel(array $data) { try { DB::beginTransaction(); DB::commit(); $save_data = [ 'en' => $data['en'], 'zh_cn' => $data['zh_cn'], 'zh_tw' => $data['zh_tw'] ]; if (AdminTranslation::query()->where($save_data)->exists()) { throw new Exception( __('service.admin_translation.data_exists') ); } $save_data['created_at'] = get_datetime(); $model = AdminTranslation::query()->create($save_data); $this->logService->logCreated($model, 'translation.create'); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } // 添加,编辑翻译 public function saveData($cn, $en, $tw, $type_id, $type) { $save_data = [ 'en' => $en, 'zh_cn' => $cn, 'zh_tw' => $tw, 'type_id' => $type_id, 'type' => $type ]; $where = [ 'type_id' => $type_id, 'type' => $type ]; $res = AdminTranslation::query()->where($where)->first(); if ($res) { if ($save_data['en'] != $res['en'] || $save_data['zh_cn'] != $res['zh_cn'] || $save_data['zh_tw'] != $res['zh_tw'] ) { $save_data['updated_at'] = get_datetime(); $model = AdminTranslation::query()->findOrFail($res['id']); $oldValues = $model->toArray(); $model->update($save_data); $this->logService->logUpdated( $model, $oldValues, 'translation.update' ); }; return $res['id']; } else { $save_data['created_at'] = get_datetime(); $model = AdminTranslation::query()->create($save_data); $this->logService->logCreated($model, 'translation.create'); return $model->id; } } // 保存翻译 public static function saveTranslation($cn, $en, $tw, $type_id, $type) { // 创建翻译管理 return (new AdminTranslationService( new OperationLogService() ))->saveData($cn, $en, $tw, $type_id, $type); } //获取翻译 type: 1 车位类型、2 车位属性 public static function getTranslation($type_id, $type) { $columns = ['id', 'en', 'zh_cn', 'zh_tw']; $where = [ 'type_id' => $type_id, 'type' => $type ]; return AdminTranslation::query()->where($where)->first( $columns); } // 返回当前翻译 public static function getTranslationName($type_id, $type, $is_cn = false) { $data = self::getTranslation($type_id, $type); if ($data) { $locale = App::getLocale(); if ($locale == 'zh-TW') { return $data['zh_tw']; } else if ($locale == 'en') { return $data['en']; } return $is_cn ? $data['zh_cn'] : ''; } return ''; } // 同步删除翻译 public static function syncDelete($type_id, $type) { $data = self::getTranslation($type_id, $type); if ($data) { $model = AdminTranslation::query()->findOrFail($data['id']); $model->delete(); (new AdminTranslationService( new OperationLogService() ))->logService->logDeleted($model, 'translation.delete'); } } /** * @param array $data * @param int $id * @throws Exception */ public function updateModel(array $data, int $id) { try { DB::beginTransaction(); DB::commit(); $update_data = [ 'en' => $data['en'], 'zh_cn' => $data['zh_cn'], 'zh_tw' => $data['zh_tw'] ]; if (AdminTranslation::query()->where($update_data)->where( 'id', '<>', $id )->exists() ) { throw new Exception( __('service.admin_translation.data_exists') ); } $model = AdminTranslation::query()->findOrFail($id); $oldValues = $model->toArray(); $update_data['updated_at'] = get_datetime(); $model->update($update_data); $this->logService->logUpdated($model, $oldValues, 'translation.update'); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param int $id * @return bool * @throws Exception */ public function deleteModel(int $id): bool { try { DB::beginTransaction(); $model = AdminTranslation::query()->findOrFail($id); $this->logService->logDeleted($model, 'translation.delete'); $model->delete(); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } /* * 返回翻译类型内容 翻译type 说明 1 车位类型 2 车位属性 3 停车场 4 楼层管理 5 区域管理 6 通道管理 7 岗亭管理 8 离场原因 9 设备管理 10 模式管理 100 - 199 告警信息 */ public static function getTranslationTypeName($type_id, $type, $name) { $tr_name = self::getTranslationName($type_id, $type); return $tr_name ?: $name; } }