diff --git a/dy-java-common/pom.xml b/dy-java-common/pom.xml
index ce1397bfc3391f36a84421c5a935056f1ae134ae..7480046e8f9250619073ab48862895ed6f1eb4b5 100644
--- a/dy-java-common/pom.xml
+++ b/dy-java-common/pom.xml
@@ -19,13 +19,19 @@
com.dtflys.forest
- forest-spring-boot-starter
+ forest-spring-boot3-starter
com.alibaba
fastjson
+
+
+ org.projectlombok
+ lombok
+
+
diff --git a/dy-java-common/src/main/java/com/dyj/common/client/TikTokAuthClient.java b/dy-java-common/src/main/java/com/dyj/common/client/TikTokAuthClient.java
new file mode 100644
index 0000000000000000000000000000000000000000..2e743875d66d6cb522af09f089587c968422d755
--- /dev/null
+++ b/dy-java-common/src/main/java/com/dyj/common/client/TikTokAuthClient.java
@@ -0,0 +1,19 @@
+package com.dyj.common.client;
+
+import com.dtflys.forest.annotation.BaseRequest;
+import com.dtflys.forest.annotation.Body;
+import com.dtflys.forest.annotation.Post;
+import com.dyj.common.domain.vo.AccessTikTokTokenVo;
+import com.dyj.common.interceptor.NoTokenInterceptor;
+
+@BaseRequest(baseURL = "${tikTokDomain}",interceptor = NoTokenInterceptor.class)
+public interface TikTokAuthClient {
+
+ /** 获取accessToken */
+ @Post(value = "${tikTokOauthAccessToken}")
+ AccessTikTokTokenVo getAccessToken(@Body("client_key") String clientKey, @Body("client_secret") String clientSecret, @Body("code") String code, @Body("grant_type") String grantType, @Body("redirect_uri") String redirectUri);
+
+ /** 刷新accessToken */
+ @Post(value = "${tikTokOauthAccessToken}")
+ AccessTikTokTokenVo refreshToken(@Body("client_key") String clientKey, @Body("client_secret") String clientSecret, @Body("grant_type") String grantType, @Body("refresh_token") String refreshToken);
+}
diff --git a/dy-java-common/src/main/java/com/dyj/common/domain/DyError.java b/dy-java-common/src/main/java/com/dyj/common/domain/DyError.java
new file mode 100644
index 0000000000000000000000000000000000000000..922166c2d8c0562fd9cf20a20840129290dc6231
--- /dev/null
+++ b/dy-java-common/src/main/java/com/dyj/common/domain/DyError.java
@@ -0,0 +1,14 @@
+package com.dyj.common.domain;
+
+import lombok.Data;
+
+@Data
+public class DyError {
+
+ private String code;
+
+ private String message;
+
+ private String log_id;
+
+}
diff --git a/dy-java-common/src/main/java/com/dyj/common/domain/DyTikTokResult.java b/dy-java-common/src/main/java/com/dyj/common/domain/DyTikTokResult.java
new file mode 100644
index 0000000000000000000000000000000000000000..8eb4663f0141496264d34e7886790504f9883a5b
--- /dev/null
+++ b/dy-java-common/src/main/java/com/dyj/common/domain/DyTikTokResult.java
@@ -0,0 +1,14 @@
+package com.dyj.common.domain;
+
+import lombok.Data;
+
+@Data
+public class DyTikTokResult {
+ /**
+ * 返回对象
+ */
+ private T data;
+
+ private DyError error;
+
+}
diff --git a/dy-java-common/src/main/java/com/dyj/common/domain/query/UserInfoQuery.java b/dy-java-common/src/main/java/com/dyj/common/domain/query/UserInfoQuery.java
index a77adb3e870934106c47630ea7d298d66b3bb195..50cdb0e9ae7ef3bedf31d635285d8dda770ceb9a 100644
--- a/dy-java-common/src/main/java/com/dyj/common/domain/query/UserInfoQuery.java
+++ b/dy-java-common/src/main/java/com/dyj/common/domain/query/UserInfoQuery.java
@@ -13,13 +13,11 @@ public class UserInfoQuery extends BaseQuery {
*/
protected String open_id;
- public String getOpen_id() {
- return open_id;
- }
-
public void setOpen_id(String open_id) {
this.open_id = open_id;
}
-
+ public String getOpen_id() {
+ return open_id;
+ }
}
diff --git a/dy-java-common/src/main/java/com/dyj/common/domain/vo/AccessTikTokTokenVo.java b/dy-java-common/src/main/java/com/dyj/common/domain/vo/AccessTikTokTokenVo.java
new file mode 100644
index 0000000000000000000000000000000000000000..2f16b1ea282d1435d660f52f125298b5b490f0d2
--- /dev/null
+++ b/dy-java-common/src/main/java/com/dyj/common/domain/vo/AccessTikTokTokenVo.java
@@ -0,0 +1,67 @@
+package com.dyj.common.domain.vo;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = true)
+public class AccessTikTokTokenVo extends BaseVo implements Serializable {
+ @Serial
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 授权用户唯一标识
+ */
+ @JSONField(name = "open_id")
+ private String openId;
+
+ /**
+ * 用户授权的作用域(Scope),使用逗号(,)分隔,开放平台几乎每个接口都需要特定的Scope。
+ */
+ private String scope;
+
+ /**
+ * 接口调用凭证
+ */
+ @JSONField(name = "access_token")
+ private String accessToken;
+
+ /**
+ * access_token接口调用凭证超时时间,单位(秒)
+ */
+ @JSONField(name = "expires_in")
+ private Long expiresIn;
+
+ /**
+ * 日志ID
+ */
+ @JSONField(name = "log_id")
+ private String logId;
+
+ /**
+ * 用户刷新access_token
+ */
+ @JSONField(name = "refresh_token")
+ private String refreshToken;
+
+ /**
+ * refresh_token凭证超时时间,单位(秒)
+ */
+ @JSONField(name = "refresh_expires_in")
+ private Long refreshExpiresIn;
+
+ /**
+ * token类型
+ */
+ @JSONField(name = "token_type")
+ private String tokenType;
+
+}
diff --git a/dy-java-common/src/main/java/com/dyj/common/enums/DyTikTokPathEnum.java b/dy-java-common/src/main/java/com/dyj/common/enums/DyTikTokPathEnum.java
new file mode 100644
index 0000000000000000000000000000000000000000..c96cea3ebd3f8e71df243cc958d1cb6d260458c3
--- /dev/null
+++ b/dy-java-common/src/main/java/com/dyj/common/enums/DyTikTokPathEnum.java
@@ -0,0 +1,68 @@
+package com.dyj.common.enums;
+
+public enum DyTikTokPathEnum {
+
+ /**
+ * 域名
+ */
+ DOMAIN("tikTokDomain", "https://open.tiktokapis.com/v2"),
+ /**
+ * 获取 access_token
+ */
+ OAUTH_ACCESS_TOKEN("tikTokOauthAccessToken", "/oauth/token/"),
+
+ /**
+ * 用户信息
+ */
+ USER_INFO("tikTokUserInfo", "/user/info/"),
+
+ /**
+ * 查询视频列表
+ */
+ QUERY_VIDEO_LIST("tikTokQueryVideoList", "/video/list/"),
+
+ /**
+ * 初始化上传视频
+ */
+ INIT_UPLOAD_VIDEO("tikTokInitUploadVideo", "/post/publish/inbox/video/init/"),
+
+ /**
+ * 上传图片
+ */
+ UPLOAD_IMAGE("tikTokUploadImage", "/post/publish/content/init/"),
+
+ QUERY_POST_STATUS("tikTokQueryPostStatus", "/post/publish/status/fetch/");
+
+ private String key;
+ private String value;
+
+ DyTikTokPathEnum(String key, String value) {
+ this.key = key;
+ this.value = value;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public static String getValueByKey(String key) {
+ for (DyWebUrlPathEnum e : DyWebUrlPathEnum.values()) {
+ if (e.getKey().equals(key)) {
+ return e.getValue();
+ }
+ }
+ return null;
+ }
+}
diff --git a/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientQueryTokenInterceptor.java b/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientQueryTokenInterceptor.java
index 2d48e5b5a5c9d711714f440737168d096d9b0ea4..d1aa5849fdd73e8fa2ecdb081ebdc9b7b45e4b8d 100644
--- a/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientQueryTokenInterceptor.java
+++ b/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientQueryTokenInterceptor.java
@@ -18,7 +18,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Objects;
@Component
diff --git a/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientTokenInterceptor.java b/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientTokenInterceptor.java
index a9333fffc702bfc0cbb6ff19352bc334fc73703e..16faaac2e15c272c25a12edffbe1c8ea8d667bb8 100644
--- a/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientTokenInterceptor.java
+++ b/dy-java-common/src/main/java/com/dyj/common/interceptor/ClientTokenInterceptor.java
@@ -26,8 +26,8 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
-import javax.annotation.PostConstruct;
-import javax.annotation.Resource;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.Resource;
import java.util.Objects;
@Component
diff --git a/dy-java-common/src/main/java/com/dyj/common/interceptor/SubscriptionTokenInterceptor.java b/dy-java-common/src/main/java/com/dyj/common/interceptor/SubscriptionTokenInterceptor.java
index 8490e3cdf04279a2cb1b167bc14d120a7fb27301..48390b236981f43284d7279ab7fa01afb828db6b 100644
--- a/dy-java-common/src/main/java/com/dyj/common/interceptor/SubscriptionTokenInterceptor.java
+++ b/dy-java-common/src/main/java/com/dyj/common/interceptor/SubscriptionTokenInterceptor.java
@@ -22,7 +22,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Objects;
/**
diff --git a/dy-java-common/src/main/java/com/dyj/common/interceptor/TikTokBodyTokenInterceptor.java b/dy-java-common/src/main/java/com/dyj/common/interceptor/TikTokBodyTokenInterceptor.java
new file mode 100644
index 0000000000000000000000000000000000000000..0a017d34147abb26b7c141472e757c1dba1d7ac6
--- /dev/null
+++ b/dy-java-common/src/main/java/com/dyj/common/interceptor/TikTokBodyTokenInterceptor.java
@@ -0,0 +1,62 @@
+package com.dyj.common.interceptor;
+
+import com.alibaba.fastjson.JSONObject;
+import com.dtflys.forest.exceptions.ForestRuntimeException;
+import com.dtflys.forest.http.ForestRequest;
+import com.dtflys.forest.http.ForestResponse;
+import com.dtflys.forest.interceptor.Interceptor;
+import com.dyj.common.domain.UserTokenInfo;
+import com.dyj.common.domain.query.UserInfoQuery;
+import com.dyj.common.service.IAgentTokenService;
+import com.dyj.common.utils.DyConfigUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.Objects;
+
+@Component
+public class TikTokBodyTokenInterceptor implements Interceptor