From def723a6fa9cbe05734afe9011a6f90d2fa32196 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 03 Jun 2020 17:07:23 +0800
Subject: [PATCH] interface tiaozheng

---
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java    |   26 ++++++------
 src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java    |    4 +-
 src/main/resources/mapper/contract/ContractEntrustOrderDao.xml                                    |    8 ++++
 src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java       |    6 ++
 src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java           |   11 +++--
 src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java                                 |    1 
 src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java                      |   17 ++++++++
 src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java          |    2 
 src/main/resources/mapper/contract/ContractHoldOrderDao.xml                                       |    8 ++++
 src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java                   |    2 +
 src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java                  |    2 +
 src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java                     |    2 +
 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java |    4 +-
 src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java             |    5 +-
 14 files changed, 71 insertions(+), 27 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java
index f37d8dd..a71f393 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/controller/ContractEntrustOrderController.java
@@ -49,8 +49,8 @@
             @ApiResponse(code = 0, message = "success", response = ContractEntrustVo.class)
     })
     @GetMapping(value = "/findCurrentEntrustOrderList")
-    public Result findCurrentEntrustOrderList() {
-        return contractEntrustOrderService.findEntrustOrderList();
+    public Result findCurrentEntrustOrderList(@ApiParam(name = "symbol", value = "币种",  example = "BTC/USDT") @RequestParam(value = "symbol", required = false) String symbol) {
+        return contractEntrustOrderService.findEntrustOrderList(symbol);
     }
 
 
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 1449ba9..d394aaa 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
@@ -4,6 +4,7 @@
 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.service.ContractHoldOrderService;
@@ -43,8 +44,8 @@
             @ApiResponse(code = 0, message = "success", response = HoldOrderListVo.class)
     })
     @GetMapping(value = "/findHoldOrderList")
-    public Result findHoldOrderList() {
-        return contractHoldOrderService.findHoldOrderList();
+    public Result findHoldOrderList(@ApiParam(name = "symbol", value = "币种", required = true, example = "BTC/USDT") @RequestParam(value = "symbol", required = false) String symbol) {
+        return contractHoldOrderService.findHoldOrderList(symbol);
     }
 
     @ApiOperation(value = "未完成--根据Id查询订单详情")
@@ -60,9 +61,9 @@
     }
 
     @ApiOperation(value = "一键平仓")
-    @GetMapping(value = "/oneKeyClosing")
-    public Result oneKeyClosing() {
-        return contractHoldOrderService.cancelHoldOrderBatch();
+    @PostMapping(value = "/oneKeyClosing")
+    public Result oneKeyClosing(@RequestBody SymbolDto symbolDto) {
+        return contractHoldOrderService.cancelHoldOrderBatch(symbolDto);
     }
 
     @ApiOperation(value = "设置止盈止损")
diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
index f52382e..3f07e27 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractEntrustOrderDao.java
@@ -15,6 +15,8 @@
 
     public List<ContractEntrustOrderEntity> selectEntrustOrderListByMemberId(@Param("memberId") Long memberId);
 
+    public List<ContractEntrustOrderEntity> selectEntrustOrderListByMemberIdAndSymbol(@Param("memberId") Long memberId, @Param("symbol") String symbol);
+
     public List<ContractEntrustOrderEntity> selectEntrustOrderListByIds(@Param("list") List<Long> list);
 
     public List<ContractEntrustOrderEntity> selectAllEntrustOrder();
diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
index e4e4b23..dd1f6ac 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractHoldOrderDao.java
@@ -36,6 +36,8 @@
 
     public List<ContractHoldOrderEntity> selectHoldOrderListByMemberId(@Param("memberId") Long memberId);
 
+    public List<ContractHoldOrderEntity> selectHoldOrderListByMemberIdAndSymbol(@Param("memberId") Long memberId, @Param("symbol") String symbol);
+
     public ContractHoldOrderEntity selectHoldOrderByMemberIdAndId(@Param("memberId") Long memberId, @Param("id") Long id);
 
     public int updateHoldOrderIsCanClosingById(@Param("isCanClosing") int isCanClosing, @Param("id") Long id);
diff --git a/src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java b/src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java
index b88928d..680ca35 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java
@@ -159,6 +159,8 @@
      */
     private BigDecimal openingFeeAmount;
 
+    private Date openingTime;
+
     /**
      * 预付款金额
      */
diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java
new file mode 100644
index 0000000..4319d46
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java
@@ -0,0 +1,17 @@
+package com.xcong.excoin.modules.contract.parameter.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author wzy
+ * @date 2020-06-03
+ **/
+@Data
+@ApiModel(value = "SymbolDto", description = "币种dto")
+public class SymbolDto {
+
+    @ApiModelProperty(value = "币种", example = "BTC/USDT")
+    private String symbol;
+}
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java b/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java
index 436576d..2e27705 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/ContractEntrustOrderService.java
@@ -14,7 +14,7 @@
 
     public Result addContractEntrustOrder(SubmitEntrustDto submitEntrustDto);
 
-    public Result findEntrustOrderList();
+    public Result findEntrustOrderList(String symbol);
 
     public Result cancelEntrustOrder(Long id);
 
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 5ac43ea..78cea15 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
@@ -6,6 +6,7 @@
 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.rabbit.pricequeue.OrderModel;
 import org.apache.ibatis.annotations.Param;
 
@@ -24,11 +25,11 @@
 
     public void updateOrderIsCanClosingAndBatchNoById(Long id);
 
-    public Result findHoldOrderList();
+    public Result findHoldOrderList(String symbol);
 
     public Result cancelHoldOrder(Long id);
 
-    public Result cancelHoldOrderBatch();
+    public Result cancelHoldOrderBatch(SymbolDto symbolDto);
 
     public Result setTargetProfitOrLess(ProfitOrLessDto profitOrLessDto);
 
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 0cc3d15..3f91227 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
@@ -149,9 +149,9 @@
     }
 
     @Override
-    public Result findEntrustOrderList() {
+    public Result findEntrustOrderList(String symbol) {
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
-        List<ContractEntrustOrderEntity> list = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
+        List<ContractEntrustOrderEntity> list = contractEntrustOrderDao.selectEntrustOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol);
         List<ContractEntrustVo> resultList = ContractEntrustOrderEntityMapper.INSTANCE.entityListToVoList(list);
         return Result.ok(resultList);
     }
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 3f9b7b2..f30dc92 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
@@ -19,6 +19,7 @@
 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.service.ContractHoldOrderService;
@@ -189,19 +190,18 @@
     }
 
     @Override
-    public Result findHoldOrderList() {
+    public Result findHoldOrderList(String symbol) {
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
 
-        List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
+        List<ContractHoldOrderEntity> list = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbol);
         if (CollUtil.isNotEmpty(list)) {
             BigDecimal totalProfitOrLoss = BigDecimal.ZERO;
             List<HoldOrderListVo> resultList = new ArrayList<>();
             for (ContractHoldOrderEntity holdOrderEntity : list) {
                 HoldOrderListVo holdOrderListVo = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToDto(holdOrderEntity);
-                String symbol = holdOrderEntity.getSymbol();
                 // 获取最新价
-                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
-                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol);
+                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
+                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
                 // 盈亏
                 BigDecimal rewardRatio = BigDecimal.ZERO;
                 // 开多
@@ -275,9 +275,9 @@
     }
 
     @Override
-    public Result cancelHoldOrderBatch() {
+    public Result cancelHoldOrderBatch(SymbolDto symbolDto) {
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
-        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
+        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberIdAndSymbol(memberEntity.getId(), symbolDto.getSymbol());
         if (CollUtil.isEmpty(holdOrderEntities)) {
             return Result.fail("订单不存在");
         }
@@ -287,8 +287,7 @@
             contractHoldOrderDao.updateHoldOrderIsCanClosingById(ContractHoldOrderEntity.ORDER_CAN_CLOSING_N, holdOrderEntity.getId());
             ids.add(holdOrderEntity.getId());
         }
-        ;
-        producer.sendCloseTrade(JSONObject.toJSONString(ids));
+//        producer.sendCloseTrade(JSONObject.toJSONString(ids));
         return Result.ok("平仓成功");
     }
 
@@ -447,8 +446,7 @@
         MemberEntity memberEntity = LoginUserUtils.getAppLoginUser();
 
         PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting();
-        // 获取最新价
-        BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
+        BigDecimal newPriceSymbol = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(symbol)));
 
         // 当前合约委托单
         List<ContractEntrustOrderEntity> entrustOrderEntities = contractEntrustOrderDao.selectEntrustOrderListByMemberId(memberEntity.getId());
@@ -469,8 +467,10 @@
         // 总盈利
         BigDecimal totalProfitOrLess = BigDecimal.ZERO;
         if (CollUtil.isNotEmpty(holdOrderEntities)) {
-            BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(symbol);
             for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
+                // 获取最新价
+                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
+                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
                 beUsedBondAmount = beUsedBondAmount.add(holdOrderEntity.getBondAmount());
 
                 // 单个订单盈利
@@ -509,7 +509,7 @@
         contractMoneyInfoVo.setEquity(equity);
         contractMoneyInfoVo.setFeeRatio(tradeSetting.getFeeRatio());
         contractMoneyInfoVo.setLeverAgeRatio(tradeSetting.getLeverageRatio());
-        contractMoneyInfoVo.setNewPrice(newPrice);
+        contractMoneyInfoVo.setNewPrice(newPriceSymbol);
         contractMoneyInfoVo.setSymbolSku(cacheSettingUtils.getSymbolSku(symbol));
         contractMoneyInfoVo.setLeverRate(rateEntity.getLevelRateUp());
         return Result.ok(contractMoneyInfoVo);
diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
index 96ab15b..c6c2f49 100644
--- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java
@@ -532,10 +532,14 @@
                 contractHoldOrderEntity.setForceClosingPrice(forceSetPrice);
                 contractHoldOrderEntity.setLeverRatio(coinsCoinsOrder.getLeverRatio());
                 contractHoldOrderEntity.setOpeningPrice(entrustPrice);
+                contractHoldOrderEntity.setTradeType(ContractHoldOrderEntity.TRADE_TYPE_LIMIT);
                 contractHoldOrderService.save(contractHoldOrderEntity);
 
                 // 需要一个历史插入
                 ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(contractHoldOrderEntity);
+                contractOrderEntity.setEntrustOpeningPrice(coinsCoinsOrder.getEntrustPrice());
+                contractOrderEntity.setEntrustTime(coinsCoinsOrder.getCreateTime());
+                contractOrderEntity.setOpeningTime(new Date());
                 contractOrderEntity.setId(null);
                 contractOrderService.save(contractOrderEntity);
                 // 发送爆仓的队列
@@ -551,7 +555,7 @@
                 }
                 // 扣除手续费
                 BigDecimal totalBalance = wallet.getTotalBalance().subtract(openFeePrice);
-
+                contractEntrustOrderService.removeById(coinsCoinsOrder.getId());
                 memberWalletContractService.increaseWalletContractBalanceById(null, totalBalance, null, wallet.getId());
                 // TODO 531 待写
                 calYj(memId, openFeePrice, contractOrderEntity, 1);
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 2995aff..25638d8 100644
--- a/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
+++ b/src/main/java/com/xcong/excoin/rabbit/init/OrderProducerInit.java
@@ -50,7 +50,6 @@
 
         if (CollectionUtils.isNotEmpty(holdOrderEntities)) {
             for (ContractHoldOrderEntity order : holdOrderEntities) {
-                log.info("---->>>{}", order.getSymbol());
                 // 开多1,开空 2
                 int openingType = order.getOpeningType();
                 // 1:买入委托2:开多3:开空4:平多5:平空6:爆仓平多7:爆仓平空
diff --git a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
index 8b31fb1..ebb0698 100644
--- a/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
+++ b/src/main/resources/mapper/contract/ContractEntrustOrderDao.xml
@@ -11,6 +11,14 @@
         select * from contract_entrust_order
         where member_id=#{memberId}
     </select>
+
+    <select id="selectEntrustOrderListByMemberIdAndSymbol" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity">
+        select * from contract_entrust_order
+        where member_id=#{memberId}
+        <if test="symbol != null and symbol !=''">
+            and symbol=#{symbol}
+        </if>
+    </select>
     <select id="selectEntrustOrderListByIds" resultType="com.xcong.excoin.modules.contract.entity.ContractEntrustOrderEntity">
         select * from contract_entrust_order
         where id in
diff --git a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
index 024fe90..25f9dcb 100644
--- a/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
+++ b/src/main/resources/mapper/contract/ContractHoldOrderDao.xml
@@ -24,6 +24,14 @@
         select * from contract_hold_order where member_id=#{memberId} and is_can_closing=1 order by create_time desc
     </select>
 
+    <select id="selectHoldOrderListByMemberIdAndSymbol" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
+        select * from contract_hold_order where member_id=#{memberId}
+        <if test="symbol!=null and symbol!=''">
+            and symbol=#{symbol}
+        </if>
+        and is_can_closing=1
+    </select>
+
     <select id="selectHoldOrderByMemberIdAndId" resultType="com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity">
         select * from contract_hold_order where member_id=#{memberId} and id=#{id}
     </select>

--
Gitblit v1.9.1