package com.cool.store.mapper.visit;

import com.cool.store.entity.visit.VisitRecordDO;
import com.cool.store.request.visit.VisitRecordQueryRequest;
import com.cool.store.vo.visit.VisitPartnerListVO;
import com.cool.store.vo.visit.VisitRecordListVO;
import com.cool.store.vo.visit.VisitRecordStatusStatisticsVO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

public interface VisitRecordMapper extends Mapper<VisitRecordDO> {

    /**
     * 查询拜访加盟商
     * @param regionIds 加盟商所属大区id
     * @param keyword 加盟商姓名或手机号
     * @return 拜访加盟商列表VO
     */
    List<VisitPartnerListVO> getPartnerList(@Param("regionIds") List<Long> regionIds,
                                            @Param("keyword") String keyword,
                                            @Param("userId") String userId);

    /**
     * 拜访记录列表
     * @param request 拜访记录查询Request
     * @return 拜访记录列表VO列表
     */
    List<VisitRecordListVO> getVisitRecordList(@Param("request") VisitRecordQueryRequest request);

    /**
     * 拜访记录数量
     */
    Long getVisitRecordCount(@Param("request") VisitRecordQueryRequest request);

    /**
     * 查询拜访加盟商线索id
     * @param regionIds 加盟商所属大区id
     * @param keyword 加盟商姓名或手机号
     * @param userId 拜访用户id
     * @return 线索id列表
     */
    List<Long> getPartnerLineId(@Param("regionIds") List<Long> regionIds,
                                  @Param("keyword") String keyword,
                                  @Param("userId") String userId);

    /**
     * 根据线索id查询拜访记录列表
     * @param lineIds 线索id
     * @return 拜访记录列表VO列表
     */
    List<VisitPartnerListVO> getVisitRecordListByLineIds(@Param("lineIds") List<Long> lineIds, @Param("userId") String userId);

    /**
     * 统计：本月已完成数量、全部已完成数量、全部未完成数量、全部已失效数量
     * - 本月口径：按 visit_date 在本月范围内且 status=2
     * - 全部口径：不限制月份
     */
    VisitRecordStatusStatisticsVO countStatusStatistics(@Param("request") VisitRecordQueryRequest request);

}