gao
2020-05-25 73699775f5546177ce71e3bae33d83a8aa346793
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java
@@ -2,26 +2,23 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum;
import com.xcong.excoin.common.exception.GlobalException;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.coin.dao.MemberAccountMoneyChangeDao;
import com.xcong.excoin.modules.coin.dao.platform.CnyUsdtExchangeDao;
import com.xcong.excoin.modules.coin.entity.CnyUsdtExchange;
import com.xcong.excoin.modules.coin.entity.MemberAccountMoneyChange;
import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinInfoVo;
import com.xcong.excoin.modules.coin.parameter.vo.MemberWalletCoinVo;
import com.xcong.excoin.modules.coin.service.CoinService;
import com.xcong.excoin.modules.member.dao.MemberWalletAgentDao;
@@ -31,8 +28,8 @@
import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.utils.MessageSourceUtils;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
@Service
@@ -64,10 +61,23 @@
         
         if(!StrUtil.isEmpty(memberId.toString())) {
            
            List<MemberWalletCoinEntity> MemberWalletCoinlist = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId);
            List<MemberWalletCoinEntity> memberWalletCoinlist = memberWalletCoinDao.selectMemberWalletCoinsByMemberId(memberId);
            
            if(CollUtil.isNotEmpty(MemberWalletCoinlist)) {
               for(MemberWalletCoinEntity walletCoin : MemberWalletCoinlist) {
            List<MemberWalletCoinInfoVo> memberWalletCoinInfoVolist = new ArrayList<MemberWalletCoinInfoVo>();
            MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo();
            if(ObjectUtil.isNotEmpty(memberWalletCoinlist)) {
               for(MemberWalletCoinEntity memberWalletCoinEntity : memberWalletCoinlist) {
                  memberWalletCoinInfoVo.setAvailableBalance(memberWalletCoinEntity.getAvailableBalance());
                  memberWalletCoinInfoVo.setFrozenBalance(memberWalletCoinEntity.getFrozenBalance());
                  memberWalletCoinInfoVo.setMemberId(memberWalletCoinEntity.getMemberId());
                  memberWalletCoinInfoVo.setTotalBalance(memberWalletCoinEntity.getTotalBalance());
                  memberWalletCoinInfoVolist.add(memberWalletCoinInfoVo);
               }
            }
            if(CollUtil.isNotEmpty(memberWalletCoinlist)) {
               for(MemberWalletCoinEntity walletCoin : memberWalletCoinlist) {
                  if(MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) {   
                     totalUsdt = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance());
                     BigDecimal totalCny = totalUsdt.multiply(cnyUsdt);
@@ -84,34 +94,35 @@
            MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo();
            memberWalletCoinVo.setTotalUsdt(totalUsdt.setScale(4, BigDecimal.ROUND_DOWN));
            memberWalletCoinVo.setTotalCny(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
            memberWalletCoinVo.setWalletCoinEntities(MemberWalletCoinlist);
            memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinInfoVolist);
            return Result.ok(memberWalletCoinVo);
         }else {
            List<MemberWalletCoinEntity> MemberWalletCoinlist = new ArrayList<MemberWalletCoinEntity>();
            MemberWalletCoinEntity coin = new MemberWalletCoinEntity();
            List<MemberWalletCoinInfoVo> memberWalletCoinlist = new ArrayList<MemberWalletCoinInfoVo>();
            MemberWalletCoinInfoVo coin = new MemberWalletCoinInfoVo();
            coin.setAvailableBalance(BigDecimal.ZERO);
            coin.setTotalBalance(BigDecimal.ZERO);
            coin.setFrozenBalance(BigDecimal.ZERO);
            coin.setWalletCode(CoinTypeEnum.BTC.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.ETH.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.LTC.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.BCH.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.USDT.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.EOS.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.XRP.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            coin.setWalletCode(CoinTypeEnum.ETC.toString());
            MemberWalletCoinlist.add(coin);
            memberWalletCoinlist.add(coin);
            MemberWalletCoinVo memberWalletCoinVo = new MemberWalletCoinVo();
            memberWalletCoinVo.setTotalUsdt(totalUsdt.setScale(4, BigDecimal.ROUND_DOWN));
            memberWalletCoinVo.setTotalCny(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
            memberWalletCoinVo.setWalletCoinEntities(MemberWalletCoinlist);
            memberWalletCoinVo.setMemberWalletCoinInfoVo(memberWalletCoinlist);;
            return Result.ok(memberWalletCoinVo);
         }
      } catch (Exception e) {
@@ -121,27 +132,31 @@
   }
   @Override
   public Result getWalletCoinById(Long id) {
   public Result getWalletCoinBySymbol(String symbol) {
      try {
         //获取用户ID
         Long memberId = LoginUserUtils.getAppLoginUser().getId();
         MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectById(id);
         MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId,symbol);
         MemberWalletCoinInfoVo memberWalletCoinInfoVo = new MemberWalletCoinInfoVo();
         memberWalletCoinInfoVo.setFrozenBalance(walletCoin.getFrozenBalance());
         memberWalletCoinInfoVo.setAvailableBalance(walletCoin.getAvailableBalance());
         memberWalletCoinInfoVo.setMemberId(memberId);
         memberWalletCoinInfoVo.setWalletCode(symbol);
         if(!StrUtil.isEmpty(memberId.toString())) {
            CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne();
            BigDecimal cnyUsdt = cnyUsdtExchange.getValue();
            BigDecimal total = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance());
            
            if(MemberWalletCoinEnum.WALLETCOINCODE.getValue().equals(walletCoin.getWalletCode())) {
               walletCoin.setTotalBalance(total.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
               memberWalletCoinInfoVo.setTotalBalance(total.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
               
            }else {
               BigDecimal closePrice = new BigDecimal("10.0000");
               //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(wallet.getCode()+"/USDT");
               walletCoin.setTotalBalance(total.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
               memberWalletCoinInfoVo.setTotalBalance(total.multiply(closePrice).multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
            }
         }
         return Result.ok(walletCoin);
         return Result.ok(memberWalletCoinInfoVo);
      } catch (Exception e) {
         e.printStackTrace();
         return Result.fail(MessageSourceUtils.getString("member_service_0003"));
@@ -151,8 +166,43 @@
   @Override
   public Result getWalletContractById() {
      
         return Result.fail(MessageSourceUtils.getString("member_service_0002"));
         //获取用户ID
         Long memberId = LoginUserUtils.getAppLoginUser().getId();
         CnyUsdtExchange cnyUsdtExchange =cnyUsdtExchangeDao.getCNYAndUSDTOne();
         BigDecimal cnyUsdt = cnyUsdtExchange.getValue();
         String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
         MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode);
         if(ObjectUtil.isEmpty(walletContract)) {
            return Result.fail(MessageSourceUtils.getString("member_service_0001"));
         }
         /**
          * todo
          */
         //获取当前的合约持仓
         //获取实时盈亏
         BigDecimal profitAndLoss = new BigDecimal("50.000");
         //获取总付款
         BigDecimal totalPayment = new BigDecimal("50.000");
         walletContract.setFrozenBalance(totalPayment.setScale(4, BigDecimal.ROUND_DOWN));
         BigDecimal lastTotalBalance = new BigDecimal("0");
         BigDecimal totalBalance = walletContract.getTotalBalance();
         lastTotalBalance = totalBalance.add(profitAndLoss);
         if(lastTotalBalance.compareTo(BigDecimal.ZERO) < 0) {
            lastTotalBalance = new BigDecimal("0");
         }
         walletContract.setAvailableBalance(walletContract.getAvailableBalance());
         walletContract.setTotalBalance(lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN));
         Map<String,Object> map = new HashMap<String, Object>();
         map.put(MemberWalletCoinEnum.WALLETCOINUSDT.getValue(), lastTotalBalance.setScale(4, BigDecimal.ROUND_DOWN));
         map.put(MemberWalletCoinEnum.WALLETCONTRACT.getValue(), walletContract);
         map.put(MemberWalletCoinEnum.WALLETCOINCNY.getValue(), lastTotalBalance.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN));
         return Result.ok(map);
   }
   @Override
@@ -276,11 +326,13 @@
   }
   @Override
   public Result findWalletContractBySymbol(String symbol) {
      /**
       * ---todo
       */
      return null;
   public Result findWalletContractBySymbol() {
      //获取用户ID
      Long memberId = LoginUserUtils.getAppLoginUser().getId();
      String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
      MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode);
      return Result.ok(walletContract);
   }
   @Override
@@ -426,7 +478,7 @@
      walletAgent.setAvailableBalance(availableBalance);
      Map<String,Object> map = new HashMap<String, Object>();
      map.put(MemberWalletCoinEnum.WALLETCOINUSDT.getValue(), availableBalance.setScale(4, BigDecimal.ROUND_DOWN));
      map.put(MemberWalletCoinEnum.WALLETAGENTCNY.getValue(), walletAgent);
      map.put(MemberWalletCoinEnum.WALLETAGENT.getValue(), walletAgent);
      map.put(MemberWalletCoinEnum.WALLETCOINCNY.getValue(),  multiply.setScale(4, BigDecimal.ROUND_DOWN));
      return Result.ok(map);
   }