package cn.gov.customs.wxjy.ibmmq.model;

import cn.gov.customs.wxjy.ibmmq.enums.MessageType;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 业务数据消息
 * @param <T> 数据类型
 */
@Data
public class DataMessage<T> implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 消息类型
     */
    private MessageType type;

    /**
     * 消息唯一标识符
     */
    private String msgId;

    /**
     * 消息发送时间（格式：yyyy-MM-dd HH:mm:ss）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date sendTime;

    /**
     * 需要调用的业务接口方法名（如："insert", "update","delete"）
     */
    private String methodName;

    /**
     * 方法参数类型数组（如：new Class<?>[]{MyEntity.class}）
     */
    private Class<?>[] methodParamTypes;

    /**
     * 指定要提取的属性名
     * 针对要执行的方法形参为POJO内的特定属性，如按ID删除时，需要填写"ID"，如果参数为数据对象，则不需要填写
     */
    private String propertyName;

    /**
     * Mapper 接口类名（如："com.rongji.bus.dao.xxxMapper"）
     */
    private String mapperClassName;

    /**
     * 业务数据列表，可以是 POJO
     */
    private List<T> dataList;

}
