package com.jeesharp.business.modules.mall.mapper;

import com.jeesharp.business.modules.mall.entity.MallCategory;
import com.jeesharp.business.modules.mall.vo.MallCategoryQueryVO;
import com.jeesharp.framework.mybatis.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品分类 Mapper 接口；基础 CRUD 由框架生成，自定义查询在同包 {@code xml/MallCategoryMapper.xml}。
 */
@Mapper
public interface MallCategoryMapper extends BaseMapper<MallCategory, MallCategoryQueryVO> {

    /**
     * 查询绑定了指定发布模板的类目（未删除）。
     */
    List<MallCategory> selectByTemplateId(
        @Param("tenantCode") String tenantCode,
        @Param("templateId") String templateId);

    /**
     * 批量查询绑定了任一发布模板的类目（未删除）。
     */
    List<MallCategory> selectByTemplateIds(
        @Param("tenantCode") String tenantCode,
        @Param("templateIds") List<String> templateIds);

    /**
     * 按主键批量查询类目（未删除），用于拼装层级路径。
     */
    List<MallCategory> selectByIds(@Param("tenantCode") String tenantCode, @Param("ids") List<String> ids);

    /**
     * 查询指定租户下已启用的类目（建品下拉等）。
     */
    List<MallCategory> selectEnabledByTenantCode(@Param("tenantCode") String tenantCode);

    /**
     * 统计某父级下未删除的子类目数量，用于判断是否末级类目。
     */
    long countChildrenByParentId(@Param("tenantCode") String tenantCode, @Param("parentId") String parentId);
}