418 lines
11 KiB
C#
418 lines
11 KiB
C#
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
|
||
}
|
||
|