pull/2/head
3y 3 years ago
commit e66101b6c3

@ -5,11 +5,16 @@
<parent>
<artifactId>austin</artifactId>
<groupId>com.java3y.austin</groupId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>austin-common</artifactId>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,26 @@
package com.java3y.austin.pojo;
import lombok.Builder;
import lombok.Data;
import java.util.Set;
/**
* @author 3y
* @date 2021/11/4
*
*/
@Data
@Builder
public class SmsParam {
/**
*
*/
private Set<String> phones;
/**
*
*/
private String content;
}

@ -5,17 +5,34 @@
<parent>
<artifactId>austin</artifactId>
<groupId>com.java3y.austin</groupId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>austin-handler</artifactId>
<dependencies>
<dependency>
<groupId>com.java3y.austin</groupId>
<artifactId>austin-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.java3y.austin</groupId>
<artifactId>austin-support</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<exclusions>
<exclusion>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>

@ -0,0 +1,82 @@
package com.java3y.austin.script;
import cn.hutool.core.util.IdUtil;
import com.alibaba.fastjson.JSON;
import com.google.common.base.Throwables;
import com.java3y.austin.pojo.SmsParam;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* @author 3y
* @date 2021/11/6
* 1. https://cloud.tencent.com/document/api/382/55981
* 2. 使SDK
* 3. 使API Explorer
*/
@Service
@Slf4j
public class TencentSmsScript {
/**
* api
*/
private static final String URL = "sms.tencentcloudapi.com";
private static final String REGION = "ap-guangzhou";
/**
* TODO
*/
private final static String SECRET_ID = "//";
private final static String SECRET_KEY = "//";
private static final String SMS_SDK_APP_ID = "//";
private static final String TEMPLATE_ID = "//";
private static final String SIGN_NAME = "//";
public String send(SmsParam smsParam) {
try {
/**
* client
*/
Credential cred = new Credential(SECRET_ID, SECRET_KEY);
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint(URL);
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
SmsClient client = new SmsClient(cred, REGION, clientProfile);
/**
*
*/
SendSmsRequest req = new SendSmsRequest();
String[] phoneNumberSet1 = smsParam.getPhones().toArray(new String[smsParam.getPhones().size() - 1]);
req.setPhoneNumberSet(phoneNumberSet1);
req.setSmsSdkAppId(SMS_SDK_APP_ID);
req.setSignName(SIGN_NAME);
req.setTemplateId(TEMPLATE_ID);
String[] templateParamSet1 = {smsParam.getContent()};
req.setTemplateParamSet(templateParamSet1);
req.setSessionContext(IdUtil.fastSimpleUUID());
/**
*
*/
SendSmsResponse resp = client.SendSms(req);
return SendSmsResponse.toJsonString(resp);
} catch (TencentCloudSDKException e) {
log.error("send tencent sms fail!{},params:{}",
Throwables.getStackTraceAsString(e), JSON.toJSONString(smsParam));
return null;
}
}
}

@ -5,7 +5,7 @@
<parent>
<artifactId>austin</artifactId>
<groupId>com.java3y.austin</groupId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

@ -5,7 +5,7 @@
<parent>
<artifactId>austin</artifactId>
<groupId>com.java3y.austin</groupId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>

@ -5,18 +5,52 @@
<parent>
<artifactId>austin</artifactId>
<groupId>com.java3y.austin</groupId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>austin-support</artifactId>
<dependencies>
<!--mysql驱动包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>

@ -0,0 +1,87 @@
package com.java3y.austin.config;
import okhttp3.ConnectionPool;
import okhttp3.OkHttpClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.net.ssl.*;
import java.security.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.concurrent.TimeUnit;
/**
* @author 3y
* @date 2021/11/4
*/
@Configuration
public class OkHttpConfiguration {
@Value("${ok.http.connect-timeout}")
private Integer connectTimeout;
@Value("${ok.http.read-timeout}")
private Integer readTimeout;
@Value("${ok.http.write-timeout}")
private Integer writeTimeout;
@Value("${ok.http.max-idle-connections}")
private Integer maxIdleConnections;
@Value("${ok.http.keep-alive-duration}")
private Long keepAliveDuration;
@Bean
public OkHttpClient okHttpClient() {
return new OkHttpClient.Builder()
.sslSocketFactory(sslSocketFactory(), x509TrustManager())
.retryOnConnectionFailure(false)
.connectionPool(pool())
.connectTimeout(connectTimeout, TimeUnit.SECONDS)
.readTimeout(readTimeout, TimeUnit.SECONDS)
.writeTimeout(writeTimeout,TimeUnit.SECONDS)
.hostnameVerifier((hostname, session) -> true)
.build();
}
@Bean
public X509TrustManager x509TrustManager() {
return new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
};
}
@Bean
public SSLSocketFactory sslSocketFactory() {
try {
// 信任任何链接
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, new TrustManager[]{x509TrustManager()}, new SecureRandom());
return sslContext.getSocketFactory();
} catch (NoSuchAlgorithmException | KeyManagementException e) {
e.printStackTrace();
}
return null;
}
@Bean
public ConnectionPool pool() {
return new ConnectionPool(maxIdleConnections, keepAliveDuration, TimeUnit.SECONDS);
}
}

@ -0,0 +1,195 @@
package com.java3y.austin.utils;
import cn.hutool.core.map.MapUtil;
import com.google.common.base.Throwables;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
import java.util.Map;
/**
* @author 3y
* @date 2021/11/4
*/
@Slf4j
@Component
public class OkHttpUtils {
private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
private static final MediaType XML = MediaType.parse("application/xml; charset=utf-8");
@Autowired
private OkHttpClient okHttpClient;
/**
* get
*
* @param url url
* @return string
*/
public String doGet(String url) {
return doGet(url, null, null);
}
/**
* get
*
* @param url url
* @param params map
* @return string
*/
public String doGet(String url, Map<String, String> params) {
return doGet(url, params, null);
}
/**
* get
*
* @param url url
* @param headers {k1, v1 k2, v2, ...}
* @return string
*/
public String doGetWithHeaders(String url, Map<String,String> headers) {
return doGet(url, null, headers);
}
/**
* get
*
* @param url url
* @param params map
* @param headers {k1, v1 k2, v2, ...}
* @return string
*/
public String doGet(String url, Map<String, String> params, Map<String,String> headers) {
StringBuilder sb = new StringBuilder(url);
if (params != null && params.keySet().size() > 0) {
boolean firstFlag = true;
for (String key : params.keySet()) {
if (firstFlag) {
sb.append("?").append(key).append("=").append(params.get(key));
firstFlag = false;
} else {
sb.append("&").append(key).append("=").append(params.get(key));
}
}
}
Request.Builder builder = getBuilderWithHeaders(headers);
Request request = builder.url(sb.toString()).build();
log.info("do get request and url[{}]", sb.toString());
return execute(request);
}
/**
* post
*
* @param url url
* @param params map
* @param headers {k1, v1 k2, v2, ...}
* @return string
*/
public String doPost(String url, Map<String, String> params, Map<String,String> headers) {
FormBody.Builder formBuilder = new FormBody.Builder();
if (params != null && params.keySet().size() > 0) {
for (String key : params.keySet()) {
formBuilder.add(key, params.get(key));
}
}
Request.Builder builder = getBuilderWithHeaders(headers);
Request request = builder.url(url).post(formBuilder.build()).build();
log.info("do post request and url[{}]", url);
return execute(request);
}
/**
* request Builder
*
* @param headers {k1, v1 k2, v2, ...}
* @return
*/
private Request.Builder getBuilderWithHeaders(Map<String,String> headers) {
Request.Builder builder = new Request.Builder();
if (!MapUtil.isEmpty(headers)) {
for (Map.Entry<String, String> entry : headers.entrySet()) {
builder.addHeader(entry.getKey(), entry.getValue());
}
}
return builder;
}
/**
* post , json
*
* @param url url
* @param json , json
* @return string
*/
public String doPostJson(String url, String json) {
log.info("do post request and url[{}]", url);
return executePost(url, json, JSON, null);
}
/**
* post , json
*
* @param url url
* @param json , json
* @param headers {k1, v1 k2, v2, ...}
* @return string
*/
public String doPostJsonWithHeaders(String url, String json, Map<String, String> headers) {
log.info("do post request and url[{}]", url);
return executePost(url, json, JSON, headers);
}
/**
* post , xml
*
* @param url url
* @param xml , xml
* @return string
*/
public String doPostXml(String url, String xml) {
log.info("do post request and url[{}]", url);
return executePost(url, xml, XML, null);
}
private String executePost(String url, String data, MediaType contentType, Map<String,String> headers) {
RequestBody requestBody = RequestBody.create(data.getBytes(StandardCharsets.UTF_8), contentType);
Request.Builder builder = getBuilderWithHeaders(headers);
Request request = builder.url(url).post(requestBody).build();
return execute(request);
}
private String execute(Request request) {
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
if (response.isSuccessful()) {
return response.body().string();
}
} catch (Exception e) {
log.error(Throwables.getStackTraceAsString(e));
} finally {
if (response != null) {
response.close();
}
}
return "";
}
}

@ -5,38 +5,38 @@
<parent>
<artifactId>austin</artifactId>
<groupId>com.java3y.austin</groupId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>austin-web</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<groupId>com.java3y.austin</groupId>
<artifactId>austin-handler</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>

@ -1,34 +1,37 @@
package com.java3y.austin;
import cn.hutool.core.util.ObjectUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.java3y.austin.pojo.SmsParam;
import com.java3y.austin.script.TencentSmsScript;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.HashSet;
@SpringBootApplication
@RestController
public class AustinApplication {
private final Logger logger = LoggerFactory.getLogger(AustinApplication.class);
@Autowired
private TencentSmsScript tencentSmsScript;
public static void main(String[] args) {
SpringApplication.run(AustinApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
public String hello() {
SmsParam smsParam = SmsParam.builder()
.phones(new HashSet<>(Arrays.asList("//TODO PHONE ")))
.content("3333")
.build();
return tencentSmsScript.send(smsParam);
logger.error("error logback for austin");
logger.info("info logback for austin");
return String.format("Hello %s!", name);
}
}

@ -0,0 +1,6 @@
# ok http配置信息 TODO
ok.http.connect-timeout=30
ok.http.read-timeout=30
ok.http.write-timeout=30
ok.http.max-idle-connections=200
ok.http.keep-alive-duration=300

@ -22,7 +22,7 @@
<groupId>com.java3y.austin</groupId>
<artifactId>austin</artifactId>
<version>0.0.2</version>
<version>0.0.1-SNAPSHOT</version>
<name>austin</name>
<description>austin-message</description>
@ -37,6 +37,7 @@
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<exclusions></exclusions>
</dependency>
<!--hutool工具包-->
@ -53,30 +54,29 @@
<version>31.0.1-jre</version>
</dependency>
<!--common工具包-->
<!--http库-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.2</version>
</dependency>
<!--fastjson包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.78</version>
</dependency>
<!--腾讯sdk(目前用在短信上)-->
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
<version>3.1.390</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>

Loading…
Cancel
Save