package cn.reghao.tnb.user.app.service;

import cn.reghao.jutil.tool.id.SnowFlake;
import cn.reghao.tnb.user.api.dto.UserMessageDto;
import cn.reghao.tnb.user.app.db.mapper.UserMessageMapper;
import cn.reghao.tnb.user.app.model.po.UserMessage;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author reghao
 * @date 2024-04-18 15:07:14
 */
@Service
public class UserMessageService {
    private final UserMessageMapper userMessageMapper;
    private final SnowFlake idGenerator;

    public UserMessageService(UserMessageMapper userMessageMapper) {
        this.userMessageMapper = userMessageMapper;
        this.idGenerator = new SnowFlake(1L, 1L);
    }

    public void addMessage(UserMessageDto userMessageDto) {
        long messageId = idGenerator.nextId();
        UserMessage userMessage = new UserMessage(messageId, userMessageDto);
        userMessageMapper.save(userMessage);
    }

    public List<UserMessage> getMessages(long userId) {
        List<UserMessage> list =  userMessageMapper.findByUnread(userId);
        return list;
    }

    public int getUnreadCount(long userId) {
        int total =  userMessageMapper.countByUnread(userId);
        return total;
    }

    public UserMessage getUserMessage(long messageId) {
        UserMessage userMessage = userMessageMapper.findByMessageId(messageId);
        userMessageMapper.updateSetRead(messageId);
        return userMessage;
    }
}
