zainali5120
2020-10-30 5fe125b2b4dff77fbfe6a377d4730cc005fc668a
修复交易不玩问题 修复撤单问题
2 files modified
47 ■■■■■ changed files
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java 13 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/trade/CoinTrader.java 34 ●●●● patch | view | raw | blame | history
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;
        }
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) {