From 292a4634d9c52ce193eca9de356d65960bdc35f4 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 15 Jan 2021 18:20:37 +0800
Subject: [PATCH] 20210115

---
 src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java |  105 ++++++++++++++++++++++++++++------------------------
 1 files changed, 57 insertions(+), 48 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 b59e970..5b9178e 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
@@ -355,39 +355,45 @@
         }
         // 需要先
         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) {
-//                    return Result.fail("买入额度受限");
-//                }
-//                BigDecimal bigDecimal = orderCoinDealDao.sumTodayBuyAmount(memberId, symbol);
-//                if (bigDecimal == null) {
-//                    bigDecimal = BigDecimal.ZERO;
-//                }
-//                amount = amount == null ? BigDecimal.ZERO : amount;
-//                bigDecimal = bigDecimal.add(amount);
-//                if (bigDecimal != null && bigDecimal.compareTo(new BigDecimal("800")) > 0) {
-//                    return Result.fail("买入额度受限");
-//                }
-//                // 挂单不能超过800
-//                BigDecimal bigDecimal1 = orderCoinDealDao.sumTodayEntrustCntBuyAmount(memberId, symbol);
-//                if (bigDecimal1 == null) {
-//                    bigDecimal1 = BigDecimal.ZERO;
-//                }
-//                bigDecimal1 = bigDecimal1.add(amount);
-//                if (bigDecimal1 != null && bigDecimal1.compareTo(new BigDecimal("800")) > 0) {
-//                    return Result.fail("买入额度受限");
-//                }
-            } else {
-               return Result.fail("卖出受限");
-            }
-        }
+//        if (!"13632989240".equals(phone) && !"15158130575".equals(phone)) {
+//            if (OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) {
+//                // 不能超过800个
+//
+////                if (amount != null && amount.compareTo(new BigDecimal("800")) > 0) {
+////                    return Result.fail("买入额度受限");
+////                }
+////                BigDecimal bigDecimal = orderCoinDealDao.sumTodayBuyAmount(memberId, symbol);
+////                if (bigDecimal == null) {
+////                    bigDecimal = BigDecimal.ZERO;
+////                }
+////                amount = amount == null ? BigDecimal.ZERO : amount;
+////                bigDecimal = bigDecimal.add(amount);
+////                if (bigDecimal != null && bigDecimal.compareTo(new BigDecimal("800")) > 0) {
+////                    return Result.fail("买入额度受限");
+////                }
+////                // 挂单不能超过800
+////                BigDecimal bigDecimal1 = orderCoinDealDao.sumTodayEntrustCntBuyAmount(memberId, symbol);
+////                if (bigDecimal1 == null) {
+////                    bigDecimal1 = BigDecimal.ZERO;
+////                }
+////                bigDecimal1 = bigDecimal1.add(amount);
+////                if (bigDecimal1 != null && bigDecimal1.compareTo(new BigDecimal("800")) > 0) {
+////                    return Result.fail("买入额度受限");
+////                }
+//            } else {
+//               return Result.fail("卖出受限");
+//            }
+//        }
 
         BigDecimal nowPriceinBigDecimal = price;
         //查询当前价
         BigDecimal nowPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol + "/USDT")));
+        BigDecimal subPrice = nowPrice.multiply(BigDecimal.valueOf(0.2));
+        BigDecimal minPrice = nowPrice.subtract(subPrice);
+        BigDecimal maxPrice = nowPrice.add(subPrice);
+        if (nowPriceinBigDecimal.compareTo(minPrice) < 0 || nowPriceinBigDecimal.compareTo(maxPrice) > 0) {
+            return Result.fail("请输入合适的价格");
+        }
 
         // 获取交易管理的杠杠倍率,手续费率等信息,由平台进行设置
         symbol = symbol.toUpperCase();
@@ -419,18 +425,15 @@
             totalPayPrice = price.multiply(amount).add(closingPrice);
             entrustAmount = price.multiply(amount);
             // 限价买不能高于当前10%
-            if (OrderCoinsEntity.ORDERTYPE_BUY == type) {
-                BigDecimal multiply = nowPrice.multiply(new BigDecimal("1.2"));
-                if(price.compareTo(multiply)>0){
-                    return Result.fail("不能高于当前价的120%");
-                }
-            }else{
-                // 卖不能小于当前90
-                BigDecimal multiply = nowPrice.multiply(new BigDecimal("0.8"));
-                if(price.compareTo(multiply)<0){
-                    return Result.fail("不能低于当前价的80%");
-                }
+            BigDecimal multiply = nowPrice.multiply(new BigDecimal("1.2"));
+            if (price.compareTo(multiply) > 0) {
+                return Result.fail("不能高于当前价的120%");
             }
+            multiply=  nowPrice.multiply(new BigDecimal("0.8"));
+            if (price.compareTo(multiply) < 0) {
+                return Result.fail("不能低于当前价的80%");
+            }
+
         } else {
             // 市价
             if (OrderCoinsEntity.ORDERTYPE_BUY == type) {
@@ -657,6 +660,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;
         }
 
@@ -788,7 +797,7 @@
 
     @Override
     public Result findAllWalletCoinOrder() {
-        List<OrderCoinsDealEntity> orderCoinsDealEntities = orderCoinDealDao.selectAllCoinDealsOrderBySymbol(CoinTypeEnum.ROC.toString());
+        List<OrderCoinsDealEntity> orderCoinsDealEntities = orderCoinDealDao.selectAllCoinDealsOrderBySymbol(CoinTypeEnum.RFNC.toString());
         return Result.ok(orderCoinsDealEntities);
     }
 
@@ -907,7 +916,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void dealEntrustCoinOrder() {
         List<String> ignoreTypes = new ArrayList<>();
-        ignoreTypes.add(SymbolsConstats.ROC);
+        ignoreTypes.add(SymbolsConstats.RFNC);
         List<OrderCoinsEntity> list = orderCoinsDao.selectAllEntrustingCoinOrderList(ignoreTypes);
         if (CollUtil.isNotEmpty(list)) {
             for (OrderCoinsEntity orderCoinsEntity : list) {
@@ -1095,19 +1104,19 @@
         if (CollectionUtils.isNotEmpty(trades)) {
             for (OrderCoinsEntity trade : trades) {
                 if (trade != null) {
-                    if (trade.getOrderType()==2 && trade.getEntrustCnt().compareTo(trade.getDealCnt())!=0){
-                        System.out.println("问题卖单:"+ JSON.toJSONString(trade));
+                    if (trade.getOrderType() == 2 && trade.getEntrustCnt().compareTo(trade.getDealCnt()) != 0) {
+                        System.out.println("问题卖单:" + JSON.toJSONString(trade));
                     }
                     //orderCoinsDao.updateStatus(trade.getId(),OrderCoinsEntity.ORDERSTATUS_DONE);
                     ids.add(trade.getId());
                     // 买单 实际成交金额小于委托的 这一部分从冻结扣除
-                    if(OrderCoinsEntity.ORDERTYPE_BUY==trade.getOrderType()){
-                        if(trade.getEntrustAmount().compareTo(trade.getDealAmount())>0){
+                    if (OrderCoinsEntity.ORDERTYPE_BUY == trade.getOrderType()) {
+                        if (trade.getEntrustAmount().compareTo(trade.getDealAmount()) > 0) {
                             // 此时退回这部分的差额
                             BigDecimal subtract = trade.getEntrustAmount().subtract(trade.getDealAmount());
                             MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(trade.getMemberId(), CoinTypeEnum.USDT.name());
-                            if(memberWalletCoinEntity!=null){
-                                coinService.updateWalletBalance(memberWalletCoinEntity.getId(),subtract,null,subtract.negate());
+                            if (memberWalletCoinEntity != null) {
+                                coinService.updateWalletBalance(memberWalletCoinEntity.getId(), subtract, null, subtract.negate());
                             }
                         }
                     }

--
Gitblit v1.9.1