소스 검색

修改只有设备注册了才进入主界面,否则在注册激活界面

weizhengliang 1 년 전
부모
커밋
d361c2fbfc

+ 18 - 9
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/activity/CallingbedActivationActivity.kt

@@ -6,6 +6,7 @@ import android.content.res.Configuration
 import android.os.Build
 import android.os.Handler
 import android.os.Looper
+import android.text.TextUtils
 import android.util.Log
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.config.NetEngineConfig
@@ -34,6 +35,7 @@ import com.wdkl.ncs.android.middleware.common.MessageEvent
 import com.wdkl.ncs.android.middleware.logic.contract.callingbed.CallingbedActivationContract
 import com.wdkl.ncs.android.middleware.logic.presenter.callingbed.CallingbedActivationPresenter
 import com.wdkl.ncs.android.middleware.model.ThirdServerInfo
+import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
 import com.wdkl.ncs.android.middleware.tcp.enums.DeviceTypeEnum
 import com.wdkl.ncs.android.middleware.udp.ServerInfoUtil
 import com.wdkl.ncs.android.middleware.utils.CommonUtils
@@ -49,7 +51,7 @@ import java.util.concurrent.TimeUnit
 * */
 @Router(path = "/callingbed/activation")
 class CallingbedActivationActivity  : BaseActivity<CallingbedActivationPresenter, CallingbedActivationBinding>(), CallingbedActivationContract.View {
-    private val TAG = "CallingdoorActivationActivity"
+    private val TAG = "CallingbedActivationActivity"
     val QR_CODE_PATH = "http://m.wdklian.com/care/apk/care.user?type=NCS_DEVICE"
     private val uninstallApk = false
     private val APP_NAME = "com.wdkl.callingbed2"
@@ -227,15 +229,13 @@ class CallingbedActivationActivity  : BaseActivity<CallingbedActivationPresenter
                         .build()
 
                 try {
-                    Log.i(TAG, "start check server: ${request.url()}")
+                    Log.i(TAG, "start check server: $url,$port")
                     val response = okHttpClient.newCall(request).execute()
                     if (response != null && response.isSuccessful) {
-                        //接口数据获取成功,进入下一步获取设备信息
-                        serverSuccess = true
-                        val intent = Intent()
-                        intent.setClass(activity, CallingbedActivity::class.java)
-                        activity.startActivity(intent)
-                        finish()
+                        //接口数据获取成功,检查设备是否已注册
+                        if (!TextUtils.isEmpty(Constant.DEVICE_REGISTER_ID)) {
+                            presenter.getDeviceInfo(Constant.DEVICE_REGISTER_ID)
+                        }
                     } else {
                         //接口数据获取失败,可能服务器ip不对,尝试重新获取服务器ip
                         val info = ServerInfoUtil.get(Constant.DEVICE_REGISTER_ID!!)
@@ -250,7 +250,7 @@ class CallingbedActivationActivity  : BaseActivity<CallingbedActivationPresenter
                 }
 
                 try {
-                    Thread.sleep(30000)
+                    Thread.sleep(45000)
                 } catch (ex: Exception) {
                     ex.printStackTrace()
                 }
@@ -301,6 +301,15 @@ class CallingbedActivationActivity  : BaseActivity<CallingbedActivationPresenter
         }
     }
 
+    override fun showDeviceInfo(deviceInfo: BedDeviceInfoVO) {
+        //获取到设备信息,跳转到主界面
+        serverSuccess = true
+        val intent = Intent()
+        intent.setClass(activity, CallingbedActivity::class.java)
+        activity.startActivity(intent)
+        finish()
+    }
+
     private fun showMsgMain(msg: String) {
         runOnUiThread {
             showMessage(msg)

+ 1 - 0
android_bed/src/main/java/com/wdkl/app/ncs/callingbed/fragment/MainFragment.kt

@@ -96,6 +96,7 @@ class  MainFragment: BaseFragment<BedMainFragmentPresenter, MainViewLayoutBindin
             builder.append(Constant.BED_NAME)
             val code = EcodeHelper().createQRImage(builder.toString(), 180, null)
             activity.runOnUiThread {
+                ll_qr_code?.visibility = View.VISIBLE
                 image_qr_code?.setImageBitmap(code)
             }
         }.start()

+ 2 - 1
android_bed/src/main/res/layout/main_view_layout.xml

@@ -128,7 +128,8 @@
                 android:layout_alignParentRight="true"
                 android:layout_marginTop="@dimen/d24"
                 android:layout_marginRight="@dimen/d6"
-                android:gravity="center">
+                android:gravity="center"
+                android:visibility="gone">
 
                 <ImageView
                     android:id="@+id/image_qr_code"

+ 4 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/callingbed/CallingbedActivationContract.kt

@@ -2,13 +2,15 @@ package com.wdkl.ncs.android.middleware.logic.contract.callingbed
 
 import com.wdkl.ncs.android.lib.base.BaseContract
 import com.wdkl.ncs.android.middleware.model.ServerInfo
+import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
 
 interface CallingbedActivationContract {
     interface View : BaseContract.BaseView {
-
+        fun showDeviceInfo(deviceInfo: BedDeviceInfoVO)
     }
 
     interface Presenter : BaseContract.BasePresenter {
-
+        //获取设备信息
+        fun getDeviceInfo(mac: String)
     }
 }

+ 43 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/callingbed/CallingbedActivationPresenter.kt

@@ -8,6 +8,7 @@ import com.google.gson.GsonBuilder
 import com.wdkl.ncs.android.lib.base.RxPresenter
 import com.wdkl.ncs.android.lib.utils.ConnectionObserver
 import com.wdkl.ncs.android.lib.utils.getJsonString
+import com.wdkl.ncs.android.middleware.api.BedDeviceApi
 import com.wdkl.ncs.android.middleware.api.DoorDeviceApi
 import com.wdkl.ncs.android.middleware.di.MiddlewareDaggerComponent
 import com.wdkl.ncs.android.middleware.logic.contract.callingbed.CallingbedActivationContract
@@ -15,16 +16,58 @@ import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.AppUpdateContr
 import com.wdkl.ncs.android.middleware.logic.contract.callingdoor.CallingdoorActivationContract
 import com.wdkl.ncs.android.middleware.model.ServerInfo
 import com.wdkl.ncs.android.middleware.model.dos.AppVersionDO
+import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 import com.wdkl.ncs.android.middleware.model.dos.PartSettingDO
+import com.wdkl.ncs.android.middleware.model.dos.RoleDO
 import com.wdkl.ncs.android.middleware.model.dto.TcpSeverDTO
+import com.wdkl.ncs.android.middleware.model.vo.BedDeviceInfoVO
+import com.wdkl.ncs.android.middleware.model.vo.CallRecordVO
+import com.wdkl.ncs.android.middleware.model.vo.CustomerInfoVO
 import com.wdkl.ncs.android.middleware.model.vo.DeviceRoomInfoVO
 import io.reactivex.disposables.Disposable
 import javax.inject.Inject
 
 class CallingbedActivationPresenter @Inject constructor() : RxPresenter<CallingbedActivationContract.View>(), CallingbedActivationContract.Presenter {
+    @Inject
+    protected lateinit var bedDeviceApi: BedDeviceApi
+
     override fun bindDagger() {
         MiddlewareDaggerComponent.component.inject(this)
     }
 
+    private val observer = object :ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView().start()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            when (result) {
+                is BedDeviceInfoVO -> {
+                    //设备信息
+                    providerView().showDeviceInfo(result)
+                }
+            }
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+    }
+
+    override fun getDeviceInfo(mac: String) {
+        bedDeviceApi.getDeviceInfo(mac)
+            .map {
+                val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                val deviceInfo = gson.fromJson(it.getJsonString(), BedDeviceInfoVO::class.java)
+
+                return@map deviceInfo
+            }
+            .compose(ThreadFromUtils.defaultSchedulers())
+            .subscribe(observer)
+    }
 
 }