package org.ta.pddserver.model.pddgd.request;

import lombok.Data;

import java.util.List;

@Data
public class GDTicketReplyRequest {

    /**
     * 当物流服务商在处理工单时，需要上传一些图片附件时，可以设置该字段值，格式为字符串URL的数组转换成的JSON字符串
     */
    private List<String> attach_paths;

    /**
     * 当物流服务商在处理工单时，需要上传一些图片附件时，可以设置该字段值，格式为字符串URL的数组转换成的JSON字符串
     */
    private String attach_path_list;

    /**
     * 工单id
     */
    private Long ticket_id;

    /**
     * 运单号
     */
    private String waybill_no;

    /**
     * 处理结果
     * reply_type=2时，可以给个值：“无”
     */
    private String handle_result;

    /**
     * 签收状态，0:默认,1:未签收,2:已签收
     * reply_type=2时，可以给个值：0
     */
    private Integer sign_state;

    /**
     * 是否赔付，0:默认,1:未赔付,2:已赔付
     * reply_type=2时，可以给个值：0
     */
    private Integer compensate_state;

    /**
     * 赔付金额(单位:分)
     * reply_type=2时，可以给个值：0
     */
    private Integer compensate_amount;

    /**
     * 责任方，0:默认, 1:消费者,2:商家,3:快递公司,4:其他
     */
    private Integer duty;

    /**
     * 处理人
     */
    private String express_dealer;

    /**
     * 处理人联系方式
     * 联系方式支持以下类型（联系方式格式错误，数据会推送失败）
     * 1、手机号：需符合正则，参考正则0?(13|14|15|17|18|19)[0-9]{9}
     * 2、座机：含区号、不带“-”需符合正则，参考正则
     * \\d{3}\\d{8}|\\d{4}\\d{7,8}
     * 3、官方号码：需提前沟通加白
     */
    private String express_dealer_contact;

    /**
     * 回复类型 1：回复工单处理结果，2: 回复电联结果
     * 当为空时，默认值为1
     */
    private Integer reply_type;

    /**
     * 电联结果 当reply_type=2时，为必填项，同时该字段的值为一个json格式的字符串
     */
    private String reply_call_result;

    /**
     * 电联结果 当reply_type=2时，为必填项，同时该字段的值为一个json格式的字符串
     */
    private ReplyCallResult replyCallResult;

    @Data
    public static final class ReplyCallResult {
        /**
         * 电联结果
         */
        private Integer call_result;
        /**
         * 电联时间戳
         */
        private String call_timestamp;
        /**
         * 回拨人姓名
         */
        private String caller_name;
        /**
         * 回拨联系方式
         */
        private String caller_contract;
    }

    private String client_id;
    private String data_type;
    private String type;
    private Long timestamp;
    private String sign;
}
