gao
2020-06-05 01aa2cc5c8fafd89ff763bfb0016c4983ff79648
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java
@@ -203,15 +203,15 @@
            order.setOrderNo(generateSimpleSerialno(memberId.toString()));
            order.setOrderType(type);
            order.setSymbol(symbol);
            order.setMarkPrice(nowPrice.setScale(4, BigDecimal.ROUND_DOWN));
            order.setEntrustCnt(amount.setScale(4, BigDecimal.ROUND_DOWN));
            order.setEntrustPrice(price.setScale(4, BigDecimal.ROUND_DOWN));
            order.setDealCnt(amount.setScale(4, BigDecimal.ROUND_DOWN));
            order.setDealPrice(price.setScale(4, BigDecimal.ROUND_DOWN));
            order.setDealAmount(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN));
            order.setMarkPrice(nowPrice);
            order.setEntrustCnt(amount);
            order.setEntrustPrice(price);
            order.setDealCnt(amount);
            order.setDealPrice(price);
            order.setDealAmount(totalPayPrice);
            order.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DODING);
            order.setTradeType(tradeType);
            order.setFeeAmount(closingPrice.setScale(4, BigDecimal.ROUND_DOWN));
            order.setFeeAmount(closingPrice);
            orderCoinsDao.insert(order);
            
            //更新用户钱包信息
@@ -220,15 +220,15 @@
               //如果是买入,所对应的币种增加,USDT账户减少金额
               BigDecimal availableBalance = walletCoinUsdt.getAvailableBalance().subtract(totalPayPrice);
               BigDecimal frozenBalance = walletCoinUsdt.getFrozenBalance().add(totalPayPrice);
               walletCoinUsdt.setAvailableBalance(availableBalance.setScale(4, BigDecimal.ROUND_DOWN));
               walletCoinUsdt.setFrozenBalance(frozenBalance.setScale(4, BigDecimal.ROUND_DOWN));
               walletCoinUsdt.setAvailableBalance(availableBalance);
               walletCoinUsdt.setFrozenBalance(frozenBalance);
               memberWalletCoinDao.updateById(walletCoinUsdt);
            }else {
               //如果是卖出,币种减少,USDT增加
               BigDecimal availableBalance = walletCoin.getAvailableBalance().subtract(amount);
               BigDecimal frozenBalance = walletCoin.getFrozenBalance().add(amount);
               walletCoin.setAvailableBalance(availableBalance.setScale(4, BigDecimal.ROUND_DOWN));
               walletCoin.setFrozenBalance(frozenBalance.setScale(4, BigDecimal.ROUND_DOWN));
               walletCoin.setAvailableBalance(availableBalance);
               walletCoin.setFrozenBalance(frozenBalance);
               memberWalletCoinDao.updateById(walletCoin);
            } 
         } else {
@@ -237,15 +237,15 @@
            order.setOrderNo(generateSimpleSerialno(memberId.toString()));
            order.setOrderType(type);
            order.setSymbol(symbol);
            order.setMarkPrice(nowPrice.setScale(4, BigDecimal.ROUND_DOWN));
            order.setEntrustCnt(amount.setScale(4, BigDecimal.ROUND_DOWN));
            order.setEntrustPrice(price.setScale(4, BigDecimal.ROUND_DOWN));
            order.setDealCnt(amount.setScale(4, BigDecimal.ROUND_DOWN));
            order.setDealPrice(price.setScale(4, BigDecimal.ROUND_DOWN));
            order.setDealAmount(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN));
            order.setMarkPrice(nowPrice);
            order.setEntrustCnt(amount);
            order.setEntrustPrice(price);
            order.setDealCnt(amount);
            order.setDealPrice(price);
            order.setDealAmount(totalPayPrice);
            order.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE);
            order.setTradeType(tradeType);
            order.setFeeAmount(closingPrice.setScale(4, BigDecimal.ROUND_DOWN));
            order.setFeeAmount(closingPrice);
            orderCoinsDao.insert(order);
            
            OrderCoinsDealEntity detail = new OrderCoinsDealEntity();
@@ -255,29 +255,29 @@
            detail.setOrderType(type);
            detail.setTradeType(tradeType);
            detail.setSymbol(symbol);
            detail.setSymbolCnt(amount.setScale(4, BigDecimal.ROUND_DOWN));
            detail.setEntrustPrice(price.setScale(4, BigDecimal.ROUND_DOWN));
            detail.setDealPrice(price.setScale(4, BigDecimal.ROUND_DOWN));
            detail.setDealAmount(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN));
            detail.setFeeAmount(closingPrice.setScale(4, BigDecimal.ROUND_DOWN));
            detail.setSymbolCnt(amount);
            detail.setEntrustPrice(price);
            detail.setDealPrice(price);
            detail.setDealAmount(totalPayPrice);
            detail.setFeeAmount(closingPrice);
            detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_DONE);
            orderCoinDealDao.insert(detail);
            
            if(OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) {
               //如果是买入,所对应的币种增加,USDT账户减少金额
               // 更新用户的可用金额
               walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(amount).setScale(4, BigDecimal.ROUND_DOWN));
               walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(amount));
               memberWalletCoinDao.updateById(walletCoin);
               
               walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().subtract(totalPayPrice).setScale(4, BigDecimal.ROUND_DOWN));
               walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().subtract(totalPayPrice));
               memberWalletCoinDao.updateById(walletCoinUsdt);
            }else {
               //如果是卖出,币种减少,USDT增加
               walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().subtract(amount).setScale(4, BigDecimal.ROUND_DOWN));
               walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().subtract(amount));
               memberWalletCoinDao.updateById(walletCoin);
               
               BigDecimal subtract = totalPayPrice.subtract(closingPrice).subtract(closingPrice);
               walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().add(subtract).setScale(4, BigDecimal.ROUND_DOWN));
               walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().add(subtract));
               memberWalletCoinDao.updateById(walletCoinUsdt);
            }
         }
@@ -287,14 +287,14 @@
         if (OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) {
            record.setPrice(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN));
            record.setSource(MemberAccountFlowEntity.SOURCE_BUY+symbol);
            record.setRemark(MemberAccountFlowEntity.REMARK_BUY+symbol+":"+amount.setScale(4, BigDecimal.ROUND_DOWN));
            record.setRemark(MemberAccountFlowEntity.REMARK_BUY+symbol+":"+amount);
         } else {
            record.setPrice(totalPayPrice.negate().setScale(4, BigDecimal.ROUND_DOWN));
            record.setSource(MemberAccountFlowEntity.SOURCE_SALE+symbol);
            record.setRemark(MemberAccountFlowEntity.REMARK_SALE+symbol+":"+amount.setScale(4, BigDecimal.ROUND_DOWN));
            record.setRemark(MemberAccountFlowEntity.REMARK_SALE+symbol+":"+amount);
         }
         record.setSymbol(symbol);
         record.setBalance(walletCoinUsdt.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN));
         record.setBalance(walletCoinUsdt.getAvailableBalance());
         
         memberAccountFlowEntityDao.insert(record);
         
@@ -343,10 +343,10 @@
               detail.setSymbol(symbol);
               detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_CANCEL);
               detail.setSymbolCnt(orderCoinsEntity.getEntrustCnt());
               detail.setEntrustPrice(orderCoinsEntity.getEntrustPrice().setScale(4, BigDecimal.ROUND_DOWN));
               detail.setDealPrice(orderCoinsEntity.getDealPrice().setScale(4, BigDecimal.ROUND_DOWN));
               detail.setDealAmount(orderCoinsEntity.getDealAmount().setScale(4, BigDecimal.ROUND_DOWN));
               detail.setFeeAmount(orderCoinsEntity.getFeeAmount().setScale(4, BigDecimal.ROUND_DOWN));
               detail.setEntrustPrice(orderCoinsEntity.getEntrustPrice());
               detail.setDealPrice(orderCoinsEntity.getDealPrice());
               detail.setDealAmount(orderCoinsEntity.getDealAmount());
               detail.setFeeAmount(orderCoinsEntity.getFeeAmount());
               orderCoinDealDao.insert(detail);
               
               if(OrderCoinsEntity.ORDERTYPE_BUY.equals(orderCoinsEntity.getOrderType())) {
@@ -359,14 +359,14 @@
                     //返还金额=开仓价*未成交数量+手续费
                     BigDecimal returnBalance = orderCoinsEntity.getDealAmount();
                     
                     walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance).setScale(4, BigDecimal.ROUND_DOWN));
                     walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance).setScale(4, BigDecimal.ROUND_DOWN));
                     walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance));
                     walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance));
                     memberWalletCoinDao.updateById(walletCoin);
                     // 流水记录
                     MemberAccountFlowEntity record = new MemberAccountFlowEntity();
                     record.setSource(MemberAccountFlowEntity.SOURCE_CANCEL);
                     record.setRemark(MemberAccountFlowEntity.REMARK_CANCEL+symbol+MemberAccountFlowEntity.REMARK_RETURNBALANCE+returnBalance);
                     record.setBalance(walletCoin.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN));
                     record.setBalance(walletCoin.getAvailableBalance());
                     record.setMemberId(memberId);
                     record.setSymbol(symbol);
                     record.setPrice(returnBalance);
@@ -379,17 +379,17 @@
                  if (ObjectUtil.isNotEmpty(walletCoin)) {
                     
                     BigDecimal returnBalance = orderCoinsEntity.getEntrustCnt();
                     walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance).setScale(4, BigDecimal.ROUND_DOWN));
                     walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance).setScale(4, BigDecimal.ROUND_DOWN));
                     walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance));
                     walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance));
                     memberWalletCoinDao.updateById(walletCoin);
                     // 流水记录
                     MemberAccountFlowEntity record = new MemberAccountFlowEntity();
                     record.setSource(MemberAccountFlowEntity.SOURCE_CANCEL);
                     record.setRemark(MemberAccountFlowEntity.REMARK_CANCEL+symbol+MemberAccountFlowEntity.REMARK_RETURNBALANCE+returnBalance);
                     record.setBalance(walletCoin.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN));
                     record.setBalance(walletCoin.getAvailableBalance());
                     record.setMemberId(memberId);
                     record.setSymbol(symbol);
                     record.setPrice(walletCoin.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN));
                     record.setPrice(walletCoin.getFrozenBalance());
                     memberAccountFlowEntityDao.insert(record);
                     return Result.ok(MessageSourceUtils.getString("order_service_0013"));
                  }