Browse Source

楼层管理优化

master
wanghongjun 2 weeks ago
parent
commit
1fa43ba7ee
  1. 4
      app/Http/Controllers/Admin/ParkingManagementController.php
  2. 10
      app/Models/AdminFloor.php
  3. 47
      app/Services/AdminFloorService.php
  4. 15
      app/Services/ParkingManagementService.php
  5. 17
      app/common.php
  6. 2
      database/migrations/2026_02_10_173627_create_admin_floor_table.php

4
app/Http/Controllers/Admin/ParkingManagementController.php

@ -48,12 +48,12 @@ class ParkingManagementController extends BaseController
1 1
); );
$item['name'] = $tr_name ?: $item['name']; $item['name'] = $tr_name ?: $item['name'];
$open_time_res = $this->service->optionTime( $open_time_res = option_time(
$item['open_time'] $item['open_time']
); );
$item['open_time'] = $open_time_res['time']; $item['open_time'] = $open_time_res['time'];
$item['open_time_str'] = $open_time_res['str']; $item['open_time_str'] = $open_time_res['str'];
$close_time_res = $this->service->optionTime( $close_time_res = option_time(
$item['close_time'] $item['close_time']
); );
$item['close_time'] = $close_time_res['time']; $item['close_time'] = $close_time_res['time'];

10
app/Models/AdminFloor.php

@ -17,16 +17,22 @@ class AdminFloor extends Model
= [ = [
'name', 'name',
'image_url', 'image_url',
'building_floor' 'building_floor',
'open_time',
'close_time'
]; ];
protected $hidden protected $hidden
= [ = [
'updated_at', 'updated_at',
'created_at',
'deleted_at' 'deleted_at'
]; ];
public function getCreatedAtAttribute($value): string
{
return $value ? date("Y-m-d H:i:s", strtotime($value)) : $value;
}
public static function getName($id) public static function getName($id)
{ {
return self::query()->where('id', $id)->value('name') ?? ''; return self::query()->where('id', $id)->value('name') ?? '';

47
app/Services/AdminFloorService.php

@ -12,6 +12,20 @@ class AdminFloorService
{ {
private static array $buildingFloor = [1 => 'MSCP', 2 => 'GSCP']; private static array $buildingFloor = [1 => 'MSCP', 2 => 'GSCP'];
private static array $statusArr = ['disabled', 'enable'];
/**
* @return array|string[]
*/
public static function getStatus(): array
{
$statusArr = self::$statusArr;
foreach ($statusArr as $key => $value) {
$statusArr[$key] = __('admin.' . $value);
}
return $statusArr;
}
/** /**
* @var OperationLogService * @var OperationLogService
*/ */
@ -36,7 +50,6 @@ class AdminFloorService
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
$region_data = $data['region_data'] ?? [];
if (AdminFloor::query()->where('name', $data['name'])->exists()) { if (AdminFloor::query()->where('name', $data['name'])->exists()) {
throw new Exception(__('service.admin_floor.name_exists')); throw new Exception(__('service.admin_floor.name_exists'));
@ -45,15 +58,21 @@ class AdminFloorService
$model = AdminFloor::query()->create([ $model = AdminFloor::query()->create([
'name' => $data['name'], 'name' => $data['name'],
'image_url' => $data['image_url'], 'image_url' => $data['image_url'],
'open_time' => $data['open_time'],
'close_time' => $data['close_time'],
'building_floor' => $data['building_floor'] ?? 1, 'building_floor' => $data['building_floor'] ?? 1,
'created_at' => get_datetime() 'created_at' => get_datetime()
]); ]);
$this->logService->logCreated($model, 'admin_floor.create'); $this->logService->logCreated($model, 'admin_floor.create');
if ($region_data) { AdminTranslationService::saveTranslation(
$this->addAdminFloorRegion($model->id, $region_data); $data['name'],
} $data['en_name'] ?? '',
$data['tw_name'] ?? '',
$model->id,
4
);
DB::commit(); DB::commit();
return $model; return $model;
@ -97,7 +116,6 @@ class AdminFloorService
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
$region_data = $data['region_data'] ?? [];
// 验证 // 验证
$existsWhere = [ $existsWhere = [
@ -115,20 +133,21 @@ class AdminFloorService
$model->update([ $model->update([
'name' => $data['name'], 'name' => $data['name'],
'image_url' => $data['image_url'], 'image_url' => $data['image_url'],
'open_time' => $data['open_time'],
'close_time' => $data['close_time'],
'building_floor' => $data['building_floor'] ?? 1, 'building_floor' => $data['building_floor'] ?? 1,
'updated_at' => get_datetime() 'updated_at' => get_datetime()
]); ]);
$this->logService->logUpdated($model, $oldValues, 'admin_floor.update'); $this->logService->logUpdated($model, $oldValues, 'admin_floor.update');
// 删除再创建关联 AdminTranslationService::saveTranslation(
$nameArr = array_column($region_data, 'name'); $data['name'],
if (AdminFloorRegion::existsRoleMenu($id, $nameArr)) { $data['en_name'] ?? '',
$this->delAdminFloorRegion($id); $data['tw_name'] ?? '',
if ($region_data) { $id,
$this->addAdminFloorRegion($id, $region_data); 4
} );
}
DB::commit(); DB::commit();
return $model; return $model;
@ -166,8 +185,6 @@ class AdminFloorService
$model->delete(); $model->delete();
$this->delAdminFloorRegion($id);
DB::commit(); DB::commit();
return true; return true;
} catch (Exception $e) { } catch (Exception $e) {

15
app/Services/ParkingManagementService.php

@ -133,19 +133,4 @@ class ParkingManagementService extends BaseService
} }
return $count; return $count;
} }
public function optionTime($time): array
{
$str = 'AM';
$end_str = 'PM';
$arr = explode(':', $time);
if ($arr[0] > 12) {
$time = ($arr[0] - 12) . ':' . $arr[1];
$str = $end_str;
}
return [
'time' => $time,
'str' => $str
];
}
} }

17
app/common.php

@ -182,3 +182,20 @@ if (!function_exists('get_year_month_days')) {
return $dayArr; return $dayArr;
} }
} }
if (!function_exists('option_time')) {
function option_time($time): array
{
$str = 'AM';
$end_str = 'PM';
$arr = explode(':', $time);
if ($arr[0] > 12) {
$time = ($arr[0] - 12) . ':' . $arr[1];
$str = $end_str;
}
return [
'time' => $time,
'str' => $str
];
}
}

2
database/migrations/2026_02_10_173627_create_admin_floor_table.php

@ -17,6 +17,8 @@ return new class extends Migration
$table->string('image_url')->comment('图片路径'); $table->string('image_url')->comment('图片路径');
$table->integer('building_floor')->default(1)->comment('所属楼'); $table->integer('building_floor')->default(1)->comment('所属楼');
$table->tinyInteger('status')->default(1)->comment('状态'); $table->tinyInteger('status')->default(1)->comment('状态');
$table->char('open_time', 5)->comment('开门时间');
$table->char('close_time', 5)->comment('关门时间');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
$table->innoDb(); $table->innoDb();

Loading…
Cancel
Save