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