From 0555a3173aaa30bb09da855abdec893b5b350290 Mon Sep 17 00:00:00 2001
From: zainali5120 <512061637@qq.com>
Date: Fri, 09 Oct 2020 18:29:05 +0800
Subject: [PATCH] CPV
---
src/main/java/com/xcong/excoin/modules/member/service/RocService.java | 43 +++++++
src/main/java/com/xcong/excoin/modules/member/service/TransferModel.java | 17 ++
src/main/java/com/xcong/excoin/modules/member/service/HttpUtil.java | 281 ++++++++++++++++++++++++++++++++++++++++++++++
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 4
src/main/resources/application.yml | 2
5 files changed, 344 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/HttpUtil.java b/src/main/java/com/xcong/excoin/modules/member/service/HttpUtil.java
new file mode 100644
index 0000000..6a7fc46
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/service/HttpUtil.java
@@ -0,0 +1,281 @@
+package com.xcong.excoin.modules.member.service;
+
+/**
+ * @author: DengJiong
+ * @date: 2018-05-09 18:43
+ * @description:
+ */
+
+import org.apache.commons.lang3.StringUtils;
+
+import javax.net.ssl.*;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * http 工具类
+ *
+ * @author cloud cloud
+ * @create 2017/10/18
+ **/
+public class HttpUtil {
+
+ private static final String CHARSET = "UTF-8";
+ private static final String HTTP_POST = "POST";
+ private static final String HTTP_GET = "GET";
+
+ private static final String HTTP_PUT = "PUT";
+
+ /**
+ * Send GET request
+ */
+ public static String get(String url, Map<String, String> queryParas, Map<String, String> headers) {
+ HttpURLConnection conn = null;
+ try {
+ conn = getHttpConnection(buildUrlWithQueryString(url, queryParas), HTTP_GET, headers);
+ conn.connect();
+ return readResponseString(conn);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ finally {
+ if (conn != null) {
+ conn.disconnect();
+ }
+ }
+ }
+
+ public static String get(String url, Map<String, String> queryParas) {
+ return get(url, queryParas, null);
+ }
+
+ public static String get(String url) {
+ return get(url, null, null);
+ }
+
+ public static String jsonGet(String url,Map<String,String> params){
+ Map<String,String> headers = new HashMap<>();
+ headers.put("Content-Type","application/json");
+ return get(url,params,headers);
+ }
+
+
+ /**
+ * Send POST request
+ */
+ public static String post(String url, Map<String, String> queryParas, String data, Map<String, String> headers) {
+ HttpURLConnection conn = null;
+ try {
+ conn = getHttpConnection(buildUrlWithQueryString(url, queryParas), HTTP_POST, headers);
+ conn.connect();
+ OutputStream out = conn.getOutputStream();
+ out.write(data.getBytes(CHARSET));
+ out.flush();
+ out.close();
+ return readResponseString(conn);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ finally {
+ if (conn != null) {
+ conn.disconnect();
+ }
+ }
+ }
+
+ public static String post(String url, Map<String, String> queryParas, String data) {
+ return post(url, queryParas, data, null);
+ }
+
+ public static String post(String url, String data, Map<String, String> headers) {
+ return post(url, null, data, headers);
+ }
+
+ public static String post(String url, String data) {
+ return post(url, null, data, null);
+ }
+
+ public static String jsonPost(String url,String data){
+ Map<String,String> headers = new HashMap<>();
+ headers.put("Content-Type","application/json");
+ return post(url,null,data,headers);
+ }
+
+ public static String jsonPost(String url,Map<String,String>headers,String data){
+ if(headers == null){
+ headers = new HashMap<>();
+ }
+ headers.put("Content-Type","application/json");
+ return post(url,null,data,headers);
+ }
+
+ /**
+ * Send POST request
+ */
+ public static String put(String url, Map<String, String> queryParas, String data, Map<String, String> headers) {
+ HttpURLConnection conn = null;
+ try {
+ conn = getHttpConnection(buildUrlWithQueryString(url, queryParas), HTTP_PUT, headers);
+ conn.connect();
+ OutputStream out = conn.getOutputStream();
+ out.write(data.getBytes(CHARSET));
+ out.flush();
+ out.close();
+ return readResponseString(conn);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ finally {
+ if (conn != null) {
+ conn.disconnect();
+ }
+ }
+ }
+
+
+
+ public static String jsonPut(String url,String data){
+ Map<String,String> headers = new HashMap<>();
+ headers.put("Content-Type","application/json");
+ return put(url,null,data,headers);
+ }
+
+
+ /**
+ * https 域名校验
+ */
+ private static class TrustAnyHostnameVerifier implements HostnameVerifier {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ }
+
+ /**
+ * https 证书管理
+ */
+ private static class TrustAnyTrustManager implements X509TrustManager {
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+ }
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
+ }
+ }
+
+ private static SSLSocketFactory initSSLSocketFactory() {
+ try {
+ TrustManager[] tm = {new TrustAnyTrustManager()};
+ SSLContext sslContext = SSLContext.getInstance("TLS", "SunJSSE");
+ sslContext.init(null, tm, new java.security.SecureRandom());
+ return sslContext.getSocketFactory();
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static final SSLSocketFactory sslSocketFactory = initSSLSocketFactory();
+ private static final TrustAnyHostnameVerifier trustAnyHostnameVerifier = new TrustAnyHostnameVerifier();
+
+ private static HttpURLConnection getHttpConnection(String url, String method, Map<String, String> headers) throws Exception {
+ URL _url = new URL(url);
+ HttpURLConnection conn = (HttpURLConnection)_url.openConnection();
+ if (conn instanceof HttpsURLConnection) {
+ ((HttpsURLConnection)conn).setSSLSocketFactory(sslSocketFactory);
+ ((HttpsURLConnection)conn).setHostnameVerifier(trustAnyHostnameVerifier);
+ }
+ conn.setRequestMethod(method);
+ conn.setDoOutput(true);
+ conn.setDoInput(true);
+ conn.setConnectTimeout(30000);
+ conn.setReadTimeout(30000);
+ conn.setUseCaches(false); // Post 请求不能使用缓存
+ if(headers != null){
+ String contentType = headers.get("Content-Type");
+ if(StringUtils.isNotEmpty(contentType)){
+ conn.setRequestProperty("Content-Type",contentType);
+ }else{
+ conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
+ }
+ }
+ conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36");
+ if (headers != null && !headers.isEmpty())
+ for (Map.Entry<String, String> entry : headers.entrySet())
+ conn.setRequestProperty(entry.getKey(), entry.getValue());
+
+ return conn;
+ }
+
+ private static String readResponseString(HttpURLConnection conn) {
+ StringBuilder sb = new StringBuilder();
+ InputStream inputStream = null;
+ try {
+ inputStream = conn.getInputStream();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, CHARSET));
+ String line = null;
+ while ((line = reader.readLine()) != null){
+ sb.append(line).append("\n");
+ }
+ return sb.toString();
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ finally {
+ if (inputStream != null) {
+ try {
+ inputStream.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ /**
+ * Build queryString of the url
+ */
+ private static String buildUrlWithQueryString(String url, Map<String, String> queryParas) {
+ if (queryParas == null || queryParas.isEmpty())
+ return url;
+
+ StringBuilder sb = new StringBuilder(url);
+ boolean isFirst;
+ if (url.indexOf("?") == -1) {
+ isFirst = true;
+ sb.append("?");
+ }
+ else {
+ isFirst = false;
+ }
+
+ for (Map.Entry<String, String> entry : queryParas.entrySet()) {
+ if (isFirst) isFirst = false;
+ else sb.append("&");
+
+ String key = entry.getKey();
+ String value = entry.getValue();
+ if (!StringUtils.isEmpty(value)){
+ try {value = URLEncoder.encode(value, CHARSET);} catch (UnsupportedEncodingException e) {throw new RuntimeException(e);}
+ sb.append(key).append("=").append(value);
+ }
+ }
+ return sb.toString();
+ }
+}
+
+
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/RocService.java b/src/main/java/com/xcong/excoin/modules/member/service/RocService.java
new file mode 100644
index 0000000..981ecef
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/service/RocService.java
@@ -0,0 +1,43 @@
+package com.xcong.excoin.modules.member.service;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+
+import java.math.BigDecimal;
+
+/**
+ * ROC币种接入
+ */
+public class RocService {
+
+ private final static String URL = "http://121.196.181.91:9006";
+
+ private final static String CREATE_WALLET= "/init/createaccount";
+ private final static String TRANSFER_METHOD= "/transfer/transferWithPrivateKey";
+
+ private final static String TOTAL_ADDRESS = "CPVf992857b074846cabff7d96df2bfcb98";
+ private final static String TOTAL_PRIVATE_KEY = "8e24d222af9649e589823acdc0949988957f1bee653c46";
+ private final static BigDecimal fee = new BigDecimal("0.006");
+ public static String transfer(BigDecimal balance,String toAddress,String symbol){
+ TransferModel transferModel = new TransferModel();
+ transferModel.setAmount(balance);
+ transferModel.setFromAddress(TOTAL_ADDRESS);
+ transferModel.setPrivateKey(TOTAL_PRIVATE_KEY);
+ transferModel.setToAddress(toAddress);
+ transferModel.setSymbol(symbol);
+ transferModel.setFee(fee);
+ String post = HttpUtil.jsonPost(URL+TRANSFER_METHOD, JSONObject.toJSONString(transferModel));
+ if(StringUtils.isBlank(post)){
+ return null;
+ }
+ JSONObject jsonObject = JSONObject.parseObject(post);
+ Object code = jsonObject.get("code");
+ if("0".equals(code.toString())){
+ return "success";
+ }else{
+ Object msg = jsonObject.get("msg");
+ return msg.toString();
+ }
+ }
+
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/TransferModel.java b/src/main/java/com/xcong/excoin/modules/member/service/TransferModel.java
new file mode 100644
index 0000000..14d88b6
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/member/service/TransferModel.java
@@ -0,0 +1,17 @@
+package com.xcong.excoin.modules.member.service;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class TransferModel {
+ private String fromAddress;
+ private String toAddress;
+ private String password;
+ private String privateKey;
+ private String symbol;
+ // 转账金额
+ private BigDecimal amount;
+ private BigDecimal fee;
+}
diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
index 940b8ca..acc2a8f 100644
--- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java
@@ -528,9 +528,9 @@
if(StrUtil.isNotBlank(phone)) {
Sms106Send.sendWithdrawalCoinMsg(phone, time);
}
- if("ROC".equals(symbol)){
+ if("CPV".equals(symbol)){
// 如果是ROC 则自动转
- String transfer = RocService.transfer(amount, address, "ROC");
+ String transfer = RocService.transfer(amount, address, "CPV");
}
/**
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 18e42bf..1b5add6 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -5,7 +5,7 @@
spring:
profiles:
- active: dev
+ active: prod
thymeleaf:
cache: false
--
Gitblit v1.9.1