From 6cdaf4889c27cad69071d49dfa494434ff27d826 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Tue, 10 Mar 2026 19:03:01 +0800
Subject: [PATCH] 1

---
 trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java |   39 +++++++++++++++++++++++++++++++++++++--
 1 files changed, 37 insertions(+), 2 deletions(-)

diff --git a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java
index b630376..89d1b59 100644
--- a/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java
+++ b/trading-order-admin/src/main/java/com/yami/trading/api/controller/ApiIndexController.java
@@ -31,6 +31,7 @@
 import com.yami.trading.service.item.ItemService;
 import com.yami.trading.service.syspara.SysparaService;
 import com.yami.trading.service.user.UserService;
+import com.yami.trading.service.user.UserSimRelationService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.compress.utils.Lists;
@@ -63,6 +64,8 @@
     private PasswordCheckManager passwordCheckManager;
     @Autowired
     UserService userService;
+    @Autowired
+    UserSimRelationService userSimRelationService;
     @Autowired
     private PasswordEncoder passwordEncoder;
     @Autowired
@@ -616,6 +619,13 @@
             }
             throw new YamiShopBindException("账号或密码不正确");
         }
+        // 模拟账户不能直接登录,只能通过主账户登录后切换
+        if (user.getAccountType() != null && user.getAccountType() == 1) {
+            if (model.getLanguage().equals("en")) {
+                throw new YamiShopBindException("Sim account cannot login directly, please switch after main account login");
+            }
+            throw new YamiShopBindException("模拟账户不能直接登录,请使用主账户登录后切换");
+        }
 
         if (!user.isLoginAuthority()) {
             if (model.getLanguage().equals("en")) {
@@ -635,9 +645,18 @@
         userService.online(user.getUserId());
         userService.updateById(user);
         tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ORDINARY.value()), String.valueOf(user.getUserId()));
+        String simUserIdForLogin = userSimRelationService.getSimUserId(user.getUserId());
+        if (simUserIdForLogin != null) {
+            tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ORDINARY.value()), simUserIdForLogin);
+        }
         // 存储token返回vo
         TokenInfoVO tokenInfoVO = tokenStore.storeAndGetVo(userInfoInToken);
         tokenInfoVO.setToken(tokenInfoVO.getAccessToken());
+        Map<String, Object> accountInfo = new HashMap<>();
+        accountInfo.put("accountType", user.getAccountType() != null ? user.getAccountType() : 0);
+        accountInfo.put("mainUserId", userSimRelationService.getMainUserId(user.getUserId()));
+        accountInfo.put("simUserId", simUserIdForLogin);
+        tokenInfoVO.setInfo(accountInfo);
         List<RiskClient> riskList = RiskClientUtil.getRiskInfoByUserCode(user.getUserCode(), "badnetwork");
         if (CollectionUtil.isNotEmpty(riskList)) {
             logger.info("uid:{} Network Unavailable", user.getUserId());
@@ -674,10 +693,18 @@
         userInfoInToken.setEnabled(user.getStatus() == 1);
 //        userDataService.saveRegister(user.getUserId());
         tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ORDINARY.value()), String.valueOf(user.getUserId()));
-
+        String simUserIdReg = userSimRelationService.getSimUserId(user.getUserId());
+        if (simUserIdReg != null) {
+            tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ORDINARY.value()), simUserIdReg);
+        }
         // 存储token返回vo
         TokenInfoVO tokenInfoVO = tokenStore.storeAndGetVo(userInfoInToken);
         tokenInfoVO.setToken(tokenInfoVO.getAccessToken());
+        Map<String, Object> accountInfo = new HashMap<>();
+        accountInfo.put("accountType", 0);
+        accountInfo.put("mainUserId", user.getUserId());
+        accountInfo.put("simUserId", simUserIdReg);
+        tokenInfoVO.setInfo(accountInfo);
         user.setUserLastip(IPHelper.getIpAddr());
         user.setUserLasttime(new Date());
         user.setUserMobile(username);
@@ -707,10 +734,18 @@
         userInfoInToken.setEnabled(user.getStatus() == 1);
 //        userDataService.saveRegister(user.getUserId());
         tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ORDINARY.value()), String.valueOf(user.getUserId()));
-
+        String simUserIdVerif = userSimRelationService.getSimUserId(user.getUserId());
+        if (simUserIdVerif != null) {
+            tokenStore.deleteAllToken(String.valueOf(SysTypeEnum.ORDINARY.value()), simUserIdVerif);
+        }
         // 存储token返回vo
         TokenInfoVO tokenInfoVO = tokenStore.storeAndGetVo(userInfoInToken);
         tokenInfoVO.setToken(tokenInfoVO.getAccessToken());
+        Map<String, Object> accountInfo = new HashMap<>();
+        accountInfo.put("accountType", 0);
+        accountInfo.put("mainUserId", user.getUserId());
+        accountInfo.put("simUserId", simUserIdVerif);
+        tokenInfoVO.setInfo(accountInfo);
         user.setUserLastip(IPHelper.getIpAddr());
         user.setUserLasttime(new Date());
         userService.updateById(user);

--
Gitblit v1.9.3