From 3474e43d869f6dda297dba0dcf24694a36dc6b9d Mon Sep 17 00:00:00 2001 From: zainali5120 <512061637@qq.com> Date: Thu, 15 Oct 2020 17:45:19 +0800 Subject: [PATCH] 最高最低价 --- src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 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 df9e756..64d5d27 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 @@ -382,7 +382,7 @@ BigDecimal nowPriceinBigDecimal = price; //查询当前价 - //BigDecimal nowPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol + "/USDT"))); + BigDecimal nowPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol + "/USDT"))); // 获取交易管理的杠杠倍率,手续费率等信息,由平台进行设置 symbol = symbol.toUpperCase(); @@ -413,6 +413,19 @@ closingPrice = price.multiply(amount).multiply(tradeSetting.getCoinFeeRatio()); 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%"); + } + } } else { // 市价 if (OrderCoinsEntity.ORDERTYPE_BUY == type) { @@ -1077,14 +1090,13 @@ if (CollectionUtils.isNotEmpty(trades)) { for (OrderCoinsEntity trade : trades) { if (trade != null) { - orderCoinsDao.updateStatus(trade.getId(),OrderCoinsEntity.ORDERSTATUS_DONE); + //orderCoinsDao.updateStatus(trade.getId(),OrderCoinsEntity.ORDERSTATUS_DONE); ids.add(trade.getId()); // 买单 实际成交金额小于委托的 这一部分从冻结扣除 if(OrderCoinsEntity.ORDERTYPE_BUY==trade.getOrderType()){ if(trade.getEntrustAmount().compareTo(trade.getDealAmount())>0){ // 此时退回这部分的差额 BigDecimal subtract = trade.getEntrustAmount().subtract(trade.getDealAmount()); - System.out.println(subtract); MemberWalletCoinEntity memberWalletCoinEntity = memberWalletCoinDao.selectWalletCoinBymIdAndCode(trade.getMemberId(), CoinTypeEnum.USDT.name()); if(memberWalletCoinEntity!=null){ memberWalletCoinDao.updateWalletBalance(memberWalletCoinEntity.getId(),subtract,null,subtract.negate()); @@ -1095,7 +1107,7 @@ } } if (CollectionUtils.isNotEmpty(ids)) { - // orderCoinsDao.batchUpdateStatus(ids, OrderCoinsEntity.ORDERSTATUS_DONE); + orderCoinsDao.batchUpdateStatus(ids, OrderCoinsEntity.ORDERSTATUS_DONE); } } -- Gitblit v1.9.1