package com.malk.zhuogao.repository.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.malk.base.BasePo;
import com.malk.utils.UtilString;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import javax.persistence.*;
import java.util.Date;

@Entity
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "record_file")
@Slf4j
public class ZSDFileRecordPo extends BasePo {

    /**
     * 员工姓名
     */
    private String realName;

    /**
     * 操作终端
     */
    private String platformView;

    /**
     * 操作类型
     */
    private String actionView;

    /**
     * 操作来源
     */
    private String operateModuleView;

    /**
     * 知识库名称
     */
    private String workSpaceName;

    /// 是否知识库
    @Builder.Default
    private boolean isWorkSpace = false;

    public void setWorkSpaceName(String workSpaceName) {
        this.workSpaceName = workSpaceName;
        isWorkSpace = StringUtils.isNotBlank(workSpaceName);
    }

    /**
     * 知识库链接
     */
    private String workSpacePcUrl;

    /**
     * 在线文档链接
     */
    private String docPcUrl;

    /**
     * 成员授权列表: JSON
     */
    private String docMemberList;

    /**
     * 文件接收人列表: JSON
     */
    private String docReceiverList;

    /**
     * 操作时间
     */
    @Temporal(TemporalType.TIMESTAMP)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date gmtCreateTime;

    /**
     * 记录修改时间，UNIX时间戳，单位毫秒
     */
    @Temporal(TemporalType.TIMESTAMP)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date gmtModifiedTime;

    /**
     * 接收方名称
     */
    private String receiverName;

    /**
     * 接收方类型
     */
    private String receiverTypeView;

    /**
     * 记录状态
     */
    private Integer status;

    /**
     * 文件名称
     */
    private String resource;

    /**
     * 文件类型
     */
    private String resourceExtension;

    /**
     * 文件大小
     */
    private Long resourceSize;

    /// 文件大小: M
    @Transient
    private String resourceSizeToM;

    public String getResourceSizeToM() {
        if (UtilString.isNotBlankCompatNull(String.valueOf(resourceSize))) {
            return UtilString.stringFormatFixed(resourceSize / 1024F / 1024L) + "M";
        }
        return "";
    }

    /**
     * 文件所属组织
     */
    private String orgName;

    /**
     * 本次操作所在的机器IP
     */
    private String ipAddress;

    /**
     * 文件所属的空间ID
     */
    private Long targetSpaceId;

    /**
     * 文件ID
     */
    private String bizId;

    /**
     * 知识库id
     */
    private Long workSpaceId;
}
