package com.cool.store.service.visit;

import com.cool.store.request.visit.*;
import com.cool.store.vo.visit.*;
import com.github.pagehelper.PageInfo;

/**
 * <p>
 * 拜访记录Service
 * </p>
 *
 * @author wangff
 * @since 2025/12/8
 */
public interface VisitRecordService {

    /**
     * 签到
     * @param request 拜访记录签到Request
     * @return 拜访记录id
     */
    String signIn(VisitSignInRequest request);

    /**
     * 签退
     * @param request 拜访记录签到Request
     * @return 拜访记录id
     */
    String signOut(VisitSignOutRequest request);

    /**
     * 编辑拜访记录
     * @param request 拜访记录编辑Request
     * @return 是否成功
     */
    Boolean editRecord(VisitEditRequest request);

    /**
     * 拜访加盟商列表
     * @param request 拜访加盟商查询Request
     * @return 拜访加盟商列表VO
     */
    PageInfo<VisitPartnerListVO> visitPartnerList(VisitPartnerQueryRequest request);

    /**
     * 查询拜访记录简单信息
     * @param request 拜访记录查询Request
     * @return 拜访记录列表VO
     */
    PageInfo<VisitRecordSimpleListVO> recordSimpleList(VisitRecordSimpleQueryRequest request);

    /**
     * 获取拜访记录详情
     * @param id 拜访记录id
     * @return 拜访记录详情VO
     */
    VisitRecordDetailVO getDetail(Long id);

    /**
     * 取消拜访
     * @param request 拜访记录取消Request
     * @return 是否成功
     */
    Boolean cancelVisit(VisitCancelRequest request);

    /**
     * 获取拜访记录列表
     * @param request 拜访记录查询Request
     * @return 拜访记录列表VO
     */
    PageInfo<VisitRecordListVO> recordList(VisitRecordQueryRequest request);

    /**
     * 记录失效
     * @param id id
     */
    void recordInvalid(Long id);

    /**
     * 拜访记录状态统计
     * @return 拜访记录状态统计VO
     */
    VisitRecordStatusStatisticsVO countStatusStatistics(VisitRecordQueryRequest  request);
}
