From b6c17624a50c6fe44049e63a1854822838a1675a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 04 Nov 2025 17:16:20 +0800
Subject: [PATCH] 1

---
 src/main/resources/application.properties                          |    2 
 src/main/java/com/nq/ws/WebsocketRunClient.java                    |    2 +
 src/main/java/com/nq/controller/protol/UserController.java         |   17 ++++++++
 src/main/java/com/nq/pojo/StockRealTimeBean.java                   |    1 
 src/main/java/com/nq/service/impl/PriceServicesImpl.java           |   36 +++++++++---------
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java     |    4 +
 src/main/java/com/nq/service/UserPendingorderService.java          |    2 +
 src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java |   35 +++++++++++++++++
 8 files changed, 78 insertions(+), 21 deletions(-)

diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index 4bd5c42..f91a9a4 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -213,6 +213,23 @@
         }
         return serverResponse;
     }
+
+    //挂单操作-撤销
+    @RequestMapping({"revocationOrder.do"})
+    @ResponseBody
+    public ServerResponse revocationOrder(HttpServletRequest request,@RequestParam("id") Integer id) {
+        ServerResponse serverResponse = null;
+        try {
+            serverResponse = this.userPendingorderService.cancelPendingOrder(request,id);
+        } catch (Exception e) {
+            log.error("挂单操作-撤销 = {}", e);
+        }
+        return serverResponse;
+    }
+
+
+
+
     //挂单操作-删除
     @RequestMapping({"delOrder.do"})
     @ResponseBody
diff --git a/src/main/java/com/nq/pojo/StockRealTimeBean.java b/src/main/java/com/nq/pojo/StockRealTimeBean.java
index b35dd77..a9ab912 100644
--- a/src/main/java/com/nq/pojo/StockRealTimeBean.java
+++ b/src/main/java/com/nq/pojo/StockRealTimeBean.java
@@ -25,5 +25,6 @@
     private String turnover_numeric;
     private String time;
     private String timestamp;
+    private String Open;
 
 }
diff --git a/src/main/java/com/nq/service/UserPendingorderService.java b/src/main/java/com/nq/service/UserPendingorderService.java
index aa95da8..a55db1b 100644
--- a/src/main/java/com/nq/service/UserPendingorderService.java
+++ b/src/main/java/com/nq/service/UserPendingorderService.java
@@ -33,4 +33,6 @@
     ServerResponse addOrderByAdmin(String phone, String buyNum,String code, String buyType, String lever, String targetPrice, HttpServletRequest request);
 
     ServerResponse delOrderByAdmin(Integer id);
+
+    ServerResponse cancelPendingOrder(HttpServletRequest request, Integer id);
 }
diff --git a/src/main/java/com/nq/service/impl/PriceServicesImpl.java b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
index 1875994..5e44668 100644
--- a/src/main/java/com/nq/service/impl/PriceServicesImpl.java
+++ b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
@@ -63,24 +63,24 @@
         if(null == stock){
             return BigDecimal.ZERO;
         }
-        StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode));
-        if(stockSetting != null){
-            Date newDate = new Date();
-            DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime());
-            DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime());
-            if(newDate.after(startTime) && newDate.before(endTime)){
-//            if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){
-                if(stockSetting.getType().equals("0")){
-                    return  new BigDecimal(stockSetting.getPrice());
-                }else{
-                    String s = doPost(stock.getStockCode());
-                    if(null != s){
-                        Map<String, Object> stringObjectMap = jsonToMap(s);
-                        return   new BigDecimal(stringObjectMap.get("Last").toString()).multiply(new BigDecimal(stockSetting.getPrice()));
-                    }
-                }
-            }
-        }
+//        StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode));
+//        if(stockSetting != null){
+//            Date newDate = new Date();
+//            DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime());
+//            DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime());
+//            if(newDate.after(startTime) && newDate.before(endTime)){
+////            if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){
+//                if(stockSetting.getType().equals("0")){
+//                    return  new BigDecimal(stockSetting.getPrice());
+//                }else{
+//                    String s = doPost(stock.getStockCode());
+//                    if(null != s){
+//                        Map<String, Object> stringObjectMap = jsonToMap(s);
+//                        return   new BigDecimal(stringObjectMap.get("Last").toString()).multiply(new BigDecimal(stockSetting.getPrice()));
+//                    }
+//                }
+//            }
+//        }
 
         String s = doPost(stock.getStockCode());
         if(null != s) {
diff --git a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
index c26b761..d186c53 100644
--- a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
@@ -5,6 +5,7 @@
 import java.util.Date;
 import java.util.List;
 
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -143,7 +144,7 @@
                     if (nowPrice == null) {
                         nowPrice = String.valueOf(0);
                     }
-                    userPendingorderVO.setNowPrice(new BigDecimal(nowPrice));
+                    userPendingorderVO.setNowPrice(userPendingorder.getTargetPrice());
 //                    userPendingorderVO.setStockName(stock.getStockName());
                     userPendingorderVO.setStockName(stock.getStockSpell());
                     userPendingorderVO.setStockId(stock.getStockCode());
@@ -350,6 +351,38 @@
         log.info("===========删除挂单任务结束==========");
     }
 
+    public ServerResponse cancelPendingOrder(HttpServletRequest request, Integer id){
+        log.info("===========撤销挂单==========");
+        UserPendingorder userPendingorder = this.userPendingorderMapper.selectById(id);
+        if(ObjectUtil.isEmpty(userPendingorder)){
+            return ServerResponse.createByErrorMsg("订单不存在!",request);
+        }else if(userPendingorder.getStatus() == 2){
+            return ServerResponse.createByErrorMsg("订单已撤销,请勿重复操作!",request);
+        }
+        //修改状态
+        userPendingorder.setStatus(2);
+        userPendingorderMapper.updateById(userPendingorder);
+        //退款
+        QueryWrapper<UserAssets>  queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("accect_type","US");
+        queryWrapper.eq("user_id",userPendingorder.getUserId());
+        UserAssets userAssets =  userAssetsMapper.selectOne(queryWrapper);
+        String before = userAssets.getAvailableBalance().toString();
+        userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userPendingorder.getBuyAmt()));
+        userAssetsMapper.updateById(userAssets);
+        MoneyLog moneyLog = new MoneyLog();
+        moneyLog.setDescs(EUserAssets.BUY_REFUND.getDesc());
+        moneyLog.setBeFore(before);
+        moneyLog.setAfter(userAssets.getAvailableBalance().toString());
+        moneyLog.setAmount(userAssets.getAvailableBalance().toString());
+        moneyLog.setAccectType("US");
+        moneyLog.setType(EUserAssets.BUY_REFUND.getCode());
+        moneyLog.setUserId(userPendingorder.getUserId()+"");
+        moneyLog.setSymbol(EStockType.getEStockTypeByCode("US").getSymbol());
+        moneyLog.setCreateTime(new Date());
+        moneyLogMapper.insert(moneyLog);
+        return ServerResponse.createBySuccess("撤销成功!",request);
+    }
 
     @Override
     public ServerResponse orderListByAdmin(int pageNum, int pageSize, String keywords, String status, HttpServletRequest request) {
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index cd9d0dc..2a4aab1 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -222,8 +222,10 @@
                 userPendingorder.setTargetPrice(preMarketPrice);
                 userPendingorder.setAddTime(new Date());
                 userPendingorder.setStatus(0);
-                userPendingorder.setBuyAmt(preMarketPrice.multiply(new BigDecimal(buyNum)).setScale(2, RoundingMode.HALF_UP));
+                userPendingorder.setBuyAmt(preMarketPrice.multiply(new BigDecimal(buyNum)).divide(new BigDecimal(lever)));
                 int ret = userPendingorderMapper.insert(userPendingorder);
+                buyAmt = userPendingorder.getBuyAmt();
+                orderFree = siteSettingBuyFee.multiply(buyAmt);
             }else {
                 userPosition.setPositionType(user.getAccountType());
                 userPosition.setPositionSn(KeyUtils.getUniqueKey());
diff --git a/src/main/java/com/nq/ws/WebsocketRunClient.java b/src/main/java/com/nq/ws/WebsocketRunClient.java
index e5c7ba8..10b0e44 100644
--- a/src/main/java/com/nq/ws/WebsocketRunClient.java
+++ b/src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -71,6 +71,8 @@
                 stockRealTimeBean.setPc(stringObjectMap.get("Chg"));
                 stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct") + "%");
                 stockRealTimeBean.setTime(stringObjectMap.get("Time"));
+                stockRealTimeBean.setOpen(stringObjectMap.get("Open"));
+                stockRealTimeBean.setPrevClose(stringObjectMap.get("PrevClose"));
 
                 RedisKeyUtil.setCacheRealTimeStock(EStockType.US, stockRealTimeBean);
 
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index a3e4ad3..5e1f791 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -17,7 +17,7 @@
 ftp.user=ftp_stock
 ftp.pass=123456
 ftp.address =/www/wwwroot/ftp_stock/
-ftp.server.http.prefix=https://img.yanshiz.com/
+ftp.server.http.prefix=https://img.isusstcok.com/
 
 redis1.ip=localhost
 #redis1.port=6380

--
Gitblit v1.9.3