From 7dcfa12372a6cbaee0c36fd9e532e3df0a43c2ac Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 04 Mar 2022 15:12:45 +0800
Subject: [PATCH] Merge branch 'bea' of http://120.27.238.55:7000/r/exchange into bea
---
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java | 14 +++++++
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java | 6 +++
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 39 ++++++++++++++++---
src/test/java/com/xcong/excoin/TradeTest.java | 14 +++++++
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java | 12 ++++++
src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java | 3 -
src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java | 10 ++--
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java | 6 +++
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java | 3 +
src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java | 1
src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java | 2
src/main/resources/application-prod.yml | 2
12 files changed, 96 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java
index 3039c5e..d2176e7 100644
--- a/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java
+++ b/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java
@@ -68,11 +68,11 @@
@PostMapping(value="/submitSalesWalletCoinOrder")
@SubmitRepeat
public Result submitSalesWalletCoinOrder(@RequestBody @Valid SubmitSalesWalletCoinOrderDto submitSalesWalletCoinOrderDto) {
- log.debug("买卖单参数[{}]", JSONObject.toJSONString(submitSalesWalletCoinOrderDto));
- String status = redisUtils.getString("bea_start");
- if ("1".equals(status)) {
- return Result.fail("暂未开放");
- }
+ log.info("买卖单参数[{}]", JSONObject.toJSONString(submitSalesWalletCoinOrderDto));
+// String status = redisUtils.getString("bea_start");
+// if ("1".equals(status)) {
+// return Result.fail("暂未开放");
+// }
String symbol = submitSalesWalletCoinOrderDto.getSymbol();
Integer type = submitSalesWalletCoinOrderDto.getType();
Integer tradeType = submitSalesWalletCoinOrderDto.getTradeType();
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java
index 8ae1d67..b4fd04d 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/ContractMoneyInfoVo.java
@@ -17,6 +17,12 @@
@ApiModelProperty(value = "占用保证金")
private BigDecimal beUsedBondAmount;
+ @ApiModelProperty(value = "开多占用保证金")
+ private BigDecimal moreBondAmount;
+
+ @ApiModelProperty(value = "开空占用保证金")
+ private BigDecimal lessBondAmount;
+
@ApiModelProperty(value = "冻结保证金")
private BigDecimal frozenBondAmount;
@@ -41,6 +47,12 @@
@ApiModelProperty(value = "规格")
private BigDecimal symbolSku;
+ @ApiModelProperty("涨跌幅")
+ private BigDecimal upOrDown;
+
+ @ApiModelProperty(value = "未实现盈亏")
+ private BigDecimal profitOrLess;
+
public BigDecimal getBeUsedBondAmount() {
return beUsedBondAmount.setScale(4, BigDecimal.ROUND_DOWN);
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java
index 66f370b..fd2027b 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java
@@ -23,12 +23,18 @@
@ApiModelProperty("交易类型 1-市价2-限价")
private int tradeType;
+ @ApiModelProperty("仓位类型 1-逐仓 2-全仓")
+ private int positionType;
+
@ApiModelProperty("币种")
private String symbol;
@ApiModelProperty("张数")
private int symbolCnt;
+ @ApiModelProperty(value = "可平张数")
+ private int symbolCntSale;
+
@ApiModelProperty("规格")
private BigDecimal symbolSku;
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java
index e06bff3..700eafd 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java
@@ -20,6 +20,9 @@
@ApiModelProperty(value = "订单ID", example = "1")
private Long id;
+ @ApiModelProperty(value = "仓位类型 1-逐仓 2-全仓")
+ private Integer positionType;
+
@ApiModelProperty(value = "开仓均价", example = "9000.00")
private BigDecimal openingPrice;
@@ -47,6 +50,9 @@
@ApiModelProperty(value = "张数")
private int symbolCnt;
+ @ApiModelProperty(value = "可平张数")
+ private int symbolCntSale;
+
@ApiModelProperty(value = "回报率")
private BigDecimal returnRate;
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java
index 2939331..b35f899 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java
@@ -22,6 +22,9 @@
@ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空")
private int orderType;
+ @ApiModelProperty("仓位类型 1-逐仓 2-全仓")
+ private int positionType;
+
@ApiModelProperty("订单编号")
private String orderNo;
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
index 24701bb..8977562 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
@@ -1,5 +1,6 @@
package com.xcong.excoin.modules.contract.parameter.vo;
+import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -21,6 +22,9 @@
@ApiModelProperty("订单类型 1开多,2开空,3平多,4平空")
private int orderType;
+
+ @ApiModelProperty("仓位类型 1-逐仓 2-全仓")
+ private int positionType;
@ApiModelProperty("订单状态 1成交 2撤单")
private int orderStatus;
@@ -63,6 +67,16 @@
@ApiModelProperty(value = "交易类型 1-市价 2-限价")
private Integer tradeType;
+ @ApiModelProperty(value = "杠杆倍率")
+ private Integer leverRatio;
+
+ @ApiModelProperty(value = "订单编号")
+ private String orderNo;
+
+ public String getOrderNo() {
+ return StrUtil.isNotBlank(orderNo) ? orderNo.substring(orderNo.length() - 6) : "";
+ }
+
public String getOpeningFeeAmount() {
return openingFeeAmount == null ? "" : openingFeeAmount.setScale(4, BigDecimal.ROUND_DOWN).toPlainString();
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
index 6e4a42d..a699ab2 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java
@@ -6,6 +6,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.huobi.client.model.Candlestick;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.enumerates.RabbitPriceTypeEnum;
@@ -149,6 +150,7 @@
holdOrderEntity.setTradeType(ContractHoldOrderEntity.TRADE_TYPE_MARK);
holdOrderEntity.setSymbol(submitOrderDto.getSymbol());
holdOrderEntity.setSymbolCnt(submitOrderDto.getSymbolCnt());
+ holdOrderEntity.setSymbolCntSale(submitOrderDto.getSymbolCnt());
holdOrderEntity.setSymbolSku(lotNumber);
holdOrderEntity.setLeverRatio(submitOrderDto.getLeverRatio());
holdOrderEntity.setForceClosingPrice(forceClosingPrice);
@@ -467,6 +469,8 @@
// 当前持仓列表
List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
+ MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
+
// 冻结保证金 -- 即委托单中的保证金之和
BigDecimal frozenBondAmount = BigDecimal.ZERO;
if (CollUtil.isNotEmpty(entrustOrderEntities)) {
@@ -477,6 +481,8 @@
// 占用保证金 -- 即持仓单中的保证金之和
BigDecimal beUsedBondAmount = BigDecimal.ZERO;
+ BigDecimal moreBondAmount = BigDecimal.ZERO;
+ BigDecimal lessBondAmount = BigDecimal.ZERO;
// 总盈利
BigDecimal totalProfitOrLess = BigDecimal.ZERO;
if (CollUtil.isNotEmpty(holdOrderEntities)) {
@@ -490,10 +496,12 @@
BigDecimal profitOrLess = BigDecimal.ZERO;
// 开多
if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
- profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber);
+ moreBondAmount = moreBondAmount.add(holdOrderEntity.getBondAmount());
+ profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
// 开空
} else {
- profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber);
+ lessBondAmount = lessBondAmount.add(holdOrderEntity.getBondAmount());
+ profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCntSale())).multiply(lotNumber);
}
if (MemberEntity.IS_PROFIT_Y == memberEntity.getIsProfit()) {
@@ -508,23 +516,42 @@
}
}
- MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
-
MemberLevelRateEntity rateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(memberEntity.getId(), symbol);
+ ContractMoneyInfoVo contractMoneyInfoVo = new ContractMoneyInfoVo();
// 权益
BigDecimal equity = walletContractEntity.getTotalBalance().add(totalProfitOrLess);
+ if (equity.compareTo(BigDecimal.ZERO) <= 0) {
+ equity = BigDecimal.ZERO;
+ }
- ContractMoneyInfoVo contractMoneyInfoVo = new ContractMoneyInfoVo();
- contractMoneyInfoVo.setAvailableBalance(walletContractEntity.getAvailableBalance());
+ BigDecimal available = walletContractEntity.getAvailableBalance();
+// if (ContractEntrustOrderEntity.POSITION_TYPE_ALL == memberEntity.getContractPositionType()) {
+// if (totalProfitOrLess.compareTo(BigDecimal.ZERO) <= 0) {
+// available = available.add(totalProfitOrLess);
+// if (available.compareTo(BigDecimal.ZERO) <= 0) {
+// available = BigDecimal.ZERO;
+// }
+// }
+// }
+
+ // 获取当日k线的开盘价
+ Candlestick symbolObject = (Candlestick) redisUtils.get(symbol);
+ BigDecimal openPrice = symbolObject.getOpen();
+ BigDecimal upOrDown = newPriceSymbol.subtract(openPrice).divide(openPrice, 8, BigDecimal.ROUND_HALF_UP);
contractMoneyInfoVo.setBeUsedBondAmount(beUsedBondAmount);
contractMoneyInfoVo.setFrozenBondAmount(frozenBondAmount);
contractMoneyInfoVo.setEquity(equity);
+ contractMoneyInfoVo.setAvailableBalance(available);
contractMoneyInfoVo.setFeeRatio(tradeSetting.getFeeRatio());
contractMoneyInfoVo.setLeverAgeRatio(tradeSetting.getLeverageRatio());
contractMoneyInfoVo.setNewPrice(newPriceSymbol);
+ contractMoneyInfoVo.setUpOrDown(upOrDown);
contractMoneyInfoVo.setSymbolSku(cacheSettingUtils.getSymbolSku(symbol));
contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
+ contractMoneyInfoVo.setMoreBondAmount(moreBondAmount);
+ contractMoneyInfoVo.setLessBondAmount(lessBondAmount);
+ contractMoneyInfoVo.setProfitOrLess(totalProfitOrLess);
return Result.ok(contractMoneyInfoVo);
}
diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java
index 6e98b44..45ff0f7 100644
--- a/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/OperateOrderPriceConsumer.java
@@ -17,8 +17,7 @@
* @author helius
*/
@Component
-@Deprecated
-@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job-contract", havingValue = "true")
+@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true")
public class OperateOrderPriceConsumer {
diff --git a/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java b/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
index ffbc2be..b959b0e 100644
--- a/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
+++ b/src/main/java/com/xcong/excoin/rabbit/consumer/WebsocketPriceConsumer.java
@@ -24,7 +24,6 @@
*/
@Slf4j
@Component
-@Deprecated
@ConditionalOnProperty(prefix = "app", name = "rabbit-consumer", havingValue = "true")
public class WebsocketPriceConsumer {
diff --git a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
index 662cd9a..d4e957b 100644
--- a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
+++ b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
@@ -27,7 +27,7 @@
*/
@Slf4j
@Component
-@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job-contract", havingValue = "true")
+@ConditionalOnProperty(prefix = "app", name = "newest-price-update-job", havingValue = "true")
@Deprecated
public class OrderProducerInit {
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index dab3352..d5cbcb8 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -98,7 +98,7 @@
exchange-trade: true
day-line: true
other-job: true
- loop-job: false
+ loop-job: true
rabbit-consumer: true
block-job: true
diff --git a/src/test/java/com/xcong/excoin/TradeTest.java b/src/test/java/com/xcong/excoin/TradeTest.java
index 7d71966..03fe413 100644
--- a/src/test/java/com/xcong/excoin/TradeTest.java
+++ b/src/test/java/com/xcong/excoin/TradeTest.java
@@ -5,11 +5,13 @@
import com.xcong.excoin.modules.coin.entity.OrderCoinsEntity;
import com.xcong.excoin.modules.coin.service.OrderCoinService;
import com.xcong.excoin.trade.CoinTrader;
+import com.xcong.excoin.trade.CoinTraderFactory;
import com.xcong.excoin.utils.CoinTypeConvert;
import com.xcong.excoin.utils.RedisUtils;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
@@ -45,4 +47,16 @@
public void gbz() {
System.out.println(redisUtils.getString(CoinTypeConvert.convertToKey("GBZ"+"/USDT")));
}
+
+
+ @Resource
+ private CoinTraderFactory factory;
+
+ @Test
+ public void traderTest() {
+ OrderCoinsEntity coinsEntity = orderCoinsDao.selectById(19);
+ String symbol = coinsEntity.getSymbol();
+ CoinTrader trader = factory.getTrader(symbol);
+ trader.trade(coinsEntity);
+ }
}
--
Gitblit v1.9.1