lmx пре 3 дана
родитељ
комит
37a9d18795

+ 21 - 0
src/main/java/com/telerobot/fs/global/CdrPush.java

@@ -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;
+    }
 }

+ 2 - 0
src/main/java/com/telerobot/fs/mybatis/dao/SysDao.java

@@ -69,4 +69,6 @@ public interface SysDao {
 
 	List<LlmKb> getKbListByCatId(int catId);
 
+	String getUserBizJson(String uuid);
+
 }

+ 5 - 0
src/main/java/com/telerobot/fs/mybatis/dao/SysDaoImpl.java

@@ -135,4 +135,9 @@ public class SysDaoImpl implements SysDao {
 	public  List<LlmKb> getKbListByCatId(int catId){
          return mapper.getKbListByCatId(catId);
 	}
+
+	@Override
+	public String getUserBizJson(String uuid){
+		return mapper.getUserBizJson(uuid);
+	}
 }

+ 2 - 0
src/main/java/com/telerobot/fs/mybatis/persistence/SysMapper.java

@@ -83,4 +83,6 @@ public interface SysMapper {
     int updateParam(@Param("code")String paramCode, @Param("value") String paramValue);
 
     List<LlmKb> getKbListByCatId(int catId);
+
+	String getUserBizJson(@Param("uuid") String uuid);
 }

+ 3 - 1
src/main/resources/com/telerobot/fs/mybatis/persistence/SysMapper.xml

@@ -222,5 +222,7 @@
 		order by lastHangupTime asc
 	</select>
 
-
+	<select id="getUserBizJson" resultType="java.lang.String">
+		select biz_json from cc_call_phone where uuid = #{uuid}
+	</select>
 </mapper>