package com.wok.supportbot.entity; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serial; import java.io.Serializable; import java.util.Date; /** * API Key 实体 */ @Data @Builder @AllArgsConstructor @NoArgsConstructor @TableName("api_key") public class ApiKey implements Serializable { @Serial @TableField(exist = false) private static final long serialVersionUID = 1L; /** 主键ID(雪花算法) */ @TableId(value = "id", type = IdType.ASSIGN_ID) @JsonSerialize(using = ToStringSerializer.class) private Long id; /** API Key 值(sk_ 前缀 + UUID) */ @TableField("key_value") private String keyValue; /** Key 名称 */ @TableField("name") private String name; /** 描述 */ @TableField("description") private String description; /** 所属用户ID */ @TableField("user_id") @JsonSerialize(using = ToStringSerializer.class) private Long userId; /** 每分钟频率限制(默认60) */ @TableField("rate_limit") private Integer rateLimit; /** 最大调用次数(null 表示不限制) */ @TableField("max_calls") private Long maxCalls; /** 已调用次数 */ @TableField("current_calls") private Long currentCalls; /** 绑定的客服角色 ID 列表(JSON 字符串,如 "[1,2,3]";空数组 "[]" 表示不限制) */ @TableField("role_ids") private String roleIds; /** 过期时间(null 表示永不过期) */ @TableField("expire_time") private Date expireTime; /** 是否启用 */ @TableField("enabled") private Boolean enabled; /** 创建时间 */ @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; /** 更新时间 */ @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) private Date updateTime; /** 逻辑删除标识 */ @TableField("is_delete") @TableLogic private boolean isDelete; }