package edu.whut.api.dto;

import lombok.Data;

import java.io.Serializable; // 导入 Serializable 接口

/**
 * 营销支付锁单请求对象
 */
@Data
public class LockMarketPayOrderRequestDTO implements Serializable { // 实现 Serializable
    private static final long serialVersionUID = 1L; // 添加 serialVersionUID

    // 用户ID
    private String userId;
    // 拼单组队ID - 可为空，为空则创建新组队ID
    private String teamId;
    // 活动ID
    private Long activityId;
    // 商品ID
    private String goodsId;
    // 渠道
    private String source;
    // 来源
    private String channel;
    // 外部交易单号
    private String outTradeNo;
    // 回调配置,调用方自己配置回调类型
    private NotifyConfigVO notifyConfigVO;

    // 兼容旧配置，用户仍可继续使用setNotifyUrl方法
    public void setNotifyUrl(String url) {
        NotifyConfigVO notifyConfigVO = new NotifyConfigVO();
        notifyConfigVO.setNotifyType("HTTP");
        notifyConfigVO.setNotifyUrl(url);
        this.notifyConfigVO = notifyConfigVO;
    }

    // 兼容配置 - MQ不需要指定，系统会发统一MQ消息
    public void setNotifyMQ() {
        NotifyConfigVO notifyConfigVO = new NotifyConfigVO();
        notifyConfigVO.setNotifyType("MQ");
        this.notifyConfigVO = notifyConfigVO;
    }

    // 回调配置
    @Data
    public static class NotifyConfigVO implements Serializable { // 嵌套类也需要实现 Serializable
        private static final long serialVersionUID = 1L; // 嵌套类也添加 serialVersionUID
        /**
         * 回调方式；MQ、HTTP
         */
        private String notifyType;
        /**
         * 回调消息
         */
        private String notifyMQ;
        /**
         * 回调地址
         */
        private String notifyUrl;
    }

}