package com.ruoyi.web.modules.farming.support;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.web.modules.category.domain.vo.InformationCategoryItemVo;
import com.ruoyi.web.modules.category.service.IBizInformationCategoryService;

/**
 * 畜牧科技资源类型须为资讯类别下级（parentCode=004, categoryType=7）。
 * <p>
 * 分页列表须在 {@code startPage()} 之前调用 {@link #assertAllowed(String)}，否则 PageHelper 会分页到类别查询而非主列表。
 */
@Component
public class TechResourceTypeValidator
{
    public static final String CATEGORY_PARENT_CODE = "004";

    public static final String CATEGORY_TYPE = "7";

    @Autowired
    private IBizInformationCategoryService bizInformationCategoryService;

    public void assertAllowed(String resourceTypeCode)
    {
        if (StringUtils.isEmpty(resourceTypeCode))
        {
            throw new ServiceException("资源类型不能为空");
        }
        if (!existsInCategoryChildren(resourceTypeCode.trim()))
        {
            throw new ServiceException("资源类型无效，请选择资讯类别中的类型");
        }
    }

    private boolean existsInCategoryChildren(String resourceTypeCode)
    {
        for (InformationCategoryItemVo item : bizInformationCategoryService.selectChildren(
                CATEGORY_PARENT_CODE, CATEGORY_TYPE))
        {
            if (item != null && resourceTypeCode.equals(StringUtils.trim(item.getCode())))
            {
                return true;
            }
        }
        return false;
    }
}
