| | |
| | | }
|
| | | // 加入到撮合
|
| | | CoinTrader trader = factory.getTrader(symbol);
|
| | | // if(trader==null){
|
| | | //
|
| | | // trader = new CoinTrader("NEKK");
|
| | | // //newTrader.setKafkaTemplate(kafkaTemplate);
|
| | | // //newTrader.setBaseCoinScale(coin.getBaseCoinScale());
|
| | | // //newTrader.setCoinScale(coin.getCoinScale());
|
| | | // // newTrader.setPublishType(coin.getPublishType());
|
| | | // //newTrader.setClearTime(coin.getClearTime());
|
| | | //
|
| | | // // 创建成功以后需要对未处理订单预处理
|
| | | // //log.info("======CoinTrader Process: " + symbol + "======");
|
| | | // List<OrderCoinsEntity> orders = orderCoinsDao.selectAllEntrustingCoinOrderList();
|
| | | // if(CollectionUtils.isNotEmpty(orders)){
|
| | | // List<OrderCoinsEntity> tradingOrders = new ArrayList<>();
|
| | | // List<OrderCoinsEntity> completedOrders = new ArrayList<>();
|
| | | // orders.forEach(order1 -> {
|
| | | // tradingOrders.add(order1);
|
| | | // });
|
| | | // try {
|
| | | // trader.trade(tradingOrders);
|
| | | // } catch (ParseException e) {
|
| | | // e.printStackTrace();
|
| | | // // log.info("异常:trader.trade(tradingOrders);");
|
| | | // }
|
| | | // }
|
| | | //
|
| | | // trader.setReady(true);
|
| | | // factory.addTrader(symbol, trader);
|
| | | // }
|
| | | trader.trade(order);
|
| | |
|
| | |
|
| | | // // 流水记录 TODO
|
| | | // MemberAccountFlowEntity record = new MemberAccountFlowEntity();
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public Result cancelEntrustWalletCoinOrderForMatch(String orderId) {
|
| | | //获取用户ID
|
| | | Long memberId = LoginUserUtils.getAppLoginUser().getId();
|
| | | OrderCoinsEntity orderCoinsEntity = orderCoinsDao.selectById(orderId);
|
| | | // 取消撮合订单的单
|
| | | CoinTrader trader = factory.getTrader(orderCoinsEntity.getSymbol());
|
| | | trader.cancelOrder(orderCoinsEntity);
|
| | | if (ObjectUtil.isNotEmpty(orderCoinsEntity) && orderCoinsEntity.getMemberId() == memberId) {
|
| | | if (orderCoinsEntity.getOrderStatus() == OrderCoinsEntity.ORDERSTATUS_CANCEL) {
|
| | | return Result.fail(MessageSourceUtils.getString("order_service_0012"));
|
| | | }
|
| | | orderCoinsEntity.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_CANCEL);
|
| | | orderCoinsDao.updateById(orderCoinsEntity);
|
| | |
|
| | | String symbol = orderCoinsEntity.getSymbol();
|
| | |
|
| | | OrderCoinsDealEntity detail = new OrderCoinsDealEntity();
|
| | | detail.setMemberId(memberId);
|
| | | detail.setOrderId(orderCoinsEntity.getId());
|
| | | detail.setOrderNo(generateSimpleSerialno(memberId.toString()));
|
| | | detail.setOrderType(orderCoinsEntity.getOrderType());
|
| | | detail.setTradeType(orderCoinsEntity.getTradeType());
|
| | | detail.setSymbol(symbol);
|
| | | detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_CANCEL);
|
| | | detail.setSymbolCnt(orderCoinsEntity.getEntrustCnt());
|
| | | detail.setEntrustPrice(orderCoinsEntity.getEntrustPrice());
|
| | | detail.setDealPrice(orderCoinsEntity.getDealPrice());
|
| | | detail.setDealAmount(orderCoinsEntity.getDealAmount());
|
| | | detail.setFeeAmount(orderCoinsEntity.getFeeAmount());
|
| | | orderCoinDealDao.insert(detail);
|
| | |
|
| | | if (OrderCoinsEntity.ORDERTYPE_BUY.equals(orderCoinsEntity.getOrderType())) {
|
| | | //如果是限价买入,撤单将USDT账户冻结金额返回
|
| | | String walletCode = MemberWalletCoinEnum.WALLETCOINCODE.getValue();
|
| | | MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, walletCode);
|
| | |
|
| | | if (ObjectUtil.isNotEmpty(walletCoin)) {
|
| | | //手续费 = 开仓价*数量*手续费率
|
| | | //返还金额=开仓价*未成交数量+手续费
|
| | | BigDecimal returnBalance = orderCoinsEntity.getDealAmount();
|
| | |
|
| | | walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance));
|
| | | walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance));
|
| | | memberWalletCoinDao.updateById(walletCoin);
|
| | | // 流水记录
|
| | | MemberAccountFlowEntity record = new MemberAccountFlowEntity();
|
| | | record.setSource(MemberAccountFlowEntity.SOURCE_CANCEL);
|
| | | record.setRemark(MemberAccountFlowEntity.REMARK_CANCEL + symbol + MemberAccountFlowEntity.REMARK_RETURNBALANCE + returnBalance);
|
| | | record.setBalance(walletCoin.getAvailableBalance());
|
| | | record.setMemberId(memberId);
|
| | | record.setSymbol(symbol);
|
| | | record.setPrice(returnBalance);
|
| | | memberAccountFlowEntityDao.insert(record);
|
| | | return Result.ok(MessageSourceUtils.getString("order_service_0013"));
|
| | | }
|
| | | } else {
|
| | | //如果是限价卖出,撤单将对应的钱包冻结金额返回
|
| | | MemberWalletCoinEntity walletCoin = memberWalletCoinDao.selectWalletCoinBymIdAndCode(memberId, symbol);
|
| | | if (ObjectUtil.isNotEmpty(walletCoin)) {
|
| | |
|
| | | BigDecimal returnBalance = orderCoinsEntity.getEntrustCnt();
|
| | | walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance));
|
| | | walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance));
|
| | | memberWalletCoinDao.updateById(walletCoin);
|
| | | // 流水记录
|
| | | MemberAccountFlowEntity record = new MemberAccountFlowEntity();
|
| | | record.setSource(MemberAccountFlowEntity.SOURCE_CANCEL);
|
| | | record.setRemark(MemberAccountFlowEntity.REMARK_CANCEL + symbol + MemberAccountFlowEntity.REMARK_RETURNBALANCE + returnBalance);
|
| | | record.setBalance(walletCoin.getAvailableBalance());
|
| | | record.setMemberId(memberId);
|
| | | record.setSymbol(symbol);
|
| | | record.setPrice(walletCoin.getFrozenBalance());
|
| | | memberAccountFlowEntityDao.insert(record);
|
| | | return Result.ok(MessageSourceUtils.getString("order_service_0013"));
|
| | | }
|
| | | }
|
| | | }
|
| | | return Result.fail(MessageSourceUtils.getString("order_service_0043"));
|
| | | }
|
| | |
|
| | | @Override
|
| | | public Result findAllWalletCoinOrder(FindAllWalletCoinOrderDto findAllWalletCoinOrderDto) {
|
| | | //获取用户ID
|
| | | Long memberId = LoginUserUtils.getAppLoginUser().getId();
|