package com.yonge.cooleshow.biz.dal.dao;

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

import org.apache.ibatis.annotations.Param;

import com.yonge.cooleshow.biz.dal.dto.SysMessageDto;
import com.yonge.cooleshow.biz.dal.entity.SysMessage;
import com.yonge.cooleshow.biz.dal.enums.MessageSendMode;
import com.yonge.toolset.mybatis.dal.BaseDAO;
import com.yonge.cooleshow.common.entity.Mapper;

public interface SysMessageDao extends BaseDAO<Long, SysMessage> {
	
	public List<SysMessageDto> queryListPage(Map<String, Object> params);

	public List<SysMessage> queryUserInRecentMinList(@Param("mobile") String mobile, @Param("recentMin") int recentMin, @Param("type") MessageSendMode type);

	/**
	 * 根据状态查询最近N分钟的记录
	 *
	 * @param status    状态值
	 * @param recentMin 最近分钟数
	 * @return
	 */
	public List<SysMessage> queryByStatusAndTime(@Param("status") int status, @Param("recentMin") int recentMin);

	/**
	 * 批量插入
	 *
	 * @param messages
	 * @return
	 */
	public int batchInsert(List<SysMessage> messages);

	/**
	 * 查询消息未读条数
	 *
	 * @param type
	 * @param userId
	 * @return
	 */
	public List<Mapper> queryCountOfUnread(@Param("type") MessageSendMode type, @Param("userId") Long userId, @Param("jpushType") String jpushType, @Param("tenantId") Integer tenantId);

	/**
	 * 修改用户所有消息阅读状态
	 */
	public int updateStatus(@Param("userId") Long userId, @Param("status") int status, @Param("jpushType") String jpushType);

	/**
	 * 修改单个消息状态
	 */
	public int updateOneStatus(@Param("id") Long id, @Param("status") int status);
}