package com.haha.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 设备开关门记录实体
 * 用于记录用户每次开关门的详细流水信息
 * 
 * @author haha
 */
@Data
@TableName("t_door_record")
public class DoorRecord {

    /**
     * 主键 ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 活动 ID（哈哈平台生成）
     */
    private String activityId;

    /**
     * 设备 ID
     */
    private String deviceId;

    /**
     * 用户 ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;

    /**
     * 门索引（A/B/C/D）
     */
    private String doorIndex;

    /**
     * 开门类型：IN-上货，OUT-消费
     */
    private String openType;

    /**
     * 门状态：OPENED-已开门，CLOSED-已关门
     */
    private String doorStatus;

    /**
     * 是否有消费：0-有消费，1-无消费
     */
    private Integer nobuy;

    /**
     * 订单 ID（如果有消费则关联订单）
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long orderId;

    /**
     * 微信支付分预授权订单号（outOrderNo）
     */
    private String payScoreOrderId;

    /**
     * 微信支付分服务 ID
     */
    private String serviceId;

    /**
     * 开门时间
     */
    private LocalDateTime openTime;

    /**
     * 关门时间
     */
    private LocalDateTime closeTime;

    /**
     * 持续时长（秒）
     */
    private Integer duration;

    /**
     * 记录来源：MINIAPP-小程序，ADMIN-管理后台
     */
    private String source;

    /**
     * 备注信息
     */
    private String remark;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}
