diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/core/MutliTenantDatasourceProviderAdapter.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/core/MutliTenantDatasourceProviderAdapter.java
deleted file mode 100644
index 5d0d601..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/core/MutliTenantDatasourceProviderAdapter.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.supwisdom.dlpay.framework.core;
-
-import com.supwisdom.multitenant.datasource.MultiTenantDataSourceProvider;
-import com.supwisdom.multitenant.datasource.MultiTenantDatasourceAutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-@ConditionalOnBean({MultiTenantDatasourceAutoConfiguration.class})
-public class MutliTenantDatasourceProviderAdapter implements DatabaseAdapter {
-  private final MultiTenantDataSourceProvider multiTenantDataSourceProvider;
-
-  public MutliTenantDatasourceProviderAdapter(MultiTenantDataSourceProvider multiTenantDataSourceProvider) {
-    this.multiTenantDataSourceProvider = multiTenantDataSourceProvider;
-  }
-
-  @Override
-  public String getDefaultSchema() {
-    return multiTenantDataSourceProvider.defaultSchema();
-  }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/OperatorDetailService.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/OperatorDetailService.java
deleted file mode 100644
index bf72bfe..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/OperatorDetailService.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.supwisdom.dlpay.framework.service;
-
-import org.springframework.security.core.userdetails.UserDetailsService;
-
-public interface OperatorDetailService extends UserDetailsService {
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/OperatorDetailServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/MultiTenantOperatorDetailService.java
similarity index 66%
rename from payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/OperatorDetailServiceImpl.java
rename to payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/MultiTenantOperatorDetailService.java
index 88f2121..4171906 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/OperatorDetailServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/MultiTenantOperatorDetailService.java
@@ -3,14 +3,17 @@
 import com.supwisdom.dlpay.framework.dao.OperRoleDao;
 import com.supwisdom.dlpay.framework.dao.OperatorDao;
 import com.supwisdom.dlpay.framework.domain.TOperator;
-import com.supwisdom.dlpay.framework.service.OperatorDetailService;
+import com.supwisdom.dlpay.framework.tenant.AbstractTenantUserOperator;
+import com.supwisdom.dlpay.framework.tenant.TenantUser;
+import com.supwisdom.dlpay.framework.util.Constants;
 import com.supwisdom.dlpay.framework.util.StringUtil;
-import com.supwisdom.multitenant.TenantDetails;
 import com.supwisdom.multitenant.TenantSessionHelper;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.AuthorityUtils;
 import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 
@@ -24,24 +27,22 @@
 
 @Slf4j
 @Service
-public class OperatorDetailServiceImpl implements OperatorDetailService {
+public class MultiTenantOperatorDetailService implements UserDetailsService {
   private final OperatorDao operatorDao;
   private final OperRoleDao operRoleDao;
-  private final TenantSessionHelper tenantSessionHelper;
+  private final AbstractTenantUserOperator tenantUserOperator;
 
-  public OperatorDetailServiceImpl(OperatorDao operatorDao, OperRoleDao operRoleDao,
-                                   TenantSessionHelper tenantSessionHelper) {
+  public MultiTenantOperatorDetailService(OperatorDao operatorDao, OperRoleDao operRoleDao,
+                                          AbstractTenantUserOperator tenantUserOperator) {
     this.operatorDao = operatorDao;
     this.operRoleDao = operRoleDao;
-    this.tenantSessionHelper = tenantSessionHelper;
+    this.tenantUserOperator = tenantUserOperator;
   }
 
   @Override
   public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
-    String domain = substringAfter(username, "@");
-    tenantSessionHelper.setSessionTenantById(domain);
-    String realname = substringBefore(username, "@");
-    TOperator oper = operatorDao.findByOpercode(realname);
+    TenantUser tenantUser = tenantUserOperator.tenantUsername(username);
+    TOperator oper = operatorDao.findByOpercode(tenantUser.getUsername());
     if (null == oper) {
       throw new UsernameNotFoundException("管理员不存在");
     }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/AbstractTenantUserOperator.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/AbstractTenantUserOperator.java
new file mode 100644
index 0000000..0ff2788
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/AbstractTenantUserOperator.java
@@ -0,0 +1,5 @@
+package com.supwisdom.dlpay.framework.tenant;
+
+public interface AbstractTenantUserOperator {
+  public TenantUser tenantUsername(String username);
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/MultiTenantUserAdapter.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/MultiTenantUserAdapter.java
new file mode 100644
index 0000000..fddcfd7
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/MultiTenantUserAdapter.java
@@ -0,0 +1,40 @@
+package com.supwisdom.dlpay.framework.tenant;
+
+import com.supwisdom.dlpay.framework.util.Constants;
+import com.supwisdom.multitenant.TenantSessionHelper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Component;
+
+import static org.apache.commons.lang3.StringUtils.substringAfter;
+import static org.apache.commons.lang3.StringUtils.substringBefore;
+
+@Component("multiTenantUserAdapter")
+@Primary
+@ConditionalOnBean(name = "multiTenantDatasourceAutoConfiguration")
+public class MultiTenantUserAdapter implements AbstractTenantUserOperator {
+  private static final String DOMAIN_SEP = "@";
+
+  private TenantSessionHelper tenantSessionHelper;
+
+  public MultiTenantUserAdapter(TenantSessionHelper tenantSessionHelper) {
+    this.tenantSessionHelper = tenantSessionHelper;
+  }
+
+  @Override
+  public TenantUser tenantUsername(String username) {
+    String domain = substringAfter(username, DOMAIN_SEP);
+    String realname = substringBefore(username, DOMAIN_SEP);
+    if (StringUtils.isEmpty(domain)) {
+      tenantSessionHelper.setSessionTenantById(Constants.DEFAULT_TENANTID);
+    } else {
+      tenantSessionHelper.setSessionTenantById(domain);
+    }
+    if (StringUtils.isEmpty(realname)) {
+      throw new UsernameNotFoundException("管理员不存在");
+    }
+    return new TenantUser(realname, domain);
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/StandaloneTenantUserAdapter.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/StandaloneTenantUserAdapter.java
new file mode 100644
index 0000000..b9038e2
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/StandaloneTenantUserAdapter.java
@@ -0,0 +1,13 @@
+package com.supwisdom.dlpay.framework.tenant;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.stereotype.Component;
+
+@Component("standaloneTenantUserAdapter")
+@ConditionalOnMissingBean(name = "multiTenantDatasourceAutoConfiguration")
+public class StandaloneTenantUserAdapter implements AbstractTenantUserOperator {
+  @Override
+  public TenantUser tenantUsername(String username) {
+    return new TenantUser(username, "");
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantUser.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantUser.java
new file mode 100644
index 0000000..00d2cdd
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantUser.java
@@ -0,0 +1,30 @@
+package com.supwisdom.dlpay.framework.tenant;
+
+public class TenantUser {
+  private String username;
+  private String domain;
+
+  public TenantUser(String username, String domain) {
+    this.username = username;
+    this.domain = domain;
+  }
+
+  public TenantUser() {
+  }
+
+  public String getUsername() {
+    return username;
+  }
+
+  public void setUsername(String username) {
+    this.username = username;
+  }
+
+  public String getDomain() {
+    return domain;
+  }
+
+  public void setDomain(String domain) {
+    this.domain = domain;
+  }
+}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 61c805f..9db3122 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -6,7 +6,7 @@
 import com.supwisdom.dlpay.framework.redisrepo.ApiJwtRepository
 import com.supwisdom.dlpay.framework.security.MyAuthenticationFailureHandler
 import com.supwisdom.dlpay.framework.security.ValidateCodeSecurityConfig
-import com.supwisdom.dlpay.framework.service.OperatorDetailService
+import com.supwisdom.dlpay.framework.service.impl.MultiTenantOperatorDetailService
 import com.supwisdom.dlpay.framework.util.Constants
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.mobile.AuthLoginFailHandler
@@ -337,9 +337,8 @@
             lateinit var authenticationFailureHandler: MyAuthenticationFailureHandler
             @Autowired
             lateinit var passwordBCryptConfig: PasswordBCryptConfig
-
             @Autowired
-            lateinit var userDetailsService: OperatorDetailService
+            lateinit var multiTenantOperatorDetailService: MultiTenantOperatorDetailService
 
             override fun configure(auth: AuthenticationManagerBuilder) {
                 auth.authenticationProvider(authenticationProvider())
@@ -348,7 +347,7 @@
             @Bean
             fun authenticationProvider(): DaoAuthenticationProvider {
                 return DaoAuthenticationProvider().apply {
-                    setUserDetailsService(userDetailsService)
+                    setUserDetailsService(multiTenantOperatorDetailService)
                     setPasswordEncoder(passwordEncoder())
                 }
             }
