From 13ba1829996923725a1881aab88ce402abf579fd Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 24 Feb 2022 11:04:21 +0800
Subject: [PATCH] 20222223

---
 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java |  193 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 189 insertions(+), 4 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 61d617f..bffd942 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
@@ -1,11 +1,16 @@
 package com.xcong.excoin.modules.coin.service.impl;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import javax.annotation.Resource;
-import javax.validation.Valid;
 
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.core.date.DateUtil;
+import com.xcong.excoin.modules.coin.dao.ZhiYaDao;
+import com.xcong.excoin.modules.coin.dao.ZhiYaRecordDao;
+import com.xcong.excoin.modules.coin.entity.ZhiYaEntity;
+import com.xcong.excoin.modules.coin.entity.ZhiYaRecordEntity;
 import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -55,11 +60,15 @@
     @Resource
     MemberWalletCoinDao memberWalletCoinDao;
     @Resource
+    ZhiYaDao zhiYaDao;
+    @Resource
     MemberWalletContractDao memberWalletContractDao;
     @Resource
     MemberAccountMoneyChangeDao memberAccountMoneyChangeDao;
     @Resource
     MemberWalletAgentDao memberWalletAgentDao;
+    @Resource
+    ZhiYaRecordDao zhiYaRecordDao;
     @Resource
     RedisUtils redisUtils;
 
@@ -97,7 +106,15 @@
                         totalUsdts = totalUsdts.add(totalUsdt);
                         BigDecimal totalCny = totalUsdt.multiply(cnyUsdt);
                         walletCoin.setTotalBalance(totalCny);
-                    } else {
+                    }
+//                    else if (MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue().equals(walletCoin.getWalletCode())) {
+//                        BigDecimal totalUsdt = BigDecimal.ZERO;
+//                        totalUsdt = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance());
+//                        totalUsdts = totalUsdts.add(totalUsdt);
+//                        BigDecimal totalCny = totalUsdt.multiply(cnyUsdt);
+//                        walletCoin.setTotalBalance(totalCny);
+//                    }
+                    else {
                         BigDecimal amount = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance());
                         // 获取最新价
                         BigDecimal closePrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(walletCoin.getWalletCode()+"/USDT")));
@@ -135,6 +152,10 @@
             coin.setWalletCode(CoinTypeEnum.XRP.toString());
             memberWalletCoinlist.add(coin);
             coin.setWalletCode(CoinTypeEnum.ETC.toString());
+            memberWalletCoinlist.add(coin);
+//            coin.setWalletCode(CoinTypeEnum.GUSD.toString());
+//            memberWalletCoinlist.add(coin);
+            coin.setWalletCode(CoinTypeEnum.GOLDRICE.toString());
             memberWalletCoinlist.add(coin);
 
             MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo();
@@ -596,4 +617,168 @@
         }
     }
 
+    @Override
+    public Result usdtToGusd(BigDecimal balance) {
+        //获取用户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_0005"));
+        }
+        BigDecimal total = totalBalance.subtract(balance);
+        if (total.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0005"));
+        }
+
+        memberWalletCoinEntity.setAvailableBalance(available);
+        memberWalletCoinEntity.setTotalBalance(total);
+        int i = memberWalletCoinDao.updateById(memberWalletCoinEntity);
+        if (i < 1) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0096"));
+        }
+        //添加资金划转历史记录
+        MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange();
+        //获取usdt兑换gusd的兑换比例
+        ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId);
+
+//        String gusdName = MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue();
+//        MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName);
+        BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance();
+        BigDecimal gusdTotalBalance = zhiya.getTotalBalance();
+        zhiya.setAvailableBalance(gusdAvailableBalance.add(balance));
+        zhiya.setTotalBalance(gusdTotalBalance.add(balance));
+
+        int updateById = zhiYaDao.updateById(zhiya);
+        if (updateById < 1) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0096"));
+        }
+
+        //添加资金划转历史记录
+        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_0024"));
+    }
+
+    @Override
+    public Result zhiYaGusd(BigDecimal balance) {
+        //获取用户ID
+        Long memberId = LoginUserUtils.getAppLoginUser().getId();
+        if (balance.compareTo(new BigDecimal(100)) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0005"));
+        }
+        //质押Gusd,质押数量进入冻结余额,
+//        String gusdName = MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue();
+//        MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName);
+
+        ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId);
+        BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance();
+        BigDecimal gusdTotalBalance = zhiya.getTotalBalance();
+        BigDecimal gusdfrozenBalance = zhiya.getFrozenBalance();
+
+        BigDecimal available = gusdAvailableBalance.subtract(balance);
+        if (available.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0005"));
+        }
+        BigDecimal total = gusdTotalBalance.subtract(balance);
+        if (total.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0005"));
+        }
+        zhiya.setFrozenBalance(gusdfrozenBalance.add(gusdfrozenBalance));
+        zhiya.setAvailableBalance(gusdAvailableBalance.subtract(balance));
+
+        int updateById = zhiYaDao.updateById(zhiya);
+        if (updateById < 1) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0096"));
+        }
+        //产生质押单,当前有的话,累加质押数量
+        ZhiYaRecordEntity zhiYaRecord = zhiYaRecordDao.selectByMemberIdAndOrderStatus(memberId,1);
+        if(ObjectUtil.isEmpty(zhiYaRecord)){
+            //产生一条质押记录
+            ZhiYaRecordEntity zhiYaRecordEntity = new ZhiYaRecordEntity();
+            zhiYaRecordEntity.setMemberId(memberId);
+            zhiYaRecordEntity.setOrderNo(generateSimpleSerialno(memberId.toString()));
+            zhiYaRecordEntity.setSymbol(MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue());
+            zhiYaRecordEntity.setZhiyaCnt(balance);
+            zhiYaRecordEntity.setOrderStatus(1);
+            Date date = new Date();
+            Date newDate = DateUtil.offsetDay(date, 1);
+            zhiYaRecordEntity.setEffectDate(newDate);
+            zhiYaRecordDao.insert(zhiYaRecordEntity);
+        }else{
+            zhiYaRecord.setZhiyaCnt(zhiYaRecord.getZhiyaCnt().add(balance));
+            Date date = new Date();
+            Date newDate = DateUtil.offsetDay(date, 1);
+            zhiYaRecord.setEffectDate(newDate);
+            zhiYaRecordDao.updateById(zhiYaRecord);
+        }
+
+        return Result.ok(MessageSourceUtils.getString("member_service_0024"));
+    }
+
+    @Override
+    public Result shuhuiGusd(BigDecimal balance) {
+        //获取用户ID
+        Long memberId = LoginUserUtils.getAppLoginUser().getId();
+        if (balance.compareTo(BigDecimal.ZERO) <= 0) {
+            return Result.fail(MessageSourceUtils.getString("order_service_0010"));
+        }
+        //质押Gusd,质押数量进入冻结余额,
+//        String gusdName = MemberWalletCoinEnum.WALLETGUSDCOINCODE.getValue();
+//        MemberWalletCoinEntity gusdMemberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, gusdName);
+        ZhiYaEntity zhiya = zhiYaDao.selectByMemberId(memberId);
+        BigDecimal gusdAvailableBalance = zhiya.getAvailableBalance();
+        BigDecimal gusdTotalBalance = zhiya.getTotalBalance();
+        BigDecimal gusdfrozenBalance = zhiya.getFrozenBalance();
+
+        BigDecimal frozen = gusdfrozenBalance.subtract(balance);
+        if (frozen.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("zhiya_service_0001"));
+        }
+        BigDecimal total = gusdTotalBalance.subtract(balance);
+        if (total.compareTo(BigDecimal.ZERO) < 0) {
+            return Result.fail(MessageSourceUtils.getString("member_service_0005"));
+        }
+        return null;
+    }
+
+    public String generateSimpleSerialno(String userId) {
+        StringBuilder sb = new StringBuilder();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd");
+        Date now = new Date();
+        sb.append(sd.format(now));
+        Calendar calendar = new GregorianCalendar();
+        calendar.setTime(now);
+        calendar.add(calendar.DATE, 1);
+        Date nextDate = calendar.getTime();
+        if (StrUtil.isNotEmpty(userId)) {
+            sb.append(userId);
+        }
+        sb.append(RandomUtil.randomInt(2));
+        long count = zhiYaRecordDao.getOrderCountByToday(sdf.format(now), sdf.format(nextDate));
+        count++;
+        int size = 4;
+        for (int i = 0; i < size - String.valueOf(count).length(); i++) {
+            sb.append("0");
+        }
+        sb.append(count);
+        return sb.toString();
+    }
+
 }

--
Gitblit v1.9.1