diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java
index b4f5da3..f48391e 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/SysparaDao.java
@@ -19,6 +19,4 @@
   @QueryHints({@QueryHint(name = "javax.persistence.lock.timeout", value ="0")})
   @Query(value = "from TSyspara where paraid=?1 ")
   TSyspara findByParaidWithLockNowait(int paraid);
-
-
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TenantCatalogDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TenantCatalogDao.java
deleted file mode 100644
index ce9fe0e..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TenantCatalogDao.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.supwisdom.dlpay.framework.dao;
-
-import com.supwisdom.dlpay.framework.domain.TTenantCatalog;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface TenantCatalogDao extends JpaRepository<TTenantCatalog, Integer> {
-  TTenantCatalog findTTenantCatalogByTenantid(String tenant);
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TenantUserDBDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TenantUserDBDao.java
new file mode 100644
index 0000000..f51aae5
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TenantUserDBDao.java
@@ -0,0 +1,10 @@
+package com.supwisdom.dlpay.framework.dao;
+
+import com.supwisdom.dlpay.framework.domain.TTenantUserDB;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TenantUserDBDao extends JpaRepository<TTenantUserDB, String> {
+  TTenantUserDB findTTenantUserDBById(String id);
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantCatalog.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantCatalog.java
deleted file mode 100644
index c893617..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantCatalog.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.supwisdom.dlpay.framework.domain;
-
-import javax.persistence.*;
-import javax.validation.constraints.NotNull;
-import java.sql.Timestamp;
-
-@Entity
-@Table(name = "tb_tenant_catalog", schema = "public")
-@SequenceGenerator(name = "tenant_catalog_seq")
-public class TTenantCatalog {
-  @Id
-  @Column(name = "id")
-  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "tenant_catalog_seq")
-  private Integer id;
-
-  @Column(name = "tenantid", length = 32)
-  @NotNull
-  private String tenantid;
-
-  @Column(name = "datecenter", length = 10)
-  @NotNull
-  private String dataCenter;
-
-  @Column(name = "expire_date")
-  @NotNull
-  private Timestamp expireDate;
-
-  @Column(name = "enabled")
-  @NotNull
-  private Boolean enabled;
-
-  public Integer getId() {
-    return id;
-  }
-
-  public void setId(Integer id) {
-    this.id = id;
-  }
-
-  public String getTenantid() {
-    return tenantid;
-  }
-
-  public void setTenantid(String tenantid) {
-    this.tenantid = tenantid;
-  }
-
-  public String getDataCenter() {
-    return dataCenter;
-  }
-
-  public void setDataCenter(String dataCenter) {
-    this.dataCenter = dataCenter;
-  }
-
-  public Timestamp getExpireDate() {
-    return expireDate;
-  }
-
-  public void setExpireDate(Timestamp expireDate) {
-    this.expireDate = expireDate;
-  }
-
-  public Boolean getEnabled() {
-    return enabled;
-  }
-
-  public void setEnabled(Boolean enabled) {
-    this.enabled = enabled;
-  }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantUserDB.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantUserDB.java
new file mode 100644
index 0000000..7df05a7
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantUserDB.java
@@ -0,0 +1,101 @@
+package com.supwisdom.dlpay.framework.domain;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+
+@Entity
+@Table(name = "t_tenant_user_db", schema = "public",
+    indexes = {@Index(name = "tenant_db_dbid_idx", columnList = "dbid"),
+        @Index(name = "tenant_db_schema_idx", columnList = "schema"),
+        @Index(name = "tenant_db_idx2", columnList = "dbid, schema", unique = true)})
+public class TTenantUserDB {
+  @Id
+  @Column(name = "id", length = 32)
+  private String id;
+
+  @Column(name = "dbid")
+  private Integer dbid;
+
+  @Column(name = "dbstatus", length = 4)
+  private String dbStatus;
+
+  @Column(name = "dbversion", length = 20)
+  private String dbVersion;
+
+  @Column(name = "dbupdateversion", length = 20)
+  private String dbUpdateVersion;
+
+  @Column(name = "dbcreatetime", length = 20)
+  private String dbCreateTime;
+
+  @Column(name = "dbupdatetime", length = 20)
+  private String dbUpdateTime;
+
+  @Column(name = "schema", length = 32)
+  @NotNull
+  private String schema;
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  public Integer getDbid() {
+    return dbid;
+  }
+
+  public void setDbid(Integer dbid) {
+    this.dbid = dbid;
+  }
+
+  public String getDbStatus() {
+    return dbStatus;
+  }
+
+  public void setDbStatus(String dbStatus) {
+    this.dbStatus = dbStatus;
+  }
+
+  public String getDbVersion() {
+    return dbVersion;
+  }
+
+  public void setDbVersion(String dbVersion) {
+    this.dbVersion = dbVersion;
+  }
+
+  public String getDbUpdateVersion() {
+    return dbUpdateVersion;
+  }
+
+  public void setDbUpdateVersion(String dbUpdateVersion) {
+    this.dbUpdateVersion = dbUpdateVersion;
+  }
+
+  public String getDbCreateTime() {
+    return dbCreateTime;
+  }
+
+  public void setDbCreateTime(String dbCreateTime) {
+    this.dbCreateTime = dbCreateTime;
+  }
+
+  public String getDbUpdateTime() {
+    return dbUpdateTime;
+  }
+
+  public void setDbUpdateTime(String dbUpdateTime) {
+    this.dbUpdateTime = dbUpdateTime;
+  }
+
+  public String getSchema() {
+    return schema;
+  }
+
+  public void setSchema(String schema) {
+    this.schema = schema;
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/TenantService.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/TenantService.java
new file mode 100644
index 0000000..7b10af0
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/TenantService.java
@@ -0,0 +1,8 @@
+package com.supwisdom.dlpay.framework.service;
+
+
+import com.supwisdom.dlpay.framework.domain.TTenantUserDB;
+
+public interface TenantService {
+  TTenantUserDB findByTenantId(String tenantId);
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/TenantServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/TenantServiceImpl.java
new file mode 100644
index 0000000..aa7be5c
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/TenantServiceImpl.java
@@ -0,0 +1,22 @@
+package com.supwisdom.dlpay.framework.service.impl;
+
+import com.supwisdom.dlpay.framework.dao.TenantUserDBDao;
+import com.supwisdom.dlpay.framework.domain.TTenantUserDB;
+import com.supwisdom.dlpay.framework.service.TenantService;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+@Service
+public class TenantServiceImpl implements TenantService {
+  private final TenantUserDBDao tenantUserDBDao;
+
+  public TenantServiceImpl(TenantUserDBDao tenantUserDBDao) {
+    this.tenantUserDBDao = tenantUserDBDao;
+  }
+
+  @Override
+  @Cacheable(cacheNames = "tenantCache", key = "#tenantId")
+  public TTenantUserDB findByTenantId(String tenantId) {
+    return tenantUserDBDao.findTTenantUserDBById(tenantId);
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java
index fa72e3e..6affdb4 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java
@@ -3,6 +3,7 @@
 
 import com.supwisdom.multitenant.TenantContextHolder;
 import org.apache.commons.lang3.StringUtils;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.cache.interceptor.KeyGenerator;
 
 import java.lang.reflect.Method;
@@ -10,8 +11,9 @@
 public class TenantCacheKeyGen implements KeyGenerator {
   private static final char delimiter = ':';
 
+  @NotNull
   @Override
-  public Object generate(Object target, Method method, Object... params) {
+  public Object generate(Object target, @NotNull Method method, @NotNull Object... params) {
     StringBuilder name = new StringBuilder();
     name.append(target.getClass().getSimpleName())
         .append(delimiter);
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index 746f6b2..a422391 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -1,6 +1,6 @@
 package com.supwisdom.dlpay
 
-import com.supwisdom.dlpay.framework.dao.TenantCatalogDao
+import com.supwisdom.dlpay.framework.service.TenantService
 import com.supwisdom.dlpay.framework.tenant.TenantCacheKeyGen
 import com.supwisdom.dlpay.framework.util.Constants
 import com.supwisdom.multitenant.TenantDetails
@@ -170,20 +170,20 @@
 @Component
 class MyTenantDetailsProvider : TenantDetailsProvider {
     @Autowired
-    private lateinit var tenantCatalogDao: TenantCatalogDao
+    private lateinit var tenantService: TenantService
 
     private val defaultTenant = TenantDetails().apply {
         id = Constants.DEFAULT_TENANTID
         dbSchema = "public"
-        dataCenter = "defaul"
+        dataCenter = "default"
     }
 
     override fun createDetailsById(id: String?): TenantDetails {
-        return tenantCatalogDao.findTTenantCatalogByTenantid(id)?.let { catalog ->
+        return tenantService.findByTenantId(id)?.let { catalog ->
             TenantDetails().apply {
-                this.id = catalog.tenantid
-                dbSchema = catalog.tenantid
-                dataCenter = catalog.dataCenter
+                this.id = catalog.id
+                dbSchema = catalog.schema
+                dataCenter = "default"
             }
         } ?: return defaultTenant
     }
