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