跳到主要内容

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"
}
}