From 4d0a309b09995d3240fb5adb3a0346acc746017b Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq.com> Date: Wed, 27 May 2026 14:09:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E4=BD=8D=E5=B1=9E=E6=80=A7=E7=BF=BB?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ParkingSpaceAttributesController.php | 20 +++++++++-- .../Admin/ParkingSpaceTypeController.php | 9 ++++- app/Services/AdminTranslationService.php | 33 +++++++++++++++++-- .../ParkingSpaceAttributesService.php | 19 +++++++++++ app/Services/ParkingSpaceTypeService.php | 33 ++++++++++--------- 5 files changed, 92 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/Admin/ParkingSpaceAttributesController.php b/app/Http/Controllers/Admin/ParkingSpaceAttributesController.php index ebd7b9a..6e0c417 100644 --- a/app/Http/Controllers/Admin/ParkingSpaceAttributesController.php +++ b/app/Http/Controllers/Admin/ParkingSpaceAttributesController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Admin; -use App\Exceptions\CustomException; use App\Models\ParkingSpaceAttributes; +use App\Services\AdminTranslationService; use App\Services\ApiResponseService; use App\Services\ParkingSpaceAttributesService; use Exception; @@ -11,7 +11,6 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\ValidationException; -use Psr\SimpleCache\InvalidArgumentException; class ParkingSpaceAttributesController extends BaseController { @@ -47,7 +46,16 @@ class ParkingSpaceAttributesController extends BaseController $perPage = $request->input('per_page', 10); $query->orderBy('id'); $total = $query->count(); - $items = $query->latest()->forPage($page, $perPage)->get(); + $items = $query->latest()->forPage($page, $perPage)->get()->each( + function ($item) { + $tr_name = AdminTranslationService::getTranslationName( + $item['id'], + 2 + ); + $item['attributes'] = $tr_name ?: $item['attributes']; + return $item; + } + ); return $this->responseService->success([ 'items' => $items, @@ -133,6 +141,12 @@ class ParkingSpaceAttributesController extends BaseController ->toArray(); foreach ($data as &$item) { $item['import_diagram_url'] = get_image_url($item['import_diagram']); + $Translation = AdminTranslationService::getTranslation( + $item['id'], + 2 + ); + $item['en_attributes'] = $Translation['en'] ?? ''; + $item['tw_attributes'] = $Translation['zh_tw'] ?? ''; } return $this->responseService->success($data); } catch (Exception $e) { diff --git a/app/Http/Controllers/Admin/ParkingSpaceTypeController.php b/app/Http/Controllers/Admin/ParkingSpaceTypeController.php index 6f3b2b7..f1368b0 100644 --- a/app/Http/Controllers/Admin/ParkingSpaceTypeController.php +++ b/app/Http/Controllers/Admin/ParkingSpaceTypeController.php @@ -53,7 +53,14 @@ class ParkingSpaceTypeController extends BaseController $query->orderBy('id'); $items = $query->latest()->forPage($page, $perPage)->select( ['id', 'name'] - )->get(); + )->get()->each(function ($item) { + $tr_name = AdminTranslationService::getTranslationName( + $item['id'], + 1 + ); + $item['name'] = $tr_name ?: $item['name']; + return $item; + }); return $this->responseService->success([ 'items' => $items, diff --git a/app/Services/AdminTranslationService.php b/app/Services/AdminTranslationService.php index 3e5f7b4..09b5d97 100644 --- a/app/Services/AdminTranslationService.php +++ b/app/Services/AdminTranslationService.php @@ -4,8 +4,7 @@ namespace App\Services; use App\Models\AdminTranslation; use Exception; -use Illuminate\Database\Eloquent\Builder; -use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\DB; class AdminTranslationService @@ -108,7 +107,7 @@ class AdminTranslationService //获取翻译 type: 1 车位类型、2 车位属性 public static function getTranslation($type_id, $type) { - $columns = ['en', 'zh_cn', 'zh_tw']; + $columns = ['id', 'en', 'zh_cn', 'zh_tw']; $where = [ 'type_id' => $type_id, 'type' => $type @@ -116,6 +115,34 @@ class AdminTranslationService 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']); + (new AdminTranslationService( + new OperationLogService() + ))->logService->logDeleted($model, 'translation.delete'); + } + } + /** * @param array $data * @param int $id diff --git a/app/Services/ParkingSpaceAttributesService.php b/app/Services/ParkingSpaceAttributesService.php index 99ebaf4..2ab390b 100644 --- a/app/Services/ParkingSpaceAttributesService.php +++ b/app/Services/ParkingSpaceAttributesService.php @@ -54,6 +54,8 @@ class ParkingSpaceAttributesService $this->logService->logCreated($model, 'space_attributes.create'); + $this->saveTranslation($model->id, $data); + DB::commit(); return $model; } catch (Exception $e) { @@ -62,6 +64,19 @@ class ParkingSpaceAttributesService } } + protected function saveTranslation($id, $data) + { + $en_attributes = $data['en_attributes'] ?? ''; + $tw_attributes = $data['tw_attributes'] ?? ''; + AdminTranslationService::saveTranslation( + $data['attributes'], + $en_attributes, + $tw_attributes, + $id, + 2 + ); + } + /** * @param array $data @@ -98,6 +113,8 @@ class ParkingSpaceAttributesService $this->logService->logUpdated($model, $oldValues, 'space_attributes.update'); + $this->saveTranslation($id, $data); + DB::commit(); return $model; } catch (Exception $e) { @@ -125,6 +142,8 @@ class ParkingSpaceAttributesService $model->delete(); + AdminTranslationService::syncDelete($id, 2); + DB::commit(); return true; } catch (Exception $e) { diff --git a/app/Services/ParkingSpaceTypeService.php b/app/Services/ParkingSpaceTypeService.php index 56c5d3c..d23026e 100644 --- a/app/Services/ParkingSpaceTypeService.php +++ b/app/Services/ParkingSpaceTypeService.php @@ -99,13 +99,7 @@ class ParkingSpaceTypeService ))->createBatchData($model->id, $attributes); } - AdminTranslationService::saveTranslation( - $data['name'], - $data['en_name'], - $data['tw_name'], - $model->id, - 1 - ); + $this->saveTranslation($model->id, $data); DB::commit(); return $model; @@ -145,6 +139,19 @@ class ParkingSpaceTypeService return $saveData; } + protected function saveTranslation($id, $data) + { + $en_name = $data['en_name'] ?? ''; + $tw_name = $data['tw_name'] ?? ''; + AdminTranslationService::saveTranslation( + $data['name'], + $en_name, + $tw_name, + $id, + 1 + ); + } + /** * @param array $data * @param int $id @@ -173,14 +180,6 @@ class ParkingSpaceTypeService $attributes = $saveData['attributes']; unset($saveData['attributes']); // 保存翻译 - $saveData['translation_id'] - = AdminTranslationService::saveTranslation( - $data['name'], - $data['en_name'], - $data['tw_name'], - $id, - 1 - ); $model->update($saveData); @@ -194,6 +193,8 @@ class ParkingSpaceTypeService $TypeAttrService->createBatchData($id, $attributes); } + $this->saveTranslation($id, $data); + DB::commit(); return $model; } catch (Exception $e) { @@ -228,6 +229,8 @@ class ParkingSpaceTypeService $model->delete(); + AdminTranslationService::syncDelete($id, 1); + DB::commit(); return true; } catch (Exception $e) {