package com.yuchen.saas.manage.user.api.request.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

@Data
public class UserVehicleEnableFunctionDTO {
    /**
     * 主键ID
     */
    @ApiModelProperty(name = "id", value = "主键ID")
    @NotNull(message = "主键ID不能为空")
    private Long id;

    /**
     * 车牌号
     */
    @ApiModelProperty(value = "车牌号")
    @NotBlank(message = "车牌号不能为空")
    private String plateNo;

    /**
     * 是否可代缴(0:否 1:是)
     */
    @ApiModelProperty(name = "isReplacePay", value = "是否可代缴(0:否 1:是)")
    @NotNull(message = "isReplacePay不能为空")
    private Integer isReplacePay;

    /**
     * 是否开通「个人钱包账户」无感支付(0:否 1:是)
     */
    @ApiModelProperty(name = "isOpenWalletPay", value = "是否开通「个人钱包账户」无感支付(0:否 1:是)")
    @NotNull(message = "isOpenWalletPay不能为空")
    private Integer isOpenWalletPay;

    /**
     * 「个人钱包账户」无感支付优先级(值越小,优先级越高)
     */
    @ApiModelProperty(name = "walletPayPriority", value = "「个人钱包账户」无感支付优先级(值越小,优先级越高)")
    @NotNull(message = "walletPayPriority不能为空")
    private Integer walletPayPriority;

    /**
     * 是否开通「微信支付分|先享后付」(0:否 1:是)
     */
    @ApiModelProperty(name = "isOpenWechatPointsPay", value = "是否开通「微信支付分|先享后付」(0:否 1:是)")
    @NotNull(message = "isOpenWechatPointsPay不能为空")
    private Integer isOpenWechatPointsPay;

    /**
     * 「微信支付分|先享后付」无感支付优先级(值越小,优先级越高)
     */
    @ApiModelProperty(name = "wechatPointsPayPriority", value = "「微信支付分|先享后付」无感支付优先级(值越小,优先级越高)")
    @NotNull(message = "wechatPointsPayPriority不能为空")
    private Integer wechatPointsPayPriority;

    /**
     * 是否开通「优惠券」无感支付(0:否 1:是)
     */
    @ApiModelProperty(name = "isOpenCouponPay", value = "是否开通「优惠券」无感支付(0:否 1:是)")
    @NotNull(message = "isOpenCouponPay不能为空")
    private Integer isOpenCouponPay;

    /**
     * 「优惠券」无感支付优先级(值越小,优先级越高)
     */
    @ApiModelProperty(name = "couponPayPriority", value = "「优惠券」无感支付优先级(值越小,优先级越高)")
    @NotNull(message = "couponPayPriority不能为空")
    private Integer couponPayPriority;

    private List<WalletPaySort> walletPaySortList;

    @Data
    public static class WalletPaySort {

        /**
         * 排序
         */
        private Integer sort;

        /**
         * 钱包id
         */
        private Long walletId;

        /**
         * 钱包类型
         */
        private String walletType;

        /**
         * 钱包编号
         */
        @ApiModelProperty(name = "walletCode", value = "钱包编号")
        private String walletCode;

        /**
         * 钱包账户类型（1：个人钱包，2：机构钱包）
         */
        @ApiModelProperty(name = "walletAccountType", value = "钱包账户类型（1：个人钱包，2：机构钱包）")
        private String walletAccountType;

        /**
         * 归属运营商
         */
        private Long ownershipOperatorId;

    }

}
