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

556 lines
14 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 AutoMapper;
using CoreCms.Net.Model.Entities;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace CoreCms.Net.Model.ViewModels.SQ
{
[AutoMap(typeof(SQReservations))]
public class SQReservationsDto : SQReservations
{
public List<SQReservationParticipantsDto> Participants { get; set; }
}
[AutoMap(typeof(SQReservations))]
public class SQReservationsApiDto : SQReservationsBaseDto
{
/// <summary>
/// 所属角色 0 参与者 1 发起者
/// </summary>
public int Role { get; set; }
/// <summary>
/// 是否 赴约 0 默认1赴约2未赴约
/// </summary>
public int is_arrive { get; set; }
}
/// <summary>
///
/// </summary>
[AutoMap(typeof(SQReservations))]
public class SQReservationsMyDto : SQReservationsBaseDto
{
/// <summary>
///
/// </summary>
public int pid { get; set; }
/// <summary>
/// 加入时间
/// </summary>
public System.DateTime join_time { get; set; }
/// <summary>
/// 退出时间
/// </summary>
public System.DateTime? quit_time { get; set; }
/// <summary>
/// 状态0正常1已退出
/// </summary>
[Display(Name = "状态0正常1已退出")]
[Required(ErrorMessage = "请输入{0}")]
public System.Int32 pstatus { get; set; }
}
/// <summary>
/// 基类
/// </summary>
public class SQReservationsBaseDto : SQReservations
{
/// <summary>
/// 参与人员
/// </summary>
public List<SQReservationParticipantsApiDto> Participants { get; set; }
}
public class SQReservationsAddDto : SQReservations
{
/// <summary>
/// 最晚到店时间
/// </summary>
public long? LatestDateTime { get; set; }
/// <summary>
/// 开始时间
/// </summary>
[Display(Name = "开始时间")]
[Required(ErrorMessage = "请输入{0}")]
public new long start_time { get; set; }
/// <summary>
/// 结束时间
/// </summary>
[Display(Name = "结束时间")]
[Required(ErrorMessage = "请输入{0}")]
public new long end_time { get; set; }
/// <summary>
/// 预约ID
/// </summary>
public new System.Int32 id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public new System.DateTime created_at { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public new System.DateTime updated_at { get; set; }
/// <summary>
/// 备注
/// </summary>
[Display(Name = "备注")]
[StringLength(maximumLength: 255, ErrorMessage = "{0}不能超过{1}字")]
public new System.String remarks { get; set; }
/// <summary>
/// 重要信息
/// </summary>
public string important_data { get; set; }
}
public class SQReservationParticipantsAddDto
{
/// <summary>
/// 预约ID
/// </summary>
public new System.Int32 ReservationsId { get; set; }
/// <summary>
/// 重要信息
/// </summary>
public string important_data { get; set; }
}
/// <summary>
/// 取消预约DTO
/// </summary>
public class SQReservationCancelDto
{
/// <summary>
/// 预约ID
/// </summary>
[Required(ErrorMessage = "请输入预约ID")]
public int reservation_id { get; set; }
/// <summary>
/// 取消原因
/// </summary>
[StringLength(maximumLength: 255, ErrorMessage = "取消原因不能超过{1}字")]
public string cancel_reason { get; set; }
}
/// <summary>
/// 签到参与人项(不包含发起者)
/// </summary>
public class SQReservationCheckInAttendeeDto
{
/// <summary>
/// 用户ID
/// </summary>
public int user_id { get; set; }
/// <summary>
/// 是否出席true=赴约false=未赴约)
/// </summary>
public bool isAttended { get; set; }
}
/// <summary>
/// 预约签到 DTO仅发起者可调用
/// </summary>
public class SQReservationCheckInDto
{
[Required(ErrorMessage = "请输入预约ID")]
public int reservation_id { get; set; }
public List<SQReservationCheckInAttendeeDto> attendeds { get; set; }
}
public class SQPaymentRecordDto
{
/// <summary>
/// 预约标题
/// </summary>
public string title { get; set; }
/// <summary>
/// 订单号
/// </summary>
public string paymentId { get; set; }
/// <summary>
/// 订单状态 1. 待支付 2. 已支付 3. 待退款 4. 已退款
/// </summary>
public int is_refund { get; set; }
/// <summary>
/// 加入时间
/// </summary>
public DateTime? join_time { get; set; }
/// <summary>
/// 预约状态 0 正常 1已退出
/// </summary>
public int status { get; set; }
/// <summary>
/// 订单状态 文字 如:待支付,已支付等
/// </summary>
public string is_refund_text { get; set; }
}
#region DTO
/// <summary>
/// 按时段创建预约请求DTO
/// </summary>
public class SQReservationsAddBySlotDto
{
/// <summary>
/// 房间ID
/// </summary>
[Required(ErrorMessage = "请选择房间")]
public int room_id { get; set; }
/// <summary>
/// 预约日期Unix时间戳-秒级)
/// </summary>
[Required(ErrorMessage = "请选择预约日期")]
public long date { get; set; }
/// <summary>
/// 时段类型0=凌晨1=上午2=下午3=晚上
/// </summary>
[Required(ErrorMessage = "请选择预约时段")]
[Range(0, 3, ErrorMessage = "时段类型必须在0-3之间")]
public int time_slot_type { get; set; }
/// <summary>
/// 最晚到店时间Unix时间戳-秒级)
/// </summary>
public long? latest_arrival_time { get; set; }
/// <summary>
/// 是否为"无需组局"模式
/// </summary>
public bool is_solo_mode { get; set; }
/// <summary>
/// 人数is_solo_mode=true时固定为1
/// </summary>
[Required(ErrorMessage = "请输入人数")]
[Range(1, 20, ErrorMessage = "人数必须在1-20之间")]
public int player_count { get; set; }
/// <summary>
/// 鸽子费保证金0-50整数
/// </summary>
[Range(0, 50, ErrorMessage = "鸽子费必须在0-50元之间")]
public int deposit_fee { get; set; }
/// <summary>
/// 组局名称
/// </summary>
[Required(ErrorMessage = "请输入组局名称")]
[StringLength(100, ErrorMessage = "组局名称不能超过100字")]
public string title { get; set; }
/// <summary>
/// 玩法类型(如:补克)
/// </summary>
[Required(ErrorMessage = "请选择玩法类型")]
[StringLength(50, ErrorMessage = "玩法类型不能超过50字")]
public string game_type { get; set; }
/// <summary>
/// 具体规则(如:斗地主)
/// </summary>
[StringLength(50, ErrorMessage = "具体规则不能超过50字")]
public string game_rule { get; set; }
/// <summary>
/// 其他补充
/// </summary>
[StringLength(255, ErrorMessage = "其他补充不能超过255字")]
public string extra_info { get; set; }
/// <summary>
/// 是否禁烟0=不限制1=禁烟2=不禁烟
/// </summary>
public int is_smoking { get; set; }
/// <summary>
/// 性别限制0=不限1=男2=女
/// </summary>
public int gender_limit { get; set; }
/// <summary>
/// 最低信誉分
/// </summary>
public decimal? credit_limit { get; set; }
/// <summary>
/// 最小年龄限制
/// </summary>
public int? min_age { get; set; }
/// <summary>
/// 最大年龄限制0=不限
/// </summary>
public int? max_age { get; set; }
/// <summary>
/// 重要数据(支付相关)
/// </summary>
public string important_data { get; set; }
}
/// <summary>
/// 时段信息DTO
/// </summary>
public class SQTimeSlotDto
{
/// <summary>
/// 时段类型0=凌晨1=上午2=下午3=晚上
/// </summary>
public int slot_type { get; set; }
/// <summary>
/// 时段名称
/// </summary>
public string slot_name { get; set; }
/// <summary>
/// 时段状态available=可预约, reserved=已预约, unavailable=不可用, using=使用中
/// </summary>
public string status { 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>
/// 不可用类型当status为unavailable时有效1=禁用/维护2=后台预约3=线下预约
/// </summary>
public int? unavailable_type { get; set; }
/// <summary>
/// 该时段内的预约列表(仅详情接口返回)
/// </summary>
public List<SQTimeSlotReservationDto> reservations { get; set; }
public SQTimeSlotDto()
{
reservations = new List<SQTimeSlotReservationDto>();
}
}
/// <summary>
/// 时段内的预约信息DTO
/// </summary>
public class SQTimeSlotReservationDto
{
/// <summary>
/// 预约ID
/// </summary>
public int reservation_id { get; set; }
/// <summary>
/// 开始时间格式yyyy-MM-dd HH:mm:ss
/// </summary>
public string start_time { get; set; }
/// <summary>
/// 结束时间格式yyyy-MM-dd HH:mm:ss
/// </summary>
public string end_time { get; set; }
/// <summary>
/// 预约状态0=待开始1=进行中2=已结束3=已取消
/// </summary>
public int status { get; set; }
/// <summary>
/// 组局名称
/// </summary>
public string title { get; set; }
/// <summary>
/// 玩法类型
/// </summary>
public string game_type { get; set; }
}
/// <summary>
/// 可选日期信息DTO
/// </summary>
public class SQAvailableDateDto
{
/// <summary>
/// 日期Unix时间戳-秒级)
/// </summary>
public long date { get; set; }
/// <summary>
/// 日期文本(今天、明天、后天、日期)
/// </summary>
public string dateText { get; set; }
/// <summary>
/// 日期展示12月06日 周五)
/// </summary>
public string dateDisplay { get; set; }
}
#endregion
#region DTO
/// <summary>
/// 鸽子费审核列表项 DTO
/// </summary>
public class PigeonFeeAuditListDto
{
/// <summary>
/// 参与者ID
/// </summary>
public int participant_id { get; set; }
/// <summary>
/// 预约ID
/// </summary>
public int reservation_id { get; set; }
/// <summary>
/// 预约标题
/// </summary>
public string reservation_title { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public int user_id { get; set; }
/// <summary>
/// 用户昵称
/// </summary>
public string nick_name { get; set; }
/// <summary>
/// 手机号
/// </summary>
public string mobile { get; set; }
/// <summary>
/// 鸽子费金额
/// </summary>
public decimal deposit_fee { get; set; }
/// <summary>
/// 预约开始时间
/// </summary>
public DateTime start_time { get; set; }
/// <summary>
/// 预约结束时间
/// </summary>
public DateTime end_time { get; set; }
/// <summary>
/// 标记时间(发起者签到时间)
/// </summary>
public DateTime? mark_time { get; set; }
/// <summary>
/// 赴约状态0=未处理1=已赴约2=未赴约待审核3=未赴约已审核
/// </summary>
public int is_arrive { get; set; }
/// <summary>
/// 房间名称
/// </summary>
public string room_name { get; set; }
}
/// <summary>
/// 鸽子费审核请求 DTO
/// </summary>
public class PigeonFeeAuditRequestDto
{
/// <summary>
/// 参与者ID
/// </summary>
[Required(ErrorMessage = "请输入参与者ID")]
public int participant_id { get; set; }
/// <summary>
/// 预约ID
/// </summary>
[Required(ErrorMessage = "请输入预约ID")]
public int reservation_id { get; set; }
/// <summary>
/// 原因(审核未通过时使用)
/// </summary>
[StringLength(255, ErrorMessage = "原因不能超过255字")]
public string reason { get; set; }
}
#endregion
}