From e88d34fd4cbe3a0cc57ecfdc1710d66bc88e26b5 Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期二, 10 六月 2025 14:07:53 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
---
pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/video/ys/YsAppClient.java | 135 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 135 insertions(+), 0 deletions(-)
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/video/ys/YsAppClient.java b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/video/ys/YsAppClient.java
new file mode 100644
index 0000000..f4bf603
--- /dev/null
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-remote/src/main/java/com/dy/pipIrrRemote/video/ys/YsAppClient.java
@@ -0,0 +1,135 @@
+package com.dy.pipIrrRemote.video.ys;
+
+import com.dy.common.schedulerTask.SchedulerTaskSupport;
+import com.dy.pipIrrRemote.video.YsAppCtrl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.stereotype.Component;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.util.UriComponentsBuilder;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/6/7 11:40
+ * @Description
+ */
+@Slf4j
+@Component
+public class YsAppClient {
+
+ private static final String JobName = "VideoYsJob" ;
+ private static final String JobGroupName = "VideoYsGroup" ;
+ private static final Integer ThreadPoolMaxCount = 1 ;//绾跨▼姹犵嚎绋嬫渶澶т釜鏁�
+ private static final Integer ThreadPoolPriority = 5 ;//绾跨▼浼樺厛绾�
+ private static final boolean quartzJobRunOneTimes = true ;//瀹氭椂浠诲姟鍙墽琛屼竴娆�
+
+ @Value("${video.ys.accessTokenExpireDay: 7}")
+ protected Integer accessTokenExpireDay;//AccessToken杩囨湡鏃堕棿锛屽崟浣嶅ぉ
+
+ @Value("${video.ys.appKey}")
+ protected String appKey;
+
+ @Value("${video.ys.secret}")
+ protected String secret;
+
+ @Value("${video.ys.requestAccessTokenUrl}")
+ protected String requestAccessTokenUrl;
+
+ @Autowired
+ protected RestTemplate restTemplate ;
+
+ @Autowired
+ protected YsAppCtrl ysVideoCtrl;
+
+ private Long computeNetGetAccessTokenAt(){
+ Long millis = (System.currentTimeMillis() + (accessTokenExpireDay * 24 * 60 * 60 * 1000) ) ;
+ // millis = 10000L ;
+ return millis ;
+ }
+
+ /**
+ * 鑾峰緱AccessToken
+ */
+ public void getAccessToken(){
+ if((appKey != null && appKey.trim().length() > 0)
+ && (secret != null && secret.trim().length() > 0)
+ && (requestAccessTokenUrl != null && requestAccessTokenUrl.trim().length() > 0)){
+ MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
+ formData.add("appKey", appKey);
+ formData.add("appSecret", secret);
+ YsAccessTokenResponse response = this.postRequest2Ys(restTemplate, requestAccessTokenUrl, formData);
+ if(response != null){
+ switch (response.code){
+ case "200" :{
+ this.dealSuccessOfRequestAccessTokenFromYs(response) ;
+ break ;
+ }
+ default: {
+ this.dealErrorOfRequestAccessTokenFromYs(response) ;
+ break ;
+ }
+ }
+ }
+ }
+ }
+ private void dealSuccessOfRequestAccessTokenFromYs(YsAccessTokenResponse response){
+ if(response != null && response.data != null){
+ ysVideoCtrl.saveAccessTokenOfYs(response.data.accessToken, response.data.expireTime);
+ }
+ }
+
+ private void dealErrorOfRequestAccessTokenFromYs(YsAccessTokenResponse response){
+ log.error("浠庤悿鐭冲紑鏀惧钩鍙拌幏寰桝ccessToken澶辫触锛岄敊璇爜锛歿}锛岄敊璇俊鎭細{}", response.code, response.msg);
+ }
+ /**
+ * 璁剧疆涓嬫鑾峰緱AccessToken
+ */
+ public void reSetNextGetAccessToken(Long getAccessTokenAt){
+ if(getAccessTokenAt == null || getAccessTokenAt.longValue() == 0){
+ getAccessTokenAt = this.computeNetGetAccessTokenAt() ;
+ }
+ //姣鍙樻垚绉�
+ int futureSecond = (int)((getAccessTokenAt - System.currentTimeMillis()) / 1000) ;
+ try {
+ SchedulerTaskSupport.setThreadPoolPro(ThreadPoolMaxCount , ThreadPoolPriority);
+ //鍥犱负瑕侀噸澶嶅姞宸ヤ綔浠诲姟锛屾墍浠ュ厛鎶婁笂娆″姞鐨勫悓缁勫悓鍚嶄换鍔″垹闄�
+ SchedulerTaskSupport.deleteJob(JobName , JobGroupName) ;
+ // 鍙墽琛屼竴娆$殑浠诲姟
+ SchedulerTaskSupport.addSecondlyJob(JobName , JobGroupName, YsAccessTokenQuartzJob.class, null, futureSecond, 1, 0) ;
+ } catch (Exception e) {
+ log.error("璁剧疆浠庤悿鐭冲紑鏀惧钩鍙板畾鏃惰幏寰桝ccessToken浠诲姟鏃跺彂鐢熷紓甯�", e);
+ }
+ }
+ /**
+ * 鍚戣悿鐭冲紑鏀惧钩鍙板彂閫丳ost璇锋眰
+ * @param restTemplate SpringBoot鐨凴estTemplate
+ * @param toMwUrl web璇锋眰Url
+ * @param body 鏁版嵁
+ * @return
+ */
+ private YsAccessTokenResponse postRequest2Ys(RestTemplate restTemplate, String toMwUrl, Object body) {
+ String url = UriComponentsBuilder.fromUriString(toMwUrl)
+ .build()
+ .toUriString();
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+
+ HttpEntity<?> httpEntity = new HttpEntity<>(body, headers);
+ ResponseEntity<YsAccessTokenResponse> resEntity = null;
+ try {
+ // 閫氳繃Post鏂瑰紡璋冪敤鎺ュ彛
+ resEntity = restTemplate.exchange(url, HttpMethod.POST, httpEntity, YsAccessTokenResponse.class);
+ } catch (Exception e) {
+ log.error("浠庤悿鐭冲紑鏀惧钩鍙板畾鏃惰幏寰桝ccessToken浠诲姟鎵ц鏃跺彂鐢熷紓甯�", e);
+ }
+ if(resEntity != null){
+ return resEntity.getBody();
+ }
+ return null ;
+ }
+
+}
--
Gitblit v1.8.0