UserActivityLog.java 1.6 KB
package com.aigeo.statistics.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.JdbcTypeCode;

import jakarta.persistence.*;
import java.sql.Types;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * 用户活动日志实体类
 *
 * @author AIGEO Team
 * @since 1.0.0
 */
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "ai_user_activity_logs", indexes = {
    @Index(name = "idx_activity_company_user", columnList = "companyId,userId"),
    @Index(name = "idx_activity_type", columnList = "activityType"),
    @Index(name = "idx_activity_created_at", columnList = "createdAt")
})
public class UserActivityLog {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false, updatable = false)
    private Integer id;

    @Column(name = "company_id", nullable = false)
    private Integer companyId;

    @Column(name = "user_id", nullable = false)
    private Integer userId;

    @Column(name = "activity_type", nullable = false, length = 50)
    private String activityType;

    @JdbcTypeCode(Types.LONGVARCHAR)
    @Column(name = "activity_details", columnDefinition = "JSON")
    private Map<String, Object> activityDetails;

    @Column(name = "ip_address", length = 45)
    private String ipAddress;

    @CreationTimestamp
    @Column(name = "created_at", updatable = false)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createdAt;
}