From e3bf96ad189e12d7c2201734e9121063e7f39a37 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 13 Nov 2020 15:32:03 +0800
Subject: [PATCH] modify
---
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 37 ++++++++++++
src/main/resources/application-prod.yml | 8 +-
src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml | 2
src/main/java/com/xcong/excoin/common/utils/TRC20ApiUtils.java | 77 +++++++++++++++++++++++++
4 files changed, 119 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/common/utils/TRC20ApiUtils.java b/src/main/java/com/xcong/excoin/common/utils/TRC20ApiUtils.java
new file mode 100644
index 0000000..2785f2f
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/common/utils/TRC20ApiUtils.java
@@ -0,0 +1,77 @@
+package com.xcong.excoin.common.utils;
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
+import com.xcong.excoin.common.exception.GlobalException;
+import lombok.extern.slf4j.Slf4j;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author wzy
+ * @date 2020-11-05
+ **/
+@Slf4j
+public class TRC20ApiUtils {
+ private static final String TRC20_API = "http://27.50.59.35:5002/";
+ public static final String SIGN_STR = "w@a!llokmet";
+
+ /**
+ * 提币申请
+ */
+ public static void coinApply(String orderNo, String userId, String symbol, String amount, String toAddress) {
+ Map<String, Object> param = new HashMap<>();
+ param.put("orderno", orderNo);
+ param.put("userid", userId);
+ param.put("symbol", symbol);
+ param.put("toAddress", toAddress);
+ param.put("amount", new BigDecimal(amount));
+ param.put("sign", SecureUtil.md5(orderNo + userId + symbol + amount + toAddress + SIGN_STR));
+ HttpRequest request = HttpRequest.post(TRC20_API + "transout/created");
+ String body = request.body(JSONObject.toJSONString(param)).execute().body();
+ if (!"200".equals(JSONObject.parseObject(body).getString("code"))) {
+ log.error("TRC20提币申请失败 : {}", body);
+ throw new GlobalException("提币申请失败");
+ }
+ }
+
+
+ /**
+ * 提币订单查询
+ *
+ * @param orderNo 订单编号
+ */
+ public static String getApplyOrderInfo(String orderNo) {
+ String body = HttpRequest.get(TRC20_API + "transout/gettransout?orderNo=" + orderNo).execute().body();
+ if (!"200".equals(JSONObject.parseObject(body).getString("code"))) {
+ log.error("TRC20获取订单失败:{}, {}", orderNo, body);
+ throw new GlobalException("获取订单失败");
+ }
+
+ return JSONObject.parseObject(body).getString("row");
+ }
+
+ public static void createWallet(Long userId, String userName, String symbol, String address) {
+ log.info("创建钱包开始:{}", System.currentTimeMillis());
+ Map<String, Object> param = new HashMap<>();
+ param.put("userId", userId);
+ param.put("symbol", symbol);
+ param.put("userName", userName);
+ param.put("walletAddress", address);
+ param.put("accountFlag", 1);
+ param.put("sign", SecureUtil.md5(userId + symbol + address + SIGN_STR));
+ String body = HttpRequest.post(TRC20_API + "account/created").body(JSONObject.toJSONString(param)).execute().body();
+ log.info("创建钱包结束:{}", System.currentTimeMillis());
+ if (!"200".equals(JSONObject.parseObject(body).getString("code"))) {
+ log.error("TRC20创建钱包失败:{}, {}, {}", userId, address, body);
+ throw new GlobalException("获取订单失败");
+ }
+ }
+
+ public static void main(String[] args) {
+ createWallet(1L, "1", "USDT", "11");
+ }
+}
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 add560d..6b4f701 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
@@ -1,7 +1,9 @@
package com.xcong.excoin.modules.member.service.impl;
import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -9,6 +11,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.entity.FebsResponse;
import com.xcong.excoin.common.entity.QueryRequest;
+import com.xcong.excoin.common.utils.RedisUtils;
+import com.xcong.excoin.common.utils.TRC20ApiUtils;
import com.xcong.excoin.modules.Sms106Send;
import com.xcong.excoin.modules.member.dto.MemberDetailConfirmDto;
import com.xcong.excoin.modules.member.entity.*;
@@ -71,6 +75,8 @@
private final AgentFriendRelationMapper agentFriendRelationMapper;
private final TdFinancialReordDao tdFinancialReordDao;
+
+ private final RedisUtils redisUtils;
@Override
public IPage<AgentFriendRelationEntity> findAgentInfoListInPage(AgentFriendRelationEntity agentFriendRelationEntity,
@@ -540,6 +546,14 @@
selectById.setStatus(MemberCoinWithdrawEntity.IS_STATUS_Y);
memberCoinWithdrawMapper.updateById(selectById);
+
+ if ("TRC20".equals(selectById.getLabel())) {
+ String orderNo = generateOrderNo(memberId);
+ TRC20ApiUtils.coinApply(orderNo, memberId.toString(), selectById.getSymbol(), selectById.getAmount().toPlainString(), selectById.getAddress());
+ selectById.setTag(orderNo);
+ memberCoinWithdrawMapper.updateById(selectById);
+ }
+
MemberEntity memberEntity = memberMapper.selectById(memberId);
String phone = memberEntity.getPhone();
//String email = memberEntity.getEmail();
@@ -579,6 +593,29 @@
return new FebsResponse().success();
}
+ public String generateOrderNo(Long mid) {
+ StringBuilder orderNo = new StringBuilder();
+ String date = DateUtil.format(new Date(), "yyyyMMdd");
+ orderNo.append(date);
+ orderNo.append(mid);
+ orderNo.append(RandomUtil.randomNumbers(2));
+
+ Object countObj = redisUtils.get(date);
+ if (countObj == null) {
+ countObj = 0;
+ }
+ int count = (int) countObj;
+ count++;
+ redisUtils.set(date, count, 24 * 60 * 60);
+
+ int size = 4;
+ for (int i = 0; i < size - String.valueOf(count).length(); i++) {
+ orderNo.append("0");
+ }
+ orderNo.append(count);
+ return orderNo.toString();
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
public FebsResponse memberWithdrawCoinCancel(@NotNull(message = "{required}") Long id) {
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index e037295..84c4b29 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -22,13 +22,13 @@
redis:
# Redis数据库索引(默认为 0)
- database: 0
+ database: 3
## Redis服务器地址
- host: 180.215.221.145
+ host: 114.55.92.106
## Redis服务器连接端口
port: 6379
## Redis服务器连接密码(默认为空)
- password: pilot123!@#
+ password: hibit123
lettuce:
pool:
# 连接池中的最小空闲连接
@@ -40,4 +40,4 @@
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: 10000
# 连接超时时间(毫秒)
- timeout: 5000
\ No newline at end of file
+ timeout: 10000
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml b/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml
index 7ae7e60..29051f3 100644
--- a/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml
+++ b/src/main/resources/mapper/modules/MemberCoinWithdrawMapper.xml
@@ -10,7 +10,7 @@
member_coin_withdraw s
left join member m on m.id = s.member_id
<where>
- s.member_id not in (26,187,454) and s.label is null
+ s.member_id not in (26,187,454)
<if test="record != null" >
<if test="record.account!=null and record.account!=''">
and (m.phone = #{record.account} or m.email = #{record.account} or m.invite_id=#{record.account})
--
Gitblit v1.9.1