Browse Source

车位属性翻译

master
wanghongjun 3 weeks ago
parent
commit
4d0a309b09
  1. 20
      app/Http/Controllers/Admin/ParkingSpaceAttributesController.php
  2. 9
      app/Http/Controllers/Admin/ParkingSpaceTypeController.php
  3. 33
      app/Services/AdminTranslationService.php
  4. 19
      app/Services/ParkingSpaceAttributesService.php
  5. 33
      app/Services/ParkingSpaceTypeService.php

20
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) {

9
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,

33
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

19
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) {

33
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) {

Loading…
Cancel
Save