package ink.wgink.module.map.service.grid;

import ink.wgink.module.map.pojo.dtos.grid.GridRelationDTO;

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

/**
 * @ClassName: IGridRelationService
 * @Description: 网格关联业务
 * @Author: wanggeng
 * @Date: 2021/8/30 10:07 下午
 * @Version: 1.0
 */
public interface IGridRelationService {

    /**
     * 保存关联关系
     *
     * @param gridId
     * @param relationIdArray
     */
    void save(String gridId, List<String> relationIdArray);

    /**
     * 保存关联关系
     *
     * @param token
     * @param gridId
     * @param relationIdArray
     */
    void save(String token, String gridId, List<String> relationIdArray);

    /**
     * 删除网格关联
     *
     * @param gridId
     */
    void delete(String gridId);

    /**
     * 删除网格关联
     *
     * @param gridId     网格ID
     * @param relationId 关联ID
     */
    void delete(String gridId, String relationId);

    /**
     * 删除网格关联
     *
     * @param gridId      网格ID
     * @param relationIds 关联ID列表
     */
    void delete(String gridId, List<String> relationIds);

    /**
     * 删除网格关联
     *
     * @param gridIds 网格ID列表
     */
    void deleteByGridIds(List<String> gridIds);

    /**
     * 删除网格关联
     *
     * @param relationId 关联ID
     */
    void deleteByRelationId(String relationId);

    /**
     * 获取网格关联列表
     *
     * @param params
     * @return
     */
    List<GridRelationDTO> list(Map<String, Object> params);

    /**
     * 获取网格关系列表
     *
     * @param relationId 关联ID
     * @return
     */
    List<GridRelationDTO> listByRelationId(String relationId);

    /**
     * 获取网格关系列表
     *
     * @param relationIds 关联ID列表
     * @return
     */
    List<GridRelationDTO> listByRelationIds(List<String> relationIds);

    /**
     * 获取网格关系列表
     *
     * @param gridId 网格ID
     * @return
     */
    List<GridRelationDTO> listByGridId(String gridId);

    /**
     * 获取网格关系列表
     *
     * @param gridIds 网格ID列表
     * @return
     */
    List<GridRelationDTO> listByGridIds(List<String> gridIds);

    /**
     * 获取网格ID列表
     *
     * @param relationId 关联ID
     * @return
     */
    List<String> listGridId(String relationId);

    /**
     * 获取网格ID列表
     *
     * @param relationIds 关联ID列表
     * @return
     */
    List<String> listGridId(List<String> relationIds);

    /**
     * 网格关联ID列表
     *
     * @param gridId
     * @return
     */
    List<String> listRelationId(String gridId);

    /**
     * 网格关联ID列表
     *
     * @param gridIds
     * @return
     */
    List<String> listRelationId(List<String> gridIds);

    /**
     * 网格关联详情
     *
     * @param gridId     网格ID
     * @param relationId 关联ID
     * @return
     */
    GridRelationDTO getByGridIdAndRelationId(String gridId, String relationId);
}
