package com.younike.hlpay.dto;

import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单传参
 */
public class OrderParam implements Serializable {

    /**
     * 用户ID
     */
    private Long memberId;

    /**
     * 服务人员ID
     */
    private Long serverId;

    /**
     * 商户ID
     */
    private Long merchantId;

    /**
     * 商户名
     */
    private String merchantName;

    /**
     * 服务地址id
     */
    private Long addressId;

    /**
     * 商品id
     */
    private Long goodsId;

    /**
     * 订单商品数量
     */
    private Integer goodsCounts;

    /**
     * 产品金币
     */
    /** 商品金币（冗余） */
    private Long goodsCoin;
    /**
     * 预约起始时间
     */
    private LocalDateTime appointmentStartTime;

    /**
     * 预约结束时间
     */
    private LocalDateTime appointmentEndTime;

    /**
     * 是否已结算
     */
    private Integer isSettle;

    /**
     * 订单金额
     */
    private BigDecimal orderAmount;

    /**
     * 优金豆抵扣
     */
    private Integer beanAmount;

    /**
     * 用户优惠券ID
     */
    private String memberCouponId;

    /**
     * 优惠金额
     */
    private BigDecimal couponAmount;

    /**
     * 实付总价
     */
    private BigDecimal totalAmount;


    /**
     * 支付方式 code 001微信 002支付宝
     */
    private String payWay;

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

    /**
     * 订单类型 001家政 002维修
     */
    private String orderType;

    /**
     * 商品单价
     */
    private BigDecimal price;

    /**
     * 单次服务标准时长
     */
    private BigDecimal singleTime;

    /**
     * 扣除积分手机号
     */
    private String phone;

    /**
     * 订单id
     */
    private Long orderId;

    /**
     * 追加服务金额
     */
    private BigDecimal addAmount;

    /**
     * 追加服务付款方式
     */
    private String addPayWay;

    /**
     * 追加服务数量
     */
    private Integer addCounts;

    @ApiModelProperty("P4:支付类型（小程序：APPLET；公众号：PUBLIC；SDK：SDK预下单）")
    private String payType;
    /**
     * 用户登录凭证
     *
     * 开发者需要在开发者服务器后台调用 auth.code2Session，使用 code 换取 openid、unionid、session_key 等信息
     */
    private String code;

    /**
     * 一般商家（需合利宝账号分账）001
     * 个人租入商家（不需要分账） 002
     *
     */
    private String bizType;


    public void setBizType(String bizType) {
        this.bizType = bizType;
    }

    public String getBizType() {
        return bizType;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public Long getServerId() {
        return serverId;
    }

    public void setServerId(Long serverId) {
        this.serverId = serverId;
    }

    public Long getMerchantId() {
        return merchantId;
    }

    public void setMerchantId(Long merchantId) {
        this.merchantId = merchantId;
    }

    public String getMerchantName() {
        return merchantName;
    }

    public void setMerchantName(String merchantName) {
        this.merchantName = merchantName;
    }

    public Long getAddressId() {
        return addressId;
    }

    public void setAddressId(Long addressId) {
        this.addressId = addressId;
    }

    public Long getGoodsId() {
        return goodsId;
    }

    public void setGoodsId(Long goodsId) {
        this.goodsId = goodsId;
    }

    public Integer getGoodsCounts() {
        return goodsCounts;
    }

    public void setGoodsCounts(Integer goodsCounts) {
        this.goodsCounts = goodsCounts;
    }

    public Long getGoodsCoin() {
        return goodsCoin;
    }

    public void setGoodsCoin(Long goodsCoin) {
        this.goodsCoin = goodsCoin;
    }

    public LocalDateTime getAppointmentStartTime() {
        return appointmentStartTime;
    }

    public void setAppointmentStartTime(LocalDateTime appointmentStartTime) {
        this.appointmentStartTime = appointmentStartTime;
    }

    public LocalDateTime getAppointmentEndTime() {
        return appointmentEndTime;
    }

    public void setAppointmentEndTime(LocalDateTime appointmentEndTime) {
        this.appointmentEndTime = appointmentEndTime;
    }

    public Integer getIsSettle() {
        return isSettle;
    }

    public void setIsSettle(Integer isSettle) {
        this.isSettle = isSettle;
    }

    public BigDecimal getOrderAmount() {
        return orderAmount;
    }

    public void setOrderAmount(BigDecimal orderAmount) {
        this.orderAmount = orderAmount;
    }

    public Integer getBeanAmount() {
        return beanAmount;
    }

    public void setBeanAmount(Integer beanAmount) {
        this.beanAmount = beanAmount;
    }

    public String getMemberCouponId() {
        return memberCouponId;
    }

    public void setMemberCouponId(String memberCouponId) {
        this.memberCouponId = memberCouponId;
    }

    public BigDecimal getCouponAmount() {
        return couponAmount;
    }

    public void setCouponAmount(BigDecimal couponAmount) {
        this.couponAmount = couponAmount;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public String getPayWay() {
        return payWay;
    }

    public void setPayWay(String payWay) {
        this.payWay = payWay;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public String getOrderType() {
        return orderType;
    }

    public void setOrderType(String orderType) {
        this.orderType = orderType;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getSingleTime() {
        return singleTime;
    }

    public void setSingleTime(BigDecimal singleTime) {
        this.singleTime = singleTime;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public BigDecimal getAddAmount() {
        return addAmount;
    }

    public void setAddAmount(BigDecimal addAmount) {
        this.addAmount = addAmount;
    }

    public String getAddPayWay() {
        return addPayWay;
    }

    public void setAddPayWay(String addPayWay) {
        this.addPayWay = addPayWay;
    }

    public Integer getAddCounts() {
        return addCounts;
    }

    public void setAddCounts(Integer addCounts) {
        this.addCounts = addCounts;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }
}
