gao
2020-06-05 01aa2cc5c8fafd89ff763bfb0016c4983ff79648
Merge branch 'master' of https://chonggaoxiao:xcg523511090712@gitee.com/chonggaoxiao/new_excoin.git
1 files added
24 files modified
406 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/coin/controller/OrderCoinController.java 10 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/CoinServiceImpl.java 42 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/coin/service/impl/OrderCoinServiceImpl.java 117 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/controller/ContractOrderController.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/dao/ContractOrderDao.java 7 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/entity/ContractOrderEntity.java 18 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractEntrustOrderEntityMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractHoldOrderEntityMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/mapper/ContractOrderEntityMapper.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/parameter/dto/OrderListDto.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java 81 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderListVo.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/ContractHoldOrderService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractEntrustOrderServiceImpl.java 4 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java 27 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/OrderWebsocketServiceImpl.java 20 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/contract/service/impl/RabbitOrderServiceImpl.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/member/service/impl/MemberServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/quartz/job/UsdtCnyExchangePriceUpdateJob.java 3 ●●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 6 ●●●● patch | view | raw | blame | history
src/main/resources/application.yml 4 ●●●● patch | view | raw | blame | history
src/main/resources/mapper/contract/ContractOrderDao.xml 16 ●●●●● patch | view | raw | blame | history
src/test/java/com/xcong/excoin/RabbitMqTest.java 9 ●●●●● patch | view | raw | blame | history
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();
    }
}
src/main/java/com/xcong/excoin/modules/coin/service/OrderCoinService.java
@@ -29,4 +29,6 @@
    public Result findCollectList();
    public Result searchSymbolResultList();
}
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);
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);
    }
}
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);
    }
}
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);
}
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;
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")
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);
}
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);
}
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;
}
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/HoldOrderDetailVo.java
@@ -59,4 +59,8 @@
    @ApiModelProperty("止盈价")
    private BigDecimal stopProfitPrice;
    @ApiModelProperty("倍率杠杆")
    private int leverRatio;
}
src/main/java/com/xcong/excoin/modules/contract/parameter/vo/OrderDetailVo.java
New file
@@ -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;
}
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;
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);
}
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());
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);
    }
}
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);
                // 发送爆仓的队列
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);
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();
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) {
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:
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:
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>
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");
    }
}