FreeKit.Holiday
简介
FreeKit.Holiday 是一个节假日管理模块,提供中国节假日数据的同步、查询和管理功能。支持公历、农历节日,以及法定节假日、调休日期等信息的完整管理。
核心功能
- 📅 节假日数据同步
- 🎯 支持公历和农历节日
- 📊 法定节假日标识
- 🔄 调休日期管理
- 📌 工作日/周末识别
- 🌏 中英文日期支持
数据模型
Holiday 实体
public class Holiday
{
// 公历信息
public int year { get; set; } // 公历年份
public int month { get; set; } // 年月
public int date { get; set; } // 年月日
public int yearweek { get; set; } // 年-周
public int yearday { get; set; } // 第几天
// 农历信息
public int lunar_year { get; set; } // 农历-年
public int lunar_month { get; set; } // 农历-月
public int lunar_date { get; set; } // 农历-日
public int lunar_yearday { get; set; } // 农历-年天
// 日期属性
public int week { get; set; } // 第几周
public int weekend { get; set; } // 星期几
public int workday { get; set; } // 工作日
public int holiday { get; set; } // 节假日
// 节假日属性
public int holiday_or { get; set; } // 其他节假日
public int holiday_overtime { get; set; } // 节假日调休
public int holiday_today { get; set; } // 是否为节日当天
public int holiday_legal { get; set; } // 是否为法定节假日
public int holiday_recess { get; set; } // 是否为假期节假日
// 中文描述
public string date_cn { get; set; } // 如:2024年01月01日
public string lunar_date_cn { get; set; } // 如:二零二四年七月廿九
public string holiday_cn { get; set; } // 如:春节、国庆节
}
枚举定义
public enum HolidayLegal
{
LEGA_HOLIDAY = 1, // 法定节假日
NON_LEGA_HOLIDAY = 2 // 非法定节假日
}
public enum HolidayRecess
{
RECESS_HOLIDAY = 1, // 假期节假日
NON_RECESS_HOLIDAY = 2 // 非假期节假日
}
public enum HolidayToday
{
HOLIDAY_TODAY = 1, // 节日当天
NON_HOLIDAY_TODAY = 2 // 非节日当天
}
API 接口
同步节假日数据
public async Task<ApiResponse> SyncHolidayAsync(int beginYear, int endYear)
- 支持指定年份范围
- 自动跳过已同步的年份
- 返回同步结果信息
同步枚举数据
public async Task<int> SyncEnum()
- 同步系统所需的基础枚举数据
- 支持多种枚举类型的批量同步
使用示例
1. 配置服务
services.Configure<HolidayAppOption>(configuration.GetSection("Holiday"));
services.AddScoped<IHolidayManager, HolidayManager>();
2. 同步节假日数据
var result = await holidayManager.SyncHolidayAsync(2024, 2025);
3. 同步枚举数据
await holidayManager.SyncEnum();
技术特点
- 基于 .NET Core 开发
- 使用 FreeSql ORM
- HTTP 客户端工厂模式
- 支持数据自动同步
- 完整的中文信息支持
依赖项
- IGeekFan.FreeKit.Extras
- Microsoft.Extensions.Http
- Microsoft.Extensions.Options
- System.Text.Json
数据来源
数据通过 api.apihubs.cn 提供的 API 服务获取,需要配置相应的 API Key。
配置说明
在 appsettings.json 中配置:
{
"Holiday": {
"ApiKey": "your_api_key"
}
}