From 01aa2cc5c8fafd89ff763bfb0016c4983ff79648 Mon Sep 17 00:00:00 2001 From: gao <gaoleox@163> Date: Fri, 05 Jun 2020 19:33:20 +0800 Subject: [PATCH] Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin.git --- src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java | 4 src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java | 20 ++ src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java | 7 src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java | 1 src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java | 4 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java | 81 +++++++++++ src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java | 2 src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java | 8 src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java | 8 + src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java | 117 ++++++++++----- src/main/resources/mapper/contract/ContractOrderDao.xml | 16 ++ src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 27 ++- src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java | 1 src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java | 42 +++--- src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java | 8 + src/test/java/com/xcong/excoin/RabbitMqTest.java | 9 + src/main/resources/application-test.yml | 6 src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java | 4 src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java | 3 src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java | 1 src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java | 18 ++ src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java | 10 + src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java | 3 src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java | 2 src/main/resources/application.yml | 4 25 files changed, 308 insertions(+), 98 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java b/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java index 4202ea9..75c871c 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java +++ b/src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java @@ -161,4 +161,14 @@ return orderCoinService.findCollectList(); } + /** + * 币种搜索 + * @return + */ + @ApiOperation(value = "币种搜索", notes = "币种搜索") + @GetMapping(value = "/searchSymbolResultList") + public Result searchSymbolResultList() { + return orderCoinService.searchSymbolResultList(); + } + } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java b/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java index 9ca2106..0cfd4f8 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java @@ -29,4 +29,6 @@ public Result findCollectList(); + public Result searchSymbolResultList(); + } diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java index acc2628..93c2151 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java @@ -87,7 +87,7 @@ totalUsdt = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); totalUsdts = totalUsdts.add(totalUsdt); BigDecimal totalCny = totalUsdt.multiply(cnyUsdt); - walletCoin.setTotalBalance(totalCny.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setTotalBalance(totalCny); } else { BigDecimal amount = walletCoin.getAvailableBalance().add(walletCoin.getFrozenBalance()); // 获取最新价 @@ -96,7 +96,7 @@ //Double closePrice = symbolsService.getCloseSymbolsBySymbolsName(walletCoin.getWalletCode()+"/USDT"); totalUsdt = totalUsdt.add(amount.multiply(closePrice)); totalUsdts = totalUsdts.add(totalUsdt); - walletCoin.setTotalBalance(totalUsdt.multiply(cnyUsdt).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setTotalBalance(totalUsdt.multiply(cnyUsdt)); } } } @@ -235,10 +235,10 @@ MemberWalletContractEntity walletContract = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberId, walletCode); BigDecimal availableBalance = walletContract.getAvailableBalance(); BigDecimal add = availableBalance.add(balance); - walletContract.setAvailableBalance(add.setScale(4, BigDecimal.ROUND_DOWN)); + walletContract.setAvailableBalance(add); BigDecimal totalBalance = walletContract.getTotalBalance(); BigDecimal totalBigDecimal = totalBalance.add(balance); - walletContract.setTotalBalance(totalBigDecimal.setScale(4, BigDecimal.ROUND_DOWN)); + walletContract.setTotalBalance(totalBigDecimal); int updateWalletContractById = memberWalletContractDao.updateById(walletContract); if (updateWalletContractById < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); @@ -247,7 +247,7 @@ MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOCONTRACT.getValue()); memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance.negate()); memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); memberAccountRecord.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); @@ -256,7 +256,7 @@ //添加合约资金划转历史记录 memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMWALLETCOIN.getValue()); memberAccountRecord.setSymbol(MemberWalletCoinEnum.WALLETCOINCODE.getValue()); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); memberAccountMoneyChangeDao.insert(memberAccountRecord); } @@ -283,8 +283,8 @@ BigDecimal totalBalance = walletContract.getTotalBalance(); BigDecimal totalSubtract = totalBalance.subtract(balance); - walletContract.setAvailableBalance(availableSubtract.setScale(4, BigDecimal.ROUND_DOWN)); - walletContract.setTotalBalance(totalSubtract.setScale(4, BigDecimal.ROUND_DOWN)); + walletContract.setAvailableBalance(availableSubtract); + walletContract.setTotalBalance(totalSubtract); int updateWalletCoinById = memberWalletContractDao.updateById(walletContract); if (updateWalletCoinById < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); @@ -296,8 +296,8 @@ BigDecimal walletCoinTotalBalance = walletCoin.getTotalBalance(); BigDecimal CoinTotalBalance = walletCoinTotalBalance.add(balance); - walletCoin.setAvailableBalance(CoinAvailableBalance.setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setTotalBalance(CoinTotalBalance.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setAvailableBalance(CoinAvailableBalance); + walletCoin.setTotalBalance(CoinTotalBalance); int updateById = memberWalletCoinDao.updateById(walletCoin); if (updateById < 1) { return Result.fail(MessageSourceUtils.getString("member_service_0096")); @@ -307,7 +307,7 @@ MemberAccountMoneyChange memberAccountRecord = new MemberAccountMoneyChange(); memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOWALLETCOIN.getValue()); memberAccountRecord.setMemberId(memberId); - memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance.negate()); memberAccountRecord.setStatus(MemberAccountMoneyChange.STATUS_SUCCESS_INTEGER); memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); @@ -317,7 +317,7 @@ memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMCONTRACT.getValue()); memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance); memberAccountMoneyChangeDao.insert(memberAccountRecord); return Result.ok(MessageSourceUtils.getString("member_service_0006")); } @@ -435,8 +435,8 @@ return Result.fail(MessageSourceUtils.getString("member_service_0008")); } - walletAgent.setAvailableBalance(available.setScale(4, BigDecimal.ROUND_DOWN)); - walletAgent.setTotalBalance(total.setScale(4, BigDecimal.ROUND_DOWN)); + walletAgent.setAvailableBalance(available); + walletAgent.setTotalBalance(total); int i = memberWalletAgentDao.updateById(walletAgent); if (i < 1) { @@ -450,8 +450,8 @@ BigDecimal walletCoinAvailableBalance = walletCoin.getAvailableBalance(); BigDecimal walletCoinTotalBalance = walletCoin.getTotalBalance(); - walletCoin.setAvailableBalance(walletCoinAvailableBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setTotalBalance(walletCoinTotalBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setAvailableBalance(walletCoinAvailableBalance.add(balance)); + walletCoin.setTotalBalance(walletCoinTotalBalance.add(balance)); int updateById = memberWalletCoinDao.updateById(walletCoin); if (updateById < 1) { @@ -463,7 +463,7 @@ memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMAGENT.getValue()); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_COIN); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance); memberAccountMoneyChangeDao.insert(memberAccountRecord); memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOWALLETCOIN.getValue()); @@ -473,8 +473,8 @@ BigDecimal walletContractAvailableBalance = walletContract.getAvailableBalance(); BigDecimal walletContractTotalBalance = walletContract.getTotalBalance(); - walletContract.setAvailableBalance(walletContractAvailableBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); - walletContract.setTotalBalance(walletContractTotalBalance.add(balance).setScale(4, BigDecimal.ROUND_DOWN)); + walletContract.setAvailableBalance(walletContractAvailableBalance.add(balance)); + walletContract.setTotalBalance(walletContractTotalBalance.add(balance)); int updateById = memberWalletContractDao.updateById(walletContract); if (updateById < 1) { @@ -487,11 +487,11 @@ memberAccountRecord.setSymbol(walletCode); memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTFROMAGENT.getValue()); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_CONTRACT); - memberAccountRecord.setAmount(balance.setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance); memberAccountMoneyChangeDao.insert(memberAccountRecord); memberAccountRecord.setContent(MemberWalletCoinEnum.CONTENTTOCONTRACT.getValue()); } - memberAccountRecord.setAmount(balance.negate().setScale(4, BigDecimal.ROUND_DOWN)); + memberAccountRecord.setAmount(balance.negate()); memberAccountRecord.setType(MemberAccountMoneyChange.TYPE_WALLET_AGENT); memberAccountMoneyChangeDao.insert(memberAccountRecord); diff --git a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java index 82f911d..8fff3e0 100644 --- a/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java @@ -13,9 +13,12 @@ import javax.annotation.Resource; import com.xcong.excoin.modules.platform.entity.PlatformCnyUsdtExchangeEntity; +import com.xcong.excoin.modules.platform.entity.PlatformSymbolsCoinEntity; + import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xcong.excoin.common.LoginUserUtils; import com.xcong.excoin.common.enumerates.MemberWalletCoinEnum; @@ -41,6 +44,7 @@ import com.xcong.excoin.modules.member.entity.MemberSelectSymbolsEntity; import com.xcong.excoin.modules.member.entity.MemberWalletCoinEntity; import com.xcong.excoin.modules.platform.dao.PlatformCnyUsdtExchangeDao; +import com.xcong.excoin.modules.platform.dao.PlatformSymbolsCoinDao; import com.xcong.excoin.modules.platform.dao.TradeSettingDao; import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity; import com.xcong.excoin.utils.CoinTypeConvert; @@ -71,6 +75,8 @@ MemberAccountFlowEntityDao memberAccountFlowEntityDao; @Resource RedisUtils redisUtils; + @Resource + PlatformSymbolsCoinDao platformSymbolsCoinDao; @Override public String generateSimpleSerialno(String userId) { @@ -197,15 +203,15 @@ order.setOrderNo(generateSimpleSerialno(memberId.toString())); order.setOrderType(type); order.setSymbol(symbol); - order.setMarkPrice(nowPrice.setScale(4, BigDecimal.ROUND_DOWN)); - order.setEntrustCnt(amount.setScale(4, BigDecimal.ROUND_DOWN)); - order.setEntrustPrice(price.setScale(4, BigDecimal.ROUND_DOWN)); - order.setDealCnt(amount.setScale(4, BigDecimal.ROUND_DOWN)); - order.setDealPrice(price.setScale(4, BigDecimal.ROUND_DOWN)); - order.setDealAmount(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN)); + order.setMarkPrice(nowPrice); + order.setEntrustCnt(amount); + order.setEntrustPrice(price); + order.setDealCnt(amount); + order.setDealPrice(price); + order.setDealAmount(totalPayPrice); order.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DODING); order.setTradeType(tradeType); - order.setFeeAmount(closingPrice.setScale(4, BigDecimal.ROUND_DOWN)); + order.setFeeAmount(closingPrice); orderCoinsDao.insert(order); //更新用户钱包信息 @@ -214,15 +220,15 @@ //如果是买入,所对应的币种增加,USDT账户减少金额 BigDecimal availableBalance = walletCoinUsdt.getAvailableBalance().subtract(totalPayPrice); BigDecimal frozenBalance = walletCoinUsdt.getFrozenBalance().add(totalPayPrice); - walletCoinUsdt.setAvailableBalance(availableBalance.setScale(4, BigDecimal.ROUND_DOWN)); - walletCoinUsdt.setFrozenBalance(frozenBalance.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoinUsdt.setAvailableBalance(availableBalance); + walletCoinUsdt.setFrozenBalance(frozenBalance); memberWalletCoinDao.updateById(walletCoinUsdt); }else { //如果是卖出,币种减少,USDT增加 BigDecimal availableBalance = walletCoin.getAvailableBalance().subtract(amount); BigDecimal frozenBalance = walletCoin.getFrozenBalance().add(amount); - walletCoin.setAvailableBalance(availableBalance.setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setFrozenBalance(frozenBalance.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setAvailableBalance(availableBalance); + walletCoin.setFrozenBalance(frozenBalance); memberWalletCoinDao.updateById(walletCoin); } } else { @@ -231,15 +237,15 @@ order.setOrderNo(generateSimpleSerialno(memberId.toString())); order.setOrderType(type); order.setSymbol(symbol); - order.setMarkPrice(nowPrice.setScale(4, BigDecimal.ROUND_DOWN)); - order.setEntrustCnt(amount.setScale(4, BigDecimal.ROUND_DOWN)); - order.setEntrustPrice(price.setScale(4, BigDecimal.ROUND_DOWN)); - order.setDealCnt(amount.setScale(4, BigDecimal.ROUND_DOWN)); - order.setDealPrice(price.setScale(4, BigDecimal.ROUND_DOWN)); - order.setDealAmount(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN)); + order.setMarkPrice(nowPrice); + order.setEntrustCnt(amount); + order.setEntrustPrice(price); + order.setDealCnt(amount); + order.setDealPrice(price); + order.setDealAmount(totalPayPrice); order.setOrderStatus(OrderCoinsEntity.ORDERSTATUS_DONE); order.setTradeType(tradeType); - order.setFeeAmount(closingPrice.setScale(4, BigDecimal.ROUND_DOWN)); + order.setFeeAmount(closingPrice); orderCoinsDao.insert(order); OrderCoinsDealEntity detail = new OrderCoinsDealEntity(); @@ -249,29 +255,29 @@ detail.setOrderType(type); detail.setTradeType(tradeType); detail.setSymbol(symbol); - detail.setSymbolCnt(amount.setScale(4, BigDecimal.ROUND_DOWN)); - detail.setEntrustPrice(price.setScale(4, BigDecimal.ROUND_DOWN)); - detail.setDealPrice(price.setScale(4, BigDecimal.ROUND_DOWN)); - detail.setDealAmount(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN)); - detail.setFeeAmount(closingPrice.setScale(4, BigDecimal.ROUND_DOWN)); + detail.setSymbolCnt(amount); + detail.setEntrustPrice(price); + detail.setDealPrice(price); + detail.setDealAmount(totalPayPrice); + detail.setFeeAmount(closingPrice); detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_DONE); orderCoinDealDao.insert(detail); if(OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) { //如果是买入,所对应的币种增加,USDT账户减少金额 // 更新用户的可用金额 - walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(amount).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(amount)); memberWalletCoinDao.updateById(walletCoin); - walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().subtract(totalPayPrice).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().subtract(totalPayPrice)); memberWalletCoinDao.updateById(walletCoinUsdt); }else { //如果是卖出,币种减少,USDT增加 - walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().subtract(amount).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().subtract(amount)); memberWalletCoinDao.updateById(walletCoin); BigDecimal subtract = totalPayPrice.subtract(closingPrice).subtract(closingPrice); - walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().add(subtract).setScale(4, BigDecimal.ROUND_DOWN)); + walletCoinUsdt.setAvailableBalance(walletCoinUsdt.getAvailableBalance().add(subtract)); memberWalletCoinDao.updateById(walletCoinUsdt); } } @@ -281,14 +287,14 @@ if (OrderCoinsEntity.ORDERTYPE_BUY.equals(type)) { record.setPrice(totalPayPrice.setScale(4, BigDecimal.ROUND_DOWN)); record.setSource(MemberAccountFlowEntity.SOURCE_BUY+symbol); - record.setRemark(MemberAccountFlowEntity.REMARK_BUY+symbol+":"+amount.setScale(4, BigDecimal.ROUND_DOWN)); + record.setRemark(MemberAccountFlowEntity.REMARK_BUY+symbol+":"+amount); } else { record.setPrice(totalPayPrice.negate().setScale(4, BigDecimal.ROUND_DOWN)); record.setSource(MemberAccountFlowEntity.SOURCE_SALE+symbol); - record.setRemark(MemberAccountFlowEntity.REMARK_SALE+symbol+":"+amount.setScale(4, BigDecimal.ROUND_DOWN)); + record.setRemark(MemberAccountFlowEntity.REMARK_SALE+symbol+":"+amount); } record.setSymbol(symbol); - record.setBalance(walletCoinUsdt.getAvailableBalance().setScale(4, BigDecimal.ROUND_DOWN)); + record.setBalance(walletCoinUsdt.getAvailableBalance()); memberAccountFlowEntityDao.insert(record); @@ -337,10 +343,10 @@ detail.setSymbol(symbol); detail.setOrderStatus(OrderCoinsDealEntity.ORDERSTATUS_CANCEL); detail.setSymbolCnt(orderCoinsEntity.getEntrustCnt()); - detail.setEntrustPrice(orderCoinsEntity.getEntrustPrice().setScale(4, BigDecimal.ROUND_DOWN)); - detail.setDealPrice(orderCoinsEntity.getDealPrice().setScale(4, BigDecimal.ROUND_DOWN)); - detail.setDealAmount(orderCoinsEntity.getDealAmount().setScale(4, BigDecimal.ROUND_DOWN)); - detail.setFeeAmount(orderCoinsEntity.getFeeAmount().setScale(4, BigDecimal.ROUND_DOWN)); + 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())) { @@ -353,14 +359,14 @@ //返还金额=开仓价*未成交数量+手续费 BigDecimal returnBalance = orderCoinsEntity.getDealAmount(); - walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); + 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().setScale(4, BigDecimal.ROUND_DOWN)); + record.setBalance(walletCoin.getAvailableBalance()); record.setMemberId(memberId); record.setSymbol(symbol); record.setPrice(returnBalance); @@ -373,17 +379,17 @@ if (ObjectUtil.isNotEmpty(walletCoin)) { BigDecimal returnBalance = orderCoinsEntity.getEntrustCnt(); - walletCoin.setAvailableBalance(walletCoin.getAvailableBalance().add(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); - walletCoin.setFrozenBalance(walletCoin.getFrozenBalance().subtract(returnBalance).setScale(4, BigDecimal.ROUND_DOWN)); + 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().setScale(4, BigDecimal.ROUND_DOWN)); + record.setBalance(walletCoin.getAvailableBalance()); record.setMemberId(memberId); record.setSymbol(symbol); - record.setPrice(walletCoin.getFrozenBalance().setScale(4, BigDecimal.ROUND_DOWN)); + record.setPrice(walletCoin.getFrozenBalance()); memberAccountFlowEntityDao.insert(record); return Result.ok(MessageSourceUtils.getString("order_service_0013")); } @@ -476,4 +482,33 @@ return Result.ok(findCollectListVo); } + @Override + public Result searchSymbolResultList() { + //获取用户ID + Long memberId = LoginUserUtils.getAppLoginUser().getId(); + FindCollectListVo findCollectListVo = new FindCollectListVo(); + List<MemberSelectSymbolsVo> list = new ArrayList<>(); + + Map<String, Object> columnMap = new HashMap<>(); + List<PlatformSymbolsCoinEntity> selectByMap = platformSymbolsCoinDao.selectByMap(columnMap); + + List<MemberSelectSymbolsEntity> selectSymbolByMemIdAndSymbol = memberSelectSymbolsDao.selectSymbolByMemId(memberId); + for(PlatformSymbolsCoinEntity platformSymbolsCoinEntity : selectByMap) { + MemberSelectSymbolsVo memberSelectSymbolsVo = new MemberSelectSymbolsVo(); + memberSelectSymbolsVo.setSymbol(platformSymbolsCoinEntity.getName()); + if(CollUtil.isNotEmpty(selectSymbolByMemIdAndSymbol)) { + for(MemberSelectSymbolsEntity memberSelectSymbolsEntity : selectSymbolByMemIdAndSymbol) { + if(platformSymbolsCoinEntity.getName().equals(memberSelectSymbolsEntity.getSymbol())) { + memberSelectSymbolsVo.setIsCollect(MemberSelectSymbolsVo.ISCOLLECT_YES); + } + } + }else { + memberSelectSymbolsVo.setIsCollect(MemberSelectSymbolsVo.ISCOLLECT_NO); + } + list.add(memberSelectSymbolsVo); + } + findCollectListVo.setMemberSelectSymbolsVo(list); + return Result.ok(findCollectListVo); + } + } 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 75b6fbe..0be9cc1 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 @@ -95,9 +95,15 @@ } @ApiOperation(value = "调整杠杆") - @GetMapping(value = "/changeLeverRate") + @PostMapping(value = "/changeLeverRate") public Result changeLeverRate(@RequestBody @Validated ChangeLeverRateDto changeLeverRateDto) { return contractHoldOrderService.changeLeverRate(changeLeverRateDto); } + @ApiOperation(value = "查询历史委托订单详情") + @GetMapping(value = "/findOrderDetailById") + public Result findOrderDetailById(@ApiParam(name = "id", value = "订单id", required = true, example = "1") @RequestParam(value = "id") Long id) { + return contractHoldOrderService.findOrderDetailById(id); + } + } diff --git a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java index 4a1bd7d..aaea6dc 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java +++ b/src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java @@ -4,11 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import com.xcong.excoin.modules.contract.parameter.dto.OrderListDto; +import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo; +import org.apache.ibatis.annotations.Param; /** * @author helius */ public interface ContractOrderDao extends BaseMapper<ContractOrderEntity> { - public IPage<ContractOrderEntity> selectContractOrderInPage(Page<ContractOrderEntity> page, Long memberId); + public IPage<ContractOrderEntity> selectContractOrderInPage(Page<ContractOrderEntity> page, @Param("record") ContractOrderEntity contractOrderEntity); + + public ContractOrderEntity selectOrderDetailByIdAndMemberId(@Param("id") Long id, @Param("memberId") Long memberId); } 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 680ca35..9a82765 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 @@ -1,5 +1,8 @@ package com.xcong.excoin.modules.contract.entity; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.FieldStrategy; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.xcong.excoin.common.system.base.BaseEntity; import lombok.Data; @@ -27,11 +30,15 @@ */ public static final int TRADE_TYPE_LIMIT_PRICE = 2; + /** + * 订单状态 撤单 + */ + public static final int ORDER_STATUS_CANCEL = 2; /** - * 订单类型 撤单 + * 订单状态 成交 */ - public static final int ORDER_TYPE_CANCEL = -1; + public static final int ORDER_STATUS_SUCCESS = 1; /** * 订单类型 开多 @@ -75,11 +82,16 @@ private int tradeType; /** - * 订单类型 - 0撤单,1开多,2开空,3平多,4平空 + * 订单类型 - 1开多,2开空,3平多,4平空 */ private int orderType; /** + * 订单状态 - 1成交 2撤单 + */ + private int orderStatus = 1; + + /** * 委托开仓价 */ private BigDecimal entrustOpeningPrice; diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java index bd11e1e..a80d1ef 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java @@ -24,6 +24,7 @@ @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") diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java index 2367df6..b2ad5e4 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java @@ -22,5 +22,6 @@ public abstract HoldOrderListVo holdOrderToDto(ContractHoldOrderEntity holdOrderEntity); + @Mapping(target = "openingTime", source = "createTime") public abstract HoldOrderDetailVo holdOrderToOrderDetailVo(ContractHoldOrderEntity holdOrderEntity); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java index d77d2ab..b2e3ee2 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java +++ b/src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xcong.excoin.modules.contract.entity.ContractOrderEntity; +import com.xcong.excoin.modules.contract.parameter.vo.OrderDetailVo; import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -22,4 +23,6 @@ public abstract List<OrderListVo> orderEntitiesToOrderListVo(List<ContractOrderEntity> orderEntities); public abstract Page<OrderListVo> pageEntityToPageVo(IPage<ContractOrderEntity> orderEntityIPage); + + public abstract OrderDetailVo entityToDetailVo(ContractOrderEntity orderEntity); } diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java index 6a35286..d194891 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java @@ -24,4 +24,8 @@ @ApiModelProperty(value = "每页数量", example = "10") private int pageSize; + @NotNull + @ApiModelProperty(value = "币种", example = "BTC/USDT") + private String symbol; + } diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java index 12cc92c..7961ea2 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java @@ -59,4 +59,8 @@ @ApiModelProperty("止盈价") private BigDecimal stopProfitPrice; + + @ApiModelProperty("倍率杠杆") + private int leverRatio; + } diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java new file mode 100644 index 0000000..53db2fe --- /dev/null +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java @@ -0,0 +1,81 @@ +package com.xcong.excoin.modules.contract.parameter.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * @author wzy + * @date 2020-06-05 + **/ +@Data +@ApiModel(value = "OrderDetailVo", description = "历史委托订单详情接口返回参数类") +public class OrderDetailVo { + + @ApiModelProperty("交易类型 1-市价2-限价") + private int tradeType; + + @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空") + private int orderType; + + @ApiModelProperty("订单编号") + private String orderNo; + + @ApiModelProperty("委托开仓价") + private BigDecimal entrustOpeningPrice; + + @ApiModelProperty("委托时间") + private Date entrustTime; + + @ApiModelProperty("币种") + private String symbol; + + @ApiModelProperty("张数") + private int symbolCnt; + + @ApiModelProperty("平仓价") + private BigDecimal closingPrice; + + @ApiModelProperty("平仓手续费") + private BigDecimal closingFeeAmount; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("平仓时间") + private Date closingTime; + + @ApiModelProperty("平仓类型 2平多3平空4爆仓平多5爆仓平空6止盈平多7止盈平空8止损平多9止损平空") + private int closingType; + + @ApiModelProperty("止损价") + private BigDecimal stopLosePrice; + + @ApiModelProperty("止盈价") + private BigDecimal stopProfitPrice; + + @ApiModelProperty("盈亏金额") + private BigDecimal rewardAmount; + + @ApiModelProperty("盈亏比例") + private BigDecimal rewardRatio; + + @ApiModelProperty("开仓价") + private BigDecimal openingPrice; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @ApiModelProperty("开仓时间") + private Date openingTime; + + @ApiModelProperty("开仓手续费") + private BigDecimal openingFeeAmount; + + @ApiModelProperty("保证金") + private BigDecimal bondAmount; + + @ApiModelProperty("持仓费") + private BigDecimal holdAmount; + +} diff --git a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java index 573d040..8d99c52 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java +++ b/src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java @@ -16,9 +16,15 @@ @ApiModel(value = "OrderListVo", description = "历史委托订单接口返回参数类") public class OrderListVo { - @ApiModelProperty("订单类型 -1撤单,1开多,2开空,3平多,4平空") + @ApiModelProperty("订单ID") + private Long id; + + @ApiModelProperty("订单类型 1开多,2开空,3平多,4平空") private int orderType; + @ApiModelProperty("订单状态 1成交 2撤单") + private int orderStatus; + @ApiModelProperty("开仓均价") private BigDecimal openingPrice; 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 5498034..9294a72 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 @@ -40,4 +40,6 @@ public Result findOrderList(OrderListDto orderListDto); + public Result findOrderDetailById(Long id); + } 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 7bfdde4..40a9490 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 @@ -168,11 +168,11 @@ MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), MemberWalletCoinEnum.WALLETCOINCODE.getValue()); BigDecimal total = entrustOrderEntity.getEntrustAmount(); - memberWalletContractDao.increaseWalletContractBalanceById(total, null, total.negate(), walletContractEntity.getId()); + memberWalletContractDao.increaseWalletContractBalanceById(total, null, entrustOrderEntity.getBondAmount().negate(), walletContractEntity.getId()); 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()); 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 796710d..7a7014c 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 @@ -20,10 +20,7 @@ import com.xcong.excoin.modules.contract.mapper.ContractHoldOrderEntityMapper; import com.xcong.excoin.modules.contract.mapper.ContractOrderEntityMapper; import com.xcong.excoin.modules.contract.parameter.dto.*; -import com.xcong.excoin.modules.contract.parameter.vo.ContractMoneyInfoVo; -import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderDetailVo; -import com.xcong.excoin.modules.contract.parameter.vo.HoldOrderListVo; -import com.xcong.excoin.modules.contract.parameter.vo.OrderListVo; +import com.xcong.excoin.modules.contract.parameter.vo.*; import com.xcong.excoin.modules.contract.service.ContractHoldOrderService; import com.xcong.excoin.modules.member.dao.MemberLevelRateDao; import com.xcong.excoin.modules.member.dao.MemberWalletContractDao; @@ -342,11 +339,11 @@ if (stopProfitPrice != null) { if (newPrice.compareTo(openPrice) > 0) { if (stopProfitPrice.compareTo(openPrice) > 0) { - return Result.fail("止损价必须低于开仓价"); + return Result.fail("止盈价必须低于开仓价"); } } else { if (stopProfitPrice.compareTo(newPrice) > 0) { - return Result.fail("止损价必须低于当前价"); + return Result.fail("止盈价必须低于当前价"); } } } @@ -391,7 +388,6 @@ producer.sendPriceOperate(JSONObject.toJSONString(model)); return Result.ok("设置成功"); } - return Result.fail("设置失败"); } @@ -546,8 +542,23 @@ public Result findOrderList(OrderListDto orderListDto) { MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); Page<ContractOrderEntity> page = new Page<>(orderListDto.getPageNum(), orderListDto.getPageSize()); - IPage<ContractOrderEntity> list = contractOrderDao.selectContractOrderInPage(page, memberEntity.getId()); + ContractOrderEntity contractOrderEntity = new ContractOrderEntity(); + contractOrderEntity.setMemberId(memberEntity.getId()); + contractOrderEntity.setSymbol(orderListDto.getSymbol()); + IPage<ContractOrderEntity> list = contractOrderDao.selectContractOrderInPage(page, contractOrderEntity); Page<OrderListVo> result = ContractOrderEntityMapper.INSTANCE.pageEntityToPageVo(list); return Result.ok(result); } + + @Override + public Result findOrderDetailById(Long id) { + MemberEntity memberEntity = LoginUserUtils.getAppLoginUser(); + ContractOrderEntity contractOrderEntity = contractOrderDao.selectOrderDetailByIdAndMemberId(id, memberEntity.getId()); + if (contractOrderEntity == null) { + return Result.fail("订单不存在"); + } + + OrderDetailVo orderDetailVo = ContractOrderEntityMapper.INSTANCE.entityToDetailVo(contractOrderEntity); + return Result.ok(orderDetailVo); + } } 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 fdbcec5..f63eb5a 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 @@ -191,14 +191,15 @@ BigDecimal totalReturn = BigDecimal.ZERO; contractOrderService.save(contractOrderEntity); - contractEntrustOrderService.removeById(order.getId()); + contractHoldOrderService.removeById(order.getId()); // 将需要退回的减去手续费 BigDecimal needReturn = prePrice.add(profitLossPrice); //总退回金额=保证金+收益-手续费 totalReturn = needReturn.subtract(contractOrderEntity.getClosingFeeAmount()); // 总的是收益-平仓手续费 BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); - memberWalletContractService.increaseWalletContractBalanceById(totalBalance, totalReturn, null, wallet.getId()); + + memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); // 流水记录 TODO 531e insertAccountFlow(order, wallet, profitLossPrice, "止盈平仓"); @@ -287,8 +288,8 @@ // 更新钱包 // 总的是收益-平仓手续费 BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); - memberWalletContractService.increaseWalletContractBalanceById(totalBalance, totalReturn, null, wallet.getId()); + memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); insertAccountFlow(order, wallet, profitLossPrice, "止盈平仓"); @@ -369,6 +370,8 @@ contractOrderEntity.setClosingType(8); BigDecimal totalReturn = BigDecimal.ZERO; contractOrderService.save(contractOrderEntity); + + contractHoldOrderService.removeById(order.getId()); // 将需要退回的减去手续费 BigDecimal needReturn = prePrice.add(profitLossPrice); //总退回金额=保证金+收益-手续费 @@ -376,7 +379,8 @@ // 更新钱包 // 总的是收益-平仓手续费 BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); - memberWalletContractService.increaseWalletContractBalanceById(totalBalance, totalReturn, null, wallet.getId()); + + memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); insertAccountFlow(order, wallet, profitLossPrice, "开多止损平仓"); @@ -420,7 +424,7 @@ 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) { @@ -456,6 +460,9 @@ contractOrderEntity.setClosingType(9); BigDecimal totalReturn = BigDecimal.ZERO; contractOrderService.save(contractOrderEntity); + + contractHoldOrderService.removeById(order.getId()); + // 将需要退回的减去手续费 BigDecimal needReturn = prePrice.add(profitLossPrice); //总退回金额=保证金+收益-手续费 @@ -463,7 +470,7 @@ // 更新钱包 // 总的是收益-平仓手续费 BigDecimal totalBalance = profitLossPrice.subtract(contractOrderEntity.getClosingFeeAmount()); - memberWalletContractService.increaseWalletContractBalanceById(totalBalance, totalReturn, null, wallet.getId()); + memberWalletContractService.increaseWalletContractBalanceById(totalReturn, totalBalance, null, wallet.getId()); insertAccountFlow(order, wallet, profitLossPrice, "开空止损平仓"); @@ -547,6 +554,7 @@ contractOrderEntity.setEntrustOpeningPrice(coinsCoinsOrder.getEntrustPrice()); contractOrderEntity.setEntrustTime(coinsCoinsOrder.getCreateTime()); contractOrderEntity.setOpeningTime(new Date()); + contractOrderEntity.setId(null); contractOrderService.save(contractOrderEntity); // 发送爆仓的队列 diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java index ebba922..3e03322 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java @@ -135,7 +135,6 @@ // 计算盈利或亏损后可用金额和总金额应该增加或减少的 BigDecimal addMoney = holdOrderEntity.getBondAmount().subtract(holdOrderEntity.getOpeningFeeAmount()).add(profitOrLoss); - memberWalletContractDao.increaseWalletContractBalanceById(addMoney, profitOrLoss.subtract(contractOrderEntity.getOpeningFeeAmount()), null, walletContract.getId()); // 计算佣金 ThreadPoolUtils.calReturnMoney(memberEntity.getId(), contractOrderEntity.getClosingFeeAmount(), contractOrderEntity, AgentReturnEntity.ORDER_TYPE_CLOSE); diff --git a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java index 995d87e..a89f189 100644 --- a/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java @@ -827,8 +827,8 @@ //新增提币记录 MemberCoinWithdrawEntity memberCoinWithdrawEntity = new MemberCoinWithdrawEntity(); memberCoinWithdrawEntity.setAddress(memberSubmitCoinApplyDto.getAddress()); - memberCoinWithdrawEntity.setAmount(coinNumber.setScale(4, BigDecimal.ROUND_DOWN)); - memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount().setScale(4, BigDecimal.ROUND_DOWN)); + memberCoinWithdrawEntity.setAmount(coinNumber); + memberCoinWithdrawEntity.setFeeAmount(memberSubmitCoinApplyDto.getFeeAmount()); memberCoinWithdrawEntity.setSymbol(memberSubmitCoinApplyDto.getSymbol()); memberCoinWithdrawEntity.setMemberId(memberId); memberCoinWithdrawEntity.setStatus(MemberCoinWithdrawEntity.STATUS_DOING); @@ -844,9 +844,9 @@ } memberCoinWithdrawDao.insert(memberCoinWithdrawEntity); BigDecimal subtract = walletCoin.getAvailableBalance().subtract(coinNumber); - walletCoin.setAvailableBalance(subtract.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setAvailableBalance(subtract); BigDecimal add = walletCoin.getFrozenBalance().add(coinNumber); - walletCoin.setFrozenBalance(add.setScale(4, BigDecimal.ROUND_DOWN)); + walletCoin.setFrozenBalance(add); memberWalletCoinDao.updateById(walletCoin); MemberAccountMoneyChange accountRecord = new MemberAccountMoneyChange(); diff --git a/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java b/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java index 6f87c46..96dc366 100644 --- a/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java +++ b/src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java @@ -58,9 +58,6 @@ String code = jsonObject.getString("code"); if ("200".equals(code)) { JSONObject jsonData = (JSONObject) jsonObject.get("data"); - log.info("{}", jsonData); - log.info("{}", jsonData.getDouble("price")); - log.info("{}", jsonData.getString("price")); cnyUsdtExchangeDao.updateUsdt(BigDecimal.valueOf(jsonData.getDouble("price"))); } } catch (Exception e) { diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 98f6ea1..5b5008b 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -94,9 +94,9 @@ debug: true redis_expire: 3000 kline-update-job: false - newest-price-update-job: false - other-job: false - rabbit-consumer: false + newest-price-update-job: true + other-job: true + rabbit-consumer: true aliyun: oss: diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index b28cd2d..cf1a6f1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -96,10 +96,10 @@ # k线更新任务控制 kline-update-job: false #最新价任务控制 - newest-price-update-job: true + newest-price-update-job: false #其他任务控制 other-job: false - rabbit-consumer: true + rabbit-consumer: false aliyun: oss: diff --git a/src/main/resources/mapper/contract/ContractOrderDao.xml b/src/main/resources/mapper/contract/ContractOrderDao.xml index d98a8d3..fc31d0e 100644 --- a/src/main/resources/mapper/contract/ContractOrderDao.xml +++ b/src/main/resources/mapper/contract/ContractOrderDao.xml @@ -4,8 +4,22 @@ <select id="selectContractOrderInPage" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity"> - select * from contract_order where member_id=#{memberId} + select * from contract_order + <if test="record != null"> + <where> + <if test="record.memberId != null" > + and member_id=#{record.memberId} + </if> + <if test="record.symbol != null and record.symbol != ''"> + and symbol = #{record.symbol} + </if> + </where> + </if> order by create_time desc </select> + <select id="selectOrderDetailByIdAndMemberId" resultType="com.xcong.excoin.modules.contract.entity.ContractOrderEntity"> + select * from contract_order where id=#{id} and member_id=#{memberId} + </select> + </mapper> \ No newline at end of file diff --git a/src/test/java/com/xcong/excoin/RabbitMqTest.java b/src/test/java/com/xcong/excoin/RabbitMqTest.java index 82b668b..32f820e 100644 --- a/src/test/java/com/xcong/excoin/RabbitMqTest.java +++ b/src/test/java/com/xcong/excoin/RabbitMqTest.java @@ -1,5 +1,6 @@ package com.xcong.excoin; +import com.xcong.excoin.rabbit.pricequeue.WebsocketPriceService; import com.xcong.excoin.rabbit.producer.TestProducer; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -16,9 +17,17 @@ @Autowired private TestProducer testProducer; + @Resource + private WebsocketPriceService websocketPriceService; @Test public void sendTestMsg() { testProducer.sendTestMsg("this is test msg"); } + + @Test + public void bombTest() { + + websocketPriceService.comparePriceDesc("BTC/USDT", "9608"); + } } -- Gitblit v1.9.1