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); } 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 = "设置止盈止损") 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(); 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); src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java
@@ -159,6 +159,8 @@ */ private BigDecimal openingFeeAmount; private Date openingTime; /** * 预付款金额 */ src/main/java/com/xcong/excoin/modules/contract/parameter/dto/SymbolDto.java
New file @@ -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; } 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); 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); 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); } 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); 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); 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:爆仓平空 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 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>