package com.yupi.project.model.entity;

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

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 充电记录表
 *
 * @TableName charging_session
 */
@TableName(value = "charging_session")
@Data
public class ChargingSession implements Serializable {
    /**
     * 主键ID，充电会话唯一标识
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 用户ID (关联 user.id)
     */
    private Long userId;

    /**
     * 服务的机器人ID (关联 charging_robot.id)
     */
    private Long robotId;

    /**
     * 服务机器人的UID快照
     */
    private String robotUidSnapshot;

    /**
     * 车位ID (关联 parking_spot.id)
     */
    private Long spotId;

    /**
     * 车位UID快照
     */
    private String spotUidSnapshot;

    /**
     * 充电会话状态
     */
    private String status;

    /**
     * 用户请求充电时间
     */
    private Date requestTime;

    /**
     * 机器人分配时间
     */
    private Date robotAssignedTime;

    /**
     * 机器人到达车位时间
     */
    private Date robotArrivalTime;

    /**
     * 充电开始时间
     */
    private Date chargeStartTime;

    /**
     * 充电结束时间
     */
    private Date chargeEndTime;

    /**
     * 总充电时长 (秒)
     */
    private Integer totalDurationSeconds;

    /**
     * 消耗电量 (kWh)
     */
    private BigDecimal energyConsumedKwh;

    /**
     * 本次充电费用 (元)
     */
    private BigDecimal cost;

    /**
     * 支付状态
     */
    private String paymentStatus;

    /**
     * 错误码
     */
    private String errorCode;

    /**
     * 错误信息
     */
    private String errorMessage;

    /**
     * 关联的RobotTask ID
     */
    private Long relatedRobotTaskId;

    /**
     * 记录创建时间
     */
    private Date createTime;

    /**
     * 记录更新时间
     */
    private Date updateTime;

    /**
     * 逻辑删除标志 (0:未删, 1:已删)
     */
    @TableLogic
    private Integer isDeleted;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
} 