package com.chinaweal.aiccs.door.subscribe;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;

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

/**
 * 信创门户平台主动推送
 * @author ymc
 * @date 2023年01月13日 15:27
 */
@ConditionalOnProperty(name = "xcDoor.enableTask", havingValue = "true")
@Component
@Slf4j
public class XCDoorKafkaConsumer {

    @Resource
    private List<XCMessageHandler> xcMessageHandlerList;

    // opType 数据类型：1-机构，2-用户，3-菜单，4-角色，5-数据字典， 6-用户授权-根据userId来删除数据再重新插入，7-角色菜单，8-角色授权用户-根据roleId删除数据来重新插入
    @KafkaListener(topics = "portal_base_data_subscribe")
    public void listen(String message) {

        log.info("信创门户接收信息: " + message);
        JSONObject msgObj = JSON.parseObject(message);
        for (XCMessageHandler xcMessageHandler : xcMessageHandlerList) {
            if (xcMessageHandler.support(msgObj.getString("opType"))) {
                xcMessageHandler.handle(msgObj);
            }
        }
    }

}