Browse Source

模式管理接口优化

master
wanghongjun 4 weeks ago
parent
commit
e587ab8b32
  1. 22
      app/Console/Commands/AutomaticallyStartActivity.php
  2. 19
      app/Http/Controllers/Admin/EventCalendarController.php
  3. 3
      app/Models/EventCalendar.php
  4. 51
      app/Services/EventCalendarService.php
  5. 1
      database/migrations/2026_01_27_084640_create_admin_table.php
  6. 1
      database/migrations/2026_04_23_143449_create_event_calendar_table.php

22
app/Console/Commands/AutomaticallyStartActivity.php

@ -92,20 +92,24 @@ class AutomaticallyStartActivity extends Command
): void { ): void {
$model = EventCalendar::query()->findOrFail($id); $model = EventCalendar::query()->findOrFail($id);
$oldValue = $model->toArray(); $oldValue = $model->toArray();
// 默认超级管理员修改
$user_id = DB::table('admin_users')->where('username', 'Admin')
->value('id');
$model->update([ $model->update([
'status' => $status, 'status' => $status,
'updated_at' => date("Y-m-d H:i:s", time()) 'admin_user_id' => $user_id,
'updated_at' => date("Y-m-d H:i:s", time())
]); ]);
// 记录日志 // 记录日志
$this->logService->logUpdated($model, $oldValue, 'event_calendar.update'); $this->logService->logUpdated(
$model,
$oldValue,
'event_calendar.update'
);
// 记录警报信息, 切换任务 // 记录警报信息, 切换任务
if ($is_notice) { if ($is_notice) {
$data = [ $pattern_id = $oldValue['pattern_id'];
'pattern_id' => $oldValue['pattern_id'] AdminNoticeService::addChangeModeNotice($pattern_id, $user_id);
];
$user_id = DB::table('admin_users')->where('username', 'Admin')
->value('id');
AdminNoticeService::createData(2, 5, $data, $user_id);
} }
} }
} }

19
app/Http/Controllers/Admin/EventCalendarController.php

@ -81,16 +81,25 @@ class EventCalendarController extends BaseController
$statusArr = EventCalendarService::getStatus(); $statusArr = EventCalendarService::getStatus();
$items = $query->latest()->forPage($page, $perPage)->select() $items = $query->latest()->forPage($page, $perPage)->select()
->get()->each(function ($item) use ($statusArr) { ->get()->each(function ($item) use ($statusArr) {
$item['pattern_name'] = ParkingPattern::getName( $pattern = ParkingPattern::query()->find($item['pattern_id']);
$item['pattern_id'] $item['pattern_name'] = '';
); $item['show_release'] = 0;
$item['show_change'] = 0;
if ($pattern) {
$item['pattern_name'] = $pattern['name'];
if ($item['status'] == 1) {
$item['show_release'] = $pattern['release'];
$item['show_change'] = $pattern['change'];
}
}
$item['admin_username'] = AdminUsers::getUsername( $item['admin_username'] = AdminUsers::getUsername(
$item['admin_user_id'] $item['admin_user_id']
); );
$item['status_index'] = $item['status']; $item['status_index'] = $item['status'];
$item['status'] = $statusArr[$item['status']] ?? ''; $item['status'] = $statusArr[$item['status']] ?? '';
$item['remake'] = ''; $item['remake'] = '';
unset($item['pattern_id'], $item['admin_user_id']); unset($item['pattern_id'], $item['admin_user_id'], $item['is_manual']);
return $item; return $item;
}); });
return $this->responseService->success([ return $this->responseService->success([
@ -308,7 +317,7 @@ class EventCalendarController extends BaseController
{ {
try { try {
$this->validateId($id, EventCalendar::class); $this->validateId($id, EventCalendar::class);
$this->service->endModel($id); $this->service->endModel($id, $this->adminUserId);
return $this->responseService->success( return $this->responseService->success(
null, null,
__('exception.event_calendar.end_succeeded') __('exception.event_calendar.end_succeeded')

3
app/Models/EventCalendar.php

@ -18,7 +18,8 @@ class EventCalendar extends Model
'start_time', 'start_time',
'end_time', 'end_time',
'admin_user_id', 'admin_user_id',
'status' 'status',
'is_manual'
]; ];
protected $hidden protected $hidden

51
app/Services/EventCalendarService.php

@ -158,7 +158,7 @@ class EventCalendarService extends BaseService
DB::beginTransaction(); DB::beginTransaction();
$model = EventCalendar::query()->findOrFail($id); $model = EventCalendar::query()->findOrFail($id);
if ($model['status'] > 0) { if ($model['status'] == 1) {
throw new Exception(__('service.event_calendar.error_status')); throw new Exception(__('service.event_calendar.error_status'));
} }
@ -174,7 +174,7 @@ class EventCalendarService extends BaseService
} }
} }
public function endModel(int $id): bool public function endModel(int $id, $user_id): bool
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
@ -185,6 +185,7 @@ class EventCalendarService extends BaseService
} }
$update = [ $update = [
'status' => 2, 'status' => 2,
'admin_user_id' => $user_id,
'updated_at' => get_datetime() 'updated_at' => get_datetime()
]; ];
$model->update($update); $model->update($update);
@ -209,18 +210,47 @@ class EventCalendarService extends BaseService
$pattern_id = $data['pattern_id']; $pattern_id = $data['pattern_id'];
$end_time = $data['end_time']; $end_time = $data['end_time'];
// 将其他模式未结束,在运行中的全部结束
$nowWhere = [
['status', '=', 1],
['pattern_id', '<>', $pattern_id]
];
$nowQuery = EventCalendar::query()->where($nowWhere)->first();
if ($nowQuery) {
$model = EventCalendar::query()->findOrFail($nowQuery['id']);
$nowSave = [
'status' => 2,
'updated_at' => get_datetime(),
'admin_user_id' => $user_id
];
$oldValues = $model->toArray();
// 小于还未到结束时间,自动跳转计划中
if ($oldValues['end_time']) {
if (time() < strtotime($oldValues['end_time'])) {
$nowSave['status'] = 0;
}
}
$model->update($nowSave);
$this->logService->logUpdated(
$model,
$oldValues,
'event_calendar.update'
);
}
$where = [ $where = [
'pattern_id' => $pattern_id, ['pattern_id', '=', $pattern_id],
'status' => 1 ['status', 'in', [0,1]]
]; ];
$query = EventCalendar::query()->where($where)->first(); $query = EventCalendar::query()->where($where)->first();
$end_time = get_datetime('datetime', strtotime($end_time));
$save = [ $save = [
'pattern_id' => $pattern_id, 'pattern_id' => $pattern_id,
'start_time' => get_datetime(), 'end_time' => $end_time,
'end_time' => get_datetime('datetime', strtotime($end_time)), 'status' => 1,
'status' => 1, 'admin_user_id' => $user_id,
'admin_user_id' => $user_id 'is_manual' => 1
]; ];
if ($query) { if ($query) {
@ -234,6 +264,7 @@ class EventCalendarService extends BaseService
'event_calendar.update' 'event_calendar.update'
); );
} else { } else {
$save['start_time'] = get_datetime();
$save['created_at'] = get_datetime(); $save['created_at'] = get_datetime();
$model = EventCalendar::query()->create($save); $model = EventCalendar::query()->create($save);
$this->logService->logCreated($model, 'event_calendar.create'); $this->logService->logCreated($model, 'event_calendar.create');
@ -255,7 +286,7 @@ class EventCalendarService extends BaseService
$pattern_id = EventCalendar::query()->where('status', 1)->first(['pattern_id']); $pattern_id = EventCalendar::query()->where('status', 1)->first(['pattern_id']);
$columns = ['id as pattern_id', 'name as model_name']; $columns = ['id as pattern_id', 'name as model_name'];
if ($pattern_id) { if ($pattern_id) {
$data = ParkingPattern::query()->findOrFail($pattern_id, $columns)->toArray(); $data = ParkingPattern::query()->find($pattern_id, $columns)->toArray();
} else { } else {
$data = ParkingPattern::query()->where('is_default', 1)->first($columns); $data = ParkingPattern::query()->where('is_default', 1)->first($columns);
} }

1
database/migrations/2026_01_27_084640_create_admin_table.php

@ -58,6 +58,7 @@ return new class extends Migration
$table->string('title', 50)->comment('菜单标题'); $table->string('title', 50)->comment('菜单标题');
$table->string('icon', 50)->comment('菜单图标'); $table->string('icon', 50)->comment('菜单图标');
$table->string('uri')->nullable()->comment('链接地址'); $table->string('uri')->nullable()->comment('链接地址');
$table->string('page_uri')->nullable()->comment('页面链接地址');
$table->string('show')->default(1)->comment('是否显示 0否 1是'); $table->string('show')->default(1)->comment('是否显示 0否 1是');
$table->tinyInteger('status')->default(1)->comment('状态 0禁用 1启用'); $table->tinyInteger('status')->default(1)->comment('状态 0禁用 1启用');
$table->timestamps(); $table->timestamps();

1
database/migrations/2026_04_23_143449_create_event_calendar_table.php

@ -18,6 +18,7 @@ return new class extends Migration
$table->timestamp('end_time')->comment('结束时间'); $table->timestamp('end_time')->comment('结束时间');
$table->integer('admin_user_id')->comment('操作员'); $table->integer('admin_user_id')->comment('操作员');
$table->tinyInteger('status')->default(0)->comment('状态 0计划中 1运行中 2已结束 3已停用'); $table->tinyInteger('status')->default(0)->comment('状态 0计划中 1运行中 2已结束 3已停用');
$table->tinyInteger('is_manual')->default(0)->comment('是否手动操作');
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
$table->innoDb(); $table->innoDb();

Loading…
Cancel
Save