package com.fzzy.order.common; import com.alibaba.fastjson.JSONObject; import com.fzzy.api.entity.ApiConfs; import com.fzzy.api.view.pr.ApiConfsPR; import com.fzzy.order.common.data.OrderCommonData; import com.fzzy.order.common.data.OrderCommonReq; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 下发指令接收入口 * * @author czt * @date 2023/8/17 */ @Slf4j @Component(OrderCommonManager.BEAN_ID) public class OrderCommonManager implements ApplicationContextAware { public static final String BEAN_ID = "order.orderCommonManager"; private static Map serviceMap; @Autowired private ApiConfsPR apiConfsPR; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map map = applicationContext.getBeansOfType(OrderCommonService.class); serviceMap = new HashMap<>(); for (String key : map.keySet()) { serviceMap.put(map.get(key).getProtocol(), map.get(key)); } } /** * 指令解析入口 * @param req */ @Async public void execute(OrderCommonReq req){ try{ //获取配置信息 List apiConfList = apiConfsPR.listAll(); if(null == apiConfList || apiConfList.isEmpty()){ return; } OrderCommonData data = JSONObject.parseObject(req.getData().toString(), OrderCommonData.class); data.setOrderid(req.getOrderid()); //根据配置信息执行 OrderCommonService service; for (ApiConfs conf : apiConfList) { service = serviceMap.get(conf.getPushProtocol()); if(null == service){ continue; } service.execute(data, req.getType(), conf, req.getOrderid()); } } catch (Exception e) { log.error("-----指令解析异常-----指令={}", req); e.printStackTrace(); } } }