package com.aegis.emergency.duty.domain;

import java.util.Date;
import com.aegis.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * 排班成员关联实体类 duty_shift_member
 * 
 * @author aegis
 */
@Getter
@Setter
@ToString(callSuper = true)
public class DutyShiftMember extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /** 关联ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /** 排班ID */
    private Long shiftId;

    /** 用户ID */
    private Long userId;

    /** 角色（字典：duty_shift_member_role，枚举：{@link com.aegis.emergency.duty.constant.DutyShiftMemberRole}）：leader-组长，member-成员 */
    private String role;

    /** 联系电话（冗余字段，记录排班时的联系方式） */
    private String phone;

    /** 签到时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkInTime;

    /** 签退时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkOutTime;

    /** 成员姓名（聚合字段，不映射到数据库） */
    @TableField(exist = false)
    private String memberName;
}