From 95da7870f87ec42dbd572aba040492c881fe0b9c Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 05 Jun 2020 15:35:21 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin.git

---
 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java                     |   57 +++++++
 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java               |   62 +++++++
 src/main/resources/mapper/contract/ContractOrderDao.xml                                           |   10 +
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java    |   87 ++++++++--
 src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java         |    4 
 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderListVo.java                 |    7 
 src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java                                 |    4 
 src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java           |   35 +++-
 src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java                         |    7 
 src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java                   |   27 +++
 src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java       |   15 -
 src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java             |   28 +++
 src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java          |    8 
 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/OrderDetailVo.java                   |   72 ++++++++
 src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java             |   13 +
 17 files changed, 404 insertions(+), 58 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
index 7be7f09..633305d 100644
--- a/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/RabbitMqConfig.java
@@ -46,10 +46,10 @@
     public static final String QUEUE_COINOUT = "QUEUE_COINOUT_NEW";
 
     //价格操作
-    public static final String QUEUE_PRICEOPERATE = "QUEUE_PRICEOPERATE";
+    public static final String QUEUE_PRICEOPERATE = "QUEUE_PRICEOPERATE_NEW";
 
     // 平仓队列
-    public static final String QUEUE_CLOSETRADE = "QUEUE_CLOSETRADE";
+    public static final String QUEUE_CLOSETRADE = "QUEUE_CLOSETRADE_NEW";
 
 
     // 开多止盈路由键
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..0be9cc1 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,12 +1,10 @@
 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.parameter.vo.OrderListVo;
 import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
 import com.xcong.excoin.modules.contract.service.ContractOrderService;
 import com.xcong.excoin.rabbit.producer.OrderProducer;
@@ -48,10 +46,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,14 +72,17 @@
 
     @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() {
-        return null;
+    @ApiOperation(value = "分页查询历史订单列表")
+    @ApiResponses({
+            @ApiResponse(code = 0, message = "success", response = OrderListVo.class)
+    })
+    @PostMapping(value = "/findHistoryOrderList")
+    public Result findHistoryOrderList(@RequestBody @Validated OrderListDto orderListDto) {
+        return contractHoldOrderService.findOrderList(orderListDto);
     }
 
     @ApiOperation(value = "获取合约页面资产信息")
@@ -93,4 +94,16 @@
         return contractHoldOrderService.findContractMoneyInfo(symbol);
     }
 
+    @ApiOperation(value = "调整杠杆")
+    @PostMapping(value = "/changeLeverRate")
+    public Result changeLeverRate(@RequestBody @Validated ChangeLeverRateDto changeLeverRateDto) {
+        return contractHoldOrderService.changeLeverRate(changeLeverRateDto);
+    }
+
+    @ApiOperation(value = "查询历史委托订单详情")
+    @GetMapping(value = "/findOrderDetailById")
+    public Result findOrderDetailById(@ApiParam(name = "id", value = "订单id", required = true, example = "1") @RequestParam(value = "id") Long id) {
+        return contractHoldOrderService.findOrderDetailById(id);
+    }
+
 }
diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java
index 90694a5..f3ac561 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java
@@ -1,10 +1,17 @@
 package com.xcong.excoin.modules.contract.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * @author helius
  */
 public interface ContractOrderDao extends BaseMapper<ContractOrderEntity> {
+
+    public IPage<ContractOrderEntity> selectContractOrderInPage(Page<ContractOrderEntity> page, Long memberId);
+
+    public ContractOrderEntity selectOrderDetailByIdAndMemberId(@Param("id") Long id, @Param("memberId") Long memberId);
 }
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..2367df6 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;
@@ -16,7 +17,10 @@
     public static final ContractHoldOrderEntityMapper INSTANCE = Mappers.getMapper(ContractHoldOrderEntityMapper.class);
 
     @Mapping(target = "orderType", source = "openingType")
+    @Mapping(target = "openingTime", source = "createTime")
     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/mapper/ContractOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java
new file mode 100644
index 0000000..b2e3ee2
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java
@@ -0,0 +1,28 @@
+package com.xcong.excoin.modules.contract.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.excoin.modules.contract.entity.ContractOrderEntity;
+import com.xcong.excoin.modules.contract.parameter.vo.OrderDetailVo;
+import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @author wzy
+ * @date 2020-06-05
+ **/
+@Mapper
+public abstract class ContractOrderEntityMapper {
+    public static final ContractOrderEntityMapper INSTANCE = Mappers.getMapper(ContractOrderEntityMapper.class);
+
+    public abstract OrderListVo orderEntityToOrderListVo(ContractOrderEntity orderEntity);
+
+    public abstract List<OrderListVo> orderEntitiesToOrderListVo(List<ContractOrderEntity> orderEntities);
+
+    public abstract Page<OrderListVo> pageEntityToPageVo(IPage<ContractOrderEntity> orderEntityIPage);
+
+    public abstract OrderDetailVo entityToDetailVo(ContractOrderEntity orderEntity);
+}
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..12cc92c
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java
@@ -0,0 +1,62 @@
+package com.xcong.excoin.modules.contract.parameter.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @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;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("开仓时间")
+    private Date openingTime;
+
+    @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
index f0ca3df..53db2fe 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
@@ -1,11 +1,81 @@
 package com.xcong.excoin.modules.contract.parameter.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * @author wzy
- * @date 2020-06-01
+ * @date 2020-06-05
  **/
 @Data
+@ApiModel(value = "OrderDetailVo", description = "历史委托订单详情接口返回参数类")
 public class OrderDetailVo {
+
+    @ApiModelProperty("交易类型 1-市价2-限价")
+    private int tradeType;
+
+    @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空")
+    private int orderType;
+
+    @ApiModelProperty("订单编号")
+    private String orderNo;
+
+    @ApiModelProperty("委托开仓价")
+    private BigDecimal entrustOpeningPrice;
+
+    @ApiModelProperty("委托时间")
+    private Date entrustTime;
+
+    @ApiModelProperty("币种")
+    private String symbol;
+
+    @ApiModelProperty("张数")
+    private int symbolCnt;
+
+    @ApiModelProperty("平仓价")
+    private BigDecimal closingPrice;
+
+    @ApiModelProperty("平仓手续费")
+    private BigDecimal closingFeeAmount;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("平仓时间")
+    private Date closingTime;
+
+    @ApiModelProperty("平仓类型 2平多3平空4爆仓平多5爆仓平空6止盈平多7止盈平空8止损平多9止损平空")
+    private int closingType;
+
+    @ApiModelProperty("止损价")
+    private BigDecimal stopLosePrice;
+
+    @ApiModelProperty("止盈价")
+    private BigDecimal stopProfitPrice;
+
+    @ApiModelProperty("盈亏金额")
+    private BigDecimal rewardAmount;
+
+    @ApiModelProperty("盈亏比例")
+    private BigDecimal rewardRatio;
+
+    @ApiModelProperty("开仓价")
+    private BigDecimal openingPrice;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("开仓时间")
+    private Date openingTime;
+
+    @ApiModelProperty("开仓手续费")
+    private BigDecimal openingFeeAmount;
+
+    @ApiModelProperty("保证金")
+    private BigDecimal bondAmount;
+
+    @ApiModelProperty("持仓费")
+    private BigDecimal holdAmount;
+
 }
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
new file mode 100644
index 0000000..6ae45fe
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java
@@ -0,0 +1,57 @@
+package com.xcong.excoin.modules.contract.parameter.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author wzy
+ * @date 2020-06-05
+ **/
+@Data
+@ApiModel(value = "OrderListVo", description = "历史委托订单接口返回参数类")
+public class OrderListVo {
+
+    @ApiModelProperty("订单ID")
+    private Long id;
+
+    @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空")
+    private int orderType;
+
+    @ApiModelProperty("开仓均价")
+    private BigDecimal openingPrice;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("开仓价")
+    private Date openingTime;
+
+    @ApiModelProperty("开仓手续费")
+    private BigDecimal openingFeeAmount;
+
+    @ApiModelProperty("保证金")
+    private BigDecimal bondAmount;
+
+    @ApiModelProperty("张数")
+    private int symbolCnt;
+
+    @ApiModelProperty("已实现盈亏")
+    private BigDecimal rewardRatio;
+
+    @ApiModelProperty("平仓类型 2平多3平空4爆仓平多5爆仓平空6止盈平多7止盈平空8止损平多9止损平空")
+    private int closingType;
+
+    @ApiModelProperty("平仓手续费")
+    private BigDecimal closingFeeAmount;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty("平仓时间")
+    private Date closingTime;
+
+    @ApiModelProperty("强平价")
+    private BigDecimal forceClosingPrice;
+
+}
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..9294a72 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,12 @@
 
     public Result findContractMoneyInfo(String symbol);
 
+    public Result changeLeverRate(ChangeLeverRateDto changeLeverRateDto);
+
+    public Result findHoldOrderDetailById(Long id);
+
+    public Result findOrderList(OrderListDto orderListDto);
+
+    public Result findOrderDetailById(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..d1853f2 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
@@ -3,6 +3,8 @@
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.druid.sql.visitor.functions.If;
 import com.alibaba.fastjson.JSONObject;
+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.xcong.excoin.common.LoginUserUtils;
 import com.xcong.excoin.common.enumerates.CoinTypeEnum;
@@ -16,12 +18,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.vo.ContractMoneyInfoVo;
-import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo;
+import com.xcong.excoin.modules.contract.mapper.ContractOrderEntityMapper;
+import com.xcong.excoin.modules.contract.parameter.dto.*;
+import com.xcong.excoin.modules.contract.parameter.vo.*;
 import com.xcong.excoin.modules.contract.service.ContractHoldOrderService;
 import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
 import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
@@ -159,14 +158,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 +187,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 +227,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);
@@ -335,11 +339,11 @@
             if (stopProfitPrice != null) {
                 if (newPrice.compareTo(openPrice) > 0) {
                     if (stopProfitPrice.compareTo(openPrice) > 0) {
-                        return Result.fail("止损价必须低于开仓价");
+                        return Result.fail("止盈价必须低于开仓价");
                     }
                 } else {
                     if (stopProfitPrice.compareTo(newPrice) > 0) {
-                        return Result.fail("止损价必须低于当前价");
+                        return Result.fail("止盈价必须低于当前价");
                     }
                 }
             }
@@ -384,7 +388,6 @@
             producer.sendPriceOperate(JSONObject.toJSONString(model));
             return Result.ok("设置成功");
         }
-
         return Result.fail("设置失败");
     }
 
@@ -509,4 +512,50 @@
         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);
+    }
+
+    @Override
+    public Result findOrderList(OrderListDto orderListDto) {
+        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+        Page<ContractOrderEntity> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize());
+        IPage<ContractOrderEntity> list = contractOrderDao.selectContractOrderInPage(page, memberEntity.getId());
+        Page<OrderListVo> result = ContractOrderEntityMapper.INSTANCE.pageEntityToPageVo(list);
+        return Result.ok(result);
+    }
+
+    @Override
+    public Result findOrderDetailById(Long id) {
+        MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
+        ContractOrderEntity contractOrderEntity = contractOrderDao.selectOrderDetailByIdAndMemberId(id, memberEntity.getId());
+        if (contractOrderEntity == null) {
+            return Result.fail("订单不存在");
+        }
+
+        OrderDetailVo orderDetailVo = ContractOrderEntityMapper.INSTANCE.entityToDetailVo(contractOrderEntity);
+        return Result.ok(orderDetailVo);
+    }
 }
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 c103753..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,13 +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);
 
-            walletContract.setFrozenBalance(walletContract.getFrozenBalance().subtract(holdOrderEntity.getBondAmount()));
-            walletContract.setAvailableBalance(walletContract.getAvailableBalance().add(addMoney));
-            walletContract.setTotalBalance(walletContract.getTotalBalance().add(addMoney));
-
+            memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(contractOrderEntity.getOpeningFeeAmount()), null, walletContract.getId());
             // 计算佣金
             ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getClosingFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE);
         }
diff --git a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
index 401e7ac..a7e4e10 100644
--- a/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/home/service/impl/MemberQuickBuySaleServiceImpl.java
@@ -70,7 +70,7 @@
 		MemberQuickBuySaleVo memberQuickBuySaleVo = new MemberQuickBuySaleVo();
 		memberQuickBuySaleVo.setId(memberQuickBuySaleEntity.getId());
 		// 返回前台付款方式
-		return Result.ok(memberQuickBuySaleVo);
+		return Result.ok("提交成功",memberQuickBuySaleVo);
 	}
 
 	@Override
@@ -183,19 +183,6 @@
 		MemberQuickBuySaleEntity memberQuickBuySaleEntity = memberQuickBuySaleDao.selectByIdAndMemberId(member.getId(),id);
 		memberQuickBuySaleEntity.setOrderStatus(MemberQuickBuySaleEntity.CHARGE_STATUS_CANCEL_USER);
 		memberQuickBuySaleDao.updateById(memberQuickBuySaleEntity);
-		
-		// 判断是否存在足够余额
-		MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
-		boolean flag = true;
-		while(flag) {
-			walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(memberQuickBuySaleEntity.getAmountUsdt()));
-			walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(memberQuickBuySaleEntity.getAmountUsdt()));
-			int i = memberWalletCoinDao.updateById(walletCoin);
-			if(i>0) {
-				flag = false;
-			}
-			walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(member.getId(),CoinTypeEnum.USDT.toString());
-		}
 		return Result.ok("成功");
 	}
 }
diff --git a/src/main/resources/mapper/contract/ContractOrderDao.xml b/src/main/resources/mapper/contract/ContractOrderDao.xml
index 9e08e1f..4ad5cbc 100644
--- a/src/main/resources/mapper/contract/ContractOrderDao.xml
+++ b/src/main/resources/mapper/contract/ContractOrderDao.xml
@@ -2,4 +2,14 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xcong.excoin.modules.contract.dao.ContractOrderDao">
 
+
+    <select id="selectContractOrderInPage" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity">
+        select * from contract_order where member_id=#{memberId}
+        order by create_time desc
+    </select>
+
+    <select id="selectOrderDetailByIdAndMemberId" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity">
+        select * from contract_order where id=#{id} and member_id=#{memberId}
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.9.1