From a60e866f9d30de8ed50d3cd01c3979dfccb6d94b Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期五, 17 十月 2025 09:23:43 +0800
Subject: [PATCH] Merge branch 'dev' into user_action
---
framework/src/main/java/cn/lili/utils/TencentCdnUtil.java | 78 +++++++++++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/framework/src/main/java/cn/lili/utils/TencentCdnUtil.java b/framework/src/main/java/cn/lili/utils/TencentCdnUtil.java
new file mode 100644
index 0000000..de2653e
--- /dev/null
+++ b/framework/src/main/java/cn/lili/utils/TencentCdnUtil.java
@@ -0,0 +1,78 @@
+package cn.lili.utils;
+
+import cn.lili.cos.CDNConfigProperty;
+import com.tencentcloudapi.cdn.v20180606.CdnClient;
+import com.tencentcloudapi.cdn.v20180606.models.DescribePushTasksRequest;
+import com.tencentcloudapi.cdn.v20180606.models.DescribePushTasksResponse;
+import com.tencentcloudapi.cdn.v20180606.models.PushUrlsCacheRequest;
+import com.tencentcloudapi.cdn.v20180606.models.PushUrlsCacheResponse;
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.exception.TencentCloudSDKException;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class TencentCdnUtil {
+ private final CDNConfigProperty cdnConfigProperty;
+
+ public void pushUrlsCache(String[] urls) {
+ try {
+ // 棰勫鐞哢RLs锛屾坊鍔燙DN鍩熷悕
+ String[] processedUrls = processUrlsWithCdnDomain(urls);
+
+ log.info("cdn閾炬帴锛歿}", Arrays.toString(processedUrls));
+ // 涓轰簡淇濇姢瀵嗛挜瀹夊叏锛屽缓璁皢瀵嗛挜璁剧疆鍦ㄧ幆澧冨彉閲忎腑鎴栬�呴厤缃枃浠朵腑锛岃鍙傝�冩湰鏂囧嚟璇佺鐞嗙珷鑺傘��
+ // 纭紪鐮佸瘑閽ュ埌浠g爜涓湁鍙兘闅忎唬鐮佹硠闇茶�屾毚闇诧紝鏈夊畨鍏ㄩ殣鎮o紝骞朵笉鎺ㄨ崘銆�
+ Credential cred = new Credential(cdnConfigProperty.getSecretId(), cdnConfigProperty.getSecretKey());
+ CdnClient client = new CdnClient(cred, "ap-guangzhou");
+
+ PushUrlsCacheRequest req = new PushUrlsCacheRequest();
+ req.setUrls(processedUrls);
+
+ PushUrlsCacheResponse resp = client.PushUrlsCache(req);
+
+ log.info("cdn棰勭儹杩斿洖锛歿}", client.gson.toJson(resp));
+
+ } catch (TencentCloudSDKException e) {
+ log.warn("cdn棰勭儹澶辫触锛歿}", e.toString());
+ }
+ }
+
+ /**
+ * 澶勭悊URL鍒楄〃锛屽湪姣忎釜URL鍓嶆坊鍔燙DN鍩熷悕
+ *
+ * @param urls 鍘熷URL鍒楄〃
+ * @return 娣诲姞浜咰DN鍩熷悕鐨勫畬鏁碪RL鍒楄〃
+ */
+ public String[] processUrlsWithCdnDomain(String[] urls) {
+ if (urls == null || urls.length == 0) {
+ return urls;
+ }
+
+ String cdnDomain = cdnConfigProperty.getCdnDomain();
+ if (cdnDomain == null || cdnDomain.isEmpty()) {
+ return urls;
+ }
+
+ String[] processedUrls = new String[urls.length];
+ for (int i = 0; i < urls.length; i++) {
+ // 濡傛灉URL宸茬粡鍖呭惈鍗忚锛屽垯鐩存帴鎷兼帴
+ if (urls[i].startsWith("http://") || urls[i].startsWith("https://")) {
+ processedUrls[i] = urls[i];
+ } else {
+ // 纭繚cdnDomain鏈熬娌℃湁鏂滄潬锛寀rls寮�澶存病鏈夋枩鏉�
+ String domain = cdnDomain.endsWith("/") ? cdnDomain.substring(0, cdnDomain.length() - 1) : cdnDomain;
+ String path = urls[i].startsWith("/") ? urls[i].substring(1) : urls[i];
+ processedUrls[i] = domain + "/" + path;
+ }
+ }
+
+ return processedUrls;
+ }
+
+}
--
Gitblit v1.8.0