package com.zcxk.rmcp.core.dao;

import com.zcxk.core.common.pojo.UserCondition;
import com.zcxk.rmcp.api.vo.OrgTreeVo;
import com.zcxk.rmcp.core.entity.Org;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author linqingwei
 * @date 2021-07-22 10:26
 */
@Mapper
public interface OrgMapper {

    /**
    * 添加数据
    * @author Andy
    * @date 14:56 2021/8/3
    * @param record:
    * @return int
    **/
    int insertSelective(Org record);

    /**
    * 更新数据
    * @author Andy
    * @date 14:56 2021/8/3
    * @param record:
    * @return int
    **/
    int updateByPrimaryKeySelective(Org record);

    /**
    * 如果id存在，则删除再插入，如果不存在则插入
    * @author Andy
    * @date 14:57 2021/8/3
    * @param org:
    * @return void
    **/
    void replaceInsert(Org org);

    /**
    * 物理删除
    * @author Andy
    * @date 14:57 2021/8/3
    * @param id:
    * @return int
    **/
    int deleteById(int id);

    /**
    * 查找集合
    * @author Andy
    * @date 14:57 2021/8/3
    * @param userCondition:
    * @return java.util.List<com.zcxk.rmcp.core.entity.Org>
    **/
    List<Org> findList(@Param("userCondition") UserCondition userCondition);

    /**
    * 根据名字查找
    * @author Andy
    * @date 14:57 2021/8/3
    * @param tenantId:
    * @param name:
    * @return com.zcxk.rmcp.core.entity.Org
    **/
    Org findByName(@Param("tenantId") String tenantId, @Param("name") String name);

    /**
    * 查找父节点
    * @author Andy
    * @date 14:57 2021/8/3
    * @param parentId:
    * @param name:
    * @return com.zcxk.rmcp.core.entity.Org
    **/
    Org findByParentIdAndName(@Param("parentId") Integer parentId, @Param("name") String name);

    /**
    * 查询树
    * @author Andy
    * @date 14:57 2021/8/3
    * @param org:
    * @return java.util.List<com.zcxk.rmcp.api.vo.OrgTreeVo>
    **/
    List<OrgTreeVo> selectTrees(@Param("org") Org org);
}