From 1b3c4f0a4ae5f9d8426c9e06ef58065f964d61ea Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Fri, 05 Jun 2020 10:06:19 +0800
Subject: [PATCH] fix
---
/dev/null | 11 --
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 6 -
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java | 56 ++++++++++++++
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 56 ++++++++++---
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java | 3
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java | 24 ++++++
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 2
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java | 7 +
src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java | 19 ++--
src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java | 9 +-
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java | 27 ++++++
11 files changed, 178 insertions(+), 42 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java
index 3a8a0a6..4593860 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java
@@ -1,10 +1,7 @@
package com.xcong.excoin.modules.contract.controller;
import com.xcong.excoin.common.response.Result;
-import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto;
-import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto;
-import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto;
-import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto;
+import com.xcong.excoin.modules.contract.parameter.dto.*;
import com.xcong.excoin.modules.contract.parameter.vo.ContractMoneyInfoVo;
import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo;
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
@@ -48,10 +45,10 @@
return contractHoldOrderService.findHoldOrderList(symbol);
}
- @ApiOperation(value = "未完成--根据Id查询订单详情")
+ @ApiOperation(value = "根据Id查询持仓订单详情")
@GetMapping(value = "/findHoldOrderDetail")
public Result findHoldOrderDetail(@ApiParam(name = "id", value = "持仓ID", required = true, example = "1") @RequestParam(value = "id") Long id) {
- return null;
+ return contractHoldOrderService.findHoldOrderDetailById(id);
}
@ApiOperation(value = "根据Id平仓")
@@ -74,13 +71,13 @@
@ApiOperation(value = "调整保证金")
@PostMapping(value = "/changeBond")
- public Result changeBond(ChangeBondDto changeBondDto) {
+ public Result changeBond(@RequestBody @Validated ChangeBondDto changeBondDto) {
return contractHoldOrderService.changeBond(changeBondDto);
}
@ApiOperation(value = "未完成--分页查询历史订单列表")
@GetMapping(value = "/findHistoryOrderList")
- public Result findHistoryOrderList() {
+ public Result findHistoryOrderList(@RequestBody @Validated OrderListDto orderListDto) {
return null;
}
@@ -93,4 +90,10 @@
return contractHoldOrderService.findContractMoneyInfo(symbol);
}
+ @ApiOperation(value = "调整杠杆")
+ @GetMapping(value = "/changeLeverRate")
+ public Result changeLeverRate(@RequestBody @Validated ChangeLeverRateDto changeLeverRateDto) {
+ return contractHoldOrderService.changeLeverRate(changeLeverRateDto);
+ }
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java
index 6843d63..1f43211 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java
@@ -2,6 +2,7 @@
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
+import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderDetailVo;
import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
@@ -19,4 +20,6 @@
public abstract ContractOrderEntity holdOrderToOrder(ContractHoldOrderEntity holdOrderEntity);
public abstract HoldOrderListVo holdOrderToDto(ContractHoldOrderEntity holdOrderEntity);
+
+ public abstract HoldOrderDetailVo holdOrderToOrderDetailVo(ContractHoldOrderEntity holdOrderEntity);
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java
new file mode 100644
index 0000000..4ba4265
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/ChangeLeverRateDto.java
@@ -0,0 +1,24 @@
+package com.xcong.excoin.modules.contract.parameter.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author wzy
+ * @Date 2020/6/5
+ **/
+@Data
+@ApiModel(value = "ChangeLeverRateDto", description = "调整杠杆接口接收参数类")
+public class ChangeLeverRateDto {
+
+ @NotNull
+ @ApiModelProperty(value = "杠杆", example = "100")
+ private int leverRate;
+
+ @NotNull
+ @ApiModelProperty(value = "币种", example = "BTC/USDT")
+ private String symbol;
+}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java
new file mode 100644
index 0000000..6a35286
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java
@@ -0,0 +1,27 @@
+package com.xcong.excoin.modules.contract.parameter.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Author wzy
+ * @Date 2020/6/5
+ **/
+@Data
+@ApiModel(value = "OrderListDto", description = "历史委托订单列表接口参数接受类")
+public class OrderListDto {
+
+ @NotNull
+ @Min(1)
+ @ApiModelProperty(value = "第几页", example = "1")
+ private int pageNum;
+
+ @NotNull
+ @ApiModelProperty(value = "每页数量", example = "10")
+ private int pageSize;
+
+}
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
new file mode 100644
index 0000000..8245d48
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java
@@ -0,0 +1,56 @@
+package com.xcong.excoin.modules.contract.parameter.vo;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @author wzy
+ * @date 2020-06-01
+ **/
+@Data
+@ApiModel(value = "HoldOrderDetailVo", description = "获取持仓订单详情接口返回类")
+public class HoldOrderDetailVo {
+
+ @ApiModelProperty("订单编号")
+ private String orderNo;
+
+ @ApiModelProperty("交易类型 1-市价2-限价")
+ private int tradeType;
+
+ @ApiModelProperty("币种")
+ private String symbol;
+
+ @ApiModelProperty("张数")
+ private int symbolCnt;
+
+ @ApiModelProperty("规格")
+ private BigDecimal symbolSku;
+
+ @ApiModelProperty("开仓价")
+ private BigDecimal openingPrice;
+
+ @ApiModelProperty("开仓类型 1-开多 2-开空")
+ private int openingType;
+
+ @ApiModelProperty("开仓手续费")
+ private BigDecimal openingFeeAmount;
+
+ @ApiModelProperty("保证金")
+ private BigDecimal bondAmount;
+
+ @ApiModelProperty("持仓费")
+ private BigDecimal holdAmount;
+
+ @ApiModelProperty("预估强平价")
+ private BigDecimal forceClosingPrice;
+
+ @ApiModelProperty("止损价")
+ private BigDecimal stopLossPrice;
+
+ @ApiModelProperty("止盈价")
+ private BigDecimal stopProfitPrice;
+}
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 bdaef3e..86a2dbb 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
@@ -54,6 +54,9 @@
@ApiModelProperty(value = "可增加的最大保证金")
private BigDecimal canAddMaxBond;
+ @ApiModelProperty(value = "可减少最大保证金")
+ private BigDecimal canReduceMaxBond;
+
public BigDecimal getOpeningPrice() {
return openingPrice.setScale(4, BigDecimal.ROUND_DOWN);
}
@@ -69,4 +72,8 @@
public BigDecimal getCanAddMaxBond() {
return canAddMaxBond.setScale(4, BigDecimal.ROUND_DOWN);
}
+
+ public BigDecimal getCanReduceMaxBond() {
+ return canReduceMaxBond.setScale(4, BigDecimal.ROUND_DOWN);
+ }
}
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
deleted file mode 100644
index f0ca3df..0000000
--- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.xcong.excoin.modules.contract.parameter.vo;
-
-import lombok.Data;
-
-/**
- * @author wzy
- * @date 2020-06-01
- **/
-@Data
-public class OrderDetailVo {
-}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
index 78cea15..0e54fbc 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java
@@ -3,10 +3,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.xcong.excoin.common.response.Result;
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
-import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto;
-import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto;
-import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto;
-import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto;
+import com.xcong.excoin.modules.contract.parameter.dto.*;
import com.xcong.excoin.rabbit.pricequeue.OrderModel;
import org.apache.ibatis.annotations.Param;
@@ -37,4 +34,8 @@
public Result findContractMoneyInfo(String symbol);
+ public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto);
+
+ public Result findHoldOrderDetailById(Long id);
+
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
index 3e6f326..7bfdde4 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java
@@ -121,7 +121,7 @@
int i = contractEntrustOrderDao.insert(entrustOrderEntity);
- memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustTotalAmount, walletContract.getId());
+ memberWalletContractDao.increaseWalletContractBalanceById(entrustTotalAmount.negate(), null, entrustOrderEntity.getBondAmount(), walletContract.getId());
if (i > 0) {
// 发送委托单队列消息
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 f6c8e47..f8b8a19 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
@@ -16,11 +16,9 @@
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper;
-import com.xcong.excoin.modules.contract.parameter.dto.ChangeBondDto;
-import com.xcong.excoin.modules.contract.parameter.dto.ProfitOrLessDto;
-import com.xcong.excoin.modules.contract.parameter.dto.SubmitOrderDto;
-import com.xcong.excoin.modules.contract.parameter.dto.SymbolDto;
+import com.xcong.excoin.modules.contract.parameter.dto.*;
import com.xcong.excoin.modules.contract.parameter.vo.ContractMoneyInfoVo;
+import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderDetailVo;
import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo;
import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
@@ -159,14 +157,13 @@
contractOrderEntity.setOpeningTime(new Date());
contractHoldOrderDao.insert(holdOrderEntity);
int i = contractOrderDao.insert(contractOrderEntity);
- memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), null, null, walletContract.getId());
-
- // 计算佣金
- ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN);
if (i > 0) {
- return Result.ok("success");
+ memberWalletContractDao.increaseWalletContractBalanceById(prePaymentAmount.negate(), openFeePrice.negate(), null, walletContract.getId());
+ // 计算佣金
+ ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getOpeningFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_OPEN);
+ return Result.ok("提交成功");
}
- return Result.fail("fail");
+ return Result.fail("提交失败");
}
@Override
@@ -189,6 +186,7 @@
MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol);
+ MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
if (CollUtil.isNotEmpty(list)) {
BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
List<HoldOrderListVo> resultList = new ArrayList<>();
@@ -228,12 +226,17 @@
.divide(new BigDecimal(holdOrderEntity.getLeverRatio()), 8, BigDecimal.ROUND_DOWN);
// 可增加最大保证金
- BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice);
- if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) {
- canAddMaxBond = BigDecimal.ZERO;
+// BigDecimal canAddMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).subtract(costPrice);
+// if (canAddMaxBond.compareTo(BigDecimal.ZERO) < 0) {
+// canAddMaxBond = BigDecimal.ZERO;
+// }
+ BigDecimal canReduceMaxBond = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getPrePaymentAmount());
+ if (canReduceMaxBond.compareTo(BigDecimal.ZERO) < 0) {
+ canReduceMaxBond = BigDecimal.ZERO;
}
- holdOrderListVo.setCanAddMaxBond(canAddMaxBond);
+ holdOrderListVo.setCanReduceMaxBond(canReduceMaxBond);
+ holdOrderListVo.setCanAddMaxBond(walletContractEntity.getAvailableBalance());
holdOrderListVo.setReturnRate(returnRate);
holdOrderListVo.setProfitOrLoss(rewardRatio);
resultList.add(holdOrderListVo);
@@ -509,4 +512,29 @@
contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
return Result.ok(contractMoneyInfoVo);
}
+
+ @Override
+ public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto) {
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ MemberLevelRateEntity levelRateEntity = memberLevelRateDao.selectLeverRateByMemberIdAndSymbol(memberEntity.getId(), changeLeverRateDto.getSymbol());
+ levelRateEntity.setLevelRateUp(changeLeverRateDto.getLeverRate());
+ levelRateEntity.setLevelRateDown(changeLeverRateDto.getLeverRate());
+ int i = memberLevelRateDao.updateById(levelRateEntity);
+ if (i > 0) {
+ return Result.ok("调整成功");
+ }
+ return Result.fail("调整失败");
+ }
+
+ @Override
+ public Result findHoldOrderDetailById(Long id) {
+ MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+ ContractHoldOrderEntity holdOrderEntity = contractHoldOrderDao.selectHoldOrderByMemberIdAndId(memberEntity.getId(), id);
+ if (holdOrderEntity == null) {
+ return Result.fail("订单不存在");
+ }
+
+ HoldOrderDetailVo holdOrderDetailVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrderDetailVo(holdOrderEntity);
+ return Result.ok(holdOrderDetailVo);
+ }
}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
index 0baac30..ebba922 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java
@@ -134,11 +134,9 @@
contractOrderDao.insert(contractOrderEntity);
// 计算盈利或亏损后可用金额和总金额应该增加或减少的
- BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningPrice()).add(profitOrLoss);
- log.info("平仓增加金额:{}", addMoney);
+ BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).add(profitOrLoss);
- memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(holdOrderEntity.getOpeningPrice()), null, walletContract.getId());
-
+ memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(contractOrderEntity.getOpeningFeeAmount()), null, walletContract.getId());
// 计算佣金
ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getClosingFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE);
}
--
Gitblit v1.9.1