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/service/impl/CoinServiceImpl.java |   62 +++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 3 deletions(-)

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 65dc2a0..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
@@ -582,18 +582,74 @@
         // 这里需要加锁 保证同一个时间只有一个线程操作一个钱包
         String key = "UPDATE_WALLET_COIN_"+id;
         while (true){
-            boolean b = redisUtils.setNotExist(key, 1, 5);
+            boolean b = redisUtils.setNotExist(key, 1, 2);
             if(b){
-                System.out.println("我拿到了锁");
+                //System.out.println("我拿到了锁");
                 // 拿到了锁才能扣
                 memberWalletCoinDao.updateWalletBalance(id,availableBalance,totalBalance,frozenBalance);
                 // 扣完释放锁
                 redisUtils.del(key);
                 break;
             }else {
-                System.out.println("我没有拿到锁");
+
             }
         }
     }
 
+    @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