Merge branch 'master' of https://gitee.com/chonggaoxiao/new_excoin.git
 
	
	
	
	
	
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |      */ | 
 |  |  |     public static final int TRADE_TYPE_LIMIT_PRICE = 2; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 订单类型 撤单 | 
 |  |  |      * 订单状态 撤单 | 
 |  |  |      */ | 
 |  |  |     public static final int ORDER_TYPE_CANCEL = -1; | 
 |  |  |     public static final int ORDER_STATUS_CANCEL = 2; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 订单类型 开多 | 
 |  |  | 
 |  |  |     private int tradeType; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 订单类型 - 0撤单,1开多,2开空,3平多,4平空 | 
 |  |  |      * 订单类型 - 1开多,2开空,3平多,4平空 | 
 |  |  |      */ | 
 |  |  |     private int orderType; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 订单状态 - 1成交 2撤单 | 
 |  |  |      */ | 
 |  |  |     private int orderStatus; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 委托开仓价 | 
 |  |  |      */ | 
 |  |  |     private BigDecimal entrustOpeningPrice; | 
 
 |  |  | 
 |  |  |     @Mapping(source = "entrustPrice", target = "entrustOpeningPrice") | 
 |  |  |     @Mapping(source = "createTime", target = "entrustTime") | 
 |  |  |     @Mapping(source = "entrustAmount", target = "prePaymentAmount") | 
 |  |  |     @Mapping(source = "entrustType", target = "orderType") | 
 |  |  |     public abstract ContractOrderEntity entrustOrderToOrder(ContractEntrustOrderEntity orderEntity); | 
 |  |  |  | 
 |  |  |     @Mapping(source = "createTime", target = "entrustTime") | 
 
 |  |  | 
 |  |  |     @ApiModelProperty("订单ID") | 
 |  |  |     private Long id; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空") | 
 |  |  |     @ApiModelProperty("订单类型 1开多,2开空,3平多,4平空") | 
 |  |  |     private int orderType; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("订单状态 1成交 2撤单") | 
 |  |  |     private int orderStatus; | 
 |  |  |  | 
 |  |  |     @ApiModelProperty("开仓均价") | 
 |  |  |     private BigDecimal openingPrice; | 
 |  |  |  | 
 
 |  |  | 
 |  |  |  | 
 |  |  |         ContractOrderEntity orderEntity = ContractEntrustOrderEntityMapper.INSTANCE.entrustOrderToOrder(entrustOrderEntity); | 
 |  |  |         orderEntity.setTradeType(ContractOrderEntity.TRADE_TYPE_MARK_PRICE); | 
 |  |  |         orderEntity.setOrderType(ContractOrderEntity.ORDER_TYPE_CANCEL); | 
 |  |  |         orderEntity.setOrderStatus(ContractOrderEntity.ORDER_STATUS_CANCEL); | 
 |  |  |         int i = contractOrderDao.insert(orderEntity); | 
 |  |  |  | 
 |  |  |         contractEntrustOrderDao.deleteById(entrustOrderEntity.getId()); | 
 
 |  |  | 
 |  |  |                         totalReturn = needReturn.subtract(contractOrderEntity.getClosingFeeAmount()); | 
 |  |  |                         // 总的是收益-平仓手续费 | 
 |  |  |                         BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); | 
 |  |  |  | 
 |  |  |                         memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); | 
 |  |  |  | 
 |  |  |                         // 流水记录 TODO 531e | 
 |  |  | 
 |  |  |                         // 更新钱包 | 
 |  |  |                         // 总的是收益-平仓手续费 | 
 |  |  |                         BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); | 
 |  |  |                         memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); | 
 |  |  |  | 
 |  |  |                         memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); | 
 |  |  |  | 
 |  |  |                         insertAccountFlow(order, wallet, profitLossPrice, "止盈平仓"); | 
 |  |  |  | 
 |  |  | 
 |  |  |                         contractOrderService.save(contractOrderEntity); | 
 |  |  |  | 
 |  |  |                         contractHoldOrderService.removeById(order.getId()); | 
 |  |  |                         log.info("保证金:{}", prePrice); | 
 |  |  |                         log.info("盈亏:{}", profitLossPrice); | 
 |  |  |                         // 将需要退回的减去手续费 | 
 |  |  |                         BigDecimal needReturn = prePrice.add(profitLossPrice); | 
 |  |  |                         log.info("退回的钱:{}", needReturn); | 
 |  |  |                         //总退回金额=保证金+收益-手续费 | 
 |  |  |                         totalReturn = needReturn.subtract(contractOrderEntity.getClosingFeeAmount()); | 
 |  |  |                         // 更新钱包 | 
 |  |  |                         // 总的是收益-平仓手续费 | 
 |  |  |                         BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); | 
 |  |  |  | 
 |  |  |                         memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); | 
 |  |  |  | 
 |  |  |                         insertAccountFlow(order, wallet, profitLossPrice, "开多止损平仓"); | 
 |  |  | 
 |  |  |                     String symbol = order.getSymbol(); | 
 |  |  |                     Long memberId = order.getMemberId(); | 
 |  |  |                     // 本次需要退回的预付款 | 
 |  |  |                     BigDecimal prePrice = order.getPrePaymentAmount(); | 
 |  |  |                     BigDecimal prePrice = order.getBondAmount(); | 
 |  |  |                     MemberWalletContractEntity wallet = memberWalletContractService.findWalletContractByMemberIdAndSymbol(memberId, "USDT"); | 
 |  |  |  | 
 |  |  |                     if (wallet != null) { | 
 
 |  |  | 
 |  |  |             contractOrderEntity.setRewardRatio(rewardRatio); | 
 |  |  |             contractOrderDao.insert(contractOrderEntity); | 
 |  |  |  | 
 |  |  |             log.info("盈亏:{}", profitOrLoss); | 
 |  |  |             log.info("手续费:{}", holdOrderEntity.getOpeningFeeAmount()); | 
 |  |  |             log.info("保证金:{}", holdOrderEntity.getBondAmount()); | 
 |  |  |             // 计算盈利或亏损后可用金额和总金额应该增加或减少的 | 
 |  |  |             BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).add(profitOrLoss); | 
 |  |  |             log.info("金额:{}", addMoney); | 
 |  |  |             log.info("----->:{}", contractOrderEntity.getOpeningFeeAmount()); | 
 |  |  |  | 
 |  |  |             memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(contractOrderEntity.getOpeningFeeAmount()), null, walletContract.getId()); | 
 |  |  |             // 计算佣金 |