package com.xmomen.module.plan.model;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import com.xmomen.module.plan.entity.TbTablePlan;

import lombok.Data;

/**
 * CreateTablePlan 类用于封装创建餐桌计划所需的信息，实现了 Serializable 接口，
 * 使得该类的实例可以在网络传输（如远程方法调用）或持久化存储（如保存到文件或数据库）中使用。
 * 该类使用 Lombok 的 @Data 注解，自动生成了 getter、setter、toString、equals 和 hashCode 等方法，
 * 简化了代码的编写，提高了开发效率。
 */
@Data
public class CreateTablePlan implements Serializable {

    /**
     * 餐桌计划的唯一标识，用于关联具体的餐桌计划。
     * 在业务中，可能通过这个 ID 来查找对应的餐桌计划的详细信息，
     * 或者与其他相关实体（如订单、会员等）进行关联操作。
     */
    private Integer cdPlanId;

    /**
     * 审核状态，取值为 0 表示未审核，1 表示审核通过。
     * 用于记录餐桌计划在创建后的审核情况，例如在提交给管理人员审核后，
     * 可以根据这个状态来判断该计划是否可以继续执行后续的操作（如生成订单等）。
     */
    private Integer auditStatus;

    /**
     * 是否暂停的标识，0 表示不暂停，1 表示暂停。
     * 当餐桌计划需要临时停止执行（例如由于客户要求或其他特殊原因）时，
     * 可以通过设置这个标识来暂停计划的推进，如暂停配送等操作。
     */
    private Integer isStop;

    /**
     * 会员的唯一标识，用于关联相关会员信息。
     * 通过这个 ID 可以获取到与该餐桌计划相关的会员的详细信息，
     * 如会员的个人信息、购买记录等，以便更好地管理和服务会员。
     */
    private Integer cdMemberId;

    /**
     * 会员卡的卡号，用于识别会员的卡片。
     * 在一些业务场景中，可能会根据卡号来验证会员的身份，
     * 或者关联会员的优惠信息、积分信息等。
     */
    private String couponNumber;

    /**
     * 收货人的手机号码，用于联系收货人。
     * 当进行餐桌计划的配送等操作时，需要通过这个手机号码与收货人取得联系，
     * 以确认收货时间、地点等信息。
     */
    private String consigneePhone;

    /**
     * 收货人的姓名，用于确认收货人员。
     * 在配送货物时，通过核对收货人姓名来确保货物送达给正确的人员。
     */
    private String consigneeName;

    /**
     * 收货人的地址，用于确定货物的送达地点。
     * 这是货物配送的关键信息，确保货物能够准确无误地送到指定的地址。
     */
    private String consigneeAddress;

    /**
     * 包含多个餐桌计划标识的列表，可用于批量操作或关联多个餐桌计划。
     * 例如，在进行批量创建餐桌计划或对多个相关的餐桌计划进行统一管理时，
     * 可以使用这个列表来存储和操作这些计划的 ID。
     */
    private List<Integer> cdPlanIds;

    /**
     * 包含多个 TbTablePlan 实体的列表，可用于批量创建或关联多个餐桌计划实体。
     * 当需要一次性创建多个餐桌计划时，可以将这些计划的实体对象存储在这个列表中，
     * 然后进行统一的处理和保存到数据库等操作。
     */
    private List<TbTablePlan> tablePlans;
}