From 31155ed32e2f2e2022b4b1697c8a2052a8543a48 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期三, 25 十月 2023 21:38:04 +0800
Subject: [PATCH] 合并代码

---
 ycl-platform/src/main/java/com/ycl/config/MqConstant.java                         |   14 ++
 ycl-platform/src/main/java/com/ycl/PlatformApplication.java                       |    2 
 ycl-platform/pom.xml                                                              |    5 
 ycl-platform/src/main/java/com/ycl/config/FastJson2JsonRedisSerializer.java       |   49 ++++++++
 ycl-platform/src/main/resources/application.yml                                   |    1 
 ycl-platform/src/main/java/com/ycl/controller/dingding/IntelligentClientTest.java |  110 ++++++++++++++++++
 ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java        |   50 ++++++++
 ycl-platform/src/main/java/com/ycl/config/DdTest.java                             |   71 +++++++++++
 ycl-platform/src/main/java/com/ycl/config/RestTemplateConfig.java                 |   20 ++
 9 files changed, 318 insertions(+), 4 deletions(-)

diff --git a/ycl-platform/pom.xml b/ycl-platform/pom.xml
index c8f0758..909d85e 100644
--- a/ycl-platform/pom.xml
+++ b/ycl-platform/pom.xml
@@ -55,6 +55,11 @@
             <artifactId>httpmime</artifactId>
             <version>4.5.14</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.14</version>
+        </dependency>
     </dependencies>
 
 <!--    <build>-->
diff --git a/ycl-platform/src/main/java/com/ycl/PlatformApplication.java b/ycl-platform/src/main/java/com/ycl/PlatformApplication.java
index 163ff52..efdca70 100644
--- a/ycl-platform/src/main/java/com/ycl/PlatformApplication.java
+++ b/ycl-platform/src/main/java/com/ycl/PlatformApplication.java
@@ -22,7 +22,7 @@
 @EnableScheduling
 @EnableFeignClients
 @EnableTransactionManagement(proxyTargetClass = true)
-@SpringBootApplication
+@SpringBootApplication(scanBasePackages = "com.ycl")
 public class PlatformApplication {
     public static void main(String[] args) throws UnknownHostException {
         ConfigurableApplicationContext application = SpringApplication.run(PlatformApplication.class, args);
diff --git a/ycl-platform/src/main/java/com/ycl/config/DdTest.java b/ycl-platform/src/main/java/com/ycl/config/DdTest.java
new file mode 100644
index 0000000..db97b67
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/config/DdTest.java
@@ -0,0 +1,71 @@
+package com.ycl.config;
+
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.xxpt.gateway.shared.api.request.OapiGettokenJsonRequest;
+import com.alibaba.xxpt.gateway.shared.api.response.OapiGettokenJsonResponse;
+import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
+import com.alibaba.xxpt.gateway.shared.client.http.IntelligentGetClient;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.concurrent.TimeUnit;
+@Slf4j
+@Component
+@EnableScheduling
+public class DdTest {
+
+//    @Autowired
+//    private RedisTemplate<Object,Object> redisTemplate;
+
+    @Value("${zzding.app-key}")
+    public String appKey;
+
+    @Value("${zzding.app-secret}")
+    public String appSecret;
+
+    private static ExecutableClient executableClient;
+
+    @PostConstruct
+    public void init(){
+        executableClient= ExecutableClient.getInstance();
+        executableClient.setDomainName("openplatform.dg-work.cn");
+        executableClient.setProtocal("https");
+        executableClient.setAccessKey(appKey);
+        executableClient.setSecretKey(appSecret);
+        executableClient.init();
+    }
+
+    public static ExecutableClient getExecutableClient() {
+        return executableClient;
+    }
+
+
+//    //姣忎竴灏忔椂30鍒嗘墽琛屼竴娆★紝鑾峰彇鏈�鏂皌oken鏀惧叆redis
+//    @Scheduled(initialDelay = 0L,fixedDelay = 5400000L)
+//    public void getToken() {
+//        IntelligentGetClient intelligentGetClient = DdTest.getExecutableClient().newIntelligentGetClient("/gettoken.json");
+//        OapiGettokenJsonRequest oapiGettokenJsonRequest = new OapiGettokenJsonRequest();
+//        oapiGettokenJsonRequest.setAppkey(appKey);
+//        oapiGettokenJsonRequest.setAppsecret(appSecret);
+//        OapiGettokenJsonResponse apiResult = intelligentGetClient.get(oapiGettokenJsonRequest);
+//        String data = apiResult.getContent().getData();
+//        if (data != null && !data.contains("errorCode")) {
+//            log.info("鑾峰彇token鎴愬姛");
+//            JSONObject jsonObject = JSON.parseObject(data);
+//            String token = (String) jsonObject.get("accessToken");
+//            log.info("鑾峰彇token鎴愬姛锛歿}",token);
+//            redisTemplate.opsForValue().set(MqConstant.DD_ACCESS_TOKEN, token, 2, TimeUnit.HOURS);
+//        }else {
+//            throw new RuntimeException("閽夐拤token鑾峰彇澶辫触");
+//        }
+//    }
+
+}
diff --git a/ycl-platform/src/main/java/com/ycl/config/FastJson2JsonRedisSerializer.java b/ycl-platform/src/main/java/com/ycl/config/FastJson2JsonRedisSerializer.java
new file mode 100644
index 0000000..44131e8
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/config/FastJson2JsonRedisSerializer.java
@@ -0,0 +1,49 @@
+package com.ycl.config;
+
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONReader;
+import com.alibaba.fastjson2.JSONWriter;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.SerializationException;
+
+import java.nio.charset.Charset;
+
+/**
+ * Redis浣跨敤FastJson搴忓垪鍖�
+ * 
+ * @author ruoyi
+ */
+public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T>
+{
+    public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
+
+    private Class<T> clazz;
+
+    public FastJson2JsonRedisSerializer(Class<T> clazz)
+    {
+        super();
+        this.clazz = clazz;
+    }
+
+    @Override
+    public byte[] serialize(T t) throws SerializationException
+    {
+        if (t == null)
+        {
+            return new byte[0];
+        }
+        return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET);
+    }
+
+    @Override
+    public T deserialize(byte[] bytes) throws SerializationException
+    {
+        if (bytes == null || bytes.length <= 0)
+        {
+            return null;
+        }
+        String str = new String(bytes, DEFAULT_CHARSET);
+
+        return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType);
+    }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/config/MqConstant.java b/ycl-platform/src/main/java/com/ycl/config/MqConstant.java
new file mode 100644
index 0000000..5ba707a
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/config/MqConstant.java
@@ -0,0 +1,14 @@
+package com.ycl.config;
+
+public interface MqConstant {
+
+    String DATA_QUEUE="data_queue_two";
+
+    String DATA_EXCHANGE="data_exchange";
+
+    String DATA_ROUTE_KEY="data_route_key";
+
+    String EXCHANGE_TYPE_TOPIC="topic";
+
+    String DD_ACCESS_TOKEN="dd_access_token";
+}
diff --git a/ycl-platform/src/main/java/com/ycl/config/RestTemplateConfig.java b/ycl-platform/src/main/java/com/ycl/config/RestTemplateConfig.java
index 9aaa3c5..c7729f2 100644
--- a/ycl-platform/src/main/java/com/ycl/config/RestTemplateConfig.java
+++ b/ycl-platform/src/main/java/com/ycl/config/RestTemplateConfig.java
@@ -2,13 +2,27 @@
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.client.ClientHttpRequestFactory;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 import org.springframework.web.client.RestTemplate;
 
 @Configuration
 public class RestTemplateConfig {
 
+
     @Bean
-    public RestTemplate restTemplate() {
-        return new RestTemplate();
+    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
+        RestTemplate restTemplate = new RestTemplate(factory);
+        restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
+        return  restTemplate;
     }
-}
+
+    @Bean
+    public ClientHttpRequestFactory factory(){
+        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+        factory.setReadTimeout(5000);
+        factory.setConnectTimeout(15000);
+        return factory;
+    }
+}
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java b/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
index ba9b287..13002eb 100644
--- a/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
+++ b/ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java
@@ -10,10 +10,12 @@
 import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
 import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.common.utils.StringUtils;
 import com.aliyun.oss.model.ObjectMetadata;
 import com.ycl.api.CommonResult;
 import com.ycl.bo.AdminUserDetails;
 import com.ycl.common.dingding.DingCommon;
+import com.ycl.config.DdTest;
 import com.ycl.config.DingConfig;
 import com.ycl.controller.BaseController;
 import com.ycl.entity.dingding.DingUserInfo;
@@ -187,6 +189,54 @@
         return CommonResult.success(bookRemarkService.updateRemark(user, userId, remark));
     }
 
+
+    @PostMapping("/oss/sign")
+    public CommonResult ossSign(@RequestParam("mediaId") String mediaId, @RequestParam("extension") String extension) {
+        log.info("鎺ユ敹鍒癴ile");
+        if (StringUtils.isNullOrEmpty(mediaId) || StringUtils.isNullOrEmpty(extension)) {
+            return CommonResult.failed("鍙傛暟涓嶈兘涓虹┖锛�");
+        }
+        ExecutableClient executableClient = DdTest.getExecutableClient();
+        CloseableHttpResponse response = null;
+        OSS ossClient = null;
+        try {
+            //浠庨拤閽夎幏鍙栬棰戞祦
+            String api = "/media/download";
+            GetClient getClient = executableClient.newGetClient(api);
+            //浠巖edis鑾峰彇token
+            String token = getToken();
+            //璁剧疆鍙傛暟
+            getClient.addParameter("access_token", token);
+            getClient.addParameter("media_id", mediaId);
+            response = getClient.getB();
+            HttpEntity entity = response.getEntity();
+            InputStream is = entity.getContent();
+            DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+
+            String strDate2 = dtf2.format(LocalDateTime.now());
+
+            String fileName = strDate2 + RandomUtils.generateRandomInt(4) + "." + extension;
+            MultipartFile file = getMultipartFile(is, fileName);
+            String url = ossService.uploadImages(file);
+            return CommonResult.success(url);
+        } catch (Exception e) {
+            e.printStackTrace();
+            System.out.println(e.getMessage());
+        } finally {
+            if (ossClient != null) {
+                ossClient.shutdown();
+            }
+            if (response != null) {
+                try {
+                    response.close();
+                } catch (Exception e) {
+                    System.out.println(e);
+                }
+            }
+        }
+        return null;
+    }
+
     @ApiOperation(value = "鑾峰彇瑙嗛")
     @GetMapping("/getVideo/{mediaId}")
     public CommonResult<String> getVideo(@PathVariable String mediaId) {
diff --git a/ycl-platform/src/main/java/com/ycl/controller/dingding/IntelligentClientTest.java b/ycl-platform/src/main/java/com/ycl/controller/dingding/IntelligentClientTest.java
new file mode 100644
index 0000000..7cd42a9
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/controller/dingding/IntelligentClientTest.java
@@ -0,0 +1,110 @@
+package com.ycl.controller.dingding;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.xxpt.gateway.shared.api.request.OapiMediaUploadRequest;
+import com.alibaba.xxpt.gateway.shared.api.response.OapiMediaUploadResponse;
+import com.alibaba.xxpt.gateway.shared.client.http.ExecutableClient;
+import com.alibaba.xxpt.gateway.shared.client.http.GetClient;
+import com.alibaba.xxpt.gateway.shared.client.http.IntelligentPostClient;
+import com.alibaba.xxpt.gateway.shared.client.http.PostClient;
+
+import java.io.*;
+
+import static com.ycl.common.constant.DingConst.GET_TIKER;
+import static com.ycl.common.constant.DingConst.GET_TOKEN;
+
+public class IntelligentClientTest {
+    private static ExecutableClient executableClient;
+
+    static {
+        executableClient = ExecutableClient.getInstance();
+        //DomainName涓嶅悓鐜瀵瑰簲涓嶅悓鍩熷悕锛岀ず渚嬩负sass鍩熷悕
+        executableClient.setDomainName("openplatform.dg-work.cn");
+        executableClient.setProtocal("https");
+        //搴旂敤App Key
+        executableClient.setAccessKey("SC_ZHZF-IC5g2YiRDW8tug1DfAfiui");
+        //搴旂敤App Secret
+        executableClient.setSecretKey("39RIHFOKd8fUeeW9T7CdBcwEqA6dMKx5d3686B6P");
+        executableClient.init();
+    }
+
+
+    private static String getToken() {
+        //璋冪敤API
+        GetClient getTokenClient = executableClient.newGetClient(GET_TOKEN);
+        //璁剧疆鍙傛暟
+        getTokenClient.addParameter("appkey", "SC_ZHZF-IC5g2YiRDW8tug1DfAfiui");
+        getTokenClient.addParameter("appsecret", "39RIHFOKd8fUeeW9T7CdBcwEqA6dMKx5d3686B6P");
+        String apiResult = getTokenClient.get();
+        return parsingResult(apiResult);
+    }
+
+
+    private static String parsingResult(String apiResult) {
+        if (ObjectUtil.isNotNull(apiResult)) {
+            JSONObject resJson = JSONObject.parseObject(apiResult);
+            if (resJson.getBoolean("success")) {
+                JSONObject content = resJson.getJSONObject("content");
+                if (content.getBoolean("success")) {
+                    JSONObject dataObj = content.getJSONObject("data");
+                    String accessToken = dataObj.getString("accessToken");
+                    return accessToken;
+                }
+            }
+        }
+        return null;
+    }
+
+    public static void main(String[] args) {
+//        //executableClient淇濊瘉鍗曚緥
+//        IntelligentPostClient intelligentPostClient = executableClient.newIntelligentPostClient("/media/upload");
+//        OapiMediaUploadRequest oapiMediaUploadRequest = new OapiMediaUploadRequest();
+//        String token = getToken();
+//        //璋冪敤鎺ュ彛鍑瘉
+//        oapiMediaUploadRequest.setAccess_token(token);
+//        //濯掍綋鏂囦欢绫诲瀷锛屽垎鍒湁鍥剧墖锛坕mage锛夈�佽闊筹紙voice锛夈�佹櫘閫氭枃浠�(file)
+//        oapiMediaUploadRequest.setType("file");
+//        //orm-data涓獟浣撴枃浠舵爣璇嗭紝鏈塮ilename銆乫ilelength銆乧ontent-type绛変俊鎭�
+//        oapiMediaUploadRequest.setMedia("瀛楃涓�");
+//        intelligentPostClient.addFile(new File("F:\\瑙嗛\\C20353B5856A7413D4B40A8D42BBA569.mp4"));
+//        //鑾峰彇缁撴灉
+//        OapiMediaUploadResponse apiResult = intelligentPostClient.post(oapiMediaUploadRequest);
+//        System.out.println(apiResult);
+        File file = new File("F:\\halon.json");
+        try {
+
+            JSONObject jsonObject = readerMethod(file);
+
+            String dataList = jsonObject.getString("dataObj");
+            JSONArray array = JSON.parseArray(dataList);
+            String urls = "";
+            for (int i = 0; i < 311; i++) {
+                JSONObject object = (JSONObject) array.get(i);
+                String path = object.getString("FilePath");
+                urls += path + "\r\n";
+            }
+            System.out.println(urls);
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private static JSONObject readerMethod(File file) throws IOException, FileNotFoundException {
+        FileReader fileReader = new FileReader(file);
+        Reader reader = new InputStreamReader(new FileInputStream(file), "Utf-8");
+        int ch = 0;
+        StringBuffer sb = new StringBuffer();
+        while ((ch = reader.read()) != -1) {
+            sb.append((char) ch);
+        }
+        fileReader.close();
+        reader.close();
+        String jsonStr = sb.toString();
+//        System.out.println(JSON.parseObject(jsonStr));
+        return JSON.parseObject(jsonStr);
+    }
+}
diff --git a/ycl-platform/src/main/resources/application.yml b/ycl-platform/src/main/resources/application.yml
index 75ab11b..b117905 100644
--- a/ycl-platform/src/main/resources/application.yml
+++ b/ycl-platform/src/main/resources/application.yml
@@ -92,3 +92,4 @@
       - /**/API/**
       - /**/ding/**
       - /**/sccg_region/**
+      - oss/sign

--
Gitblit v1.8.0