| | |
| | | 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.rabbit.pricequeue.whole.HoldOrderDataModel; |
| | | import com.xcong.excoin.rabbit.pricequeue.whole.WholeDataQueue; |
| | | import com.xcong.excoin.rabbit.pricequeue.whole.WholePriceDataModel; |
| | |
| | | private MemberDao memberDao; |
| | | @Resource |
| | | private MemberWalletContractDao memberWalletContractDao; |
| | | |
| | | @Resource |
| | | private CacheSettingUtils cacheSettingUtils; |
| | | /** |
| | | * @param symbol |
| | | * @param price |
| | |
| | | |
| | | if (CollUtil.isNotEmpty(list)) { |
| | | BigDecimal totalProfitOrLoss = BigDecimal.ZERO; |
| | | |
| | | MemberEntity memberEntity = memberDao.selectById(Long.parseLong(entry.getKey())); |
| | | Map<String, BigDecimal> prices = new HashMap<>(); |
| | | for (HoldOrderDataModel holdOrderData : list) { |
| | | String price = redisUtils.getString(CoinTypeConvert.convertToKey(holdOrderData.getSymbol())); |
| | |
| | | // (开仓价-最新价)*规格*张数 |
| | | rewardRatio = holdOrderData.getOpeningPrice().subtract(newPrice).multiply(holdOrderData.getSymbolSku()).multiply(new BigDecimal(holdOrderData.getSymbolCntSale())); |
| | | } |
| | | |
| | | if (memberEntity.getIsProfit() == MemberEntity.IS_PROFIT_Y) { |
| | | PlatformTradeSettingEntity tradeSettingEntity = cacheSettingUtils.getTradeSetting(); |
| | | if (rewardRatio.compareTo(BigDecimal.ZERO) > -1) { |
| | | rewardRatio = rewardRatio.multiply(BigDecimal.ONE.subtract(tradeSettingEntity.getProfitParam())); |
| | | } else { |
| | | // rewardRatio = rewardRatio.multiply(BigDecimal.ONE.add(tradeSettingEntity.getProfitParam())); |
| | | } |
| | | } |
| | | |
| | | holdOrderData.setRewardAmount(rewardRatio); |
| | | holdOrderData.setClosingPrice(newPrice); |
| | | totalProfitOrLoss = totalProfitOrLoss.add(rewardRatio).setScale(8, BigDecimal.ROUND_DOWN); |