package com.xhpc.card.mapper;

import com.xhpc.card.domain.QueryUserListRequest;
import com.xhpc.card.domain.SendMessageToPlatformRequest;
import com.xhpc.card.domain.UserQueryCondition;
import com.xhpc.card.pojo.XhpcMessageBoardReceiveUser;

import java.util.List;

/**
 * the mapper of the xhpc_message_board_receive_user
 *
 * @author WH
 * @date 2022/1/11 10:26
 * @since version-1.0
 */
public interface XhpcMessageBoardReceiveUserMapper {

    int insert(XhpcMessageBoardReceiveUser record);

    int insertSelective(XhpcMessageBoardReceiveUser record);

    /**
     * 通过用户id，用户类型，租户id，租户类型，查询指定记录
     *
     * @param userMessage 储存条件的包装类
     * @return 指定记录
     * @author WH
     * @date 2022/1/10 18:03
     * @since version-1.0
     */
    XhpcMessageBoardReceiveUser findOneByCondition(SendMessageToPlatformRequest userMessage);

    /**
     * 将指定用户记录have_new_info字段的值，将其设置为0，即该用户发送了新消息
     *
     * @param userMessage 指定要更新哪个记录的条件
     * @author WH
     * @date 2022/1/11 10:31
     * @since version-1.0
     */
    void updateHaveNewInfoFiledByUserCondition(SendMessageToPlatformRequest userMessage);

    /**
     * 查询给平台发消息的用户列表
     *
     * @param param 租户查询条件
     * @return 返回一个装着所有发送过信息的用户列表
     * @author WH
     * @date 2022/1/14 16:45
     * @since version-1.0
     */
    List<XhpcMessageBoardReceiveUser> findAllBy(QueryUserListRequest param);

    /**
     * 查询给平台发消息的用户总数
     *
     * @param param 租户查询条件
     * @return 给平台发消息的用户总数
     * @author WH
     * @date 2022/1/15 15:44
     * @since version-1.0
     */
    Long totalUserNumber(QueryUserListRequest param);

    /**
     * 消除留言板对应用户的红点
     *
     * @param userQueryCondition 用户信息
     * @author WH
     * @date 2022/1/16 20:13
     * @since version-1.0
     */
    void updateHaveNewInfoIsNull(UserQueryCondition userQueryCondition);

    /**
     * 删除指定租户列表中的指定用户
     *
     * @param userQueryCondition 用户信息
     * @author WH
     * @date 2022/1/24 10:32
     * @since version-1.0
     */
    void updateDelFlag(UserQueryCondition userQueryCondition);

    /**
     * 设置指定用户从租户列表中恢复
     *
     * @param userMessage 用户信息
     * @author WH
     * @date 2022/1/24 10:37
     * @since version-1.0
     */
    void setDelFlag(SendMessageToPlatformRequest userMessage);

}