package com.zsElectric.boot.charging.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 第三方接口请求日志实体类
 *
 * @author system
 * @since 2025-01-02
 */
@Data
@TableName("third_party_api_log")
public class ThirdPartyApiLog implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 日志类型(1-请求出去,2-接收推送)
     */
    @TableField("log_type")
    private Integer logType;

    /**
     * 控制器名称(LinkDataController/ChargingBusinessController)
     */
    @TableField("controller_name")
    private String controllerName;

    /**
     * 接口名称/路径
     */
    @TableField("interface_name")
    private String interfaceName;

    /**
     * 接口中文说明
     */
    @TableField("interface_description")
    private String interfaceDescription;

    /**
     * 请求方法(GET/POST等)
     */
    @TableField("request_method")
    private String requestMethod;

    /**
     * 请求完整URL
     */
    @TableField("request_url")
    private String requestUrl;

    /**
     * 请求头信息(JSON格式)
     */
    @TableField("request_headers")
    private String requestHeaders;

    /**
     * 请求参数(JSON格式)
     */
    @TableField("request_params")
    private String requestParams;

    /**
     * 请求体内容
     */
    @TableField("request_body")
    private String requestBody;

    /**
     * 解密后的请求数据内容(仅加密接口)
     */
    @TableField("decrypted_request_data")
    private String decryptedRequestData;

    /**
     * 响应状态码
     */
    @TableField("response_status")
    private Integer responseStatus;

    /**
     * 响应头信息(JSON格式)
     */
    @TableField("response_headers")
    private String responseHeaders;

    /**
     * 响应体内容
     */
    @TableField("response_body")
    private String responseBody;

    /**
     * 解密后的响应数据内容(仅加密接口)
     */
    @TableField("decrypted_response_data")
    private String decryptedResponseData;

    /**
     * 响应耗时(毫秒)
     */
    @TableField("response_time")
    private Long responseTime;

    /**
     * 是否成功(0-失败,1-成功)
     */
    @TableField("is_success")
    private Integer isSuccess;

    /**
     * 错误信息
     */
    @TableField("error_message")
    private String errorMessage;

    /**
     * 运营商ID
     */
    @TableField("operator_id")
    private String operatorId;

    /**
     * 充电站ID
     */
    @TableField("station_id")
    private String stationId;

    /**
     * 充电桩ID
     */
    @TableField("connector_id")
    private String connectorId;

    /**
     * 业务流水号(如充电订单号、认证流水号等)
     */
    @TableField("business_seq")
    private String businessSeq;

    /**
     * 客户端IP地址
     */
    @TableField("client_ip")
    private String clientIp;

    /**
     * 用户代理信息
     */
    @TableField("user_agent")
    private String userAgent;

    /**
     * 创建时间
     */
    @TableField("created_time")
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    @TableField("updated_time")
    private LocalDateTime updatedTime;

    /**
     * 备注信息
     */
    @TableField("remark")
    private String remark;
}
