package com.yhy.module.core.dal.dataobject.quota;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yhy.module.core.dal.typehandler.PostgreSQLBigintArrayTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;

/**
 * 定额费率字段绑定 DO
 * 
 * 存储费率项与定额基价节点的绑定关系
 * 每个费率项可以有多个字段（field_1, field_2, ...），每个字段可以绑定多个定额基价节点
 */
@TableName(value = "yhy_quota_rate_field", autoResultMap = true)
@Data
@EqualsAndHashCode(callSuper = true)
public class QuotaRateFieldDO extends BaseDO {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 关联费率项ID
     */
    private Long rateItemId;

    /**
     * 字段索引（1, 2, 3...）
     * 对应 field_1, field_2, field_3...
     */
    private Integer fieldIndex;

    /**
     * 字段值（用于标识）
     * 如：1, 2, 3 分别代表 1区, 2区, 3区
     */
    private Integer fieldValue;

    /**
     * 字段标签（显示用）
     * 如："1区"、"2区"、"3区"
     */
    private String fieldLabel;

    /**
     * 绑定的定额基价节点ID数组
     * 存储 yhy_catalog_item.id（定额基价第二层节点）
     */
    @TableField(typeHandler = PostgreSQLBigintArrayTypeHandler.class)
    private Long[] bindingIds;

    // ==================== 便捷方法 ====================

    /**
     * 是否有绑定
     */
    public boolean hasBindings() {
        return bindingIds != null && bindingIds.length > 0;
    }

    /**
     * 获取绑定数量
     */
    public int getBindingCount() {
        return bindingIds == null ? 0 : bindingIds.length;
    }
}
