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