yumeng 2 dní pred
rodič
commit
de44fcc1cd

+ 14 - 3
job-adq/src/main/java/cn/com/ctop/job/adq/data/service/impl/AdqMaterialReportServiceImpl.java

@@ -186,15 +186,15 @@ public class AdqMaterialReportServiceImpl implements IAdqMaterialReportService {
             Map<String, JSONObject> videoInfoMap = getVideoInfoMap(advertiserId, accessToken, filterMissIds(videoIds, videoLinkMap));
             Map<String, JSONObject> imageLinkToSave = new HashMap<>();
             for (Map.Entry<String, String> entry : imageUrlMap.entrySet()) {
-                JSONObject linkInfo = new JSONObject().fluentPut("material_link", entry.getValue());
+                JSONObject linkInfo = new JSONObject().fluentPut("material_link", toHttps(entry.getValue()));
                 imageLinkMap.put(entry.getKey(), linkInfo);
                 imageLinkToSave.put(entry.getKey(), linkInfo);
             }
             Map<String, JSONObject> videoLinkToSave = new HashMap<>();
             for (Map.Entry<String, JSONObject> entry : videoInfoMap.entrySet()) {
                 JSONObject linkInfo = new JSONObject()
-                        .fluentPut("material_link", entry.getValue().getString("preview_url"))
-                        .fluentPut("cover_link", entry.getValue().getString("key_frame_image_url"));
+                        .fluentPut("material_link", toHttps(entry.getValue().getString("preview_url")))
+                        .fluentPut("cover_link", toHttps(entry.getValue().getString("key_frame_image_url")));
                 videoLinkMap.put(entry.getKey(), linkInfo);
                 videoLinkToSave.put(entry.getKey(), linkInfo);
             }
@@ -261,6 +261,17 @@ public class AdqMaterialReportServiceImpl implements IAdqMaterialReportService {
         }
     }
 
+    /**
+     * 腾讯返回的preview_url是http协议,统一转https前缀(浏览器https页面引用http图片会被拦mixed content);
+     * 只替换开头前缀,不动URL其他部分
+     */
+    private String toHttps(String url) {
+        if (url != null && url.startsWith("http://")) {
+            return "https://" + url.substring("http://".length());
+        }
+        return url;
+    }
+
     private List<String> filterMissIds(List<String> materialIds, Map<String, JSONObject> cacheMap) {
         List<String> missIds = new ArrayList<>();
         for (String id : materialIds) {