mahjong_group/server/CoreCms.Net.Model/ViewModels/SQ/SQAdminDto.cs
2026-01-01 14:35:52 +08:00

418 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using CoreCms.Net.Model.Entities;
namespace CoreCms.Net.Model.ViewModels.SQ
{
#region DTO
/// <summary>
/// 设置房间价格DTO
/// </summary>
public class SetRoomPricingDto
{
/// <summary>
/// 房间ID
/// </summary>
[Required(ErrorMessage = "请选择房间")]
public int room_id { get; set; }
/// <summary>
/// 时段类型0=凌晨1=上午2=下午3=晚上
/// </summary>
[Required(ErrorMessage = "请选择时段")]
[Range(0, 3, ErrorMessage = "时段类型必须在0-3之间")]
public int time_slot_type { get; set; }
/// <summary>
/// 标准价格
/// </summary>
[Required(ErrorMessage = "请输入标准价格")]
[Range(0, 99999, ErrorMessage = "标准价格必须大于0")]
public decimal standard_price { get; set; }
/// <summary>
/// 会员价格
/// </summary>
[Required(ErrorMessage = "请输入会员价格")]
[Range(0, 99999, ErrorMessage = "会员价格必须大于0")]
public decimal member_price { get; set; }
/// <summary>
/// 标准价格说明
/// </summary>
[StringLength(100, ErrorMessage = "标准价格说明不能超过100字")]
public string price_desc_standard { get; set; }
/// <summary>
/// 会员价格说明
/// </summary>
[StringLength(100, ErrorMessage = "会员价格说明不能超过100字")]
public string price_desc_member { get; set; }
/// <summary>
/// 生效开始日期null表示长期有效
/// </summary>
public DateTime? effective_date_start { get; set; }
/// <summary>
/// 生效结束日期
/// </summary>
public DateTime? effective_date_end { get; set; }
}
/// <summary>
/// 批量设置房间价格DTO
/// </summary>
public class BatchSetRoomPricingDto
{
/// <summary>
/// 房间ID列表
/// </summary>
[Required(ErrorMessage = "请选择房间")]
public List<int> room_ids { get; set; }
/// <summary>
/// 时段类型0=凌晨1=上午2=下午3=晚上
/// </summary>
[Required(ErrorMessage = "请选择时段")]
[Range(0, 3, ErrorMessage = "时段类型必须在0-3之间")]
public int time_slot_type { get; set; }
/// <summary>
/// 标准价格
/// </summary>
[Required(ErrorMessage = "请输入标准价格")]
public decimal standard_price { get; set; }
/// <summary>
/// 会员价格
/// </summary>
[Required(ErrorMessage = "请输入会员价格")]
public decimal member_price { get; set; }
/// <summary>
/// 标准价格说明
/// </summary>
[StringLength(100, ErrorMessage = "标准价格说明不能超过100字")]
public string price_desc_standard { get; set; }
/// <summary>
/// 会员价格说明
/// </summary>
[StringLength(100, ErrorMessage = "会员价格说明不能超过100字")]
public string price_desc_member { get; set; }
/// <summary>
/// 生效开始日期
/// </summary>
public DateTime? effective_date_start { get; set; }
/// <summary>
/// 生效结束日期
/// </summary>
public DateTime? effective_date_end { get; set; }
}
/// <summary>
/// 设置房间不可用时段DTO
/// </summary>
public class SetRoomUnavailableDto
{
/// <summary>
/// 房间ID
/// </summary>
[Required(ErrorMessage = "请选择房间")]
public int room_id { get; set; }
/// <summary>
/// 日期Unix时间戳-秒级,用于按时段设置)
/// </summary>
public long? date { get; set; }
/// <summary>
/// 时段类型0=凌晨1=上午2=下午3=晚上与date配合使用
/// </summary>
[Range(0, 3, ErrorMessage = "时段类型必须在0-3之间")]
public int? time_slot_type { get; set; }
/// <summary>
/// 精确开始时间Unix时间戳-秒级,用于精确时间设置)
/// </summary>
public long? start_time { get; set; }
/// <summary>
/// 精确结束时间Unix时间戳-秒级,用于精确时间设置)
/// </summary>
public long? end_time { get; set; }
/// <summary>
/// 不可用原因
/// </summary>
[Required(ErrorMessage = "请输入不可用原因")]
[StringLength(255, ErrorMessage = "原因不能超过255字")]
public string reason { get; set; }
/// <summary>
/// 创建人ID
/// </summary>
public int? created_by { get; set; }
}
/// <summary>
/// 房间完整配置DTO
/// </summary>
public class RoomConfigDto
{
/// <summary>
/// 房间基础信息
/// </summary>
public SQRooms room { get; set; }
/// <summary>
/// 价格配置列表4个时段
/// </summary>
public List<SQRoomPricing> pricing { get; set; }
/// <summary>
/// 不可用时段列表
/// </summary>
public List<SQRoomUnavailableTimes> unavailable_times { get; set; }
}
/// <summary>
/// 房间价格配置DTO
/// </summary>
public class SQRoomPricingDto
{
/// <summary>
/// 配置ID
/// </summary>
public int id { get; set; }
/// <summary>
/// 房间ID
/// </summary>
public int room_id { get; set; }
/// <summary>
/// 时段类型
/// </summary>
public int time_slot_type { get; set; }
/// <summary>
/// 时段名称
/// </summary>
public string time_slot_name { get; set; }
/// <summary>
/// 标准价格
/// </summary>
public decimal standard_price { get; set; }
/// <summary>
/// 会员价格
/// </summary>
public decimal member_price { get; set; }
/// <summary>
/// 标准价格说明
/// </summary>
public string price_desc_standard { get; set; }
/// <summary>
/// 会员价格说明
/// </summary>
public string price_desc_member { get; set; }
/// <summary>
/// 生效开始日期
/// </summary>
public DateTime? effective_date_start { get; set; }
/// <summary>
/// 生效结束日期
/// </summary>
public DateTime? effective_date_end { get; set; }
/// <summary>
/// 是否启用
/// </summary>
public bool is_active { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime created_at { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime updated_at { get; set; }
}
/// <summary>
/// 节假日定价DTO
/// </summary>
public class SetHolidayPricingDto
{
/// <summary>
/// 房间ID列表空表示所有房间
/// </summary>
public List<int> room_ids { get; set; }
/// <summary>
/// 节假日名称
/// </summary>
[Required(ErrorMessage = "请输入节假日名称")]
[StringLength(50, ErrorMessage = "节假日名称不能超过50字")]
public string holiday_name { get; set; }
/// <summary>
/// 开始日期
/// </summary>
[Required(ErrorMessage = "请选择开始日期")]
public DateTime start_date { get; set; }
/// <summary>
/// 结束日期
/// </summary>
[Required(ErrorMessage = "请选择结束日期")]
public DateTime end_date { get; set; }
/// <summary>
/// 时段价格配置
/// </summary>
[Required(ErrorMessage = "请配置价格")]
public List<HolidaySlotPriceDto> slot_prices { get; set; }
}
/// <summary>
/// 节假日时段价格配置
/// </summary>
public class HolidaySlotPriceDto
{
/// <summary>
/// 时段类型
/// </summary>
public int time_slot_type { get; set; }
/// <summary>
/// 标准价格
/// </summary>
public decimal standard_price { get; set; }
/// <summary>
/// 会员价格
/// </summary>
public decimal member_price { get; set; }
}
/// <summary>
/// 预约统计DTO
/// </summary>
public class ReservationStatisticsDto
{
/// <summary>
/// 统计开始日期
/// </summary>
public DateTime start_date { get; set; }
/// <summary>
/// 统计结束日期
/// </summary>
public DateTime end_date { get; set; }
/// <summary>
/// 总预约数
/// </summary>
public int total_reservations { get; set; }
/// <summary>
/// 完成预约数
/// </summary>
public int completed_reservations { get; set; }
/// <summary>
/// 取消预约数
/// </summary>
public int cancelled_reservations { get; set; }
/// <summary>
/// 总收入
/// </summary>
public decimal total_revenue { get; set; }
/// <summary>
/// 各房间预约统计
/// </summary>
public List<RoomReservationStatDto> room_stats { get; set; }
/// <summary>
/// 各时段预约统计
/// </summary>
public List<TimeSlotStatDto> time_slot_stats { get; set; }
}
/// <summary>
/// 房间预约统计
/// </summary>
public class RoomReservationStatDto
{
/// <summary>
/// 房间ID
/// </summary>
public int room_id { get; set; }
/// <summary>
/// 房间名称
/// </summary>
public string room_name { get; set; }
/// <summary>
/// 预约次数
/// </summary>
public int reservation_count { get; set; }
/// <summary>
/// 完成次数
/// </summary>
public int completed_count { get; set; }
/// <summary>
/// 收入
/// </summary>
public decimal revenue { get; set; }
}
/// <summary>
/// 时段预约统计
/// </summary>
public class TimeSlotStatDto
{
/// <summary>
/// 时段类型
/// </summary>
public int time_slot_type { get; set; }
/// <summary>
/// 时段名称
/// </summary>
public string time_slot_name { get; set; }
/// <summary>
/// 预约次数
/// </summary>
public int reservation_count { get; set; }
/// <summary>
/// 收入
/// </summary>
public decimal revenue { get; set; }
}
#endregion
}