package com.ozs.kpim.mapper.topic;

import com.ozs.kpim.dto.topic.TopicDTO;
import com.ozs.kpim.dto.topic.TopicZtreeDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/* *
 * @Author jade
 * @Description 主题通用Mapper
 * @Date 2019/2/20
**/
public interface TopicMapper {
    /* *
     * @Author jade
     * @Description 插入全部字段
     * @Date 2019/2/20
     * @Param [record]
     * @return int
    **/
    int insert(TopicDTO record);

    /* *
     * @Author jade
     * @Description  更新全部字段
     * @Date 2019/2/20
     * @Param [record]
     * @return int
    **/
    int update(TopicDTO record);

    /* *
     * @Author jade
     * @Description 删除主题
     * @Date 2019/2/20
     * @Param [id]
     * @return int
    **/
    int delete(@Param("id") String id);

    /* *
     * @Author jade
     * @Description 删除主题
     * @Date 2019/3/6
     * @Param [topicCode]
     * @return int
    **/
    int deleteByTopicCode(@Param("topicCode") String topicCode);

    /* *
     * @Author jade
     * @Description 查询详情
     * @Date 2019/2/20
     * @Param [id]
     * @return TopicDTO
    **/
    TopicDTO getById(@Param("id") String id);

    /* *
     * @Author jade
     * @Description 查询详情
     * @Date 2019/3/6
     * @Param [topicCode]
     * @return TopicDTO
    **/
    TopicDTO getByTopicCode(@Param("topicCode") String topicCode);

    /* *
     * @Author jade
     * @Description 查询topicCode是否存在
     * @Date 2019/2/20
     * @Param [id]
     * @return int
    **/
    int getCountByTopicCode(@Param("topicCode") String topicCode);

    /* *
     * @Author jade
     * @Description 根据ID判断该主题是否在使用
     * @Date 2019/2/20
     * @Param [id]
     * @return int
     **/
    int ifTopicInfoUse(@Param("topicId") String topicId);

    /* *
     * @Author jade
     * @Description 判断主题或者主题下的子主题是否被使用
     * @Date 2019/3/14
     * @Param [topicIds]
     * @return int
    **/
    int ifTopicOrSubTopicsInUse(List<String> topicIds);

    /* *
     * @Author jade
     * @Description 主题列表查询
     * @Date 2019/2/20
     * @Param [name]
     * @return java.util.List<TopicDTO>
    **/
    List<TopicDTO> listTopics(@Param("name") String name);

    /* *
     * @Author jade
     * @Description 根据上级主题编码查询直接下级主题
     * @Date 2019/2/21
     * @Param [parentTopicCode]
     * @return java.util.List<TopicDTO>
    **/
    List<TopicDTO> listSubTopics(@Param("parentTopicCode") String parentTopicCode);

    /* *
     * @Author jade
     * @Description 查询主题下的所有子主题不分级别
     * @Date 2019/3/31
     * @Param [parentTopicCode]
     * @return java.util.List<TopicDTO>
    **/
    List<TopicDTO> listAllSubTopics(@Param("parentTopicCode") String parentTopicCode);

    /* *
     * @Author jade
     * @Description  主题树 ztree格式
     * @Date 2019/3/6
     * @Param [name]
     * @return java.util.List<TopicZtreeDTO>
    **/
    List<TopicZtreeDTO> topicForZtree(@Param("name") String name);

    /* *
     * @Author jade
     * @Description 根据主题编码批量查询主题
     * @Date 2019/3/11
     * @Param [topicCodes]
     * @return java.util.List<TopicDTO>
    **/
    List<TopicDTO> listTopicsByTopicCodes(List<String> topicCodes);

    /* *
     * @Author jade
     * @Description  查询KPI对应的主题
     * @Date 2019/3/11
     * @Param [id]
     * @return java.util.List<TopicDTO>
    **/
    List<TopicDTO> listTopicsByKpiId(@Param("kpiId") String kpiId);

}
