package tech.easyflow.ai.entity;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;

/**
 * 工作流协作分享记录。
 */
@Table("tb_workflow_share")
public class WorkflowShare implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id(keyType = KeyType.Generator, value = "snowFlakeId", comment = "ID")
    private BigInteger id;

    @Column(comment = "工作流ID")
    private BigInteger workflowId;

    @Column(comment = "分享用途")
    private String sharePurpose;

    @Column(comment = "分享密钥哈希")
    private String shareKeyHash;

    @Column(comment = "分享状态")
    private String status;

    @Column(comment = "过期时间")
    private Date expiresAt;

    @Column(tenantId = true, comment = "租户ID")
    private BigInteger tenantId;

    @Column(comment = "部门ID")
    private BigInteger deptId;

    @Column(comment = "创建时间")
    private Date created;

    @Column(comment = "创建人")
    private BigInteger createdBy;

    @Column(comment = "修改时间")
    private Date modified;

    @Column(comment = "修改人")
    private BigInteger modifiedBy;

    /**
     * 获取记录 ID。
     *
     * @return 记录 ID
     */
    public BigInteger getId() {
        return id;
    }

    /**
     * 设置记录 ID。
     *
     * @param id 记录 ID
     */
    public void setId(BigInteger id) {
        this.id = id;
    }

    /**
     * 获取工作流 ID。
     *
     * @return 工作流 ID
     */
    public BigInteger getWorkflowId() {
        return workflowId;
    }

    /**
     * 设置工作流 ID。
     *
     * @param workflowId 工作流 ID
     */
    public void setWorkflowId(BigInteger workflowId) {
        this.workflowId = workflowId;
    }

    /**
     * 获取分享用途。
     *
     * @return 分享用途
     */
    public String getSharePurpose() {
        return sharePurpose;
    }

    /**
     * 设置分享用途。
     *
     * @param sharePurpose 分享用途
     */
    public void setSharePurpose(String sharePurpose) {
        this.sharePurpose = sharePurpose;
    }

    /**
     * 获取分享密钥哈希。
     *
     * @return 分享密钥哈希
     */
    public String getShareKeyHash() {
        return shareKeyHash;
    }

    /**
     * 设置分享密钥哈希。
     *
     * @param shareKeyHash 分享密钥哈希
     */
    public void setShareKeyHash(String shareKeyHash) {
        this.shareKeyHash = shareKeyHash;
    }

    /**
     * 获取分享状态。
     *
     * @return 分享状态
     */
    public String getStatus() {
        return status;
    }

    /**
     * 设置分享状态。
     *
     * @param status 分享状态
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * 获取过期时间。
     *
     * @return 过期时间
     */
    public Date getExpiresAt() {
        return expiresAt;
    }

    /**
     * 设置过期时间。
     *
     * @param expiresAt 过期时间
     */
    public void setExpiresAt(Date expiresAt) {
        this.expiresAt = expiresAt;
    }

    /**
     * 获取租户 ID。
     *
     * @return 租户 ID
     */
    public BigInteger getTenantId() {
        return tenantId;
    }

    /**
     * 设置租户 ID。
     *
     * @param tenantId 租户 ID
     */
    public void setTenantId(BigInteger tenantId) {
        this.tenantId = tenantId;
    }

    /**
     * 获取部门 ID。
     *
     * @return 部门 ID
     */
    public BigInteger getDeptId() {
        return deptId;
    }

    /**
     * 设置部门 ID。
     *
     * @param deptId 部门 ID
     */
    public void setDeptId(BigInteger deptId) {
        this.deptId = deptId;
    }

    /**
     * 获取创建时间。
     *
     * @return 创建时间
     */
    public Date getCreated() {
        return created;
    }

    /**
     * 设置创建时间。
     *
     * @param created 创建时间
     */
    public void setCreated(Date created) {
        this.created = created;
    }

    /**
     * 获取创建人。
     *
     * @return 创建人账号 ID
     */
    public BigInteger getCreatedBy() {
        return createdBy;
    }

    /**
     * 设置创建人。
     *
     * @param createdBy 创建人账号 ID
     */
    public void setCreatedBy(BigInteger createdBy) {
        this.createdBy = createdBy;
    }

    /**
     * 获取修改时间。
     *
     * @return 修改时间
     */
    public Date getModified() {
        return modified;
    }

    /**
     * 设置修改时间。
     *
     * @param modified 修改时间
     */
    public void setModified(Date modified) {
        this.modified = modified;
    }

    /**
     * 获取修改人。
     *
     * @return 修改人账号 ID
     */
    public BigInteger getModifiedBy() {
        return modifiedBy;
    }

    /**
     * 设置修改人。
     *
     * @param modifiedBy 修改人账号 ID
     */
    public void setModifiedBy(BigInteger modifiedBy) {
        this.modifiedBy = modifiedBy;
    }
}
