From 4bb0b890438349a7cfd7ab2dc30999346a5acf58 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 30 Apr 2025 01:18:10 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/controller/backend/AdminPositionController.java |   70 ++++++++++++++++++++++++++++++++++-
 1 files changed, 68 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/nq/controller/backend/AdminPositionController.java b/src/main/java/com/nq/controller/backend/AdminPositionController.java
index 0def22b..248ffc3 100644
--- a/src/main/java/com/nq/controller/backend/AdminPositionController.java
+++ b/src/main/java/com/nq/controller/backend/AdminPositionController.java
@@ -1,12 +1,23 @@
 package com.nq.controller.backend;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.nq.common.ServerResponse;
 
+import com.nq.dao.UserPositionMapper;
+import com.nq.enums.EConfigKey;
+import com.nq.enums.EUserAssets;
+import com.nq.pojo.UserAssets;
+import com.nq.pojo.UserPosition;
+import com.nq.service.IStockConfigServices;
 import com.nq.service.IUserPositionService;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.nq.service.impl.UserAssetsServices;
+import com.nq.utils.UserPointUtil;
+import com.nq.utils.stock.GeneratePosition;
+import com.nq.vo.position.PositionProfitVO;
 import org.slf4j.Logger;
 
 import org.slf4j.LoggerFactory;
@@ -22,6 +33,8 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
 
 
 @Controller
@@ -32,13 +45,23 @@
     @Autowired
     IUserPositionService iUserPositionService;
 
+    @Autowired
+    UserPositionMapper userPositionMapper;
+
+    @Autowired
+    IStockConfigServices iStockConfigServices;
+
+    @Autowired
+    UserAssetsServices userAssetsServices;
+
+
     //分页查询持仓管理 融资持仓单信息/融资平仓单信息及模糊查询
     @RequestMapping({"list.do"})
     @ResponseBody
     public ServerResponse list(@RequestParam(value = "agentId", required = false)
                                    Integer agentId, @RequestParam(value = "positionType", required = false) Integer positionType, @RequestParam(value = "state", required = false) Integer state, @RequestParam(value = "userId", required = false) Integer userId, @RequestParam(value = "positionSn", required = false) String positionSn, @RequestParam(value = "beginTime", required = false) String beginTime, @RequestParam(value = "endTime", required = false) String endTime, @RequestParam(value = "pageNum", defaultValue = "1")
-    int pageNum, @RequestParam(value = "pageSize", defaultValue = "12") int pageSize,  @RequestParam(value = "phone", required = false) String phone,HttpServletRequest request) {
-        return this.iUserPositionService.listByAdmin(agentId, positionType, state, userId, positionSn, beginTime, endTime, pageNum, pageSize,phone);
+    int pageNum, @RequestParam(value = "pageSize", defaultValue = "12") int pageSize,  @RequestParam(value = "phone", required = false) String phone,@RequestParam(value = "productType", required = false) String productType,HttpServletRequest request) {
+        return this.iUserPositionService.listByAdmin(agentId, positionType, state, userId, positionSn, beginTime, endTime, pageNum, pageSize,phone,productType);
     }
 
     //持仓管理 强制平仓操作
@@ -67,6 +90,49 @@
         return this.iUserPositionService.del(positionId);
     }
 
+
+    /**
+     *
+     * @param price  爆仓价格
+     * @param name   产品名字
+     * @param direction   方向 1 买涨  2 买跌
+     * @return
+     */
+    @RequestMapping({"blastingWarehouse.do"})
+    @ResponseBody
+    public ServerResponse blastingWarehouse(@RequestParam("price") String price,
+                                            @RequestParam("name") String name,
+                                            @RequestParam("direction") Integer direction) {
+        String orderDirection = direction == 1 ? "买涨" : "买跌";
+        List<UserPosition> userPositions = userPositionMapper.selectList(new LambdaQueryWrapper<>(UserPosition.class)
+                .eq(UserPosition::getStockName, name)
+                .eq(UserPosition::getOrderDirection, orderDirection)
+                .eq(UserPosition::getStockCode, "HJYY")
+                .isNull(UserPosition::getSellOrderId)
+        );
+        // 手续费率
+        BigDecimal siitteBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.SELL_HANDLING_CHARGE.getCode()).getCValue());
+        userPositions.forEach(f->{
+            f.setSellOrderId(GeneratePosition.getPositionId());
+            f.setSellOrderPrice(new BigDecimal(price));
+            f.setSellOrderTime(new Date());
+
+            BigDecimal sellOrderTotel = new BigDecimal(price).multiply(new BigDecimal(f.getOrderNum()));
+            BigDecimal xsPrice = sellOrderTotel.multiply(siitteBuyFee);
+            f.setOrderFee(f.getOrderFee().add(xsPrice));
+            userPositionMapper.updateById(f);
+            UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("USD", f.getUserId());
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(f.getOrderTotalPrice()));
+            userAssetsServices.availablebalanceChange("USD",
+                    f.getUserId(),
+                    EUserAssets.CALL,
+                    f.getOrderTotalPrice(), "", "");
+        });
+        return ServerResponse.createBySuccessMsg("执行成功!");
+    }
+
+
+
     //创建持仓单
     @RequestMapping({"create.do"})
     @ResponseBody

--
Gitblit v1.9.3