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