You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.9 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
require __DIR__.'/vendor/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
use Illuminate\Support\Facades\DB;
/**
* 2026年法定节假日 - 国务院办公厅官方安排
* type=1 法定假日(休息), type=2 调休上班
*/
$holidays = [
// 一、元旦1月1日-3日放假1月4日(周日)上班
['date'=>'2026-01-01','type'=>1,'name'=>'元旦'],
['date'=>'2026-01-02','type'=>1,'name'=>'元旦'],
['date'=>'2026-01-03','type'=>1,'name'=>'元旦'],
['date'=>'2026-01-04','type'=>2,'name'=>'元旦调休上班'],
// 二、春节2月15日-23日放假2月14日(周六)、2月28日(周六)上班
['date'=>'2026-02-14','type'=>2,'name'=>'春节调休上班'],
['date'=>'2026-02-15','type'=>1,'name'=>'春节'],
['date'=>'2026-02-16','type'=>1,'name'=>'春节'],
['date'=>'2026-02-17','type'=>1,'name'=>'春节'],
['date'=>'2026-02-18','type'=>1,'name'=>'春节'],
['date'=>'2026-02-19','type'=>1,'name'=>'春节'],
['date'=>'2026-02-20','type'=>1,'name'=>'春节'],
['date'=>'2026-02-21','type'=>1,'name'=>'春节'],
['date'=>'2026-02-22','type'=>1,'name'=>'春节'],
['date'=>'2026-02-23','type'=>1,'name'=>'春节'],
['date'=>'2026-02-28','type'=>2,'name'=>'春节调休上班'],
// 三、清明节4月4日-6日放假
['date'=>'2026-04-04','type'=>1,'name'=>'清明节'],
['date'=>'2026-04-05','type'=>1,'name'=>'清明节'],
['date'=>'2026-04-06','type'=>1,'name'=>'清明节'],
// 四、劳动节5月1日-5日放假5月9日(周六)上班
['date'=>'2026-05-01','type'=>1,'name'=>'劳动节'],
['date'=>'2026-05-02','type'=>1,'name'=>'劳动节'],
['date'=>'2026-05-03','type'=>1,'name'=>'劳动节'],
['date'=>'2026-05-04','type'=>1,'name'=>'劳动节'],
['date'=>'2026-05-05','type'=>1,'name'=>'劳动节'],
['date'=>'2026-05-09','type'=>2,'name'=>'劳动节调休上班'],
// 五、端午节6月19日-21日放假
['date'=>'2026-06-19','type'=>1,'name'=>'端午节'],
['date'=>'2026-06-20','type'=>1,'name'=>'端午节'],
['date'=>'2026-06-21','type'=>1,'name'=>'端午节'],
// 六、中秋节9月25日-27日放假
['date'=>'2026-09-25','type'=>1,'name'=>'中秋节'],
['date'=>'2026-09-26','type'=>1,'name'=>'中秋节'],
['date'=>'2026-09-27','type'=>1,'name'=>'中秋节'],
// 七、国庆节10月1日-7日放假9月20日(周日)、10月10日(周六)上班
['date'=>'2026-09-20','type'=>2,'name'=>'国庆节调休上班'],
['date'=>'2026-10-01','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-02','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-03','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-04','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-05','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-06','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-07','type'=>1,'name'=>'国庆节'],
['date'=>'2026-10-10','type'=>2,'name'=>'国庆节调休上班'],
];
DB::beginTransaction();
$count = 0;
foreach ($holidays as $h) {
$exists = DB::table('holiday')->where('date', $h['date'])->where('deleted', 0)->first();
if ($exists) {
DB::table('holiday')->where('id', $exists->id)->update([
'type' => $h['type'],
'name' => $h['name'],
'updated_at' => now(),
]);
echo " UPDATED: {$h['date']} {$h['name']} type={$h['type']}\n";
} else {
DB::table('holiday')->insert([
'date' => $h['date'],
'type' => $h['type'],
'name' => $h['name'],
'status' => 1,
'deleted' => 0,
'created_at' => now(),
'updated_at' => now(),
]);
echo " INSERTED: {$h['date']} {$h['name']} type={$h['type']}\n";
}
$count++;
}
DB::commit();
$holidayCount = DB::table('holiday')->where('deleted', 0)->where('type', 1)->whereYear('date', 2026)->count();
$workdayCount = DB::table('holiday')->where('deleted', 0)->where('type', 2)->whereYear('date', 2026)->count();
echo "\nDone! Total: {$count} records.\n";
echo " Legal holidays (type=1): {$holidayCount} days\n";
echo " Makeup workdays (type=2): {$workdayCount} days\n";