From 85037c73f8b16f4258a2af354cd162247700ffde Mon Sep 17 00:00:00 2001
From: peternameyakj <908253177@qq.com>
Date: Sun, 14 Jul 2024 18:35:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/6-29' into 6-29

---
 src/main/java/com/nq/service/StockDzService.java                           |    6 
 src/main/java/com/nq/pojo/StockSubscribe.java                              |   18 
 src/main/resources/mapper/StockDzMapper.xml                                |    2 
 src/main/java/com/nq/controller/backend/AdminStockController.java          |   12 
 src/main/java/com/nq/service/impl/UserServiceImpl.java                     |   58 +
 src/main/resources/mapper/UserBankMapper.xml                               |    5 
 src/main/resources/application.properties                                  |    2 
 src/main/java/com/nq/controller/backend/AdminStockSubscribeController.java |    3 
 src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java           |   41 +
 src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java             |  129 -----
 src/main/java/com/nq/controller/backend/AdminStockDz.java                  |   27 
 src/main/java/com/nq/controller/UserPositionCheckDzController.java         |  132 +++++
 src/main/java/com/nq/pojo/UserStockSubscribe.java                          |    4 
 src/main/java/com/nq/service/impl/TradingHourServiceImpl.java              |    8 
 src/main/java/com/nq/service/impl/StockServiceImpl.java                    |   14 
 src/main/java/com/nq/service/IStockSubscribeService.java                   |    2 
 src/main/java/com/nq/controller/protol/UserController.java                 |   10 
 src/main/java/com/nq/controller/backend/AdminPositionController.java       |   10 
 src/main/java/com/nq/vo/stock/PageQuery.java                               |   56 ++
 src/main/java/com/nq/vo/stock/UserStockSubscribeAddIn.java                 |  123 +++++
 src/main/java/com/nq/vo/user/UserOut.java                                  |   29 +
 src/main/java/com/nq/vo/stock/StockListVO.java                             |    2 
 src/main/java/com/nq/pojo/UserPositionCheckDz.java                         |   68 ++
 src/main/java/com/nq/service/impl/StockDzServiceImpl.java                  |   57 +-
 src/main/java/com/nq/service/IUserStockSubscribeService.java               |    3 
 src/main/java/com/nq/controller/backend/AdminUserController.java           |   10 
 src/main/java/com/nq/service/IStockService.java                            |    2 
 src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java       |   79 ++-
 src/main/java/com/nq/service/UserPositionCheckDzService.java               |   13 
 src/main/java/com/nq/dao/UserPositionCheckDzMapper.java                    |   10 
 src/main/java/com/nq/service/IUserBankService.java                         |    3 
 src/main/java/com/nq/controller/StockApiController.java                    |    8 
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java             |   35 +
 src/main/java/com/nq/service/IUserPositionService.java                     |    2 
 src/main/resources/mapper/UserMapper.xml                                   |   14 
 src/main/java/com/nq/service/impl/UserBankServiceImpl.java                 |   86 --
 src/main/java/com/nq/service/IPriceServices.java                           |    3 
 src/main/java/com/nq/controller/UserApiController.java                     |   56 ++
 src/main/java/com/nq/service/IUserWithdrawService.java                     |    2 
 src/main/java/com/nq/service/impl/PriceServicesImpl.java                   |   23 
 src/main/resources/mapper/StockMapper.xml                                  |   32 
 src/main/java/com/nq/service/impl/UserPositionCheckDzServiceImpl.java      |   19 
 src/main/java/com/nq/utils/stock/sina/StockApi.java                        |    2 
 src/main/java/com/nq/controller/protol/UserWithdrawController.java         |    4 
 src/main/java/com/nq/dao/StockMapper.java                                  |    8 
 src/main/java/com/nq/dao/UserMapper.java                                   |    3 
 src/main/java/com/nq/pojo/StockDz.java                                     |   12 
 src/main/java/com/nq/service/IUserService.java                             |    4 
 src/main/java/com/nq/dao/UserBankMapper.java                               |   10 
 src/main/java/com/nq/pojo/UserBank.java                                    |  102 ---
 src/main/java/com/nq/vo/user/UserQueryParams.java                          |   27 +
 src/main/java/com/nq/service/impl/StockSettingServicesImpl.java            |    6 
 52 files changed, 916 insertions(+), 480 deletions(-)

diff --git a/src/main/java/com/nq/controller/StockApiController.java b/src/main/java/com/nq/controller/StockApiController.java
index 28f0db9..d265e7a 100644
--- a/src/main/java/com/nq/controller/StockApiController.java
+++ b/src/main/java/com/nq/controller/StockApiController.java
@@ -88,8 +88,12 @@
      */
     @PostMapping({"getDzList.do"})
     @ResponseBody
-    public ServerResponse getDzList() {
-        return this.stockDzService.getDzList();
+    public ServerResponse getDzList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                    @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
+                                    @RequestParam(value = "orderBy", required = false) String orderBy,
+                                    @RequestParam(value = "keyWords", required = false) String keyWords,
+                                    HttpServletRequest request) {
+        return stockDzService.getDzList(pageNum, pageSize, orderBy,keyWords , request);
     }
 
 
diff --git a/src/main/java/com/nq/controller/UserApiController.java b/src/main/java/com/nq/controller/UserApiController.java
index 8c42607..baf50d6 100644
--- a/src/main/java/com/nq/controller/UserApiController.java
+++ b/src/main/java/com/nq/controller/UserApiController.java
@@ -1,10 +1,19 @@
 package com.nq.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.nq.common.ServerResponse;
 
+import com.nq.dao.MoneyLogMapper;
+import com.nq.dao.StockConfigMapper;
+import com.nq.pojo.MoneyLog;
 import com.nq.pojo.SiteSpread;
+import com.nq.pojo.StockConfig;
+import com.nq.service.IMoneyLogServces;
 import com.nq.service.ISiteSpreadService;
+import com.nq.service.IStockConfigServices;
 import com.nq.service.IUserService;
 
 import com.nq.utils.PropertiesUtil;
@@ -17,14 +26,18 @@
 
 import com.nq.utils.redis.RedisShardedPoolUtils;
 
+import com.nq.utils.translate.GoogleTranslateUtil;
 import com.nq.vo.user.UserLoginResultVO;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
 import javax.servlet.http.HttpServletResponse;
 
 import javax.servlet.http.HttpSession;
 
+import org.apache.commons.lang3.StringUtils;
+import org.apache.http.util.TextUtils;
 import org.slf4j.Logger;
 
 import org.slf4j.LoggerFactory;
@@ -42,6 +55,7 @@
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 
 @Controller
@@ -54,6 +68,16 @@
 
     @Autowired
     ISiteSpreadService iSiteSpreadService;
+
+    @Autowired
+    StockConfigMapper stockConfigMapper;
+
+    @Autowired
+    IMoneyLogServces iMoneyLogServces;
+
+    @Autowired
+    MoneyLogMapper moneyLogMapper;
+
     //注册
     @RequestMapping(value = {"reg.do"}, method = {RequestMethod.POST})
     @ResponseBody
@@ -121,6 +145,38 @@
         return ServerResponse.createBySuccess("Success", siteSpread);
     }
 
+    @RequestMapping({"queryStockConfig.do"})
+    @ResponseBody
+    public  ServerResponse  updateConfig(){
+        StockConfig stockConfig = stockConfigMapper.selectOne(new LambdaQueryWrapper<StockConfig>().eq(StockConfig::getCKey, "buy_handling_charge"));
+        return  ServerResponse.createBySuccess(stockConfig);
 
+    }
+
+    @RequestMapping({"moneylogAll.do"})
+    @ResponseBody
+    public ServerResponse taskList(@RequestParam(value = "userId") String userId,
+                                   @RequestParam(value = "type", required = false) String type,
+                                   @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                   @RequestParam(value = "pageSize", defaultValue = "50") int pageSize,
+                                   HttpServletRequest request) {
+        Page<MoneyLog> page1 = new Page<>(pageNum, pageSize);
+        QueryWrapper<MoneyLog> queryWrapper = new QueryWrapper<>();
+
+        if(!TextUtils.isEmpty(userId)){
+            queryWrapper.eq("user_id",userId);
+        }
+        if(StringUtils.isNotEmpty(type)){
+            queryWrapper.eq("type",type);
+        }
+        queryWrapper.orderByDesc("create_time");
+        Page<MoneyLog> moneyLogPage = moneyLogMapper.selectPage(page1, queryWrapper);
+        List<MoneyLog> records = moneyLogPage.getRecords();
+        records.forEach(f->{
+            f.setDescs( new GoogleTranslateUtil().translate(f.getDescs(),request.getHeader("lang")));
+        });
+        moneyLogPage.setRecords(records);
+        return ServerResponse.createBySuccess(moneyLogPage);
+    }
 }
 
diff --git a/src/main/java/com/nq/controller/UserPositionCheckDzController.java b/src/main/java/com/nq/controller/UserPositionCheckDzController.java
new file mode 100644
index 0000000..01e84cc
--- /dev/null
+++ b/src/main/java/com/nq/controller/UserPositionCheckDzController.java
@@ -0,0 +1,132 @@
+package com.nq.controller;
+
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.nq.common.ServerResponse;
+import com.nq.dao.*;
+import com.nq.enums.EStockType;
+import com.nq.enums.EUserAssets;
+import com.nq.pojo.*;
+import com.nq.service.IPriceServices;
+import com.nq.service.IUserService;
+import com.nq.service.UserPositionCheckDzService;
+import com.nq.service.impl.UserAssetsServices;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+
+/**
+ * @program: dabaogp
+ * @description: 大宗交易审核
+ * @create: 2024-07-02 14:33
+ **/
+@Controller
+@RequestMapping({"/api/dzCheck/"})
+public class UserPositionCheckDzController {
+
+    @Autowired
+    UserPositionCheckDzService service;
+
+    @Autowired
+    UserPositionCheckDzMapper mapper;
+
+    @Autowired
+    UserPositionMapper userPositionMapper;
+
+    @Autowired
+    UserAssetsServices userAssetsServices;
+
+    @Autowired
+    UserMapper userMapper;
+
+    @Autowired
+    IPriceServices priceServices;
+
+    @Autowired
+    StockDzMapper stockDzMapper;
+
+    //大宗交易审核列表
+    @RequestMapping({"getList.do"})
+    @ResponseBody
+    public ServerResponse getList(@RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                  @RequestParam(value = "pageSize", defaultValue = "15") int pageSize,
+                                  @RequestParam(value = "type", required = false) Integer type,
+                                  @RequestParam(value = "stockCode", required = false) String stockCode) {
+        Page<UserPositionCheckDz> page = Page.of(pageNum, pageSize);
+        LambdaQueryWrapper<UserPositionCheckDz> queryWrapper = new LambdaQueryWrapper<UserPositionCheckDz>();
+
+        // 判断type是否为空,不为空则加入查询条件
+        if (type != null) {
+            queryWrapper.eq(UserPositionCheckDz::getCheckType, type);
+        }
+
+        // 判断stockCode是否为空,不为空则加入查询条件
+        if (stockCode != null) {
+            queryWrapper.eq(UserPositionCheckDz::getStockCode, stockCode);
+        }
+        queryWrapper.orderByDesc(UserPositionCheckDz::getBuyOrderTime);
+        Page<UserPositionCheckDz> pageList = service.page(page, queryWrapper);
+        return ServerResponse.createBySuccess(pageList);
+    }
+
+    //大宗审核
+    @RequestMapping({"check.do"})
+    @ResponseBody
+    public ServerResponse check(@RequestParam(value = "id") Integer id,
+                                @RequestParam(value = "checkType") Integer checkType,
+                                @RequestParam(value = "orderNum") Integer orderNum) {
+        if(checkType != 2 && (id == null || checkType == null || orderNum == null)){
+            return ServerResponse.createByErrorMsg("参数不能为空");
+        }
+        UserPositionCheckDz userPositionCheckDz = service.getById(id);
+        if(userPositionCheckDz == null){
+            return ServerResponse.createByErrorMsg("订单不存在");
+        }
+        if(userPositionCheckDz.getCheckType() != 0){
+            return ServerResponse.createByErrorMsg("订单已审核");
+        }
+        if(checkType == 2){
+            userPositionCheckDz.setCheckType(checkType);
+            service.updateById(userPositionCheckDz);
+            return ServerResponse.createBySuccess("审核成功");
+        }
+        User user = userMapper.selectById(userPositionCheckDz.getUserId());
+
+        StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("id", userPositionCheckDz.getDzId()));
+
+        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN", user.getId());
+        if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+            return ServerResponse.createByErrorMsg("用户账户有待补资金未补齐,审核失败");
+        }
+
+        BigDecimal nowPrice = stockDz.getNowPrice();
+
+        if (nowPrice.compareTo(new BigDecimal("0")) == 0) {
+            return ServerResponse.createByErrorMsg("股票价格0,请重试");
+        }
+        userPositionCheckDz.setOrderNum(orderNum);
+        userPositionCheckDz.setOrderTotalPrice(nowPrice.multiply(new BigDecimal(orderNum.intValue())));
+        BigDecimal buyAmt = nowPrice.multiply(new BigDecimal(userPositionCheckDz.getOrderNum()));
+        BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
+        BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
+        if (buyAmt.compareTo(availableBalance) > 0) {
+            return ServerResponse.createByErrorMsg("订单失败,配资不足");
+        }
+        userPositionCheckDz.setCheckType(checkType);
+        service.updateById(userPositionCheckDz);
+        UserPosition userPosition = Convert.convert(UserPosition.class, userPositionCheckDz);
+        userPosition.setBuyOrderPrice(nowPrice);
+        userPosition.setId(null);
+        userPositionMapper.insert(userPosition);
+        userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
+        return ServerResponse.createBySuccessMsg("审核成功,订单已转客户持仓");
+    }
+}
diff --git a/src/main/java/com/nq/controller/backend/AdminPositionController.java b/src/main/java/com/nq/controller/backend/AdminPositionController.java
index ee50755..381a510 100644
--- a/src/main/java/com/nq/controller/backend/AdminPositionController.java
+++ b/src/main/java/com/nq/controller/backend/AdminPositionController.java
@@ -70,7 +70,15 @@
     //创建持仓单
     @RequestMapping({"create.do"})
     @ResponseBody
-    public ServerResponse create(@RequestParam("userId") Integer userId, @RequestParam("stockCode") String stockCode, @RequestParam("buyPrice") String buyPrice, @RequestParam("buyTime") String buyTime, @RequestParam("buyNum") Integer buyNum, @RequestParam("buyType") Integer buyType, @RequestParam("lever") Integer lever, @RequestParam(value = "profitTarget",required = false) BigDecimal profitTarget, @RequestParam(value = "stopTarget",required = false) BigDecimal stopTarget) {
+    public ServerResponse create(@RequestParam("userId") Integer userId,
+                                 @RequestParam("stockCode") String stockCode,
+                                 @RequestParam("buyPrice") String buyPrice,
+                                 @RequestParam("buyTime") String buyTime,
+                                 @RequestParam("buyNum") Integer buyNum,
+                                 @RequestParam("buyType") Integer buyType,
+                                 @RequestParam(value  =  "lever",  defaultValue  =  "1") Integer lever,
+                                 @RequestParam(value = "profitTarget",required = false) BigDecimal profitTarget,
+                                 @RequestParam(value = "stopTarget",required = false) BigDecimal stopTarget) {
         return this.iUserPositionService.create(userId, stockCode, buyPrice, buyTime, buyNum, buyType, lever, profitTarget, stopTarget);
     }
 
diff --git a/src/main/java/com/nq/controller/backend/AdminStockController.java b/src/main/java/com/nq/controller/backend/AdminStockController.java
index 5c0d4eb..a884965 100644
--- a/src/main/java/com/nq/controller/backend/AdminStockController.java
+++ b/src/main/java/com/nq/controller/backend/AdminStockController.java
@@ -33,8 +33,16 @@
      //查询产品管理 所以股票信息及模糊查询
      @RequestMapping({"list.do"})
      @ResponseBody
-     public ServerResponse list(@RequestParam(value = "showState", required = false) Integer showState, @RequestParam(value = "lockState", required = false) Integer lockState, @RequestParam(value = "code", required = false) String code, @RequestParam(value = "name", required = false) String name, @RequestParam(value = "stockPlate", required = false) String stockPlate, @RequestParam(value = "stockType", required = false) String stockType, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, HttpServletRequest request) {
-         return this.iStockService.listByAdmin(showState, lockState, code, name, stockPlate, stockType, pageNum, pageSize, request);
+     public ServerResponse list(@RequestParam(value = "stockGid", required = false) String stockGid,
+                                @RequestParam(value = "showState", required = false) Integer showState,
+                                @RequestParam(value = "lockState", required = false) Integer lockState,
+                                @RequestParam(value = "code", required = false) String code,
+                                @RequestParam(value = "name", required = false) String name,
+                                @RequestParam(value = "stockPlate", required = false) String stockPlate,
+                                @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
+                                @RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
+                                HttpServletRequest request) {
+         return this.iStockService.listByAdmin(stockGid,showState, lockState, code, name, stockPlate, null, pageNum, pageSize, request);
      }
 
      //修改产品管理 股票是否锁定
diff --git a/src/main/java/com/nq/controller/backend/AdminStockDz.java b/src/main/java/com/nq/controller/backend/AdminStockDz.java
index b6c31bd..e6fa901 100644
--- a/src/main/java/com/nq/controller/backend/AdminStockDz.java
+++ b/src/main/java/com/nq/controller/backend/AdminStockDz.java
@@ -8,6 +8,8 @@
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+
 @RestController
 @RequestMapping({"/admin/stockDz/"})
 public class AdminStockDz {
@@ -15,7 +17,7 @@
     StockDzService stockDzService;
 
     /**
-     * @Description:  获取大宗列表
+     * @Description: 获取大宗列表
      * @Param:
      * @return:
      */
@@ -23,21 +25,25 @@
     public ServerResponse getDzListByAdmin(String keywords) {
         return stockDzService.getDzListByAdmin(keywords);
     }
+
     /**
-     * @Description:  新增大宗
+     * @Description: 新增大宗
      * @Param:
      * @return:
      */
     @RequestMapping({"addByAdmin.do"})
-    public ServerResponse addByAdmin(@RequestParam(value = "stockCode")String stockCode,
-                                     @RequestParam(value = "stockNum")String stockNum,
-                                     @RequestParam(value = "password")String password,
-                                     @RequestParam(value = "startTime")String startTime,
-                                     @RequestParam(value = "endTime")String endTime,
-                                     @RequestParam(value = "discount") String discount,
-                                     @RequestParam(value = "period")Integer period) {
-        return stockDzService.addByAdmin(stockCode,stockNum,password,startTime,endTime,discount,period);
+    public ServerResponse addByAdmin(@RequestParam(value = "stockCode") String stockCode,
+                                     @RequestParam(value = "stockNum") String stockNum,
+                                     @RequestParam(value = "password") String password,
+                                     @RequestParam(value = "startTime") String startTime,
+                                     @RequestParam(value = "endTime") String endTime,
+                                     @RequestParam(value = "discount", required = false) String discount,
+                                     @RequestParam(value = "period") Integer period,
+                                     @RequestParam(value = "nowPrice") String nowPrice,
+                                     @RequestParam(value = "switchType", defaultValue = "0") Integer switchType) {
+        return stockDzService.addByAdmin(stockCode, stockNum, password, startTime, endTime, discount, period,nowPrice,switchType);
     }
+
     /**
      * 删除大宗
      */
@@ -45,6 +51,7 @@
     public ServerResponse deleteByAdmin(@RequestParam(value = "id") String id) {
         return stockDzService.deleteByAdmin(id);
     }
+
     /**
      * 修改大宗
      */
diff --git a/src/main/java/com/nq/controller/backend/AdminStockSubscribeController.java b/src/main/java/com/nq/controller/backend/AdminStockSubscribeController.java
index cb145a3..bfc9700 100644
--- a/src/main/java/com/nq/controller/backend/AdminStockSubscribeController.java
+++ b/src/main/java/com/nq/controller/backend/AdminStockSubscribeController.java
@@ -42,8 +42,9 @@
                                @RequestParam(value = "zt", required = false) Integer zt,
                                @RequestParam(value = "isLock", required = false) Integer isLock,
                                @RequestParam(value = "type", required = false) Integer type,
+                               @RequestParam(value = "stockType", required = false) Integer stockType,
                                HttpServletRequest request) {
-        return this.iStockSubscribeService.list(name,code,zt,0,isLock,type,request);
+        return this.iStockSubscribeService.list(name,code,zt,0,isLock,type,stockType,1,request);
     }
     /** 
     * @Description:  新增新股
diff --git a/src/main/java/com/nq/controller/backend/AdminUserController.java b/src/main/java/com/nq/controller/backend/AdminUserController.java
index 9e24ecb..bf85a88 100644
--- a/src/main/java/com/nq/controller/backend/AdminUserController.java
+++ b/src/main/java/com/nq/controller/backend/AdminUserController.java
@@ -8,6 +8,8 @@
 import com.nq.service.IUserBankService;
 import com.nq.service.IUserService;
 import javax.servlet.http.HttpServletRequest;
+
+import com.nq.vo.user.UserQueryParams;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +17,9 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.text.ParseException;
+import java.util.Date;
 
 
 @Controller
@@ -32,8 +37,9 @@
     //分页查询所有用户列表信息 及模糊查询用户信息
     @RequestMapping({"list.do"})
     @ResponseBody
-    public ServerResponse list(@RequestParam(value = "realName", required = false) String realName, @RequestParam(value = "phone", required = false) String phone, @RequestParam(value = "agentId", required = false) Integer agentId, @RequestParam(value = "accountType", required = false) Integer accountType, @RequestParam(value = "pageNum", defaultValue = "1") int pageNum, @RequestParam(value = "pageSize", defaultValue = "10") int pageSize, HttpServletRequest request) {
-        return this.iUserService.listByAdmin(realName, phone, agentId, accountType, pageNum, pageSize, request);
+    public ServerResponse list(UserQueryParams queryParams,
+                               HttpServletRequest request) throws ParseException {
+        return this.iUserService.listByAdmin(queryParams.getRealName(),queryParams.getPhone(),queryParams.getAgentId(),queryParams.getAccountType(),queryParams.getPageNum(),queryParams.getPageSize(),queryParams.getIsLock(),queryParams.getIsLogin(),queryParams.getRegTime(),queryParams.getIsActive(),request);
     }
 
     //查询用户信息是否存在
diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index 6c4315c..8710115 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -17,6 +17,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
+import com.nq.vo.stock.UserStockSubscribeAddIn;
 import org.apache.ibatis.annotations.Property;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -122,6 +123,7 @@
             buyOrderCreated.set(true);
             return this.iUserPositionService.buy(stockId, buyNum, buyType, lever,profitTarget,stopLoss, request);
         } catch (Exception e) {
+            e.printStackTrace();
             return ServerResponse.createByErrorMsg("订单异常,请稍后重试", request);
         }  finally{
             buyLock.unlock();
@@ -300,7 +302,7 @@
                                @RequestParam(value = "type", required = false) Integer type,
                                @RequestParam(value = "getType", required = false) Integer getType,
                                HttpServletRequest request) {
-        return this.iStockSubscribeService.list(name,code,zt,getType,isLock,type,request);
+        return this.iStockSubscribeService.list(name,code,zt,getType,isLock,type,null,0,request);
     }
     /**
      * 新股申购 添加
@@ -309,7 +311,7 @@
      */
     @RequestMapping({"add.do"})
     @ResponseBody
-    public ServerResponse add(UserStockSubscribe model,HttpServletRequest request) throws Exception {
+    public ServerResponse add(UserStockSubscribeAddIn model, HttpServletRequest request) throws Exception {
         return this.iUserStockSubscribeService.insert(model,request);
     }
     /*新股申购-用户新股申购数据*/
@@ -355,14 +357,14 @@
      */
     @RequestMapping({"buyStockDz.do"})
     @ResponseBody
-    public ServerResponse buyDz(@RequestParam("stockCode") String stockCode, @RequestParam("password") String password,@RequestParam("num") Integer num, HttpServletRequest request) throws Exception {
+    public ServerResponse buyDz(@RequestParam("dzId") Integer dzId, @RequestParam("password") String password,@RequestParam("num") Integer num, HttpServletRequest request) throws Exception {
         lock.lock();
         try {
             if (orderCreated.get()) {
                 return ServerResponse.createByErrorMsg("当前内幕交易人数过多,请稍后重试", request);
             }
             orderCreated.set(true);
-            return this.iUserPositionService.buyDz(stockCode, password, num, request);
+            return this.iUserPositionService.buyDz(dzId, password, num, request);
         } catch (Exception e) {
             return ServerResponse.createByErrorMsg("订单异常,请稍后重试", request);
         }  finally{
diff --git a/src/main/java/com/nq/controller/protol/UserWithdrawController.java b/src/main/java/com/nq/controller/protol/UserWithdrawController.java
index 4285ff9..116d145 100644
--- a/src/main/java/com/nq/controller/protol/UserWithdrawController.java
+++ b/src/main/java/com/nq/controller/protol/UserWithdrawController.java
@@ -37,13 +37,13 @@
     //用户提现
     @RequestMapping({"outMoney.do"})
     @ResponseBody
-    public ServerResponse outMoney(@RequestParam(value = "amt") String amt,
+    public ServerResponse outMoney(@RequestParam(value = "amt") String amt,@RequestParam(value = "bankId") String bankId,
                                    @RequestParam(value = "assetsType") String accsetType,
                                    HttpServletRequest request) {
         ServerResponse serverResponse = null;
         User user = this.iUserService.getCurrentRefreshUser(request);
         try {
-            serverResponse = this.iUserWithdrawService.outMoney(amt, user.getWithPwd(), accsetType,request);
+            serverResponse = this.iUserWithdrawService.outMoney(amt, user.getWithPwd(), accsetType,bankId,request);
         } catch (Exception e) {
             log.error("出金异常 e = {}", e);
             serverResponse = ServerResponse.createByErrorMsg("提现异常,请稍后再试",request);
diff --git a/src/main/java/com/nq/dao/StockMapper.java b/src/main/java/com/nq/dao/StockMapper.java
index 7081167..f9df28f 100644
--- a/src/main/java/com/nq/dao/StockMapper.java
+++ b/src/main/java/com/nq/dao/StockMapper.java
@@ -1,9 +1,12 @@
 package com.nq.dao;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.nq.pojo.Stock;
 import java.util.List;
 
+import com.nq.pojo.StockDz;
+import com.nq.pojo.StockSetting;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 @Mapper
@@ -39,7 +42,7 @@
 
   Stock findStockByName(String paramString);
 
-  List listByAdmin(@Param("showState") Integer paramInteger1, @Param("lockState") Integer paramInteger2, @Param("code") String paramString1, @Param("name") String paramString2, @Param("stockPlate") String paramString3, @Param("stockType") String paramString4);
+  List listByAdmin(@Param("stockGid") String stockGid,@Param("showState") Integer paramInteger1, @Param("lockState") Integer paramInteger2, @Param("code") String paramString1, @Param("name") String paramString2, @Param("stockPlate") String paramString3, @Param("stockType") String paramString4);
 
   int CountStockNum();
 
@@ -56,5 +59,6 @@
   List findStockByType(@Param("orderBy") String orderBy, @Param("stockType") String stockType,@Param("keyWords") String keyWords);
 
 
-  List findStockTypeDz(@Param("orderBy") String orderBy, @Param("stockType") String stockType,@Param("keyWords") String keyWords);
+  List<StockDz> findStockTypeDz(@Param("orderBy") String orderBy, @Param("keyWords") String keyWords , @Param("formatDate") String formatDate);
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/nq/dao/UserBankMapper.java b/src/main/java/com/nq/dao/UserBankMapper.java
index 6e103f6..3847e49 100644
--- a/src/main/java/com/nq/dao/UserBankMapper.java
+++ b/src/main/java/com/nq/dao/UserBankMapper.java
@@ -1,9 +1,15 @@
 package com.nq.dao;
 
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.nq.pojo.UserBank;
+import com.nq.pojo.UserPositionCheckDz;
+import org.apache.ibatis.annotations.Mapper;
 
-public interface UserBankMapper {
+import java.util.List;
+
+@Mapper
+public interface UserBankMapper extends BaseMapper<UserBank> {
   int deleteByPrimaryKey(Integer paramInteger);
   
   int insert(UserBank paramUserBank);
@@ -16,5 +22,5 @@
   
   int updateByPrimaryKey(UserBank paramUserBank);
   
-  UserBank findUserBankByUserId(Integer paramInteger);
+//  List<UserBank> findUserBankByUserId(Integer paramInteger);
 }
diff --git a/src/main/java/com/nq/dao/UserMapper.java b/src/main/java/com/nq/dao/UserMapper.java
index 60f7634..d7d1a9d 100644
--- a/src/main/java/com/nq/dao/UserMapper.java
+++ b/src/main/java/com/nq/dao/UserMapper.java
@@ -5,6 +5,7 @@
 import com.nq.pojo.User;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 
 import org.apache.ibatis.annotations.Param;
@@ -28,7 +29,7 @@
 
     List listByAgent(@Param("realName") String paramString1, @Param("phone") String paramString2, @Param("searchId") Integer paramInteger1, @Param("accountType") Integer paramInteger2);
 
-    List listByAdmin(@Param("realName") String paramString1, @Param("phone") String paramString2, @Param("searchId") Integer paramInteger1, @Param("accountType") Integer paramInteger2);
+    List listByAdmin(@Param("realName") String paramString1, @Param("phone") String paramString2, @Param("searchId") Integer paramInteger1, @Param("accountType") Integer paramInteger2,@Param("isLock") Integer isLock,@Param("isLogin") Integer isLogin,@Param("regTime") String regTime,@Param("isActive") Integer isActive);
 
     int CountUserSize(Integer paramInteger);
 
diff --git a/src/main/java/com/nq/dao/UserPositionCheckDzMapper.java b/src/main/java/com/nq/dao/UserPositionCheckDzMapper.java
new file mode 100644
index 0000000..b9f9f56
--- /dev/null
+++ b/src/main/java/com/nq/dao/UserPositionCheckDzMapper.java
@@ -0,0 +1,10 @@
+package com.nq.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.nq.pojo.UserPendingorder;
+import com.nq.pojo.UserPositionCheckDz;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface UserPositionCheckDzMapper extends BaseMapper<UserPositionCheckDz> {
+}
diff --git a/src/main/java/com/nq/pojo/StockDz.java b/src/main/java/com/nq/pojo/StockDz.java
index 928ee81..c0c780a 100644
--- a/src/main/java/com/nq/pojo/StockDz.java
+++ b/src/main/java/com/nq/pojo/StockDz.java
@@ -1,8 +1,6 @@
 package com.nq.pojo;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.*;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
@@ -40,7 +38,7 @@
     private BigDecimal increaseRatio;
 
     private Integer stockNum;
-
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String password;
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date startTime;
@@ -49,5 +47,11 @@
     private BigDecimal discount;
     private Integer period;
 
+    /**
+     * 大宗审核开关(0:关闭  1:打开)
+     */
+    private Integer switchType = 0;
     private static final long serialVersionUID = 1L;
+    //价格
+    private BigDecimal nowPrice;
 }
\ No newline at end of file
diff --git a/src/main/java/com/nq/pojo/StockSubscribe.java b/src/main/java/com/nq/pojo/StockSubscribe.java
index c0af64f..e801a23 100644
--- a/src/main/java/com/nq/pojo/StockSubscribe.java
+++ b/src/main/java/com/nq/pojo/StockSubscribe.java
@@ -4,7 +4,9 @@
 import java.math.BigDecimal;
 import java.util.Date;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
@@ -83,5 +85,21 @@
     */
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 密钥
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private String password;
 
+    /**
+     * 最低买入价格
+     */
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
+    private BigDecimal minPrice;
+
+    /**
+     * 是否在有效时间
+     */
+    @TableField(exist = false)
+    private Boolean isBetween;
 }
\ No newline at end of file
diff --git a/src/main/java/com/nq/pojo/UserBank.java b/src/main/java/com/nq/pojo/UserBank.java
index 216a3d4..5bec165 100644
--- a/src/main/java/com/nq/pojo/UserBank.java
+++ b/src/main/java/com/nq/pojo/UserBank.java
@@ -1,11 +1,15 @@
 package com.nq.pojo;
 
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
 import java.util.Date;
 
-
+@Data
 public class UserBank {
-
+    @TableId(type = IdType.AUTO,value = "id")
     private Integer id;
 
     private Integer userId;
@@ -26,94 +30,10 @@
     private String bankImg;
 
     private String bankPhone;
+    // 银行卡户主名称
+    private String bankCardholderName;
+    // 绑定邮箱
+    private String bankEmail;
 
-    private Date addTime;
-
-
-    public UserBank(Integer id, Integer userId, String bankName, String bankNo, String bankAddress, String bankImg, String bankPhone, Date addTime) {
-
-        this.id = id;
-
-        this.userId = userId;
-
-        this.bankName = bankName;
-
-        this.bankNo = bankNo;
-
-        this.bankAddress = bankAddress;
-
-        this.bankImg = bankImg;
-
-        this.bankPhone = bankPhone;
-
-        this.addTime = addTime;
-
-    }
-
-    public UserBank() {
-    }
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public Integer getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Integer userId) {
-        this.userId = userId;
-    }
-
-    public String getBankName() {
-        return bankName;
-    }
-
-    public void setBankName(String bankName) {
-        this.bankName = bankName;
-    }
-
-    public String getBankNo() {
-        return bankNo;
-    }
-
-    public void setBankNo(String bankNo) {
-        this.bankNo = bankNo;
-    }
-
-    public String getBankAddress() {
-        return bankAddress;
-    }
-
-    public void setBankAddress(String bankAddress) {
-        this.bankAddress = bankAddress;
-    }
-
-    public String getBankImg() {
-        return bankImg;
-    }
-
-    public void setBankImg(String bankImg) {
-        this.bankImg = bankImg;
-    }
-
-    public String getBankPhone() {
-        return bankPhone;
-    }
-
-    public void setBankPhone(String bankPhone) {
-        this.bankPhone = bankPhone;
-    }
-
-    public Date getAddTime() {
-        return addTime;
-    }
-
-    public void setAddTime(Date addTime) {
-        this.addTime = addTime;
-    }
+    private Date addTime = new Date();
 }
\ No newline at end of file
diff --git a/src/main/java/com/nq/pojo/UserPositionCheckDz.java b/src/main/java/com/nq/pojo/UserPositionCheckDz.java
new file mode 100644
index 0000000..4c40cde
--- /dev/null
+++ b/src/main/java/com/nq/pojo/UserPositionCheckDz.java
@@ -0,0 +1,68 @@
+package com.nq.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @program: dabaogp
+ * @description: 大宗交易审核表
+ * @create: 2024-07-02 14:23
+ **/
+@Data
+public class UserPositionCheckDz {
+
+    @TableId(type = IdType.AUTO,value = "id")
+    private Integer id;
+    private Integer positionType;
+    private String positionSn;
+    private Integer userId;
+    private String nickName;
+    private Integer agentId;
+    private String stockName;
+    private String stockCode;
+    private String stockGid;
+    private String stockSpell;
+    private String buyOrderId;
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date buyOrderTime;
+    private BigDecimal buyOrderPrice;
+    private String sellOrderId;
+//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date sellOrderTime;
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    private BigDecimal sellOrderPrice;
+    //
+    private BigDecimal profitTargetPrice;
+    private BigDecimal stopTargetPrice;
+    private String orderDirection;
+    private Integer orderNum;
+    private Integer orderLever;
+    private BigDecimal orderTotalPrice;
+    private BigDecimal orderFee;
+    private BigDecimal orderSpread;
+    private BigDecimal orderStayFee;
+    private Integer orderStayDays;
+    private BigDecimal profitAndLose;
+    private BigDecimal allProfitAndLose;
+    private Integer isLock;
+    private String lockMsg;
+    private String stockPlate;
+    /*点差费金额*/
+    private BigDecimal spreadRatePrice;
+    /*追加保证金额*/
+    private BigDecimal marginAdd;
+
+    //0:待审核  1:成功 2:失败
+    private Integer checkType = 0;
+
+    private Integer dzId;
+}
diff --git a/src/main/java/com/nq/pojo/UserStockSubscribe.java b/src/main/java/com/nq/pojo/UserStockSubscribe.java
index 392feeb..b43df4a 100644
--- a/src/main/java/com/nq/pojo/UserStockSubscribe.java
+++ b/src/main/java/com/nq/pojo/UserStockSubscribe.java
@@ -62,6 +62,10 @@
      */
     private String agentName;
 
+    /**
+     * 新股id
+     */
+    private Integer newStockId;
 
     /**
      * 申购股票代码
diff --git a/src/main/java/com/nq/service/IPriceServices.java b/src/main/java/com/nq/service/IPriceServices.java
index 328fb23..1cc1aba 100644
--- a/src/main/java/com/nq/service/IPriceServices.java
+++ b/src/main/java/com/nq/service/IPriceServices.java
@@ -9,9 +9,6 @@
 
     Map<String, Object> getNewStock(String stockCode);
 
-    BigDecimal getNowPrice(String stockCode,String stockType);
-
-
     boolean isLimitUpBuy(String stockCode);
 
 
diff --git a/src/main/java/com/nq/service/IStockService.java b/src/main/java/com/nq/service/IStockService.java
index 218a186..4763888 100644
--- a/src/main/java/com/nq/service/IStockService.java
+++ b/src/main/java/com/nq/service/IStockService.java
@@ -68,7 +68,7 @@
 
   ServerResponse<Stock> findStockById(Integer paramInteger);
 
-  ServerResponse<PageInfo> listByAdmin(Integer paramInteger1, Integer paramInteger2, String paramString1, String paramString2, String paramString3, String paramString4, int paramInt1, int paramInt2, HttpServletRequest paramHttpServletRequest);
+  ServerResponse<PageInfo> listByAdmin(String stockGid,Integer paramInteger1, Integer paramInteger2, String paramString1, String paramString2, String paramString3, String paramString4, int paramInt1, int paramInt2, HttpServletRequest paramHttpServletRequest);
 
   ServerResponse updateLock(Integer paramInteger);
 
diff --git a/src/main/java/com/nq/service/IStockSubscribeService.java b/src/main/java/com/nq/service/IStockSubscribeService.java
index b623977..4452918 100644
--- a/src/main/java/com/nq/service/IStockSubscribeService.java
+++ b/src/main/java/com/nq/service/IStockSubscribeService.java
@@ -14,7 +14,7 @@
 * @createDate 2022-10-24 23:27:27
 */
 public interface IStockSubscribeService extends IService<StockSubscribe> {
-    ServerResponse list( String name,String code,Integer zt,Integer getType,Integer isLock,Integer type, HttpServletRequest paramHttpServletRequest);
+    ServerResponse list( String name,String code,Integer zt,Integer getType,Integer isLock,Integer type,Integer stockGid,Integer postType,  HttpServletRequest paramHttpServletRequest);
 
 
     ServerResponse add(StockSubscribe model, HttpServletRequest request);
diff --git a/src/main/java/com/nq/service/IUserBankService.java b/src/main/java/com/nq/service/IUserBankService.java
index 001fa80..5f17603 100644
--- a/src/main/java/com/nq/service/IUserBankService.java
+++ b/src/main/java/com/nq/service/IUserBankService.java
@@ -7,8 +7,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 public interface IUserBankService {
-  UserBank findUserBankByUserId(Integer paramInteger);
-  
+
   ServerResponse addBank(UserBank paramUserBank, HttpServletRequest paramHttpServletRequest);
   
   ServerResponse updateBank(UserBank paramUserBank, HttpServletRequest paramHttpServletRequest);
diff --git a/src/main/java/com/nq/service/IUserPositionService.java b/src/main/java/com/nq/service/IUserPositionService.java
index 19a31e3..4cb1498 100644
--- a/src/main/java/com/nq/service/IUserPositionService.java
+++ b/src/main/java/com/nq/service/IUserPositionService.java
@@ -80,7 +80,7 @@
 
     ServerResponse buyVipQc(String stockCode, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, HttpServletRequest request) throws Exception;
 
-    ServerResponse buyDz(String stockCode, String password, Integer num, HttpServletRequest request) throws Exception;
+    ServerResponse buyDz(Integer dzId, String password, Integer num, HttpServletRequest request) throws Exception;
 
   ServerResponse buyStockDzList(HttpServletRequest request);
 
diff --git a/src/main/java/com/nq/service/IUserService.java b/src/main/java/com/nq/service/IUserService.java
index 0c9fd96..4bf0543 100644
--- a/src/main/java/com/nq/service/IUserService.java
+++ b/src/main/java/com/nq/service/IUserService.java
@@ -5,6 +5,8 @@
 import com.nq.pojo.User;
 
 import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.Date;
 import javax.servlet.http.HttpServletRequest;
 
 public interface IUserService {
@@ -62,7 +64,7 @@
 
   ServerResponse addSimulatedAccount(Integer paramInteger1, String paramString1, String paramString2, String paramString3, Integer paramInteger2, HttpServletRequest paramHttpServletRequest);
 
-  ServerResponse listByAdmin(String paramString1, String paramString2, Integer paramInteger1, Integer paramInteger2, int paramInt1, int paramInt2, HttpServletRequest paramHttpServletRequest);
+  ServerResponse listByAdmin(String paramString1, String paramString2, Integer paramInteger1, Integer paramInteger2, int paramInt1, int paramInt2, Integer isLock, Integer isLogin, String regTime,Integer isActive, HttpServletRequest paramHttpServletRequest) throws ParseException;
 
   ServerResponse findByUserId(Integer paramInteger);
 
diff --git a/src/main/java/com/nq/service/IUserStockSubscribeService.java b/src/main/java/com/nq/service/IUserStockSubscribeService.java
index 6da5a4d..a0b8b88 100644
--- a/src/main/java/com/nq/service/IUserStockSubscribeService.java
+++ b/src/main/java/com/nq/service/IUserStockSubscribeService.java
@@ -4,6 +4,7 @@
 import com.github.pagehelper.PageInfo;
 import com.nq.common.ServerResponse;
 import com.nq.pojo.UserStockSubscribe;
+import com.nq.vo.stock.UserStockSubscribeAddIn;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -17,7 +18,7 @@
     /**
      * 新增
      */
-    ServerResponse insert(UserStockSubscribe model,HttpServletRequest request) throws Exception;
+    ServerResponse insert(UserStockSubscribeAddIn model, HttpServletRequest request) throws Exception;
 
     /**
      * 更新
diff --git a/src/main/java/com/nq/service/IUserWithdrawService.java b/src/main/java/com/nq/service/IUserWithdrawService.java
index 025cab8..dd07350 100644
--- a/src/main/java/com/nq/service/IUserWithdrawService.java
+++ b/src/main/java/com/nq/service/IUserWithdrawService.java
@@ -10,7 +10,7 @@
 import javax.servlet.http.HttpServletRequest;
 
 public interface IUserWithdrawService {
-  ServerResponse outMoney(String paramString,String with_Pwd, String assetsType,HttpServletRequest paramHttpServletRequest) throws Exception;
+  ServerResponse outMoney(String paramString,String with_Pwd, String assetsType,String bankId,HttpServletRequest paramHttpServletRequest) throws Exception;
   
   ServerResponse<PageInfo> findUserWithList(String paramString, HttpServletRequest paramHttpServletRequest, int paramInt1, int paramInt2);
   
diff --git a/src/main/java/com/nq/service/StockDzService.java b/src/main/java/com/nq/service/StockDzService.java
index 84f275a..a61cf31 100644
--- a/src/main/java/com/nq/service/StockDzService.java
+++ b/src/main/java/com/nq/service/StockDzService.java
@@ -4,6 +4,8 @@
 import com.nq.common.ServerResponse;
 import com.nq.pojo.StockDz;
 
+import javax.servlet.http.HttpServletRequest;
+
 /**
 * @author Administrator
 * @description 针对表【stock_dz】的数据库操作Service
@@ -11,9 +13,9 @@
 */
 public interface StockDzService extends IService<StockDz> {
 
-    ServerResponse getDzList();
+    ServerResponse getDzList(int paramInt1, int paramInt2, String paramString1, String paramString2, HttpServletRequest request);
 
-    ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period);
+    ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType);
 
     ServerResponse getDzListByAdmin(String keywords);
 
diff --git a/src/main/java/com/nq/service/UserPositionCheckDzService.java b/src/main/java/com/nq/service/UserPositionCheckDzService.java
new file mode 100644
index 0000000..05f5f20
--- /dev/null
+++ b/src/main/java/com/nq/service/UserPositionCheckDzService.java
@@ -0,0 +1,13 @@
+package com.nq.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.nq.pojo.UserPendingorder;
+import com.nq.pojo.UserPositionCheckDz;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-07-02 14:25
+ **/
+public interface UserPositionCheckDzService extends IService<UserPositionCheckDz> {
+}
diff --git a/src/main/java/com/nq/service/impl/PriceServicesImpl.java b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
index 71345ac..77755e0 100644
--- a/src/main/java/com/nq/service/impl/PriceServicesImpl.java
+++ b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
@@ -1,5 +1,7 @@
 package com.nq.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.gson.Gson;
@@ -26,6 +28,7 @@
 import  java.io.InputStreamReader;
 import  java.net.HttpURLConnection;
 import  java.net.URL;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -53,7 +56,11 @@
         Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
         StockSetting stockSetting = stockSettingMapper.selectOne(new QueryWrapper<StockSetting>().eq("stock_code",stockCode));
         if(stockSetting != null){
-            if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){
+            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{
@@ -120,20 +127,6 @@
             e.printStackTrace();
         }
         return null;
-    }
-
-    @Override
-    public BigDecimal getNowPrice(String stockCode, String stockType) {
-      BigDecimal nowPrice =   getNowPrice(stockCode);
-      if (!stockType.equals("DZ")){
-          return  nowPrice;
-      }
-     QueryWrapper queryWrapper =    new QueryWrapper<>();
-        queryWrapper.eq("stock_code",stockCode);
-       StockDz stockDz =  stockDZMapper.selectOne(queryWrapper);
-       if(stockDz == null){
-           return  nowPrice;}
-       return  nowPrice.multiply(stockDz.getDiscount());
     }
 
     @Override
diff --git a/src/main/java/com/nq/service/impl/StockDzServiceImpl.java b/src/main/java/com/nq/service/impl/StockDzServiceImpl.java
index f9e1199..b807f0f 100644
--- a/src/main/java/com/nq/service/impl/StockDzServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockDzServiceImpl.java
@@ -1,22 +1,35 @@
 package com.nq.service.impl;
 
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.google.common.collect.Lists;
 import com.nq.common.ServerResponse;
 import com.nq.dao.StockDzMapper;
 import com.nq.dao.StockMapper;
 import com.nq.pojo.Stock;
 import com.nq.pojo.StockDz;
+import com.nq.pojo.reponse.RPageInfo;
 import com.nq.service.StockDzService;
+import com.nq.utils.stock.sina.StockApi;
 import com.nq.utils.timeutil.DateTimeUtil;
+import com.nq.vo.stock.StockDzVo;
+import com.nq.vo.stock.StockListVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
 
+import javax.servlet.http.HttpServletRequest;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
 
 /**
 * @author Administrator
@@ -33,35 +46,20 @@
     private SiteSettingServiceImpl siteSettingService;
     @Autowired
     private StockMapper stockMapper;
+
     @Override
-    public ServerResponse getDzList() {
-//        List<StockDz> list = stockDzMapper.selectList(new QueryWrapper<StockDz>().eq("is_show", 1));
-//        List<StockDzVo> stockDzVos = Lists.newArrayList();
-//        for (StockDz stockDz : list) {
-//            StockListVO stockListVO = SinaStockApi.assembleInStockListVO(SinaStockApi.getInStockDetail(stockDz.getStockCode()));
-//            BigDecimal price = new BigDecimal(stockListVO.getNowPrice()).multiply(stockDz.getDiscount());
-//
-//            StockDzVo stockDzVo = new StockDzVo();
-//            stockDzVo.setId(stockDz.getId());
-//            stockDzVo.setStockName(stockDz.getStockName());
-//            stockDzVo.setStockCode(stockDz.getStockCode());
-//            stockDzVo.setPrice(price);
-//            stockDzVo.setStockType(stockDz.getStockType());
-//            stockDzVo.setStockGid(stockDz.getStockGid());
-//            stockDzVo.setStockPlate(stockDz.getStockPlate());
-//            stockDzVo.setIsLock(stockDz.getIsLock());
-//            stockDzVo.setStockNum(stockDz.getStockNum());
-//            stockDzVo.setStartTime(stockDz.getStartTime());
-//            stockDzVo.setEndTime(stockDz.getEndTime());
-//            stockDzVos.add(stockDzVo);
-//        }
-        return ServerResponse.createBySuccess();
+    public ServerResponse getDzList(int pageNum, int pageSize, String orderBy, String keyWords,  HttpServletRequest request) {
+        PageHelper.startPage(pageNum, pageSize);
+        String formatDate = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN);
+        List<StockDz> stockTypeDz = stockMapper.findStockTypeDz(orderBy, keyWords,formatDate);
+        RPageInfo pageInfo = new RPageInfo();
+        pageInfo.setList(stockTypeDz);
+        return ServerResponse.createBySuccess(pageInfo);
     }
 
     @Override
-    public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period) {
-        if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")||password == null || discount == null|| discount.equals("")||
-                password.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("") || period == null){
+    public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period,String nowPrice,Integer switchType) {
+        if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("") || period == null || nowPrice == null){
             return ServerResponse.createByErrorMsg("参数不能为空");
         }
 
@@ -72,10 +70,7 @@
         if (stock == null){
             return ServerResponse.createByErrorMsg("股票代码不存在");
         }
-        Long count = stockDzMapper.selectCount(new LambdaQueryWrapper<StockDz>().eq(StockDz::getStockCode, stockCode));
-        if(count > 0){
-            return ServerResponse.createByErrorMsg("股票代码已存在");
-        }
+
         StockDz stockDz = new StockDz();
         stockDz.setStockName(stock.getStockName());
         stockDz.setStockCode(stock.getStockCode());
@@ -91,8 +86,10 @@
         stockDz.setPassword(password);
         stockDz.setStartTime(DateTimeUtil.strToDate(startTime));
         stockDz.setEndTime(DateTimeUtil.strToDate(endTime));
-        stockDz.setDiscount(new BigDecimal(discount));
+//        stockDz.setDiscount(new BigDecimal(discount));
         stockDz.setPeriod(period);
+        stockDz.setSwitchType(switchType);
+        stockDz.setNowPrice(new BigDecimal(nowPrice));
         int res = stockDzMapper.insert(stockDz);
         if (res > 0) {
             return ServerResponse.createBySuccessMsg("添加成功");
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index 3196cba..09a2504 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -171,14 +171,8 @@
     @Override
     public ServerResponse getStockByType(int pageNum, int pageSize, String orderBy, String keyWords, String stockType, HttpServletRequest request) {
         List<Stock> stockList = new ArrayList<>();
-        if(stockType.equals(EStockType.IN.getCode())){
-            PageHelper.startPage(pageNum, pageSize);
-            stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords));
-        }else{
-            PageHelper.startPage(pageNum, pageSize);
-            stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.IN.getCode(), keyWords));
-        }
-
+        PageHelper.startPage(pageNum, pageSize);
+        stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords));
         List<StockListVO> stockListVOS = Lists.newArrayList();
         if (stockList.size() > 0){
             stockListVOS.addAll(Objects.requireNonNull(StockApi.getStockReailTimes(stockList)));
@@ -501,9 +495,9 @@
         return ServerResponse.createBySuccess(this.stockMapper.selectByPrimaryKey(stockId));
     }
 
-    public ServerResponse<PageInfo> listByAdmin(Integer showState, Integer lockState, String code, String name, String stockPlate, String stockType, int pageNum, int pageSize, HttpServletRequest request) {
+    public ServerResponse<PageInfo> listByAdmin(String stockGid,Integer showState, Integer lockState, String code, String name, String stockPlate, String stockType, int pageNum, int pageSize, HttpServletRequest request) {
         PageHelper.startPage(pageNum, pageSize);
-        List<Stock> stockList = this.stockMapper.listByAdmin(showState, lockState, code, name, stockPlate, stockType);
+        List<Stock> stockList = this.stockMapper.listByAdmin(stockGid,showState, lockState, code, name, stockPlate, stockType);
         List<StockAdminListVO> stockAdminListVOS = Lists.newArrayList();
         for (Stock stock : stockList) {
             StockAdminListVO stockAdminListVO = assembleStockAdminListVO(stock);
diff --git a/src/main/java/com/nq/service/impl/StockSettingServicesImpl.java b/src/main/java/com/nq/service/impl/StockSettingServicesImpl.java
index 32c3f72..04fce48 100644
--- a/src/main/java/com/nq/service/impl/StockSettingServicesImpl.java
+++ b/src/main/java/com/nq/service/impl/StockSettingServicesImpl.java
@@ -1,5 +1,6 @@
 package com.nq.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.nq.common.ServerResponse;
 import com.nq.dao.StockMapper;
@@ -36,7 +37,10 @@
     @Override
     public ServerResponse saveStockSetting(StockSetting stockSetting) {
 
-
+        Long count = stockSettingMapper.selectCount(new LambdaQueryWrapper<StockSetting>().eq(StockSetting::getStockCode, stockSetting.getStockCode()));
+        if(count > 0){
+            return ServerResponse.createByErrorMsg("已存在相同股票");
+        }
         Stock stock = stockMapper.findStockByCode(stockSetting.getStockCode());
         if(stock == null){
            return ServerResponse.createByErrorMsg("添加股票不存在");
diff --git a/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
index 16c1dd3..cc11dbf 100644
--- a/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockSubscribeServiceImpl.java
@@ -1,5 +1,6 @@
 package com.nq.service.impl;
 
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,6 +19,7 @@
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import javax.xml.stream.events.EntityDeclaration;
 import java.util.Date;
 import java.util.List;
 
@@ -47,7 +49,7 @@
      * @Date: 2022/10/25
      */
     @Override
-    public ServerResponse list(String name, String code, Integer zt,Integer getType, Integer isLock, Integer type, HttpServletRequest request) {
+    public ServerResponse list(String name, String code, Integer zt,Integer getType, Integer isLock, Integer type, Integer stockType,Integer postType,HttpServletRequest request) {
 
         //name和code模糊查询
         QueryWrapper<StockSubscribe> queryWrapper = new QueryWrapper();
@@ -66,11 +68,28 @@
         if (type != null && !type.equals("")) {
             queryWrapper.eq("type", type);
         }
-        if(getType == 1){
-            queryWrapper.gt("list_date", new Date());
+//        if(getType == 1){
+//            queryWrapper.gt("list_date", new Date());
+//        }
+        if(stockType != null){
+            queryWrapper.eq("stock_type", stockType);
         }
         queryWrapper.orderByDesc("newlist_id");
+//        if(postType == 0){
+//            queryWrapper.select(StockSubscribe.class, info -> !info.getColumn().equals("password"));
+//        }
         List<StockSubscribe> stockSubscribeList = this.stockSubscribeMapper.selectList(queryWrapper);
+
+        Date newDate = new Date();
+
+        for (StockSubscribe stockSubscribe : stockSubscribeList) {
+            Date startDate = stockSubscribe.getSubscribeTime();
+            Date endDate = stockSubscribe.getSubscriptionTime();
+
+            boolean isBetween = newDate.after(startDate) && newDate.before(endDate);
+            stockSubscribe.setIsBetween(isBetween);
+        }
+
         PageInfo pageInfo = new PageInfo(stockSubscribeList);
         pageInfo.setList(stockSubscribeList);
 
@@ -92,12 +111,7 @@
         if(null == stock){
             return ServerResponse.createByErrorMsg("新股代码不存在");
         }
-        Long count = stockSubscribeMapper.selectCount(new LambdaQueryWrapper<StockSubscribe>()
-                .eq(StockSubscribe::getCode, model.getCode())
-                .eq(StockSubscribe::getType, model.getType()));
-        if(count > 0){
-            return ServerResponse.createByErrorMsg("新股已存在");
-        }
+
         int resultCount = this.stockSubscribeMapper.insert(model);
         if (resultCount > 0) {
             return ServerResponse.createBySuccessMsg("添加新股成功");
@@ -118,18 +132,13 @@
         if (stockSubscribe == null) {
             return ServerResponse.createByErrorMsg("新股不存在");
         }
-        Long count = stockSubscribeMapper.selectCount(new LambdaQueryWrapper<StockSubscribe>()
-                .eq(StockSubscribe::getCode, model.getCode())
-                .eq(StockSubscribe::getType, model.getType()).ne(StockSubscribe::getNewlistId,model.getNewlistId()));
-        if(count > 0){
-            return ServerResponse.createByErrorMsg("新股已存在");
-        }
+
         //修改新股
         int resultCount = this.stockSubscribeMapper.updateById(model);
         //修改用户申购的新股代码
         List<UserStockSubscribe> userStockSubscribes = userStockSubscribeMapper
                 .selectList(new LambdaQueryWrapper<UserStockSubscribe>()
-                        .eq(UserStockSubscribe::getNewCode, stockSubscribe.getCode()));
+                        .eq(UserStockSubscribe::getNewStockId, stockSubscribe.getNewlistId()));
         for (UserStockSubscribe u : userStockSubscribes) {
             u.setNewCode(model.getCode());
             userStockSubscribeMapper.updateById(u);
diff --git a/src/main/java/com/nq/service/impl/TradingHourServiceImpl.java b/src/main/java/com/nq/service/impl/TradingHourServiceImpl.java
index 30b1cbb..1527cb9 100644
--- a/src/main/java/com/nq/service/impl/TradingHourServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/TradingHourServiceImpl.java
@@ -1,5 +1,7 @@
 package com.nq.service.impl;
 
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.nq.dao.StockMapper;
@@ -16,6 +18,7 @@
 
 import javax.annotation.Resource;
 import java.time.LocalDate;
+import java.util.Date;
 
 /**
  * @program: dabao
@@ -49,7 +52,10 @@
         StockTimeSetting stockTimeSetting = stockTimeSettingMapper.selectOne(new QueryWrapper<StockTimeSetting>().eq("accets_type",stock.getStockType()));
         if(stockSetting!= null){
             // 说明进入盘前交易或者盘后交易时间
-            if(TimeUtil.isTradingHour(stockSetting.getStartTime(),stockSetting.getEndTime())){
+            Date newDate = new Date();
+            DateTime startTime = DateUtil.parseDateTime(stockSetting.getStartTime());
+            DateTime endTime = DateUtil.parseDateTime(stockSetting.getEndTime());
+            if(newDate.after(startTime) && newDate.before(endTime)){
                 return  true;
             }
         }
diff --git a/src/main/java/com/nq/service/impl/UserBankServiceImpl.java b/src/main/java/com/nq/service/impl/UserBankServiceImpl.java
index 5ceb463..5bc772a 100644
--- a/src/main/java/com/nq/service/impl/UserBankServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserBankServiceImpl.java
@@ -1,6 +1,9 @@
 package com.nq.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.nq.common.ServerResponse;
 
 import com.nq.dao.UserBankMapper;
@@ -17,6 +20,7 @@
 import com.nq.vo.user.UserBankInfoVO;
 
 import java.util.Date;
+import java.util.List;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
@@ -26,7 +30,7 @@
 import org.springframework.stereotype.Service;
 
  @Service("iUserBankService")
- public class UserBankServiceImpl implements IUserBankService {
+ public class UserBankServiceImpl extends ServiceImpl<UserBankMapper, UserBank> implements IUserBankService  {
 
    @Resource
    UserBankMapper userBankMapper;
@@ -34,100 +38,44 @@
    @Autowired
    IUserService iUserService;
 
-   public UserBank findUserBankByUserId(Integer userId) { return this.userBankMapper.findUserBankByUserId(userId); }
-
+   @Override
    public ServerResponse addBank(UserBank bank, HttpServletRequest request) {
 
      User user = this.iUserService.getCurrentUser(request);
-     UserBank dbBank = this.userBankMapper.findUserBankByUserId(user.getId());
-     if (dbBank != null) {
+     List<UserBank> userBanks = this.userBankMapper.selectList(new LambdaQueryWrapper<UserBank>().eq(UserBank::getBankNo, bank.getBankNo()));
+     if (CollectionUtils.isNotEmpty(userBanks)) {
        return ServerResponse.createByErrorMsg("银行信息已经存在。不要再加一次",request );
      }
-     UserBank userBank = new UserBank();
-
-     userBank.setUserId(user.getId());
-
-     userBank.setBankName(bank.getBankName());
-
-     userBank.setBankNo(bank.getBankNo());
-
-     userBank.setBankAddress(bank.getBankAddress());
-
-     userBank.setBankImg(bank.getBankImg());
-
-     userBank.setBankPhone(bank.getBankPhone());
-
-     userBank.setAddTime(new Date());
-
-     int insertCount = this.userBankMapper.insert(userBank);
-
+     bank.setUserId(user.getId());
+     int insertCount = this.userBankMapper.insert(bank);
      if (insertCount > 0) {
        return ServerResponse.createBySuccess("添加银行卡成功",request );
-
      }
-
      return ServerResponse.createByErrorMsg("添加银行卡失败",request );
 
    }
 
    public ServerResponse updateBank(UserBank bank, HttpServletRequest request) {
 
-     User user = this.iUserService.getCurrentUser(request);
-
-     UserBank dbBank = this.userBankMapper.findUserBankByUserId(user.getId());
-
+     UserBank dbBank = this.userBankMapper.selectById(bank.getId());
      if (dbBank == null) {
-
        return ServerResponse.createByErrorMsg("修改失败。银行找不到",request );
-
      }
-
-     dbBank.setBankName(bank.getBankName());
-
-     dbBank.setBankNo(bank.getBankNo());
-
-     dbBank.setBankAddress(bank.getBankAddress());
-
-     dbBank.setBankImg(bank.getBankImg());
-
-     dbBank.setBankPhone(bank.getBankPhone());
-
-     int updateCount = this.userBankMapper.updateByPrimaryKeySelective(dbBank);
-
+     int updateCount = this.userBankMapper.updateByPrimaryKeySelective(bank);
      if (updateCount > 0) {
-
        return ServerResponse.createBySuccess("修改银行卡成功",request );
-
      }
-
      return ServerResponse.createByErrorMsg("修改银行卡失败",request );
    }
 
+   @Override
    public ServerResponse getBankInfo(HttpServletRequest request) {
-
      User user = this.iUserService.getCurrentUser(request);
-
-     UserBank dbBank = this.userBankMapper.findUserBankByUserId(user.getId());
-
-     if (dbBank == null) {
-
+     List<UserBank> userBanks = this.userBankMapper.selectList(new LambdaQueryWrapper<UserBank>().eq(UserBank::getUserId,user.getId()));
+     if (userBanks == null) {
        return ServerResponse.createByErrorMsg("没有添加银行信息",request );
-
      }
-
-     UserBankInfoVO userBankInfoVO = new UserBankInfoVO();
-
-     userBankInfoVO.setRealName(user.getRealName());
-
-     userBankInfoVO.setBankName(dbBank.getBankName());
-
-     userBankInfoVO.setBankImg(dbBank.getBankImg());
-
-     userBankInfoVO.setBankAddress(dbBank.getBankAddress());
-
-     userBankInfoVO.setBankNo(dbBank.getBankNo());
-
-     return ServerResponse.createBySuccess(userBankInfoVO);
+     return ServerResponse.createBySuccess(userBanks);
 
    }
 
@@ -149,6 +97,6 @@
 
    }
 
-   public ServerResponse getBank(Integer userId) { return ServerResponse.createBySuccess(this.userBankMapper.findUserBankByUserId(userId)); }
+   public ServerResponse getBank(Integer userId) { return ServerResponse.createBySuccess(this.userBankMapper.selectList(new LambdaQueryWrapper<UserBank>().eq(UserBank::getUserId,userId)));}
 
  }
diff --git a/src/main/java/com/nq/service/impl/UserPositionCheckDzServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionCheckDzServiceImpl.java
new file mode 100644
index 0000000..5afb5a1
--- /dev/null
+++ b/src/main/java/com/nq/service/impl/UserPositionCheckDzServiceImpl.java
@@ -0,0 +1,19 @@
+package com.nq.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.nq.dao.UserPendingorderMapper;
+import com.nq.dao.UserPositionCheckDzMapper;
+import com.nq.pojo.UserPendingorder;
+import com.nq.pojo.UserPositionCheckDz;
+import com.nq.service.UserPendingorderService;
+import com.nq.service.UserPositionCheckDzService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-07-02 14:25
+ **/
+@Service
+public class UserPositionCheckDzServiceImpl extends ServiceImpl<UserPositionCheckDzMapper, UserPositionCheckDz> implements UserPositionCheckDzService {
+}
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 125b73e..9eb87e6 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -1,5 +1,6 @@
 package com.nq.service.impl;
 
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.nq.dao.*;
@@ -123,6 +124,8 @@
     @Autowired
     IStockConfigServices iStockConfigServices;
 
+    @Autowired
+    UserPositionCheckDzService userPositionCheckDzService;
 
 
 
@@ -1183,7 +1186,7 @@
         if (userStockSubscribe == null) {
             return ServerResponse.createByErrorMsg("无该申购记录");
         }
-        StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>().eq("code", userStockSubscribe.getNewCode()).eq("type",userStockSubscribe.getType()));
+        StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>().eq("newlist_id", userStockSubscribe.getNewStockId()));
         if (userStockSubscribe == null) {
             return ServerResponse.createByErrorMsg("该新股不存在");
         }
@@ -1546,7 +1549,7 @@
      * @return
      */
     @Transactional
-    public ServerResponse buyDz(String stockCode, String password, Integer num, HttpServletRequest request) throws Exception {
+    public ServerResponse buyDz(Integer dzId, String password, Integer num, HttpServletRequest request) throws Exception {
         /*实名认证开关开启*/
         SiteProduct siteProduct = iSiteProductService.getProductSetting();
         User user = this.iUserService.getCurrentRefreshUser(request);
@@ -1561,8 +1564,8 @@
         if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
             return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
         }
-        StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_code", stockCode));
-        if (!Objects.equals(stockDz.getPassword(), password)) {
+        StockDz stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("id", dzId));
+        if (StringUtils.isNotEmpty(stockDz.getPassword()) && !Objects.equals(stockDz.getPassword(), password)) {
             return ServerResponse.createByErrorMsg("密码错误", request);
         }
         if (stockDz.getIsLock() != 0) {
@@ -1574,7 +1577,8 @@
         if(stockDz.getStartTime().getTime() > new Date().getTime() || stockDz.getEndTime().getTime() < new Date().getTime()){
             return ServerResponse.createByErrorMsg("不在内幕交易时间之内", request);
         }
-        BigDecimal nowPrice = priceServices.getNowPrice(stockCode).multiply(stockDz.getDiscount());
+//        BigDecimal nowPrice = priceServices.getNowPrice(stockDz.getStockCode()).multiply(stockDz.getDiscount());
+        BigDecimal nowPrice = stockDz.getNowPrice();
 
         if (nowPrice.compareTo(new BigDecimal("0")) == 0) {
             return ServerResponse.createByErrorMsg("股票价格0,请重试", request);
@@ -1589,7 +1593,23 @@
             return ServerResponse.createByErrorMsg("订单失败,配资不足", request);
         }
 
+        //判断审核开关
+        if(stockDz.getSwitchType() == 1){
+            UserPosition userPosition = getUserPosition(num, user, stockDz, nowPrice, stock, buyAmt);
+            UserPositionCheckDz userPositionCheckDz = Convert.convert(UserPositionCheckDz.class, userPosition);
+            userPositionCheckDz.setDzId(dzId);
+            userPositionCheckDzService.save(userPositionCheckDz);
+            return ServerResponse.createBySuccess("购买成功,等待审核", request);
+        }
+
         // 创建UserPosition对象
+        UserPosition userPosition = getUserPosition(num, user, stockDz, nowPrice, stock, buyAmt);
+        userPositionMapper.insert(userPosition);
+        userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
+        return ServerResponse.createBySuccess("购买成功", request);
+    }
+
+    private UserPosition getUserPosition(Integer num, User user, StockDz stockDz, BigDecimal nowPrice, Stock stock, BigDecimal buyAmt) {
         UserPosition userPosition = new UserPosition();
         userPosition.setPositionType(3);
         userPosition.setPositionSn(KeyUtils.getUniqueKey());
@@ -1618,11 +1638,8 @@
         userPosition.setAllProfitAndLose(all_profit_and_lose);
         userPosition.setOrderStayDays(Integer.valueOf(0));
         userPosition.setOrderStayFee(new BigDecimal("0"));
-
         userPosition.setOrderSpread(BigDecimal.ZERO);
-        userPositionMapper.insert(userPosition);
-        userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
-        return ServerResponse.createBySuccess("购买成功", request);
+        return userPosition;
     }
 
     @Override
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 0e639bf..2bd9c4c 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -1,5 +1,6 @@
 package com.nq.service.impl;
 
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
@@ -29,18 +30,21 @@
 import com.nq.vo.position.PositionProfitVO;
 import com.nq.vo.position.PositionVO;
 import com.nq.vo.position.UserPositionVO;
+import com.nq.vo.stock.StockAdminListVO;
 import com.nq.vo.stock.StockListVO;
 import com.nq.vo.user.UserInfoVO;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
+import com.nq.vo.user.UserOut;
+import org.apache.commons.lang3.Conversion;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -127,6 +131,9 @@
 
     @Autowired
     IPriceServices priceServices;
+
+    @Autowired
+    IUserService iUserService;
 
 
     public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, HttpServletRequest request) {
@@ -798,15 +805,44 @@
     }
 
 
-    public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, HttpServletRequest request) {
+    public ServerResponse listByAdmin(String realName, String phone, Integer agentId, Integer accountType, int pageNum, int pageSize, Integer isLock, Integer isLogin, String regTime, Integer isActive, HttpServletRequest request) throws ParseException {
         PageHelper.startPage(pageNum, pageSize);
+        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd");
+        String formattedDateString = null;
+        if (StringUtils.isNotEmpty(regTime)) {
+            formattedDateString = outputFormat.format(inputFormat.parse(regTime));
+        }
+        List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType, isLock, isLogin, formattedDateString, isActive);
+        List<UserOut> userOuts = new ArrayList<>();
 
-        List<User> users = this.userMapper.listByAdmin(realName, phone, agentId, accountType);
+        // 获取用户资产信息并构建返回结果
+        Map<Integer, UserOut> userOutMap = new HashMap<>();
+        for (User user : users) {
+            ServerResponse money = iUserService.getMoney(user.getId());
+            List<RUserAssets> rUserAssetsList = (List<RUserAssets>) money.getData();
+            RUserAssets rUserAssets = rUserAssetsList.stream()
+                    .filter(stock -> "IN".equals(stock.getAccectType()))
+                    .findFirst()
+                    .orElse(null);
 
-        PageInfo pageInfo = new PageInfo(users);
+            UserOut userOut = Convert.convert(UserOut.class, user);
+            if (rUserAssets != null) {
+                userOut.setTotalMoney(rUserAssets.getTotalMoney().equals("0E-8") ? "0" : rUserAssets.getTotalMoney());
+                userOut.setFreezeMoney(rUserAssets.getFreezeMoney().equals("0E-8") ? "0" : rUserAssets.getFreezeMoney());
+                userOut.setAvailableBalance(rUserAssets.getAvailableBalance().equals("0E-8") ? "0" : rUserAssets.getAvailableBalance());
+            }
+
+            userOutMap.put(user.getId(), userOut);
+            userOuts.add(userOut);
+        }
+
+        PageInfo pageInfo = new PageInfo(userOuts);
 
         return ServerResponse.createBySuccess(pageInfo);
     }
+
+
 
 
     public ServerResponse findByUserId(Integer userId) {
@@ -1048,14 +1084,6 @@
         BigDecimal futuresForceLine = futuresForcePercent.multiply(futuresPositionVO.getAllFuturesDepositAmt());
 
         agentUserListVO.setFuturesForceLine(futuresForceLine);
-
-
-        UserBank userBank = this.iUserBankService.findUserBankByUserId(user.getId());
-        if (userBank != null) {
-            agentUserListVO.setBankName(userBank.getBankName());
-            agentUserListVO.setBankNo(userBank.getBankNo());
-            agentUserListVO.setBankAddress(userBank.getBankAddress());
-        }
 
         return agentUserListVO;
     }
diff --git a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
index 7469774..538a1b0 100644
--- a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -1,6 +1,7 @@
 package com.nq.service.impl;
 
 
+import cn.hutool.core.convert.Convert;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -19,6 +20,7 @@
 import com.nq.utils.redis.JsonUtil;
 import com.nq.utils.redis.RedisShardedPoolUtils;
 import com.nq.utils.stock.BuyAndSellUtils;
+import com.nq.vo.stock.UserStockSubscribeAddIn;
 import com.sun.org.apache.bcel.internal.generic.RETURN;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -77,7 +79,7 @@
      */
     @Override
     @Transactional
-    public ServerResponse insert(UserStockSubscribe model, HttpServletRequest request) throws Exception {
+    public ServerResponse insert(UserStockSubscribeAddIn model, HttpServletRequest request) throws Exception {
         int ret = 0;
         if (model == null) {
             return ServerResponse.createByErrorMsg("参数错误",request);
@@ -86,7 +88,11 @@
         UserAssets userAssets =   iUserAssetsServices.assetsByTypeAndUserId("IN",user.getId());
         if (model.getNewCode() != null) {
             StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>()
-                    .eq("code", model.getNewCode()).eq("type",model.getType()));
+                    .eq("newlist_id", model.getNewlistId()));
+            //判断购买新股需不需要密钥
+            if(StringUtils.isNotEmpty(stockSubscribe.getPassword()) && !stockSubscribe.getPassword().equals(model.getPassword())){
+                return ServerResponse.createByErrorMsg("密钥输入错误",request);
+            }
             //实名认证开关
             SiteProduct siteProduct = iSiteProductService.getProductSetting();
             if (siteProduct.getRealNameDisplay() && user.getIsActive() != 2) {
@@ -99,42 +105,58 @@
                 return ServerResponse.createByErrorMsg("不在认缴或配售时间之内",request);
             }
 
-            //重复申购限制
-            UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.selectOne(new QueryWrapper<UserStockSubscribe>().eq(
-                    "new_code", model.getNewCode()).eq("user_id", user.getId()).eq("type",model.getType()));
-            if (userStockSubscribe != null) {
-                return ServerResponse.createByErrorMsg("请勿重复申请",request);
-            }
+//            //重复申购限制
+//            UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.selectOne(new QueryWrapper<UserStockSubscribe>().eq(
+//                    "new_code", model.getNewCode()).eq("user_id", user.getId()).eq("type",model.getType()));
+//            if (userStockSubscribe != null) {
+//                return ServerResponse.createByErrorMsg("请勿重复申请",request);
+//            }
             if (siteProduct.getRealNameDisplay() && user.getIsLock().intValue() == 1) {
                 return ServerResponse.createByErrorMsg("订单失败,帐户已被锁定",request);
             }
             if (stockSubscribe == null) {
                 return ServerResponse.createByErrorMsg("新的股票代码不存在",request);
             }
-            if (model.getApplyNums() == null || model.getApplyNums() > stockSubscribe.getOrderNumber()|| model.getApplyNums() < 500) {
-                return ServerResponse.createByErrorMsg("最小起订量是500,最大值"
-                        + stockSubscribe.getOrderNumber(),request);
+
+            if ( model.getApplyNums() == null){
+                // 申请数量为空时返回错误信息
+                return ServerResponse.createByErrorMsg("申请数量不能为空", request);
             }
+
+            if (model.getApplyNums() > stockSubscribe.getOrderNumber()){
+                // 申请数量大于订单数量时返回错误信息
+                return ServerResponse.createByErrorMsg("最多可申购:" + stockSubscribe.getOrderNumber(), request);
+            }
+
             if(stockSubscribe.getType() == 1){
                 model.setUserId(user.getId());
                 model.setNewName(stockSubscribe.getName());
                 model.setAgentId(user.getAgentId());
                 model.setAgentName(user.getAgentName());
                 model.setPhone(user.getPhone());
-                model.setBuyPrice(stockSubscribe.getPrice());
-                model.setBond(new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()));
+                model.setBuyPrice(stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice());
+                model.setBond(new BigDecimal(model.getApplyNums()).multiply((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice())));
                 model.setRealName(Objects.equals(user.getRealName(), "")||user.getRealName()==null ?"模拟用户无实名":user.getRealName());
                 model.setAddTime(new Date());
                 model.setOrderNo(KeyUtils.getUniqueKey());
                 model.setType(stockSubscribe.getType());
-                ret = userStockSubscribeMapper.insert(model);
+                UserStockSubscribe userStockSubscribe = Convert.convert(UserStockSubscribe.class, model);
+                userStockSubscribe.setNewStockId(stockSubscribe.getNewlistId());
+                ret = userStockSubscribeMapper.insert(userStockSubscribe);
                 if (ret > 0) {
                     return ServerResponse.createBySuccessMsg("申购成功",request);
                 } else {
                     return ServerResponse.createByErrorMsg("申购失败",request);
                 }
             }else{
-               BigDecimal bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
+
+               BigDecimal bound;
+               if(stockSubscribe.getMinPrice() != null || stockSubscribe.getMinPrice().compareTo(BigDecimal.ZERO)<0){
+                   bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getMinPrice());
+               }else{
+                   bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
+               }
+
                BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.IN.getCode(), user.getId());
                if(useEnaAmount.compareTo(bound)<0){
                    return ServerResponse.createByErrorMsg("余额不足,配售失败",request);
@@ -144,14 +166,16 @@
                 model.setAgentId(user.getAgentId());
                 model.setAgentName(user.getAgentName());
                 model.setPhone(user.getPhone());
-                model.setBuyPrice(stockSubscribe.getPrice());
-                model.setBond(new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()));
+                model.setBuyPrice(stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice());
+                model.setBond(new BigDecimal(model.getApplyNums()).multiply((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice())));
                 model.setRealName(Objects.equals(user.getRealName(), "")||user.getRealName()==null ?"模拟用户无实名":user.getRealName());
                 model.setAddTime(new Date());
                 model.setOrderNo(KeyUtils.getUniqueKey());
                 model.setType(stockSubscribe.getType());
                 model.setDbMoney(BigDecimal.ZERO);
-                ret = userStockSubscribeMapper.insert(model);
+                UserStockSubscribe userStockSubscribe = Convert.convert(UserStockSubscribe.class, model);
+                userStockSubscribe.setNewStockId(stockSubscribe.getNewlistId());
+                ret = userStockSubscribeMapper.insert(userStockSubscribe);
                 iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"","");
                 if (ret > 0) {
                     return ServerResponse.createBySuccessMsg("配售成功",request);
@@ -187,13 +211,13 @@
                 return ServerResponse.createByErrorMsg("不能更改申购状态");
             }
             StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe())
-                    .eq("code", userStockSubscribe.getNewCode()).eq("type",userStockSubscribe.getType()));
+                    .eq("newlist_id", userStockSubscribe.getNewStockId()));
             if((model.getStatus() == 3 && model.getApplyNumber() == null) || (model.getStatus() == 3 && model.getApplyNumber() == 0) ){
                 return ServerResponse.createByErrorMsg("中签数量不能小于0");
             }
             if (model.getStatus() == 3 && model.getApplyNumber() != null){
                 if(stockSubscribe.getType() == 1){
-                    model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber())));
+                    model.setBond((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNumber())));
                     model.setDbMoney(model.getDbMoney());
                     //客户中签直接扣除客户账户可用资金
                     UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", userStockSubscribe.getUserId());
@@ -216,10 +240,10 @@
                         return  ServerResponse.createByErrorMsg("配置中签数量不能超过申请数量",request);
                     }
                     BigDecimal cCount = new BigDecimal(model.getApplyNums()-model.getApplyNumber());
-                    BigDecimal tMoney = stockSubscribe.getPrice().multiply(cCount);
+                    BigDecimal tMoney = ((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice())).multiply(cCount);
                     iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(),
                             EUserAssets.TOP_UP,tMoney,"","");
-                    model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber())));
+                    model.setBond((stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice()).multiply(BigDecimal.valueOf(model.getApplyNumber())));
                     model.setDbMoney(BigDecimal.ZERO);
                     model.setStatus(4);
                     ret = userStockSubscribeMapper.update1(model);
@@ -286,13 +310,13 @@
                 model.setAgentId(user.getAgentId());
                 model.setAgentName(user.getAgentName());
                 StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe())
-                        .eq("code", model.getNewCode()));
+                        .eq("newlist_id", model.getNewStockId()));
                 if (stockSubscribe == null) {
                     return ServerResponse.createByErrorMsg("Failed. Ipo information does not exist");
                 }
 
                 model.setNewName(stockSubscribe.getName());
-                model.setBuyPrice(stockSubscribe.getPrice());
+                model.setBuyPrice(stockSubscribe.getMinPrice() != null ? stockSubscribe.getMinPrice() : stockSubscribe.getPrice());
                 if (model.getApplyNums() > stockSubscribe.getOrderNumber() || model.getApplyNumber() > stockSubscribe.getOrderNumber()) {
                     return ServerResponse.createByErrorMsg("The number of applications or the number of wins is the maximum" + stockSubscribe.getOrderNumber());
                 }
@@ -319,7 +343,7 @@
         if(model!=null){
             //所有人发站内信
             if(model.getUserId() == 0){
-                List<User> users = this.userMapper.listByAdmin(null, null, null, null);
+                List<User> users = this.userMapper.listByAdmin(null, null, null, null,null,null,null,null);
                 for(int k=0;k<users.size();k++){
                     User user = users.get(k);
                     SiteMessage siteMessage = new SiteMessage();
@@ -384,8 +408,7 @@
             List<UserStockSubscribe> list = new ArrayList<>();
             for (UserStockSubscribe userStockSubscribe1 : userStockSubscribe) {
                 StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe())
-                        .eq("code", userStockSubscribe1.getNewCode())
-                        .eq("type",userStockSubscribe1.getType()));
+                        .eq("newlist_id", userStockSubscribe1.getNewStockId()));
                 if (stockSubscribe != null) {
                     list.add(userStockSubscribe1);
                 }
@@ -410,8 +433,6 @@
             }
             UserStockSubscribe userStockSubscribe = userStockSubscribeMapper.load(id);
             if (userStockSubscribe != null && userStockSubscribe.getUserId().equals(user.getId())) {
-                StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<>(new StockSubscribe())
-                        .eq("code", userStockSubscribe.getNewCode()));
                 if(userStockSubscribe.getType()== 2 ){
                     return ServerResponse.createByErrorMsg("未中签,无需支付",request);
                 }
diff --git a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
index db8c88e..ee3a466 100644
--- a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -92,7 +92,7 @@
     UserAssetsMapper userAssetsMapper;
 
     @Transactional
-    public ServerResponse outMoney(String amt, String with_Pwd,String accsetType,HttpServletRequest request) throws Exception {
+    public ServerResponse outMoney(String amt, String with_Pwd,String accsetType,String bankId,HttpServletRequest request) throws Exception {
         if (StringUtils.isBlank(amt)) {
             return ServerResponse.createByErrorMsg("The parameter cannot be null");
         }
@@ -111,9 +111,9 @@
             if (user.getIsActive() != 2) {
                 return ServerResponse.createByErrorMsg("未实名认证",request);
             }
-            UserBank userBank = this.iUserBankService.findUserBankByUserId(user.getId());
+            UserBank userBank = this.userBankMapper.selectById(bankId);
             if (userBank == null) {
-                return ServerResponse.createByErrorMsg("未绑定银行卡",request);
+                return ServerResponse.createByErrorMsg("银行卡不存在",request);
             }
             if (user.getAccountType().intValue() == 1) {
                 return ServerResponse.createByErrorMsg("模拟用户无法提取资金",request);
@@ -347,20 +347,6 @@
                 throw new Exception("修改用户资金出错,抛出异常");
             }
             userWithdraw.setWithMsg(authMsg);
-        }else if(state == 1){
-            // 发起第三方提现
-            BigDecimal bgAmount = userWithdraw.getWithAmt();
-            if(siteSetting.getWithdraw().equals("Top1")){
-                withdrawMethod1(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId()));
-            } else if (siteSetting.getWithdraw().equals("Top2")) {
-                withdrawMethod2(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId()));
-            }else if(siteSetting.getWithdraw().equals("Top3")){
-                withdrawMethod3(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId()));
-            }else{
-                withdrawMethod4(userWithdraw.getId()+"",bgAmount.toString(), userMapper.selectById(userWithdraw.getUserId()));
-            }
-
-
         }
         userWithdraw.setWithStatus(state);
         userWithdraw.setTransTime(new Date());
@@ -371,115 +357,6 @@
         return ServerResponse.createByErrorMsg("操作失败!");
 
     }
-
-
-
-    public int withdrawMethod1(String ordersn, String payAmt, User user ) {
-        UserBank userBank =  userBankMapper.findUserBankByUserId(user.getId());
-        Map<String,String> map = new HashedMap();
-        map.put("mch_id",PayUtil.MCH_ID_TOP1);
-        map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify.do");
-        map.put("mch_transferId",ordersn);
-        map.put("transfer_amount",payAmt);
-        map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT));
-        map.put("bank_code",userBank.getBankImg());
-        map.put("receive_name",user.getRealName());
-        map.put("receive_account",userBank.getBankNo());
-        map.put("remark",userBank.getBankAddress());
-        String signStr = SignUtil.sortData(map);
-        map.put("sign_type","MD5");
-        try {
-            map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP1));
-            String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP1, map, "utf-8");
-            com.alibaba.fastjson.JSONObject  object = com.alibaba.fastjson.JSONObject.parseObject(reponse);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return -1;
-    }
-
-    public int withdrawMethod2(String ordersn, String payAmt, User user ) {
-        UserBank userBank =  userBankMapper.findUserBankByUserId(user.getId());
-        Map<String,String> map = new HashedMap();
-        map.put("mch_id",PayUtil.MCH_ID_TOP2);
-        map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify2.do");
-        map.put("mch_transferId",ordersn);
-        map.put("transfer_amount",payAmt);
-        map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT));
-        map.put("bank_code",userBank.getBankImg());
-        map.put("receive_name",user.getRealName());
-        map.put("receive_account",userBank.getBankNo());
-        map.put("remark",userBank.getBankAddress());
-        String signStr = SignUtil.sortData(map);
-        log.error("加密前排序字符 {}", signStr);
-        map.put("sign_type","MD5");
-        try {
-            map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP2));
-            log.info("支付通道2 代付的参数 {}",new Gson().toJson(map));
-            String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP2, map, "utf-8");
-            log.info("支付通道2 审核返回的 {}",reponse);
-            com.alibaba.fastjson.JSONObject  object = com.alibaba.fastjson.JSONObject.parseObject(reponse);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return -1;
-    }
-
-
-    public int withdrawMethod3(String ordersn, String payAmt, User user ) {
-        UserBank userBank =  userBankMapper.findUserBankByUserId(user.getId());
-        Map<String,String> map = new HashedMap();
-        map.put("mch_id",PayUtil.MCH_ID_TOP3);
-        map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify3.do");
-        map.put("mch_transferId",ordersn);
-        map.put("transfer_amount",payAmt);
-        map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT));
-        map.put("bank_code",userBank.getBankImg());
-        map.put("receive_name",user.getRealName());
-        map.put("receive_account",userBank.getBankNo());
-        map.put("remark",userBank.getBankAddress());
-        String signStr = SignUtil.sortData(map);
-        log.error("加密前排序字符 {}", signStr);
-        map.put("sign_type","MD5");
-        try {
-            map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP3));
-            log.info("支付通道3 代付的参数 {}",new Gson().toJson(map));
-            String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP3, map, "utf-8");
-            log.info("支付通道3 审核返回的 {}",reponse);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return -1;
-    }
-
-
-    public int withdrawMethod4(String ordersn, String payAmt, User user ) {
-        UserBank userBank =  userBankMapper.findUserBankByUserId(user.getId());
-        Map<String,String> map = new HashedMap();
-        map.put("mch_id",PayUtil.MCH_ID_TOP4);
-        map.put("back_url","http://www.jumptalk.net:8091/api/pay/withdrawNotify4.do");
-        map.put("mch_transferId",ordersn);
-        map.put("transfer_amount",payAmt);
-        map.put("apply_date", DateTimeUtil.getCurrentDate(STANDARD_FORMAT));
-        map.put("bank_code",userBank.getBankImg());
-        map.put("receive_name",user.getRealName());
-        map.put("receive_account",userBank.getBankNo());
-        map.put("remark",userBank.getBankAddress());
-        String signStr = SignUtil.sortData(map);
-        map.put("sign_type","MD5");
-        try {
-            map.put("sign", SignAPI.sign(signStr,PayUtil.DF_TOKEN_TOP1));
-            String reponse = HttpClientUtil.doPost(PayUtil.PAY_TRANSFER_ORDER_TOP1, map, "utf-8");
-            log.info("支付通道4 审核返回的 {}",reponse);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        return -1;
-    }
-
-
-
-
 
     public int deleteByUserId(Integer userId) {
         return this.userWithdrawMapper.deleteByUserId(userId);
diff --git a/src/main/java/com/nq/utils/stock/sina/StockApi.java b/src/main/java/com/nq/utils/stock/sina/StockApi.java
index f9f6dd5..76fb377 100644
--- a/src/main/java/com/nq/utils/stock/sina/StockApi.java
+++ b/src/main/java/com/nq/utils/stock/sina/StockApi.java
@@ -56,7 +56,7 @@
                 stockListVO.setName(stock.getStockName());
                 stockListVO.setCode(stock.getStockCode());
                 stockListVO.setSpell(stock.getStockSpell());
-                stockListVO.setGid(stock.getStockGid().toUpperCase());
+                stockListVO.setGid(stock.getStockGid());
                 stockListVO.setStock_plate(stock.getStockPlate());
                 stockListVO.setStock_type(stock.getStockType());
                 stockListVOs.add(stockListVO);
diff --git a/src/main/java/com/nq/vo/stock/PageQuery.java b/src/main/java/com/nq/vo/stock/PageQuery.java
new file mode 100644
index 0000000..b5b0f92
--- /dev/null
+++ b/src/main/java/com/nq/vo/stock/PageQuery.java
@@ -0,0 +1,56 @@
+package com.nq.vo.stock;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.metadata.OrderItem;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class PageQuery {
+    private Long pageNo;
+    private Long pageSize;
+    private String sortBy;
+    private Boolean isAsc;
+
+    public <T> Page<T> toMpPage(OrderItem ... items){
+        // 1.分页条件
+        Page<T> page = Page.of(pageNo, pageSize);
+        // 2.排序条件
+        if(StrUtil.isNotBlank(sortBy)){
+            // 不为空
+            OrderItem orderItem=new OrderItem();
+            //排序方式
+            orderItem.setAsc(isAsc);
+            //排序字段
+            orderItem.setColumn(sortBy);
+            page.addOrder(orderItem);
+        }else if(items != null){
+            // 为空,默认排序
+            page.addOrder(items);
+        }
+        return page;
+    }
+
+    public <T> Page<T> toMpPage(String defaultSortBy, boolean isAsc){
+        OrderItem orderItem=new OrderItem();
+        //排序方式
+        orderItem.setAsc(isAsc);
+        //排序字段
+        orderItem.setColumn(defaultSortBy);
+        return this.toMpPage(orderItem);
+    }
+
+    public <T> Page<T> toMpPageDefaultSortByCreateTimeDesc() {
+        return toMpPage("create_time", false);
+    }
+
+    public <T> Page<T> toMpPageDefaultSortByUpdateTimeDesc() {
+        return toMpPage("update_time", false);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/nq/vo/stock/StockListVO.java b/src/main/java/com/nq/vo/stock/StockListVO.java
index d7803c1..0402052 100644
--- a/src/main/java/com/nq/vo/stock/StockListVO.java
+++ b/src/main/java/com/nq/vo/stock/StockListVO.java
@@ -9,6 +9,8 @@
 
 public class StockListVO {
 
+    private String id;
+
     private String name;
 
     private String code;
diff --git a/src/main/java/com/nq/vo/stock/UserStockSubscribeAddIn.java b/src/main/java/com/nq/vo/stock/UserStockSubscribeAddIn.java
new file mode 100644
index 0000000..cbbea24
--- /dev/null
+++ b/src/main/java/com/nq/vo/stock/UserStockSubscribeAddIn.java
@@ -0,0 +1,123 @@
+package com.nq.vo.stock;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-07-02 17:50
+ **/
+@Data
+public class UserStockSubscribeAddIn {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键id
+     */
+    private Integer id;
+    /**
+     *訂單編號
+     */
+    private String orderNo;
+    /**
+     * 用户id
+     */
+    private Integer userId;
+
+    /**
+     * 用户真实姓名
+     */
+    private String realName;
+
+    /**
+     * 用户手机号
+     */
+    private String phone;
+
+    /**
+     * 代理id
+     */
+    private Integer agentId;
+
+    /**
+     * 代理姓名
+     */
+    private String agentName;
+
+
+    /**
+     * 申购股票代码
+     */
+    private String newCode;
+    /**
+     * 申购股票名称
+     */
+    private String newName;
+    /**
+     * 保证金
+     *
+     */
+    private BigDecimal bond;
+    /**
+     * 发行价格
+     *
+     */
+    private BigDecimal buyPrice;
+    /**
+     * 申购数量
+     *
+     */
+    private Integer applyNums;
+    /**
+     * 中签数量
+     *
+     */
+
+    private Integer applyNumber;
+    private Integer type;
+    /**
+     * 申购状态
+     *状态:1、已申购,2、未中签,3、已中签,4、已缴纳 5.已转持仓
+     */
+    private Integer status;
+    /**
+     * 添加时间
+     */
+    private Date addTime;
+
+    /**
+     * 提交时间
+     */
+    private Date submitTime;
+
+    /**
+     * 中签审核时间
+     */
+    private Date endTime;
+    /**
+     * 双融确定时间
+     */
+    private Date fixTime;
+    /**
+     * 备注
+     */
+    private String remarks;
+
+
+
+    private BigDecimal dbMoney;
+
+
+    private String password;
+
+    @TableField(exist = false)
+    private String newlistId;
+}
diff --git a/src/main/java/com/nq/vo/user/UserOut.java b/src/main/java/com/nq/vo/user/UserOut.java
new file mode 100644
index 0000000..857e87a
--- /dev/null
+++ b/src/main/java/com/nq/vo/user/UserOut.java
@@ -0,0 +1,29 @@
+package com.nq.vo.user;
+
+import com.nq.pojo.User;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-07-05 14:03
+ **/
+@Data
+public class UserOut extends User {
+    /**
+     *  总资产
+     * */
+    private String totalMoney;
+    /**
+     *  总可用余额
+     * */
+    private String availableBalance;
+
+    /**
+     *  总冻结资产
+     * */
+    private String freezeMoney;
+
+}
diff --git a/src/main/java/com/nq/vo/user/UserQueryParams.java b/src/main/java/com/nq/vo/user/UserQueryParams.java
new file mode 100644
index 0000000..d0c7124
--- /dev/null
+++ b/src/main/java/com/nq/vo/user/UserQueryParams.java
@@ -0,0 +1,27 @@
+package com.nq.vo.user;
+
+import lombok.Data;
+
+import java.sql.Date;
+
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-07-05 11:43
+ **/
+@Data
+public class UserQueryParams {
+
+    private String realName;
+    private String phone;
+    private Integer agentId;
+    private Integer accountType;
+    private Integer isLock;
+    private Integer isLogin;
+    private String regTime;
+    private Integer isActive;
+    private int pageNum = 1;
+    private int pageSize = 10;
+
+}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 2781616..c7afa34 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.dfddgj346.xyz/
+ftp.server.http.prefix=https://img.pentagon-member.com/
 
 redis1.ip=localhost
 redis1.port=6379
diff --git a/src/main/resources/mapper/StockDzMapper.xml b/src/main/resources/mapper/StockDzMapper.xml
index 9433454..e96c045 100644
--- a/src/main/resources/mapper/StockDzMapper.xml
+++ b/src/main/resources/mapper/StockDzMapper.xml
@@ -32,7 +32,7 @@
     </sql>
     <select id="findStockListByKeyWords" resultMap="BaseResultMap" parameterType="map">
         SELECT
-        <include refid="Base_Column_List" />
+        *
         from stock_dz
         <where>
             <if test="keyWords != null and keyWords != '' ">
diff --git a/src/main/resources/mapper/StockMapper.xml b/src/main/resources/mapper/StockMapper.xml
index dea23bb..ecf4df2 100644
--- a/src/main/resources/mapper/StockMapper.xml
+++ b/src/main/resources/mapper/StockMapper.xml
@@ -280,6 +280,9 @@
       <if test="stockType != null and stockType != '' ">
         and stock_type = #{stockType}
       </if>
+      <if test="stockGid != null and stockGid != '' ">
+        and stock_gid = #{stockGid}
+      </if>
     </where>
   </select>
 
@@ -329,27 +332,26 @@
     </if>
   </select>
 
-  <select id="findStockTypeDz" resultMap="BaseResultMap" parameterType="map">
-    select
-    <include refid="Base_Column_List"/>
-    FROM stock
+  <select id="findStockTypeDz" resultType="com.nq.pojo.StockDz" parameterType="map">
+    SELECT
+    *
+    FROM stock_dz
 
-    where stock_type = #{stockType}
+    WHERE start_time &lt; #{formatDate} AND end_time &gt; #{formatDate}
 
     <if test="keyWords != null and keyWords != '' ">
-      and (stock_spell like concat('%',#{keyWords},'%')  or stock_name like concat('%',#{keyWords},'%')  )
+      AND (stock_spell LIKE #{keyWords} OR stock_name LIKE #{keyWords})
     </if>
 
-    and  stock_code in(select stock_code from stock_dz)
-
-    <if test="orderBy != null and orderBy == 'desc'" >
-      order by  increase_ratio desc
+    <if test="orderBy != null">
+      ORDER BY  increase_ratio
+      <if test="orderBy == 'desc'">
+        DESC
+      </if>
+      <if test="orderBy == 'asc'">
+        ASC
+      </if>
     </if>
-    <if test="orderBy != null and orderBy == 'asc'" >
-      order by  increase_ratio asc
-    </if>
-
-
   </select>
 
 
diff --git a/src/main/resources/mapper/UserBankMapper.xml b/src/main/resources/mapper/UserBankMapper.xml
index f1e119b..2ff1458 100644
--- a/src/main/resources/mapper/UserBankMapper.xml
+++ b/src/main/resources/mapper/UserBankMapper.xml
@@ -131,12 +131,11 @@
 
 
 
-  <select id="findUserBankByUserId" parameterType="integer" resultMap="BaseResultMap">
+  <select id="findUserBankByUserId" parameterType="integer" resultType="com.nq.pojo.UserBank">
     SELECT
-    <include refid="Base_Column_List"/>
+    *
     FROM user_bank
     WHERE user_id = #{userId}
-    limit 1
   </select>
 
 
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index 25e3a6a..0211f5b 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -84,7 +84,7 @@
 
     <select id="listByAdmin" resultMap="BaseResultMap" parameterType="map">
         SELECT
-        <include refid="Base_Column_List"/>
+        *
         FROM user
         <where>
             <if test="searchId != null ">
@@ -99,6 +99,18 @@
             <if test="accountType != null ">
                 and account_type = #{accountType}
             </if>
+            <if test="isLock != null ">
+                and is_lock = #{isLock}
+            </if>
+            <if test="isLogin != null ">
+                and is_login = #{isLogin}
+            </if>
+            <if test="regTime != null and regTime != ''">
+                and  DATE_FORMAT(reg_time, '%Y-%m-%d') = #{regTime}
+            </if>
+            <if test="isActive != null ">
+                and is_active = #{isActive}
+            </if>
         </where>
         ORDER BY id DESC
     </select>

--
Gitblit v1.9.3