diff --git a/app/src/main/java/com/supwisdom/activities/YktSession.kt b/app/src/main/java/com/supwisdom/activities/YktSession.kt
index 0d01687..2767df0 100644
--- a/app/src/main/java/com/supwisdom/activities/YktSession.kt
+++ b/app/src/main/java/com/supwisdom/activities/YktSession.kt
@@ -39,7 +39,13 @@
 
 
     // 设置通信参数
-    fun setWebAPISession(epayIP: String, epayPort: Int, uri: String, termid: String, commTime: Int) {
+    fun setWebAPISession(
+        epayIP: String,
+        epayPort: Int,
+        uri: String,
+        tenantId: String,
+        commTime: Int
+    ) {
         val sb = StringBuilder()
         if (epayIP.startsWith("http")) {
             sb.append(epayIP)
@@ -50,6 +56,7 @@
 
         mSession!!.setEpayurl(sb.toString())
         NetworkHandler.getInstance().setCommTime(commTime)
+        NetworkHandler.getInstance().setTenantId(tenantId)
     }
 
     // post
diff --git a/app/src/main/java/com/supwisdom/activities/communicate/CommunicateActivity.kt b/app/src/main/java/com/supwisdom/activities/communicate/CommunicateActivity.kt
index e511752..a591170 100644
--- a/app/src/main/java/com/supwisdom/activities/communicate/CommunicateActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/communicate/CommunicateActivity.kt
@@ -20,6 +20,7 @@
  **/
 class CommunicateActivity : BaseActivity() {
     private val pos = SPApplication.getInstance().getPos()
+    private lateinit var vTenantid: TextView
     private lateinit var vDevphyid: TextView
     private lateinit var vEpayUrl: EditText
     private lateinit var vEpayUri: EditText
@@ -33,6 +34,7 @@
     }
 
     private fun initView() {
+        vTenantid = findViewById<View>(R.id.comm_tenantid) as TextView
         vDevphyid = findViewById<View>(R.id.comm_devphyid) as TextView
         vEpayUrl = findViewById<View>(R.id.comm_epay_url) as EditText
         vEpayUri = findViewById<View>(R.id.comm_epay_uri) as EditText
@@ -83,7 +85,8 @@
 
     private fun initData() {
         val record = pos.getConfigPara()
-        vDevphyid.text = record!!.devphyid
+        vTenantid.text = record!!.tenantId
+        vDevphyid.text = record.devphyid
         vEpayUrl.setText(record.epayIP)
         vEpayUri.setText(record.epayUri)
         vEpayPort.setText(record.epayPort.toString())
diff --git a/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt b/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt
index 1d773f5..1c83abd 100644
--- a/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/init/InitActivity.kt
@@ -35,6 +35,7 @@
 class InitActivity : BaseActivity(), IInitView {
     private lateinit var presenter: InitPresenter
     private lateinit var vDevphyid: EditText
+    private lateinit var vTenantId: EditText
     private lateinit var vServerIp: EditText
     private lateinit var vUri: EditText
     private lateinit var vPort: EditText
@@ -63,6 +64,7 @@
         if (record == null) {
             record = ConfigParaRecord()
             record.mode = 0
+            record.tenantId = "schema"
             record.devphyid = "12345678"
             record.epayIP = "127.0.0.1"
             record.epayPort = 8080
@@ -79,7 +81,8 @@
 //            cfgRecord.mode == PublicDef.TERMINAL_THIRD_LOGIN_MODE -> vRadioThirdLoginMode.isChecked = true
 //            else -> vRadioPayMode.isChecked = true
 //        }
-        vDevphyid.setText(cfgRecord!!.devphyid)
+        vTenantId.setText(cfgRecord!!.tenantId)
+        vDevphyid.setText(cfgRecord.devphyid)
         vServerIp.setText(cfgRecord.epayIP)
         vUri.setText(cfgRecord.epayUri)
         vPort.setText(cfgRecord.epayPort.toString())
@@ -101,19 +104,12 @@
 
     private fun initView() {
         this.findViewById<Button>(R.id.tv_settings).setOnClickListener {
-            //            CommonUtil.sendBroadcast(applicationContext, false)
             CommonUtil.startNetSetting(this@InitActivity)
         }
         this.findViewById<TextView>(R.id.btn_save).setOnClickListener {
-            //            val mode = when {
-//                vRadioDepositMode.isChecked -> PublicDef.TERMINAL_DEPOSIT_MODE
-//                vRadioThirdPayMode.isChecked -> PublicDef.TERMINAL_THIRD_PAY_MODE
-//                vRadioThirdLoginMode.isChecked -> PublicDef.TERMINAL_THIRD_LOGIN_MODE
-//                vRadioGateMode.isChecked -> PublicDef.TERMINAL_GATE_MODE
-//                else -> PublicDef.TERMINAL_PAY_MODE
-//            }
             presenter.saveConfigParam(
                 0,
+                CommonUtil.getEditView(vTenantId),
                 CommonUtil.getEditView(vDevphyid), CommonUtil.getEditView(vServerIp),
                 CommonUtil.getEditView(vUri), CommonUtil.getEditView(vPort)
             )
@@ -130,6 +126,7 @@
         vRadioDepositMode = this.findViewById(R.id.rb_deposit_mode) as RadioButton
         vRadioThirdPayMode = this.findViewById(R.id.rb_third_pay_mode) as RadioButton
         vRadioThirdLoginMode = this.findViewById(R.id.rb_third_login_mode) as RadioButton
+        vTenantId = this.findViewById(R.id.tv_tenantid) as EditText
         vDevphyid = this.findViewById(R.id.tv_devphyid) as EditText
         vServerIp = this.findViewById(R.id.tv_server_ip) as EditText
         vUri = this.findViewById(R.id.tv_uri_root) as EditText
@@ -150,7 +147,8 @@
     private fun refresh() {
         AuxScreenController.getInstance().refreshTitle("通讯参数设置")
         AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
-        AuxScreenController.getInstance().refreshContent(Arrays.asList("设备第一次使用", "请联系管理员", "在大屏配置参数"))
+        AuxScreenController.getInstance()
+            .refreshContent(Arrays.asList("设备第一次使用", "请联系管理员", "在大屏配置参数"))
     }
 
     private fun asyncGetConfigName() {
@@ -170,16 +168,19 @@
                         vNsdResult.setTextColor(resources.getColor(R.color.light_blue2))
                         if (dialogNsdConfig == null) {
                             dialogNsdConfig = BigSwDialog(this, PublicDef.DIALOG_TYPE_NSD_CONFIG)
-                            val vConfigList = dialogNsdConfig!!.findViewById(R.id.rv_config_list) as RecyclerView
+                            val vConfigList =
+                                dialogNsdConfig!!.findViewById(R.id.rv_config_list) as RecyclerView
                             vConfigList.layoutManager = LinearLayoutManager(this)
                             vConfigList.addItemDecoration(NsdServerConfigAdapter.ItemDecoration(10))
                             nsdConfigAdapter =
-                                NsdServerConfigAdapter(this, object : NsdServerConfigAdapter.ConfigNameListener {
-                                    override fun callback(configName: String) {
-                                        asyncGetConfigFromNsdServer(configName)
-                                        dialogNsdConfig!!.dismiss()
-                                    }
-                                })
+                                NsdServerConfigAdapter(
+                                    this,
+                                    object : NsdServerConfigAdapter.ConfigNameListener {
+                                        override fun callback(configName: String) {
+                                            asyncGetConfigFromNsdServer(configName)
+                                            dialogNsdConfig!!.dismiss()
+                                        }
+                                    })
                             vConfigList.adapter = nsdConfigAdapter
                         }
                         nsdConfigAdapter!!.setList(ret.list)
@@ -201,7 +202,8 @@
     private fun asyncGetConfigFromNsdServer(configName: String) {
         ThreadPool.getShortPool().execute(Runnable {
             try {
-                val ret = NsdClientApi(nsdServiceIp!!, nsdServicePort).getEcardConfigParam(configName)
+                val ret =
+                    NsdClientApi(nsdServiceIp!!, nsdServicePort).getEcardConfigParam(configName)
                 NtpClient().startCalibrateTime(ret.systime)
                 runOnUiThread {
                     vNsdResult.text = ret.retmsg
diff --git a/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt b/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
index 0b46818..dd3b83a 100644
--- a/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/init/InitPresenter.kt
@@ -17,10 +17,21 @@
     private val iInitView = iInitView
     private val pos = SPApplication.getInstance().getPos()
 
-    fun saveConfigParam(mode: Int, devphyid: String, serverip: String, uri: String, port: String) {
+    fun saveConfigParam(
+        mode: Int,
+        tenantId: String,
+        devphyid: String,
+        serverip: String,
+        uri: String,
+        port: String
+    ) {
         val record = pos.getConfigPara() ?: ConfigParaRecord()
         record.mode = mode
-        record.devphyid = devphyid
+        if (TextUtils.isEmpty(tenantId)) {
+            iInitView.showSWToastInfo("租户名不能为空!", PublicDef.TOAST_SHOW_DOUBT)
+            return
+        }
+        record.tenantId = tenantId
         if (TextUtils.isEmpty(devphyid)) {
             iInitView.showSWToastInfo("终端机编号不能为空!", PublicDef.TOAST_SHOW_DOUBT)
             return
@@ -68,7 +79,7 @@
             record.epayIP!!,
             record.epayPort,
             record.epayUri!!,
-            record.devphyid!!,
+            record.tenantId!!,
             CommonUtil.getCommunicateTime()
         )
         iInitView.jumpToNextActivity()
diff --git a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
index 29a5ef9..82d0bf8 100644
--- a/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/syspara/SysparaActivity.kt
@@ -40,7 +40,8 @@
         val cfgRecord = pos.getConfigPara()
         val sysRecord = pos.getSysPara()
         val dyRecord = pos.getDynamicPara()
-        kvMap[index++] = ControlParaRecord("物理编号>>", cfgRecord!!.devphyid!!)
+        kvMap[index++] = ControlParaRecord("租户名>>", cfgRecord!!.tenantId!!)
+        kvMap[index++] = ControlParaRecord("物理编号>>", cfgRecord.devphyid!!)
         kvMap[index++] = ControlParaRecord("服务器地址>>", cfgRecord.epayIP!!)
         kvMap[index++] = ControlParaRecord("服务器标识>>", cfgRecord.epayUri!!)
         kvMap[index++] = ControlParaRecord("服务器端口>>", "" + cfgRecord.epayPort)
diff --git a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
index 0112dfc..66047bc 100644
--- a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
+++ b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
@@ -22,6 +22,7 @@
     enum class ConfigPara {
         id,
         mode,
+        tenantid,
         devphyid,
         psamno,
         epayIP,
diff --git a/app/src/main/java/com/supwisdom/db/ConfigParaDao.kt b/app/src/main/java/com/supwisdom/db/ConfigParaDao.kt
index cce42b8..1b7df2d 100644
--- a/app/src/main/java/com/supwisdom/db/ConfigParaDao.kt
+++ b/app/src/main/java/com/supwisdom/db/ConfigParaDao.kt
@@ -75,6 +75,7 @@
     private fun getRecord(cursor: Cursor): ConfigParaRecord {
         val record = ConfigParaRecord()
         record.mode = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.ConfigPara.mode.toString()))
+        record.tenantId = cursor.getString(cursor.getColumnIndex(BeanPropEnum.ConfigPara.tenantid.toString()))
         record.devphyid = cursor.getString(cursor.getColumnIndex(BeanPropEnum.ConfigPara.devphyid.toString()))
         record.epayIP = cursor.getString(cursor.getColumnIndex(BeanPropEnum.ConfigPara.epayIP.toString()))
         record.epayPort = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.ConfigPara.epayPort.toString()))
@@ -103,6 +104,7 @@
         val values = ContentValues()
         values.put(BeanPropEnum.ConfigPara.id.toString(), INDEX)
         values.put(BeanPropEnum.ConfigPara.mode.toString(), record.mode)
+        values.put(BeanPropEnum.ConfigPara.tenantid.toString(), record.tenantId)
         values.put(BeanPropEnum.ConfigPara.devphyid.toString(), record.devphyid)
         values.put(BeanPropEnum.ConfigPara.epayIP.toString(), record.epayIP)
         values.put(BeanPropEnum.ConfigPara.epayPort.toString(), record.epayPort)
diff --git a/app/src/main/java/com/supwisdom/db/DBLocalHelper.kt b/app/src/main/java/com/supwisdom/db/DBLocalHelper.kt
index a57dc71..6b11ddf 100644
--- a/app/src/main/java/com/supwisdom/db/DBLocalHelper.kt
+++ b/app/src/main/java/com/supwisdom/db/DBLocalHelper.kt
@@ -10,10 +10,11 @@
  ** create by zzq on 2019/7/31
  ** @desc 本地配置文件
  **/
-class DBLocalHelper private constructor(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, VERSION) {
+class DBLocalHelper private constructor(context: Context) :
+    SQLiteOpenHelper(context, DB_NAME, null, VERSION) {
     companion object {
         private val DB_NAME = "db_local_config"
-        private val VERSION = 1
+        private val VERSION = 2
         private var instance: DBLocalHelper? = null
 
         const val TABLE_NAME_CONFIGPARA = "tb_configpara"
@@ -37,12 +38,13 @@
             + TABLE_NAME_CONFIGPARA + " ( "
             + BeanPropEnum.ConfigPara.id + " long primary key, "
             + BeanPropEnum.ConfigPara.mode + " integer, "
-            + BeanPropEnum.ConfigPara.devphyid + " char(8), "
-            + BeanPropEnum.ConfigPara.psamno + " char(12), "
+            + BeanPropEnum.ConfigPara.tenantid + " varchar(64), "
+            + BeanPropEnum.ConfigPara.devphyid + " varchar(8), "
+            + BeanPropEnum.ConfigPara.psamno + " varchar(12), "
             + BeanPropEnum.ConfigPara.epayIP + " varchar(128), "
             + BeanPropEnum.ConfigPara.epayPort + " integer, "
             + BeanPropEnum.ConfigPara.epayUri + " varchar(128), "
-            + BeanPropEnum.ConfigPara.managePwd + " char(6),"
+            + BeanPropEnum.ConfigPara.managePwd + " varchar(6),"
             + BeanPropEnum.ConfigPara.initOK + " integer ) ")
     private val DROP_TABLE_NAME_CONFIGPARA = "DROP TABLE IF EXISTS $TABLE_NAME_CONFIGPARA"
 
@@ -57,6 +59,9 @@
 
     override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
         if (oldVersion < newVersion) {
+            if (2 <= newVersion && oldVersion < 2) {
+                db.execSQL("alter table $TABLE_NAME_CONFIGPARA add column ${BeanPropEnum.ConfigPara.tenantid} varchar(64)")
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/entity/ConfigParaRecord.kt b/app/src/main/java/com/supwisdom/entity/ConfigParaRecord.kt
index 4b536ac..27b777b 100644
--- a/app/src/main/java/com/supwisdom/entity/ConfigParaRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/ConfigParaRecord.kt
@@ -6,6 +6,7 @@
  **/
 class ConfigParaRecord {
     var mode: Int = 0//
+    var tenantId: String? = null //租户名
     var devphyid: String? = null
     var epayIP: String? = null
     var epayPort: Int = 0
diff --git a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
index 02fd393..74594cc 100644
--- a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
@@ -38,7 +38,7 @@
     private val JSON = "application/json; charset=utf-8".toMediaTypeOrNull()
     private val FORM_ENCODE = "application/x-www-form-urlencoded;charset=utf-8".toMediaTypeOrNull()
     private var commTime = 5
-    private var clientId: String? = null
+    private var tenantId: String? = null
     private var jwt: String? = null
     private var sslSocketFactory: SSLSocketFactory? = null
     private var trustManager: X509TrustManager? = null
@@ -110,8 +110,8 @@
         }
     }
 
-    fun setClientId(clientId: String?) {
-        this.clientId = clientId
+    fun setTenantId(tenantId: String) {
+        this.tenantId = tenantId
     }
 
     fun setJwt(jwt: String?) {
@@ -131,8 +131,8 @@
     private fun addExtentHeader(request: Request.Builder): Request.Builder {
         request.addHeader("Accept", "application/json; q=0.5")
             .addHeader("Connection", "close")
-        if (!TextUtils.isEmpty(clientId)) {
-            request.addHeader("X-TENANT-ID", clientId!!)
+        if (!TextUtils.isEmpty(tenantId)) {
+            request.addHeader("X-TENANT-ID", tenantId!!)
         }
         if (!TextUtils.isEmpty(jwt)) {
             request.addHeader("Authorization", jwt!!)
diff --git a/app/src/main/java/com/supwisdom/service/AuthEpay.kt b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
index 6fe9a3e..1059227 100644
--- a/app/src/main/java/com/supwisdom/service/AuthEpay.kt
+++ b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
@@ -57,8 +57,6 @@
             .append("/api/auth/gettoken/").append(record.devphyid).append("?")
         val params = WebParams()
         params.setParameter("appid", pos.getDynamicPara()!!.appid)
-
-        NetworkHandler.getInstance().setClientId(record.devphyid!!)
         NetworkHandler.getInstance().setJwt(null)
 
         val resp = NetworkHandler.getInstance().get(url.toString(), params)
diff --git a/app/src/main/res/layout/activity_communicate.xml b/app/src/main/res/layout/activity_communicate.xml
index d66e4ca..f8af3c8 100644
--- a/app/src/main/res/layout/activity_communicate.xml
+++ b/app/src/main/res/layout/activity_communicate.xml
@@ -57,7 +57,25 @@
                                 android:visibility="gone"/>
                     </RadioGroup>
                 </LinearLayout>
+                <LinearLayout style="@style/comm_ll_para_style">
 
+                    <TextView
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:gravity="start|center"
+                            android:text="租户名"
+                            android:textColor="@color/light_blue2"
+                            android:textSize="@dimen/enable_devphyid_font_size"/>
+
+                    <TextView
+                            android:id="@+id/comm_tenantid"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:gravity="start|center"
+                            android:text="schema"
+                            android:textColor="@color/light_blue2"
+                            android:textSize="@dimen/enable_devphyid_font_size"/>
+                </LinearLayout>
                 <LinearLayout style="@style/comm_ll_para_style">
 
                     <TextView
diff --git a/app/src/main/res/layout/activity_init.xml b/app/src/main/res/layout/activity_init.xml
index 24c9d45..f1290ae 100644
--- a/app/src/main/res/layout/activity_init.xml
+++ b/app/src/main/res/layout/activity_init.xml
@@ -92,7 +92,14 @@
                             android:visibility="gone"
                             android:text="闸机(入)模式(点击切换)"/>
                 </RadioGroup>
+                <TextView
+                        style="@style/init_param_name_style"
+                        android:text="租户名"/>
 
+                <EditText
+                        android:id="@+id/tv_tenantid"
+                        style="@style/init_param_name_style"
+                        android:text="schema"/>
                 <TextView
                         style="@style/init_param_name_style"
                         android:text="终端物理ID"/>
