package com.fzzy.order;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.fzzy.api.entity.ApiConfs;
|
import com.fzzy.api.view.pr.ApiConfsPR;
|
import com.fzzy.order.data.OrderData;
|
import com.fzzy.order.data.OrderReq;
|
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(OrderManager.BEAN_ID)
|
public class OrderManager implements ApplicationContextAware {
|
public static final String BEAN_ID = "order.orderManager";
|
|
private static Map<String, OrderApiService> serviceMap;
|
|
@Autowired
|
private ApiConfsPR apiConfsPR;
|
|
@Override
|
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
|
Map<String, OrderApiService> map = applicationContext.getBeansOfType(OrderApiService.class);
|
serviceMap = new HashMap<>();
|
for (String key : map.keySet()) {
|
serviceMap.put(map.get(key).getProtocol(), map.get(key));
|
}
|
}
|
|
|
/**
|
* 指令解析入口
|
* @param req
|
*/
|
@Async
|
public void execute(OrderReq<JSONObject> req){
|
|
try{
|
//获取配置信息
|
List<ApiConfs> apiConfList = apiConfsPR.listAll();
|
if(null == apiConfList || apiConfList.isEmpty()){
|
return;
|
}
|
OrderData data = JSONObject.parseObject(req.getData().toString(), OrderData.class);
|
|
//根据配置信息执行
|
OrderApiService service;
|
for (ApiConfs conf : apiConfList) {
|
|
service = serviceMap.get(conf.getPushProtocol());
|
if(null == service){
|
continue;
|
}
|
|
service.execute(data, req.getType(), conf);
|
}
|
} catch (Exception e) {
|
log.error("-----指令解析异常-----指令={}", req);
|
e.printStackTrace();
|
}
|
|
}
|
}
|