package com.jsowell.pile.mapper;

import com.jsowell.pile.domain.ThirdPartyStationRelation;
import com.jsowell.pile.vo.base.MerchantInfoVO;
import com.jsowell.pile.vo.base.StationInfoVO;
import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 站点、第三方推送平台配置对应Mapper接口
 *
 * @author jsowell
 * @date 2023-06-06
 */
@Component
public interface ThirdPartyStationRelationMapper {
    /**
     * 查询站点、第三方推送平台配置对应
     *
     * @param id 站点、第三方推送平台配置对应主键
     * @return 站点、第三方推送平台配置对应
     */
    public ThirdPartyStationRelation selectThirdPartyStationRelationById(Long id);

    /**
     * 查询站点、第三方推送平台配置对应列表
     *
     * @param thirdPartyStationRelation 站点、第三方推送平台配置对应
     * @return 站点、第三方推送平台配置对应集合
     */
    public List<ThirdPartyStationRelation> selectThirdPartyStationRelationList(ThirdPartyStationRelation thirdPartyStationRelation);

    /**
     * 查询站点、第三方推送平台配置
     *
     * @param thirdPartyStationRelation
     * @return
     */
    ThirdPartyStationRelationVO selectRelationInfo(ThirdPartyStationRelation thirdPartyStationRelation);

    /**
     * 新增站点、第三方推送平台配置对应
     *
     * @param thirdPartyStationRelation 站点、第三方推送平台配置对应
     * @return 结果
     */
    public int insertThirdPartyStationRelation(ThirdPartyStationRelation thirdPartyStationRelation);

    /**
     * 修改站点、第三方推送平台配置对应
     *
     * @param thirdPartyStationRelation 站点、第三方推送平台配置对应
     * @return 结果
     */
    public int updateThirdPartyStationRelation(ThirdPartyStationRelation thirdPartyStationRelation);

    /**
     * 删除站点、第三方推送平台配置对应
     *
     * @param id 站点、第三方推送平台配置对应主键
     * @return 结果
     */
    public int deleteThirdPartyStationRelationById(Long id);

    /**
     * 批量删除站点、第三方推送平台配置对应
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteThirdPartyStationRelationByIds(Long[] ids);

    int deleteThirdPartyStationRelationByStationId(String stationId);

    /**
     * 通过站点id查询该站点对接了哪些第三方平台
     *
     * @param stationId
     * @return
     */
    List<ThirdPartyStationRelationVO> getRelationInfoList(@Param("stationId") String stationId);

    /**
     * 修改删除标识为1
     *
     * @param stationId
     * @param type
     * @return
     */
    int updateRelationDelFlag(@Param("stationId") String stationId, @Param("types") List<String> types);

    /**
     * 根据第三方平台类型查询对接第三方平台的运营商列表
     *
     * @param thirdPlatformType
     * @return
     */
    List<MerchantInfoVO> selectMerchantList(String thirdPlatformType);

    /**
     * 根据第三方平台类型查询对接第三方平台的站点列表
     *
     * @param thirdPlatformType
     * @return
     */
    List<StationInfoVO> selectStationList(String thirdPlatformType);

    List<ThirdPartyStationRelation> selectRelationListByStationId(String stationId);

    int insertOrUpdateSelective(ThirdPartyStationRelation thirdPartyStationRelation);

    int batchInsert(List<ThirdPartyStationRelation> list);
}
