package com.ssj.service.sys.sort.service;

import java.util.List;
import java.util.Map;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.ssj.bean.sys.sort.domain.Sort;
import com.ssj.framework.core.common.service.BaseService;

public interface SortService extends BaseService<Sort, String>{
	/**
	 * 查询父ID下的节点
	 * @param pid
	 * @return
	 */
	public List<Sort> findByPid(String pid);
	/**
	 * 查询父ID下的节点 热门的
	 * @param pid
	 * @return
	 */
	public List<Sort> findByPidAndIshot(String pid,Integer ishot);
	/**
	 * 查询一级分类
	 * @param code
	 * @return
	 */
	public Sort findByCode(String code);
	/**
	 * 获取当前节点，和下级所有的子节点
	 * @param id
	 * @return
	 */
	public Sort findByIdAndChildren(String id);
	
	/**
	 * 带分页查询
	 * @param params
	 * @param sp
	 * @return
	 * @throws Exception
	 */
    public  Page<Sort>  findByPage(Map<String, Object> params, Pageable sp) throws Exception;
    /**
     * 查询出所有的子节点
     * @param code
     * @return
     */
    public Sort getSortChildren(String code);
    /**
     * 清空缓存
     */
    public void clearConfigCache();
    /**
     * 通过Key查询value
     * @param paramCode
     * @return
     */
    public List<Sort> getParamValByCode(String paramCode);
    public List<String> getParamValByCodeList(String paramCode);
    /**
     * 根据父code 和子code 查询出子name
     * @param code
     * @param paramCode
     * @return
     */
    public String     getNameByCode(String code,String paramCode);
    /**
     * h5展示，自动添加span 和样式
     * @param code
     * @param paramCode
     * @return
     */
    public String getBeforeNameByCode(String code, String paramCode);
    
    public String getSpanNameByCode(String code, String paramCode);
    
    public void updateSequenceSort(String id,int sort);
    /**
     * 查询下一级子节点的个数
     * @param pid
     * @return
     */
    public Integer getSortChildrenCount(String pid);
    
    public Sort  getSort(String code);

}
