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.CalculateUtil; 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; @Test public void symbolsTest() { symbolsService.updateSymbolsKine("1min"); } @Test public void moneyTest() { MemberEntity memberEntity = memberDao.selectById(11L); PlatformTradeSettingEntity tradeSetting = cacheSettingUtils.getTradeSetting(); List 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); } @Test public void forceTest() { ContractHoldOrderEntity hold = contractHoldOrderDao.selectById(28284L); MemberEntity memberEntity = memberDao.selectById(6L); BigDecimal forceSetPrice = CalculateUtil.getForceSetPrice(hold.getBondAmount(), hold.getOpeningPrice(), hold.getSymbolCnt(), hold.getSymbolSku(), hold.getOpeningType(), memberEntity); System.out.println(forceSetPrice); } }