package com.xhpc.card.mapper;

import com.xhpc.card.domain.PlatformSendMessageToUserRequest;
import com.xhpc.card.domain.SendMessageToPlatformRequest;
import com.xhpc.card.domain.UserQueryCondition;
import com.xhpc.card.pojo.XhpcMessageBoard;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface XhpcMessageBoardMapper {

    int deleteByPrimaryKey(Long messageId);

    int insert(XhpcMessageBoard record);

    int insertSelective(XhpcMessageBoard record);

    XhpcMessageBoard selectByPrimaryKey(Long messageId);

    int updateByPrimaryKeySelective(XhpcMessageBoard record);

    int updateByPrimaryKey(XhpcMessageBoard record);

    /**
     * 用户端存入时间记录
     *
     * @param userMessage 用户时间记录信息
     * @author WH
     * @date 2022/1/11 17:46
     * @since version-1.0
     */
    void insertUserTimeMessageRecord(SendMessageToPlatformRequest userMessage);

    /**
     * 用户端存入发送的消息
     *
     * @param userMessage 用户发送的消息
     * @author WH
     * @date 2022/1/11 18:16
     * @since version-1.0
     */
    void insertUserMessage(SendMessageToPlatformRequest userMessage);

    /**
     * 平台端存入发送的信息
     *
     * @param platformRequest 平台所要发送给用户的信息
     * @author WH
     * @date 2022/1/12 11:30
     * @since version-1.0
     */
    void insertPlatformMessage(PlatformSendMessageToUserRequest platformRequest);

    /**
     * 平台端存入时间记录
     *
     * @param platformRequest 平台时间记录信息
     * @author WH
     * @date 2022/1/12 11:49
     * @since version-1.0
     */
    void insertPlatformTimeMessageRecord(PlatformSendMessageToUserRequest platformRequest);

    /**
     * 查询用户一个月的记录
     *
     * @param userQueryCondition 用户查询条件
     * @param nextTimeStr        上一个月的时间
     * @return 返回一个装有一个月的数据的集合
     * @author WH
     * @date 2022/1/12 16:03
     * @since version-1.0
     */
    List<XhpcMessageBoard> selectBy(@Param("userQueryCondition") UserQueryCondition userQueryCondition, @Param("nextTimeStr") String nextTimeStr);

    /**
     * 给查询出来的记录，添加用户已读状态
     *
     * @param messageIdList 查询出来的记录的id集合
     * @author WH
     * @date 2022/1/13 10:16
     * @since version-1.0
     */
    void setUserReadedStatus(List<Long> messageIdList);

    /**
     * 查询用户所有时间记录
     *
     * @param userQueryCondition 用户信息
     * @author WH
     * @date 2022/1/13 10:56
     * @since version-1.0
     */
    List<XhpcMessageBoard> selectTimeRecords(UserQueryCondition userQueryCondition);

}