ycl-platform/pom.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/PlatformApplication.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/config/DdTest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/config/FastJson2JsonRedisSerializer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/config/MqConstant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/config/RestTemplateConfig.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/controller/dingding/DingController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/java/com/ycl/controller/dingding/IntelligentClientTest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-platform/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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>--> 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); ycl-platform/src/main/java/com/ycl/config/DdTest.java
New file @@ -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分执行一次,获取最新token放入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获取失败"); // } // } } ycl-platform/src/main/java/com/ycl/config/FastJson2JsonRedisSerializer.java
New file @@ -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); } } ycl-platform/src/main/java/com/ycl/config/MqConstant.java
New file @@ -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"; } 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; } } 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("接收到file"); 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); //从redis获取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) { ycl-platform/src/main/java/com/ycl/controller/dingding/IntelligentClientTest.java
New file @@ -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); // //媒体文件类型,分别有图片(image)、语音(voice)、普通文件(file) // oapiMediaUploadRequest.setType("file"); // //orm-data中媒体文件标识,有filename、filelength、content-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); } } ycl-platform/src/main/resources/application.yml
@@ -92,3 +92,4 @@ - /**/API/** - /**/ding/** - /**/sccg_region/** - oss/sign