From 5fe125b2b4dff77fbfe6a377d4730cc005fc668a Mon Sep 17 00:00:00 2001 From: zainali5120 <512061637@qq.com> Date: Fri, 30 Oct 2020 23:42:27 +0800 Subject: [PATCH] 修复交易不玩问题 修复撤单问题 --- src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java | 13 +++++++++++-- src/main/java/com/xcong/excoin/trade/CoinTrader.java | 34 +++++++++++++++++----------------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java index d5ce636..b025574 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java @@ -357,6 +357,8 @@ String phone = memberEntity.getPhone(); if (!"13632989240".equals(phone) && !"15158130575".equals(phone)) { if (OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) { + // 禁止挂卖 + // 不能超过800个 // if (amount != null && amount.compareTo(new BigDecimal("800")) > 0) { @@ -382,8 +384,9 @@ // } } else { // 判断redis开关 - String string = redisUtils.getString("SELL_LIMIT_KEY"); - if (StringUtils.isNotBlank(string)) { + //String string = redisUtils.getString("SELL_LIMIT_KEY"); + String string = redisUtils.getString("SELL_LIMIT_KEY_PHONE"); + if (StringUtils.isNotBlank(string) && string.contains(memberEntity.getPhone())) { return Result.fail("卖出受限"); } } @@ -658,6 +661,12 @@ OrderCoinsEntity coinsEntityCancel = trader.cancelOrder(orderCoinsEntity); if (coinsEntityCancel == null) { // 此时说明撮合系统已经没这个单了 不需要继续处理 + // 直接更新状态先 + OrderCoinsEntity update = new OrderCoinsEntity(); + update.setId(Long.valueOf(orderId)); + update.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_CANCEL); + //orderCoinsEntity.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_CANCEL); + orderCoinsDao.updateById(update); return null; } diff --git a/src/main/java/com/xcong/excoin/trade/CoinTrader.java b/src/main/java/com/xcong/excoin/trade/CoinTrader.java index 8ab6f28..186ef55 100644 --- a/src/main/java/com/xcong/excoin/trade/CoinTrader.java +++ b/src/main/java/com/xcong/excoin/trade/CoinTrader.java @@ -376,7 +376,7 @@ BigDecimal leftTurnover = order.getEntrustAmount().subtract(order.getDealAmount()); if(leftTurnover.divide(dealPrice,coinScale,BigDecimal.ROUND_DOWN) .compareTo(BigDecimal.ZERO)==0){ - //order.setDealAmount(order.getEntrustAmount()); + order.setDealAmount(order.getEntrustAmount()); return leftTurnover; } } @@ -425,20 +425,6 @@ // 用户单成交金额 focusedOrder.setDealAmount(focusedOrder.getDealAmount().add(turnover)); - // 判断两个单是否完成 - if(matchOrder.getEntrustAmount()!=null &&matchOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustAmount().compareTo(matchOrder.getDealAmount())<=0){ - matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); - } - if(matchOrder.getEntrustCnt()!=null &&matchOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustCnt().compareTo(matchOrder.getDealCnt())<=0){ - matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); - } - - if(focusedOrder.getEntrustAmount()!=null && focusedOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustAmount().compareTo(focusedOrder.getDealAmount())<=0){ - focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); - } - if(focusedOrder.getEntrustCnt()!=null &&focusedOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustCnt().compareTo(focusedOrder.getDealCnt())<=0){ - focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); - } //创建成交记录 ExchangeTrade exchangeTrade = new ExchangeTrade(); @@ -454,10 +440,24 @@ //校正市价单剩余成交额 if (OrderCoinsEntity.TRADETYPE_MARKETPRICE == focusedOrder.getTradeType() && focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) { BigDecimal adjustTurnover = adjustMarketOrderTurnover(focusedOrder, dealPrice); - exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover)); + //exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover)); } else if (OrderCoinsEntity.TRADETYPE_MARKETPRICE == matchOrder.getTradeType() && matchOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) { BigDecimal adjustTurnover = adjustMarketOrderTurnover(matchOrder, dealPrice); - exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover)); + //exchangeTrade.setBuyTurnover(turnover.add(adjustTurnover)); + } + // 判断两个单是否完成 + if(matchOrder.getEntrustAmount()!=null &&matchOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustAmount().compareTo(matchOrder.getDealAmount())<=0){ + matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); + } + if(matchOrder.getEntrustCnt()!=null &&matchOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && matchOrder.getEntrustCnt().compareTo(matchOrder.getDealCnt())<=0){ + matchOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); + } + + if(focusedOrder.getEntrustAmount()!=null && focusedOrder.getEntrustAmount().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustAmount().compareTo(focusedOrder.getDealAmount())<=0){ + focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); + } + if(focusedOrder.getEntrustCnt()!=null &&focusedOrder.getEntrustCnt().compareTo(BigDecimal.ZERO)>0 && focusedOrder.getEntrustCnt().compareTo(focusedOrder.getDealCnt())<=0){ + focusedOrder.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); } if (focusedOrder.getOrderType() == OrderCoinsEntity.ORDERTYPE_BUY) { -- Gitblit v1.9.1