From 6258b45b69d75325b7d6df7edf2761c22a87369b Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Mon, 21 Feb 2022 10:24:29 +0800
Subject: [PATCH] 20222221

---
 src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java    |   13 ++++++
 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java |   56 ++++++++++++++++++++++++++++
 src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java  |   25 ++++++++++++
 src/main/java/com/xcong/excoin/common/enumerates/CoinTypeEnum.java            |    2 
 src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java          |    1 
 src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java    |    3 +
 6 files changed, 98 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/common/enumerates/CoinTypeEnum.java b/src/main/java/com/xcong/excoin/common/enumerates/CoinTypeEnum.java
index c0f2424..a060124 100644
--- a/src/main/java/com/xcong/excoin/common/enumerates/CoinTypeEnum.java
+++ b/src/main/java/com/xcong/excoin/common/enumerates/CoinTypeEnum.java
@@ -6,5 +6,5 @@
  * @author wzy
  */
 public enum CoinTypeEnum {
-    USDT, BTC, ETH, LTC, EOS, XRP, BCH, ETC,BEA
+    USDT, BTC, ETH, LTC, EOS, XRP, BCH, ETC,BEA,GUSD,GOLDRICE,
 }
diff --git a/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java b/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java
index e4d58dc..bbcd0a9 100644
--- a/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java
+++ b/src/main/java/com/xcong/excoin/common/enumerates/MemberWalletCoinEnum.java
@@ -17,7 +17,8 @@
 	CONTENTFROMCONTRACT("0004","由合约账户转入"),
 	
 	CONTENTFROMAGENT("0005","由代理账户转入"),
-	
+	ZHIYATOGUSD("0006","兑换GUSD"),
+
 	WALLETCOINCODE("USDT", "USDT"),
 	
 	SUBMITSALESWALLETCOINORDER_SERVICERATE("ServiceRate","0.002"),
diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java
index 64df9f2..a1d9f64 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/controller/CoinController.java
@@ -5,6 +5,7 @@
 import javax.annotation.Resource;
 import javax.validation.Valid;
 
+import com.xcong.excoin.modules.coin.parameter.dto.UsdtToGusdDto;
 import com.xcong.excoin.modules.coin.parameter.vo.AllWalletCoinVo;
 import com.xcong.excoin.modules.coin.parameter.vo.MemberAccountMoneyChangeInfoVo;
 import com.xcong.excoin.modules.coin.parameter.vo.MemberAgentIntoInfoVo;
@@ -197,6 +198,18 @@
 		Integer transfertype = transferOfBalanceFromAgentDto.getTransfertype();
 		return coinService.agentTransferToWalletCoin(balance,transfertype);
 	}
+
+	/**
+	 * USDT兌換成GUSD
+	 * @return
+	 */
+	@ApiOperation(value="USDT兌換成GUSD", notes="USDT兌換成GUSD")
+	@PostMapping(value="/usdtToGusd")
+	public Result  usdtToGusd(@RequestBody @Valid UsdtToGusdDto usdtToGusdDto) {
+		BigDecimal balance = usdtToGusdDto.getBalance();
+		Integer transfertype = usdtToGusdDto.getTransfertype();
+		return coinService.usdtToGusd(balance,transfertype);
+	}
 	
 
 }
diff --git a/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java
new file mode 100644
index 0000000..ccc1b70
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/coin/parameter/dto/UsdtToGusdDto.java
@@ -0,0 +1,25 @@
+package com.xcong.excoin.modules.coin.parameter.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "UsdtToGusdDto", description = "参数接收类")
+public class UsdtToGusdDto {
+
+    @NotNull(message = "划转金额不能为空")
+    @ApiModelProperty(value = "划转金额", example = "100")
+    private BigDecimal balance;
+
+    @NotNull(message = "币种不能为空")
+    @ApiModelProperty(value = "币种", example = "USDT")
+    private String symbol;
+
+    @NotNull(message = "账户类型不能为空")
+    @ApiModelProperty(value = "转账类型1:转币币,2:转合约", example = "1")
+    private Integer transfertype;
+}
diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java b/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java
index 8bc87fb..6bd555e 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/CoinService.java
@@ -42,4 +42,5 @@
 
 	void updateWalletBalance(@Param("id") Long id, @Param("availableBalance")BigDecimal availableBalance,@Param("totalBalance")BigDecimal totalBalance, @Param("frozenBalance")BigDecimal frozenBalance);
 
+	Result usdtToGusd(BigDecimal balance, Integer transfertype);
 }
diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
index 61d617f..0b76dfb 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -596,4 +596,60 @@
         }
     }
 
+    @Override
+    public Result usdtToGusd(BigDecimal balance, Integer transfertype) {
+        //获取用户ID
+        Long memberId = LoginUserUtils.getAppLoginUser().getId();
+        if (balance.compareTo(BigDecimal.ZERO) <= 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0004"));
+        }
+
+        // 扣币
+        String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
+        MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode);
+        BigDecimal availableBalance = memberWalletCoinEntity.getAvailableBalance();
+        BigDecimal totalBalance = memberWalletCoinEntity.getTotalBalance();
+
+        BigDecimal available = availableBalance.subtract(balance);
+        if (available.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0008"));
+        }
+        BigDecimal total = totalBalance.subtract(balance);
+        if (total.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0008"));
+        }
+
+        memberWalletCoinEntity.setAvailableBalance(available);
+        memberWalletCoinEntity.setTotalBalance(total);
+        int i = memberWalletCoinDao.updateById(memberWalletCoinEntity);
+        if (i < 1) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0095"));
+        }
+        //添加资金划转历史记录
+        MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange();
+        //获取usdt兑换gusd的兑换比例
+        String gusdName = CoinTypeEnum.GUSD.name();
+        MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName);
+        BigDecimal gusdAvailableBalance = gusdMemberWalletCoinEntity.getAvailableBalance();
+        BigDecimal gusdTotalBalance = gusdMemberWalletCoinEntity.getTotalBalance();
+        gusdMemberWalletCoinEntity.setAvailableBalance(gusdAvailableBalance.add(balance));
+        gusdMemberWalletCoinEntity.setTotalBalance(gusdTotalBalance.add(balance));
+
+        int updateById = memberWalletCoinDao.updateById(gusdMemberWalletCoinEntity);
+        if (updateById < 1) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0095"));
+        }
+
+        //添加资金划转历史记录
+        memberAccountRecord.setMemberId(memberId);
+        memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER);
+        memberAccountRecord.setSymbol(walletCode);
+        memberAccountRecord.setContent(MemberWalletCoinEnum.ZHIYATOGUSD.getValue());
+        memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN);
+        memberAccountRecord.setAmount(balance);
+        memberAccountMoneyChangeDao.insert(memberAccountRecord);
+
+        return Result.ok(MessageSourceUtils.getString("member_service_0006"));
+    }
+
 }

--
Gitblit v1.9.1