package cn.freemud.entities.dto.order;

import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@Builder
public class CreateOrderDto {

    /**
     * 商户ID 必填
     */
    private String companyId;
    /**
     * 门店ID
     */
    private String shopId;
    /**
     * 门店名称
     */
    private String shopName;
    /**
     * 用户ID
     */
    private String userId;
    /**
     * 用户名称
     */
    private String userName;
    /**
     * 用户电话
     */
    private String phone;
    /**
     * 收货地址 非必填
     */
    private String address;
    /**
     * 收货地址经度 非必填
     */
    private String longitude;
    /**
     * 收获地址维度  非必填
     */
    private String latitude;
    /**
     * 订单类型  1 外卖 2.预订单 3.商城 4 自提
     */
    private Integer oldOrderType;
    /**
     * 订单状态
     */
    private Integer status;
    /**
     * 支付类型
     */
    private Integer oldPayType;
    /**
     * 订单来源
     */
    private String source;
    /**
     * 订单来源名称
     */
    private String sourceName;
    /**
     * 期望送达时间
     */
    private Long gmtExpect;

    /**
     * 订单备注
     */
    private String remark;

    /**
     * 实付金额
     */
    private Long amount;

    /**
     * 吧台桌号
     */
    private String barCounter;

    /**
     * form_id  用于金额是0的情况 现在只支持商品券,前端参数
     */
    private String formId;

    private Integer orderClient;

    /**
     * 商品列表
     */
    List<CreateOrderProductDto> products;
    /**
     * 其他结算列表
     */
    List<CreateOrderAccountDto> accounts;


    private DeliveryTypeInfo addInfo;

    public Boolean needPay() {
        return amount > 0;
    }

    @Data
    @NoArgsConstructor
    public static class DeliveryTypeInfo{
        /**
         * 订单类型，自配送self，第三方配送third
         */
        private String deliveryType;

        public DeliveryTypeInfo(String deliveryType) {
            this.deliveryType = deliveryType;
        }
    }
}
