CompanyUsageStat.java 1.7 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 jakarta.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 公司使用量统计实体类
 *
 * @author AIGEO Team
 * @since 1.0.0
 */
@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "ai_company_usage_stats", indexes = {
    @Index(name = "uk_company_date", columnList = "companyId,statDate", unique = true),
    @Index(name = "idx_usage_company", columnList = "companyId")
})
public class CompanyUsageStat {
    
    @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 = "stat_date", nullable = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate statDate;

    @Column(name = "article_count")
    @Builder.Default
    private Integer articleCount = 0;

    @Column(name = "ai_token_usage")
    @Builder.Default
    private Long aiTokenUsage = 0L;

    @Column(name = "website_count")
    @Builder.Default
    private Integer websiteCount = 0;

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

    @PrePersist
    protected void onCreate() {
        if (articleCount == null) articleCount = 0;
        if (aiTokenUsage == null) aiTokenUsage = 0L;
        if (websiteCount == null) websiteCount = 0;
    }
}