From b42c0777927e79bc77996b508a534ee4e56fd4c2 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 05 Jun 2026 23:42:16 +0800
Subject: [PATCH] 1

---
 trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java                 |   15 +++++++
 trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java                           |   12 +++---
 trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java |    7 ++-
 trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java                          |    9 ++++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java               |    7 ++-
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java               |    4 ++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java                         |    7 ++-
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java                     |    4 ++
 trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java      |    5 +-
 9 files changed, 53 insertions(+), 17 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
index d47ef0a..f4d6a53 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiBankCardController.java
@@ -263,6 +263,9 @@
         if (!party.isEnabled()) {
             throw new YamiShopBindException("用户已锁定");
         }
+        if ("recharge".equals(direction)) {
+            realNameAuthRecordService.requireApproved(party, false);
+        }
         // 手续费
         double fee = 0;
         if ("withdraw".equals(direction)) {
@@ -293,8 +296,8 @@
             if (party_kyc==null){
                 party_kyc=new RealNameAuthRecord();
             }
-            if (!(party_kyc.getStatus() == 2) && "true".equals(this.sysparaService.find("withdraw_by_kyc").getSvalue())) {
-                throw new YamiShopBindException("未实名认证,无提现权限");
+            if ("true".equals(this.sysparaService.find("withdraw_by_kyc").getSvalue())) {
+                realNameAuthRecordService.requireApproved(party, false);
             }
             HighLevelAuthRecord party_kycHighLevel = highLevelAuthRecordService.findByUserId(partyId);
             if (party_kycHighLevel==null){
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
index b8c5650..6194239 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiContractApplyOrderController.java
@@ -22,6 +22,7 @@
 import com.yami.trading.common.util.ThreadUtils;
 import com.yami.trading.security.common.util.SecurityUtils;
 import com.yami.trading.service.MarketOpenChecker;
+import com.yami.trading.service.RealNameAuthRecordService;
 import com.yami.trading.service.SessionTokenService;
 import com.yami.trading.service.WalletService;
 import com.yami.trading.service.contract.ContractApplyOrderService;
@@ -96,6 +97,8 @@
     private SessionTokenService sessionTokenService;
     @Autowired
     TipService tipService;
+    @Autowired
+    private RealNameAuthRecordService realNameAuthRecordService;
 //    @Autowired
 //    private ExchangeRateService exchangeRateService;
 
@@ -228,6 +231,7 @@
                 throw new YamiShopBindException("用户已锁定");
             }
             validateTradePermission(user);
+            realNameAuthRecordService.requireApproved(user, true);
 
             Syspara syspara = sysparaService.find("stop_user_internet");
             String stopUserInternet = syspara.getSvalue();
@@ -583,9 +587,6 @@
         // 模拟账户不做二步校验限制
         if (user.getAccountType() != null && user.getAccountType() == 1) {
             return;
-        }
-        if (!user.isGoogleAuthBind() || StringUtils.isEmptyString(user.getSafePassword())) {
-            throw new YamiShopBindException("请先完成两步认证并设置资金密码后再交易");
         }
     }
 }
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
index 90e3dd6..29186e4 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiFuturesOrderController.java
@@ -19,6 +19,7 @@
 import com.yami.trading.common.util.ThreadUtils;
 import com.yami.trading.security.common.util.SecurityUtils;
 import com.yami.trading.service.MarketOpenChecker;
+import com.yami.trading.service.RealNameAuthRecordService;
 import com.yami.trading.service.SessionTokenService;
 import com.yami.trading.service.WalletService;
 import com.yami.trading.service.future.FuturesOrderService;
@@ -72,6 +73,8 @@
     SysparaService sysparaService;
     @Autowired
     TipService tipService;
+    @Autowired
+    RealNameAuthRecordService realNameAuthRecordService;
 //    @Autowired
 //    private ExchangeRateService exchangeRateService;
 
@@ -170,6 +173,7 @@
             if (!party.isEnabled()) {
                 throw new YamiShopBindException("用户已锁定");
             }
+            realNameAuthRecordService.requireApproved(party, true);
             if (null == object || !party.getUserId().equals((String) object)) {
                 throw new BusinessException("请稍后再试");
             }
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
index 44a6930..6279980 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiRechargeBlockchainController.java
@@ -9,6 +9,7 @@
 import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.common.util.StringUtils;
 import com.yami.trading.security.common.util.SecurityUtils;
+import com.yami.trading.service.RealNameAuthRecordService;
 import com.yami.trading.service.RechargeBlockchainOrderService;
 import com.yami.trading.service.SessionTokenService;
 import com.yami.trading.service.c2c.C2cOrderService;
@@ -48,6 +49,8 @@
     WalletLogService walletLogService;
     @Autowired
     C2cOrderService c2cOrderService;
+    @Autowired
+    RealNameAuthRecordService realNameAuthRecordService;
 
     /**
      * 首次进入页面,传递session_token
@@ -104,6 +107,7 @@
         if (Constants.SECURITY_ROLE_TEST.equals(party.getRoleName())) {
             throw new YamiShopBindException("无权限");
         }
+        realNameAuthRecordService.requireApproved(party, false);
         // 充值申请中的订单是否只能唯一:1唯一,2不限制
         double recharge_only_one = Double.valueOf(sysparaService.find("recharge_only_one").getSvalue());
         // 用户未结束银行卡订单数量
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
index fd4893c..c565e26 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeApplyOrderController.java
@@ -239,6 +239,7 @@
             throw new YamiShopBindException("用户已禁用");
         }
         validateTradePermission(party);
+        realNameAuthRecordService.requireApproved(party, true);
         Syspara syspara = sysparaService.find("stop_user_internet");
         String stopUserInternet = syspara.getSvalue();
         if (org.apache.commons.lang3.StringUtils.isNotEmpty(stopUserInternet)) {
@@ -431,6 +432,7 @@
             throw new YamiShopBindException("用户已禁用!");
         }
         validateTradePermission(party);
+        realNameAuthRecordService.requireApproved(party, true);
         symbol = itemService.getCleanSymbol(symbol);
         symbol_to = itemService.getCleanSymbol(symbol_to);
         String relation_order_no = UUID.randomUUID().toString();
@@ -573,9 +575,6 @@
         // 模拟账户不做二步校验限制
         if (user.getAccountType() != null && user.getAccountType() == 1) {
             return;
-        }
-        if (!user.isGoogleAuthBind() || StringUtils.isEmptyString(user.getSafePassword())) {
-            throw new YamiShopBindException("请先完成两步认证并设置资金密码后再交易");
         }
     }
 
diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java
index 8068209..32c756a 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/exchange/ApiExchangeLeverApplyOrderController.java
@@ -21,6 +21,7 @@
 import com.yami.trading.common.util.StringUtils;
 import com.yami.trading.common.util.ThreadUtils;
 import com.yami.trading.security.common.util.SecurityUtils;
+import com.yami.trading.service.RealNameAuthRecordService;
 import com.yami.trading.service.SessionTokenService;
 import com.yami.trading.service.WalletService;
 import com.yami.trading.service.data.DataService;
@@ -76,6 +77,8 @@
 
     @Autowired
     ExchangeLeverOrderService exchangeLeverOrderService;
+    @Autowired
+    RealNameAuthRecordService realNameAuthRecordService;
 
     /**
      * 开仓页面参数
@@ -199,6 +202,7 @@
             throw new YamiShopBindException("用户已禁用");
         }
         validateTradePermission(party);
+        realNameAuthRecordService.requireApproved(party, true);
         ExchangeLeverApplyOrder order = new ExchangeLeverApplyOrder();
         order.setPartyId(SecurityUtils.getCurrentUserId());
         order.setSymbol(symbol);
@@ -505,9 +509,6 @@
         // 模拟账户不做二步校验限制
         if (user.getAccountType() != null && user.getAccountType() == 1) {
             return;
-        }
-        if (!user.isGoogleAuthBind() || StringUtils.isEmptyString(user.getSafePassword())) {
-            throw new YamiShopBindException("请先完成两步认证并设置资金密码后再交易");
         }
     }
 
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java b/trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java
index eca0d88..9cf5288 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/RealNameAuthRecordService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yami.trading.bean.model.RealNameAuthRecord;
+import com.yami.trading.bean.model.User;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -17,6 +18,14 @@
      */
     boolean isPass(String userId);
 
+    /**
+     * 校验用户已完成实名认证(审核通过)。
+     *
+     * @param user           用户
+     * @param skipSimAccount 模拟账户是否跳过(开仓等场景)
+     */
+    void requireApproved(User user, boolean skipSimAccount);
+
     Page pageRecord(Page page, String rolename, String idNumber, String status,String userCode, List<String> userIds);
 
     long waitCount(List<String> userIds);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java
index 650b08c..6170453 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/RealNameAuthRecordServiceImpl.java
@@ -7,6 +7,8 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yami.trading.bean.model.HighLevelAuthRecord;
 import com.yami.trading.bean.model.RealNameAuthRecord;
+import com.yami.trading.bean.model.User;
+import com.yami.trading.common.exception.YamiShopBindException;
 import com.yami.trading.dao.user.RealNameAuthRecordMapper;
 import com.yami.trading.service.RealNameAuthRecordService;
 import org.apache.ibatis.annotations.Param;
@@ -37,6 +39,19 @@
     }
 
     @Override
+    public void requireApproved(User user, boolean skipSimAccount) {
+        if (user == null) {
+            throw new YamiShopBindException("The user does not exist.\n");
+        }
+        if (skipSimAccount && user.getAccountType() != null && user.getAccountType() == 1) {
+            return;
+        }
+        if (!isPass(user.getUserId())) {
+            throw new YamiShopBindException("Please complete real-name verification first.");
+        }
+    }
+
+    @Override
     public long waitCount(List<String> userIds) {
 
       LambdaQueryWrapper<RealNameAuthRecord>  lambdaQueryWrapper= Wrappers.<RealNameAuthRecord>query().lambda().eq(RealNameAuthRecord::getStatus,1);
diff --git a/trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java b/trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java
index 7652faa..9e57be0 100644
--- a/trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java
+++ b/trading-order-service/src/main/java/com/yami/trading/service/impl/WithdrawServiceImpl.java
@@ -234,8 +234,8 @@
         if (party_kyc==null){
             party_kyc=new  RealNameAuthRecord();
         }
-        if (!(party_kyc.getStatus() == 2) && "true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
-            throw new YamiShopBindException("未基础认证");
+        if ("true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
+            realNameAuthRecordService.requireApproved(party, false);
         }
         double withdraw_by_high_kyc = Double.valueOf(sysparaService.find("withdraw_by_high_kyc").getSvalue());
         if (withdraw_by_high_kyc > 0 && withdraw.getVolume().doubleValue() > withdraw_by_high_kyc
@@ -531,8 +531,8 @@
         if (party_kyc==null){
             party_kyc=new RealNameAuthRecord();
         }
-        if (!(party_kyc.getStatus() == 2) && "true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
-            throw new YamiShopBindException("未基础认证");
+        if ("true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
+            realNameAuthRecordService.requireApproved(party, false);
         }
         if (party_kycHighLevel==null){
             party_kycHighLevel=new HighLevelAuthRecord();
@@ -848,8 +848,8 @@
             throw new YamiShopBindException("无权限");
         }
         RealNameAuthRecord realNameAuthRecord = realNameAuthRecordService.getByUserId(user.getUserId());
-        if (!(realNameAuthRecord.getStatus() == 2) && "true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
-            throw new YamiShopBindException("未安全认证,无提现权限");
+        if ("true".equals(sysparaService.find("withdraw_by_kyc").getSvalue())) {
+            realNameAuthRecordService.requireApproved(user, false);
         }
         HighLevelAuthRecord highLevelAuthRecord = highLevelAuthRecordService.findByUserId(withdraw.getUserId());
         BigDecimal withdrawByHighKyc = new BigDecimal(sysparaService.find("withdraw_by_high_kyc").getSvalue());

--
Gitblit v1.9.3