From 3ce36ef27a225cb00b0381c777fd38b0bc74e757 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 21 Oct 2024 21:36:56 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |   27 +++++++++++++++------------
 1 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 30b2ff5..9b143eb 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -331,7 +331,7 @@
     @Transactional
     public ServerResponse sell(String positionSn, int doType, Integer number,HttpServletRequest request) {
         UserPosition userPosition = this.userPositionMapper.findPositionBySn(positionSn);
-        if(number <= 0 || number > userPosition.getOrderNum()){
+        if(null == number || number <= 0 || number > userPosition.getOrderNum()){
             return ServerResponse.createByErrorMsg("请输入正确的平仓数", request);
         }
         // 手续费率
@@ -627,17 +627,17 @@
         List<UserPositionVO> userPositionVOS = Lists.newArrayList();
         if (userPositions.size() > 0) {
             for (UserPosition position : userPositions) {
-                Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",position.getStockCode()));
                 BigDecimal nowPrice = BigDecimal.ZERO;
-                if(null != stock){
-                    StockRealTimeBean stockRealTimeBean =  RedisKeyUtil.getCacheRealTimeStock(stock);
-                    nowPrice = new BigDecimal(stockRealTimeBean.getPcp());
+                if(state == 0){
+                    nowPrice = priceServices.getNowPrice(position.getStockCode());
+                }else{
+                    nowPrice = position.getSellOrderPrice();
                 }
-//                if(state == 1){
-//                    nowPrice = position.getSellOrderPrice();
-//                }else{
-//                    nowPrice = priceServices.getNowPrice(position.getStockCode());
-//                }
+////                if(state == 1){
+////                    nowPrice = position.getSellOrderPrice();
+////                }else{
+////                    nowPrice = priceServices.getNowPrice(position.getStockCode());
+////                }
                 UserPositionVO userPositionVO = UserPointUtil.assembleUserPositionVO(position,nowPrice);
                 userPositionVO.setOrderTotalPrice(userPositionVO.getOrderTotalPrice().multiply(new BigDecimal(userPositionVO.getOrderLever())));
 
@@ -1701,10 +1701,14 @@
         if (stockDz.getStockNum() > num) {
             return ServerResponse.createByErrorMsg("最小购买数据" + stockDz.getStockNum(), request);
         }
+
+        BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.BUY_HANDLING_CHARGE.getCode()).getCValue()) ;
+
         BigDecimal buyAmt = nowPrice.multiply(new BigDecimal(num.intValue()));
+        BigDecimal orderFree = siteSettingBuyFee.multiply(buyAmt);
         BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
         BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
-        if (buyAmt.compareTo(availableBalance) > 0) {
+        if (availableBalance.compareTo(buyAmt.add(orderFree)) < 0) {
             return ServerResponse.createByErrorMsg("订单失败,配资不足", request);
         }
 
@@ -1720,7 +1724,6 @@
         // 创建UserPosition对象
         UserPosition userPosition = getUserPosition(dzId,num, user, stockDz, nowPrice, stock, buyAmt);
         userPositionMapper.insert(userPosition);
-        BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.BUY_HANDLING_CHARGE.getCode()).getCValue()) ;
         BigDecimal buy_fee_amt = siteSettingBuyFee.multiply(buyAmt);
         userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
         iUserAssetsServices.availablebalanceChange("IN", userAssets.getUserId(), EUserAssets.HANDLING_CHARGE, buy_fee_amt, "", "");

--
Gitblit v1.9.3