package com.liquidnet.service.kylin.dto.param;

import com.liquidnet.service.dragon.doc.DragonPaySwaggerDoc;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.List;

@Api(tags = "演出下单", description = "POST /order/pre。微信小程序微信支付见 deviceFrom 与 openId 说明。")
@Data
public class PayOrderParam {
    @ApiModelProperty(value = "演出id")
    @NotNull(message = "演出ID不能为空")
    private String performanceId;
    @ApiModelProperty(value = "场次id")
    @NotNull(message = "场次ID不能为空")
    private String timeId;
    @ApiModelProperty(value = "票种id")
    @NotNull(message = "票种ID不能为空")
    private String ticketId;
    @ApiModelProperty(value = "数量")
    @NotNull(message = "数量不能为空")
    @Min(value = 1,message = "数量不能小于0")
    private Integer number;
    @ApiModelProperty(value = "是否电子票")
    private Integer isElectronic;
    @ApiModelProperty(value = "是否快递票")
    private Integer isExpress;
    @ApiModelProperty(value = "收货地址id")
    private String addressId;
    @ApiModelProperty(value = "入场人id数组")
    private List<String> enterIdList;
    @ApiModelProperty(value = "代理id")
    @NotNull(message = "代理ID不能为空")
    private String agentId;
    @ApiModelProperty(value = "快递类型[0无类型|1寄付|2到付|3包邮]")
    @NotNull(message = "快递方式不能为空")
    private Integer expressType;
    @ApiModelProperty(value = DragonPaySwaggerDoc.PAY_TYPE_VALUE, allowableValues = DragonPaySwaggerDoc.PAY_TYPE_ALLOWABLE, example = "wepay")
    @NotNull(message = "支付类型不能为空")
    private String payType;
    @ApiModelProperty(value = DragonPaySwaggerDoc.DEVICE_FROM_VALUE, allowableValues = DragonPaySwaggerDoc.DEVICE_FROM_ALLOWABLE, example = "applet")
    @NotNull(message = "支付来源不能为空")
    private String deviceFrom;
    @ApiModelProperty(value = DragonPaySwaggerDoc.OPEN_ID_VALUE)
    private String openId;
    @ApiModelProperty(value = "showUrl")
    private String showUrl;
    @ApiModelProperty(value = "returnUrl")
    private String returnUrl;
    @ApiModelProperty(value = "优惠券类型")
    private Integer voucherType;
    @ApiModelProperty(value = "优惠券码")
    private String voucherCode;
    @ApiModelProperty(value = "会员提前券码")
    private String advanceCode;
    @ApiModelProperty(value = "收货地址adCode")
    private String adCode;
    @ApiModelProperty(value = "快递方式productCode")
    private String productCode;
    @ApiModelProperty(value = "入场人地址vo")
    private AddressVo addressesVo;
    @ApiModelProperty(value = "联系方式")
    private String userMobile;
    @ApiModelProperty(value = "粉丝俱乐部来源标识，如DOUDOU之家；与 referrerUserId 同时传才打标")
    private String referrerApp;
    @ApiModelProperty(value = "粉丝俱乐部侧用户id")
    private String referrerUserId;

    @ApiModelProperty(value = "拼团订单ID，加入拼团时传")
    private String groupOrderId;

    @ApiModelProperty(value = "拼团活动ID，发起拼团时传")
    private String groupBuyActivityId;

    @ApiModelProperty(value = "是否公开拼团 1公开 0私密，发起时传，默认1")
    private Integer isPublic;

    @ApiModelProperty(value = "分享token，私密团加入时传")
    private String shareToken;

}
