package com.cool.store.mapper;

import com.cool.store.dto.point.LineCountDTO;
import com.cool.store.dto.point.MiniPointPageDTO;
import com.cool.store.entity.PointRecommendDO;
import com.cool.store.request.MiniPointPageRequest;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

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

public interface PointRecommendMapper extends Mapper<PointRecommendDO> {

    /**
     * 更新铺位推荐状态
     * @param pointId
     * @param status
     * @return
     */
    Integer updateShopPointRecommendStatus(@Param("pointId") Long pointId, @Param("status") Integer status, @Param("excludeStatus") List<Integer> excludeStatus);

    /**
     * 跟进点位 和 推荐状态 更新推荐状态
     * @param pointId
     * @param code
     * @return
     */
    Integer updateRecommendStatusByStatusAndPointId(@Param("pointId") Long pointId, @Param("status") Integer status, @Param("statusList") List<Integer> statusList);

    /**
     * 获取体检店铺数量
     * @param lineIds
     * @return
     */
    List<LineCountDTO> getPushShopNumMap(@Param("lineIds") List<Long> lineIds);

    /**
     * 获取推荐列表
     * @param lineId
     * @return
     */
    List<PointRecommendDO> getRecommendPointList(@Param("lineId") Long lineId);

    /**
     * 批量新增
     * @param recommendList
     * @return
     */
    Integer batchInsert(@Param("recommendList") List<PointRecommendDO> recommendList);

    /**
     * 转让线索更新推荐状态
     * @param lineId
     * @return
     */
    Integer turnLineUpdateRecommendStatus(@Param("lineId") Long lineId, @Param("developmentManager")String developmentManager);

    /**
     * 线索获取推荐铺位列表
     * @param request
     * @return
     */
    Page<MiniPointPageDTO> getLineRecommendPointPage(@Param("request") MiniPointPageRequest request);

    /**
     * 更新推荐选择状态
     * @param pointId
     * @param lineId
     * @return
     */
    Integer updateStatusByPointIdAndLineId(@Param("pointId") Long pointId, @Param("lineId") Long lineId);

    /**
     * 铺位拒绝
     * @param lineId
     * @param pointId
     * @param reason
     * @return
     */
    Integer rejectPoint(@Param("lineId") Long lineId, @Param("pointId") Long pointId, @Param("reason") String reason);

    /**
     * 获取铺位推送过哪些线索
     * @param pointId
     * @return
     */
    List<PointRecommendDO> getRecommendPointListByPointId(@Param("pointId") Long pointId);
}