zainali5120
2020-07-16 c119feb821bdb1e6ef407f55056173f752c01c32
src/test/java/com/xcong/excoin/SymbolsTest.java
@@ -1,17 +1,69 @@
package com.xcong.excoin;
import cn.hutool.core.collection.CollUtil;
import com.xcong.excoin.common.LoginUserUtils;
import com.xcong.excoin.common.enumerates.CoinTypeEnum;
import com.xcong.excoin.common.system.service.CommonService;
import com.xcong.excoin.modules.contract.dao.ContractEntrustOrderDao;
import com.xcong.excoin.modules.contract.dao.ContractHoldOrderDao;
import com.xcong.excoin.modules.contract.dao.ContractOrderDao;
import com.xcong.excoin.modules.contract.entity.ContractHoldOrderEntity;
import com.xcong.excoin.modules.member.dao.MemberDao;
import com.xcong.excoin.modules.member.dao.MemberLevelRateDao;
import com.xcong.excoin.modules.member.dao.MemberWalletContractDao;
import com.xcong.excoin.modules.member.entity.MemberEntity;
import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity;
import com.xcong.excoin.modules.platform.entity.PlatformTradeSettingEntity;
import com.xcong.excoin.modules.symbols.service.SymbolsService;
import com.xcong.excoin.rabbit.producer.OrderProducer;
import com.xcong.excoin.utils.CacheSettingUtils;
import com.xcong.excoin.utils.CoinTypeConvert;
import com.xcong.excoin.utils.RedisUtils;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
/**
 * @author wzy
 * @date 2020-05-26
 **/
@Slf4j
@SpringBootTest
public class SymbolsTest {
    @Resource
    private ContractHoldOrderDao contractHoldOrderDao;
    @Resource
    private ContractOrderDao contractOrderDao;
    @Resource
    private ContractEntrustOrderDao contractEntrustOrderDao;
    @Resource
    private CommonService commonService;
    @Resource
    private MemberWalletContractDao memberWalletContractDao;
    @Resource
    private MemberLevelRateDao memberLevelRateDao;
    @Resource
    private CacheSettingUtils cacheSettingUtils;
    @Resource
    private RedisUtils redisUtils;
    @Resource
    private OrderProducer producer;
    @Resource
    private MemberDao memberDao;
    @Resource
    private SymbolsService symbolsService;
@@ -20,4 +72,49 @@
    public void symbolsTest() {
        symbolsService.updateSymbolsKine("1min");
    }
    @Test
    public void moneyTest() {
        MemberEntity memberEntity = memberDao.selectById(11L);
        PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting();
        List<ContractHoldOrderEntity> holdOrderEntities = contractHoldOrderDao.selectHoldOrderListByMemberId(memberEntity.getId());
        BigDecimal beUsedBondAmount = BigDecimal.ZERO;
        // 总盈利
        BigDecimal totalProfitOrLess = BigDecimal.ZERO;
        if (CollUtil.isNotEmpty(holdOrderEntities)) {
            for (ContractHoldOrderEntity holdOrderEntity : holdOrderEntities) {
                // 获取最新价
                BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderEntity.getSymbol())));
                BigDecimal lotNumber = cacheSettingUtils.getSymbolSku(holdOrderEntity.getSymbol());
                beUsedBondAmount = beUsedBondAmount.add(holdOrderEntity.getBondAmount());
                // 单个订单盈利
                BigDecimal profitOrLess = BigDecimal.ZERO;
                // 开多
                if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) {
                    profitOrLess = newPrice.subtract(holdOrderEntity.getOpeningPrice()).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber);
                    // 开空
                } else {
                    profitOrLess = holdOrderEntity.getOpeningPrice().subtract(newPrice).multiply(new BigDecimal(holdOrderEntity.getSymbolCnt())).multiply(lotNumber);
                }
                if (MemberEntity.IS_PROFIT_Y == memberEntity.getIsProfit()) {
                    if (profitOrLess.compareTo(BigDecimal.ZERO) > 0) {
                        profitOrLess = profitOrLess.multiply(BigDecimal.ONE.subtract(tradeSetting.getForceParam()));
                    } else {
                        profitOrLess = profitOrLess.multiply(BigDecimal.ONE.add(tradeSetting.getForceParam()));
                    }
                }
                totalProfitOrLess = totalProfitOrLess.add(profitOrLess);
            }
        }
        MemberWalletContractEntity walletContractEntity = memberWalletContractDao.findWalletContractByMemberIdAndSymbol(memberEntity.getId(), CoinTypeEnum.USDT.name());
        log.info("--->{}", walletContractEntity.getTotalBalance());
        log.info("----->{}", totalProfitOrLess);
    }
}