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