package com.liquidnet.common.third.sqb.param.request;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
public class CommonRequest {

    /**
     * 商城信息
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Mall {

        /**
         * 商城ID
         */
        private String mallSn;

        /**
         * 商城密码
         */
        private String signature;
    }

    /**
     * 卖家信息/商户信息
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Seller {
        /**
         * 商户ID
         */
        private String merchantId;

        /**
         * 商户userID
         */
        private String merchantUserId;

        /**
         * 角色 固定值（super_admin）
         */
        private String role;
    }

    /**
     * 买家信息
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Buyer {
        /**
         * 买家ID（用户唯一标识）
         */
        private String buyerId;
    }

    /**
     * 付款人信息
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Payer {
        /**
         * 付款人ID
         */
        private String userId;
    }

    /**
     * 收单信息
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    @AllArgsConstructor
    @NoArgsConstructor
    public static class Acquiring {
        /**
         * 收单号
         */
        private String acquiringSn;

        /**
         * 收单密钥
         */
        private String signature;
    }

    /**
     * 金额构成信息
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class AmountComposition {
        /**
         * 金额构成项列表
         */
        private List<CompositionItem> compositionItems;
    }

    /**
     * 金额构成项详情
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class CompositionItem {
        /**
         * 构成项类目
         */
        private String category;

        /**
         * 构成项金额
         */
        private Long amount;
    }

    /**
     * 订单信息
     */
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public static class OrderInfo {
        /**
         * 订单ID
         */
        private String sn;

        /**
         * 订单密码
         */
        private String signature;

    }
}
