package com.example.demo.model;

import java.time.LocalDateTime;

/**
 * 用户事件 - 演示 Spring 事件机制
 * 
 * 学习点：
 * - ApplicationEvent 基类
 * - 事件驱动架构
 * - 观察者模式
 */
public class UserEvent {
    
    public enum Type {
        CREATED,    // 用户创建
        UPDATED,    // 用户更新
        DELETED,    // 用户删除
        LOGIN       // 用户登录
    }
    
    private Type type;
    private Long userId;
    private String userName;
    private LocalDateTime timestamp;
    private String detail;
    
    public UserEvent() {
        this.timestamp = LocalDateTime.now();
    }
    
    public UserEvent(Type type, Long userId, String userName, String detail) {
        this.type = type;
        this.userId = userId;
        this.userName = userName;
        this.detail = detail;
        this.timestamp = LocalDateTime.now();
    }
    
    // Getters and Setters
    public Type getType() { return type; }
    public void setType(Type type) { this.type = type; }
    public Long getUserId() { return userId; }
    public void setUserId(Long userId) { this.userId = userId; }
    public String getUserName() { return userName; }
    public void setUserName(String userName) { this.userName = userName; }
    public LocalDateTime getTimestamp() { return timestamp; }
    public void setTimestamp(LocalDateTime timestamp) { this.timestamp = timestamp; }
    public String getDetail() { return detail; }
    public void setDetail(String detail) { this.detail = detail; }
}