package com.gic.haoban.manage.api.service.content;

import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.dto.content.MemberLastInteractDTO;
import com.gic.haoban.manage.api.dto.qdto.content.InteractRecordQDTO;
import com.gic.haoban.manage.api.enums.content.InteractRecordInfoDTO;

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

/**
 * @Author MUSI
 * @Date 2023/3/29 12:45 PM
 * @Description
 * @Version
 * 互动记录
 **/
public interface InteractRecordApiService {

    /**
     * 查询互动记录
     * @param interactRecordQDTO
     * @return
     */
    ServiceResponse<Page<InteractRecordInfoDTO>> queryInteractRecordList(InteractRecordQDTO interactRecordQDTO);

    /**
     * 查询会员对应时间后最新的互动记录
     * @param enterpriseId
     * @param clerkId
     * @param list
     * @return
     */
    ServiceResponse<Map<String,InteractRecordInfoDTO>> mapInteractRecord(String enterpriseId, String clerkId, List<MemberLastInteractDTO> list);

    /**
     * 查询对应时间后会员最新的互动记录
     * @param clerkId
     * @param lastAccessTime
     * @return
     */
    ServiceResponse<List<MemberLastInteractDTO>> queryMemberIdsByTime(String clerkId, Date lastAccessTime);


    /**
     * 处理member信息变化的MQ
     * routeName:  memberIdChangeNotify
     * @param params
     * @return
     */
    ServiceResponse<Void> memberChangeMQ(String params);

    /**
     * 处理会员线上订单
     * @param params
     * @return
     */
    ServiceResponse<Void> dealMemberOnlineOrder(String params);

    /**
     * 处理会员线下订单数据
     * @param params
     * @return
     */
    ServiceResponse<Void> dealMemberOffLineOrder(String params);

    /**
     * 处理会员新增事件
     * @param params
     * @return
     */
    ServiceResponse<Void> dealMemberEvent(String params);
}
