|  |  | 
 |  |  | import com.xcong.excoin.modules.member.entity.MemberEntity; | 
 |  |  | import com.xcong.excoin.modules.member.entity.MemberWalletContractEntity; | 
 |  |  | import com.xcong.excoin.rabbit.pricequeue.OrderModel; | 
 |  |  | import com.xcong.excoin.rabbit.pricequeue.OrderOperatePriceService; | 
 |  |  | import com.xcong.excoin.rabbit.pricequeue.WebsocketPriceService; | 
 |  |  | import com.xcong.excoin.rabbit.producer.OrderProducer; | 
 |  |  | import com.xcong.excoin.utils.CalculateUtil; | 
 |  |  | import com.xcong.excoin.utils.CoinTypeConvert; | 
 |  |  | import com.xcong.excoin.utils.RedisUtils; | 
 |  |  | import com.xcong.excoin.utils.ThreadPoolUtils; | 
 |  |  | import lombok.SneakyThrows; | 
 |  |  | import org.junit.jupiter.api.Test; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.boot.test.context.SpringBootTest; | 
 |  |  | 
 |  |  | import java.util.HashMap; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Map; | 
 |  |  | import java.util.concurrent.ConcurrentHashMap; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @author wzy | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private OrderProducer orderProducer; | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void sendMsg() { | 
 |  |  |         List<OrderModel> list = new ArrayList<>(); | 
 |  |  |         OrderModel orderModel = new OrderModel(1L, RabbitPriceTypeEnum.ENTRUST_OPEN_MORE.getValue(), "111", "BTC"); | 
 |  |  |         list.add(orderModel); | 
 |  |  |         orderProducer.sendLimitClose(JSONObject.toJSONString(list)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     // 面值*(多单张数*多单开仓价-空单张数*空单开仓价)-余额-已实现盈亏 / 面值*(多单张数-空单张数)-(维持保证金率+TAKER手续费)*面值*(开多张数+开空张数) | 
 |  |  |  | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Test | 
 |  |  |     public void forceSetPriceTest() { | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(5L); | 
 |  |  |         CalculateUtil.getForceSetPriceForWhole("BTC/USDT", memberEntity); | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(15L); | 
 |  |  |         System.out.println(CalculateUtil.getForceSetPriceForWhole("BTC/USDT", memberEntity)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void initOrderTest() { | 
 |  |  |         List<HashMap<String, Object>> wholeHoldOrders = contractHoldOrderDao.selectAllWholeOrderMemberIdAndSymbol(); | 
 |  |  |         if (CollUtil.isNotEmpty(wholeHoldOrders)) { | 
 |  |  |             MemberEntity memberEntity = null; | 
 |  |  |             for (HashMap<String, Object> wholeHoldOrder : wholeHoldOrders) { | 
 |  |  |                 Long memberId = (Long) wholeHoldOrder.get("member_id"); | 
 |  |  |                 String symbol = (String) wholeHoldOrder.get("symbol"); | 
 |  |  |                 if (memberEntity == null || !memberId.equals(memberEntity.getId())) { | 
 |  |  |                     memberEntity = memberDao.selectById(memberId); | 
 |  |  |                 } | 
 |  |  |                 System.out.println(memberId + "-----" + symbol); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     public void profitOrLessTest() { | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(15L); | 
 |  |  |         ContractHoldOrderEntity contractHoldOrderEntity = contractHoldOrderDao.selectById(144L); | 
 |  |  |         System.out.println(CalculateUtil.calProfitOrLoss(contractHoldOrderEntity, memberEntity)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void redisTest() { | 
 |  |  |         for (int i = 827; i < 999; i++) { | 
 |  |  |             redisUtils.del(AppContants.CLOSING_ORDER_PREFIX + i); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Resource | 
 |  |  |     private WebsocketPriceService websocketPriceService; | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void wholeBombTest() { | 
 |  |  |         websocketPriceService.wholeBomb("BTC/USDT", "9000"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void forceTest() { | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(5L); | 
 |  |  |         CalculateUtil.getForceSetPriceForWhole(null, memberEntity); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static void main(String[] args) { | 
 |  |  |         Map<String, String> map = new ConcurrentHashMap<>(); | 
 |  |  |         map.put("1", "1"); | 
 |  |  |         map.put("2", "2"); | 
 |  |  |         map.put("3", "3"); | 
 |  |  |         map.put("4", "4"); | 
 |  |  |         map.put("5", "5"); | 
 |  |  |  | 
 |  |  |         new Thread(new Runnable() { | 
 |  |  |             @SneakyThrows | 
 |  |  |             @Override | 
 |  |  |             public void run() { | 
 |  |  |                 for (Map.Entry<String, String> entry : map.entrySet()) { | 
 |  |  |                     System.out.println(entry.getKey() + " - " + entry.getValue()); | 
 |  |  |                     if (entry.getKey().equals("3")) { | 
 |  |  |                         System.out.println(11); | 
 |  |  |                         map.remove("3"); | 
 |  |  |                     } | 
 |  |  |                     Thread.sleep(1000); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |                 System.out.println(map.get("3")); | 
 |  |  |             } | 
 |  |  |         }).start(); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void mapTest() { | 
 |  |  | //        websocketPriceService.wholeBomb(); | 
 |  |  |         OrderOperatePriceService.wholePriceDataOperation(63L); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void wholeForceTest() { | 
 |  |  |         // 8301.38608660 | 
 |  |  | //        System.out.println(new BigDecimal("9925.29996175").subtract(new BigDecimal("1623.91387515"))); | 
 |  |  |  | 
 |  |  |         BigDecimal aa = new BigDecimal("9925.29996175").subtract(new BigDecimal("8301.38608660").negate()).subtract(new BigDecimal("1623.91387515")).subtract(new BigDecimal("0.1").multiply(new BigDecimal(50)).multiply(new BigDecimal("32478.27750300"))); | 
 |  |  |         BigDecimal bb = new BigDecimal(50).multiply(new BigDecimal("0.1")); | 
 |  |  |         BigDecimal divide = aa.divide(bb, 8, BigDecimal.ROUND_DOWN); | 
 |  |  |         System.out.println(divide); | 
 |  |  |         // -(账户权益-委托保证金-全仓维持保证金-全仓未实现盈利-数量*面值*开仓价格)/(数量*面值) | 
 |  |  |         // 30818.00028568 -- | 
 |  |  |         // 29157.72306836 -- | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void wholeForceNewTest() { | 
 |  |  |         BigDecimal newPrice = new BigDecimal(redisUtils.getString(CoinTypeConvert.convertToKey("BTC/USDT"))); | 
 |  |  |  | 
 |  |  |         MemberEntity memberEntity = memberDao.selectById(19L); | 
 |  |  |         ContractHoldOrderEntity holdOrder = contractHoldOrderDao.selectById(932L); | 
 |  |  |  | 
 |  |  |         System.out.println(CalculateUtil.calWholePriceTwo(memberEntity, holdOrder, 2)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Test | 
 |  |  |     public void wholeForceNewTest2() { | 
 |  |  |         BigDecimal holdBond = new BigDecimal("1161.8951"); | 
 |  |  |  | 
 |  |  |         BigDecimal sku = new BigDecimal("0.1"); | 
 |  |  |         BigDecimal openPrice = new BigDecimal("58094.75"); | 
 |  |  |         int cnt = 50; | 
 |  |  |         BigDecimal total = new BigDecimal("9866.3820"); | 
 |  |  |         // 成本 数量*面值*开仓价 | 
 |  |  |         BigDecimal cost = sku.multiply(openPrice).multiply(new BigDecimal(cnt)); | 
 |  |  |         // 费率 | 
 |  |  |         BigDecimal ratio = openPrice.multiply(new BigDecimal("0.005")); | 
 |  |  |         // 总账户 - 维持保证金 | 
 |  |  |         BigDecimal orderProfitOrLoss = total.subtract(holdBond); | 
 |  |  |         // 权益 | 
 |  |  |         BigDecimal qy = BigDecimal.ZERO; | 
 |  |  |  | 
 |  |  |         BigDecimal prefix = cost.subtract(ratio); | 
 |  |  |         BigDecimal divideChild; | 
 |  |  | //        if (ContractHoldOrderEntity.OPENING_TYPE_MORE == contractHoldOrderEntity.getOpeningType()) { | 
 |  |  |             divideChild = prefix.subtract(orderProfitOrLoss).subtract(qy); | 
 |  |  | //        } else { | 
 |  |  | //            divideChild = prefix.add(orderProfitOrLoss).add(qy); | 
 |  |  | //        } | 
 |  |  | //            BigDecimal divideChild = walletContract.getTotalBalance().add(totalProfitOrLoss).subtract(holdBond).subtract(cost).add(newPrice.multiply(new BigDecimal("0.005"))); | 
 |  |  |         BigDecimal divideParent = sku.multiply(new BigDecimal(cnt)); | 
 |  |  |  | 
 |  |  |         System.out.println(divideChild.divide(divideParent, 8, BigDecimal.ROUND_DOWN)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |