|
|
@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.telerobot.fs.config.SystemConfig;
|
|
|
import com.telerobot.fs.entity.po.CdrDetail;
|
|
|
import com.telerobot.fs.entity.po.CdrEntity;
|
|
|
+import com.telerobot.fs.mybatis.dao.SysDao;
|
|
|
import com.telerobot.fs.utils.CommonUtils;
|
|
|
import com.telerobot.fs.utils.DateUtils;
|
|
|
import com.telerobot.fs.utils.OkHttpClientUtil;
|
|
|
@@ -12,6 +13,7 @@ import com.telerobot.fs.utils.StringUtils;
|
|
|
import lombok.SneakyThrows;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
|
|
import org.springframework.context.ApplicationListener;
|
|
|
import org.springframework.context.annotation.DependsOn;
|
|
|
@@ -24,6 +26,9 @@ import java.util.concurrent.Semaphore;
|
|
|
@DependsOn("appContextProvider")
|
|
|
public class CdrPush implements ApplicationListener<ApplicationReadyEvent> {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ SysDao sysDao;
|
|
|
+
|
|
|
private static Logger logger = LoggerFactory.getLogger(CdrPush.class);
|
|
|
private static Semaphore semaphore = new Semaphore(9999);
|
|
|
private static ArrayBlockingQueue<CdrDetail> cdrQueue = new ArrayBlockingQueue<>(9999);
|
|
|
@@ -50,6 +55,11 @@ public class CdrPush implements ApplicationListener<ApplicationReadyEvent> {
|
|
|
private boolean postCdr(CdrDetail cdr){
|
|
|
try {
|
|
|
String url = SystemConfig.getValue("post_cdr_url");
|
|
|
+ //如果有自定义回调地址 替换回调地址为自定义回调地址 否则默认回调
|
|
|
+ String callBackUrlByUuid = getCallBackUrlByUuid(cdr.getUuid());
|
|
|
+ if(org.apache.commons.lang3.StringUtils.isNotBlank(callBackUrlByUuid)){
|
|
|
+ url = callBackUrlByUuid;
|
|
|
+ }
|
|
|
if (StringUtils.isNullOrEmpty(url)) {
|
|
|
logger.error("post_cdr_url has not been configured yet.");
|
|
|
return false;
|
|
|
@@ -93,4 +103,15 @@ public class CdrPush implements ApplicationListener<ApplicationReadyEvent> {
|
|
|
}
|
|
|
}).start();
|
|
|
}
|
|
|
+
|
|
|
+ private String getCallBackUrlByUuid(String uuid){
|
|
|
+ String userBizJson = sysDao.getUserBizJson(uuid);
|
|
|
+ if(org.apache.commons.lang3.StringUtils.isNotBlank(userBizJson)){
|
|
|
+ JSONObject obj = JSONObject.parseObject(userBizJson);
|
|
|
+ if(null != obj && !obj.isEmpty() && obj.containsKey("callbackUrl")){
|
|
|
+ return obj.getString("callbackUrl");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
}
|