package com.doodl6.springmvc.service.mq.listener;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.doodl6.springmvc.dao.api.UserLoginLogMapper;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

/**
 * 清除用户消息监听
 */
@Component
public class ClearUserMessageListener implements MessageListenerConcurrently {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @Resource
    private UserLoginLogMapper userLoginLogMapper;

    @Override
    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> messageList, ConsumeConcurrentlyContext context) {
        for (MessageExt messageExt : messageList) {
            String message = new String(messageExt.getBody());
            logger.info("收到清除用户消息 | {}", message);
            JSONObject messageJSON = JSON.parseObject(message);
            Long userId = messageJSON.getLong("userId");
            if (userId != null) {
                userLoginLogMapper.deleteAllByUserId(userId);
                logger.info("删除用户登录记录完成 | {}", userId);
            }
        }
        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
    }

}