| | |
| | | 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.documentary.dao.FollowFollowerOrderRelationDao; |
| | | import com.xcong.excoin.modules.documentary.dao.FollowTraderInfoDao; |
| | | import com.xcong.excoin.modules.documentary.entity.FollowFollowerOrderRelationEntity; |
| | | import com.xcong.excoin.modules.documentary.entity.FollowTraderInfoEntity; |
| | | import com.xcong.excoin.modules.member.dao.MemberDao; |
| | | import com.xcong.excoin.modules.member.dao.MemberLevelRateDao; |
| | | import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; |
| | |
| | | |
| | | @Resource |
| | | private MemberDao memberDao; |
| | | |
| | | @Resource |
| | | private FollowTraderInfoDao followTraderInfoDao; |
| | | @Resource |
| | | private FollowFollowerOrderRelationDao followFollowerOrderRelationDao; |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | |
| | | BigDecimal forceClosingPrice = CalculateUtil.getForceSetPrice(bondAmount, openingPrice, submitOrderDto.getSymbolCnt(), lotNumber, submitOrderDto.getOrderType(), memberEntity); |
| | | log.info("强平价:{}", forceClosingPrice); |
| | | |
| | | // 判断是否开启了带单 |
| | | boolean isOpenFollow = false; |
| | | FollowTraderInfoEntity tradeInfo = null; |
| | | if (MemberEntity.IS_TRADER_Y.equals(memberEntity.getIsTrader())) { |
| | | tradeInfo = followTraderInfoDao.selectTraderInfoByMemberId(memberEntity.getId()); |
| | | if (tradeInfo.getIsOpen().equals(FollowTraderInfoEntity.ISOPEN_Y)) { |
| | | isOpenFollow = true; |
| | | } |
| | | } |
| | | |
| | | ContractHoldOrderEntity holdOrderEntity = new ContractHoldOrderEntity(); |
| | | holdOrderEntity.setMemberId(memberEntity.getId()); |
| | | holdOrderEntity.setOrderNo(commonService.generateOrderNo(memberEntity.getId())); |
| | |
| | | holdOrderEntity.setPrePaymentAmount(prePaymentAmount); |
| | | holdOrderEntity.setBondAmount(bondAmount.add(openFeePrice)); |
| | | holdOrderEntity.setOperateNo(1); |
| | | // 设置合约类型 |
| | | holdOrderEntity.setContractType(isOpenFollow ? ContractOrderEntity.CONTRACTTYPE_DOCUMENTARY : ContractOrderEntity.CONTRACTTYPE_NORMAL); |
| | | |
| | | ContractOrderEntity contractOrderEntity = ContractHoldOrderEntityMapper.INSTANCE.holdOrderToOrder(holdOrderEntity); |
| | | contractOrderEntity.setOpeningTime(new Date()); |
| | |
| | | } else { |
| | | LogRecordUtils.insertMemberAccountFlow(memberEntity.getId(), prePaymentAmount, walletContract.getAvailableBalance().subtract(prePaymentAmount), submitOrderDto.getSymbol(), "买跌持仓", "买跌:" + submitOrderDto.getSymbol()); |
| | | } |
| | | |
| | | // 若该用户为交易员且开启带单模式,则发送带单异步 |
| | | if (isOpenFollow) { |
| | | FollowFollowerOrderRelationEntity relationEntity = new FollowFollowerOrderRelationEntity(); |
| | | relationEntity.setIsShow(FollowFollowerOrderRelationEntity.IS_SHOW_Y); |
| | | relationEntity.setMemberId(holdOrderEntity.getMemberId()); |
| | | relationEntity.setOrderId(holdOrderEntity.getId()); |
| | | relationEntity.setOrderType(FollowFollowerOrderRelationEntity.ORDER_TYPE_HOLD); |
| | | relationEntity.setTradeId(tradeInfo.getId()); |
| | | relationEntity.setTradeMemberId(tradeInfo.getMemberId()); |
| | | relationEntity.setTradeOrderNo(holdOrderEntity.getOrderNo()); |
| | | followFollowerOrderRelationDao.insert(relationEntity); |
| | | |
| | | ThreadPoolUtils.sendFollowOrderTask(holdOrderEntity.getId()); |
| | | } |
| | | return Result.ok("提交成功"); |
| | | } |
| | | return Result.fail("提交失败"); |