package com.fs.company.param;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 公司用户音色表实体类
 *
 * @author
 * @since 2024-XX-XX
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("vc_company_user")
public class VcCompanyUser implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 销售已上传声音次数（单个音色只给单个销售用，而且只能传5次）
     */
    @TableField("times")
    private Integer times;

    /**
     * 上传豆包的音色id
     */
    @TableField("speaker_id")
    private String speakerId;

    /**
     * 销售传入的声纹地址
     */
    @TableField("upload_url")
    private String uploadUrl;

    /**
     * 上传的语音时长（秒）
     */
    @TableField("upload_time")
    private Double uploadTime;

    /**
     * 用户id
     */
    @TableField("company_user_id")
    private Long companyUserId;

    /**
     * 最后一次文字转语音生成的url
     */
    @TableField("latest_text_to_speech_url")
    private String latestTextToSpeechUrl;

    // 下面是可选添加的方法和字段

    /**
     * 判断是否还可以上传声音（最大5次）
     * @return true: 可以上传，false: 已达上限
     */
    public boolean canUpload() {
        return times == null || times < 5;
    }

    /**
     * 增加上传次数
     */
    public void incrementTimes() {
        if (times == null) {
            times = 1;
        } else {
            times++;
        }
    }

    /**
     * 获取剩余可上传次数
     */
    public Integer getRemainingTimes() {
        if (times == null) {
            return 5;
        }
        return Math.max(0, 5 - times);
    }
}
