From d3fc05adad92cbe6d12e22215f1e435c4fa76c21 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Sun, 25 Jun 2023 17:50:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=A4=E5=86=85=E6=95=B4?= =?UTF-8?q?=E7=90=86=E5=B7=A5=E5=85=B7=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omqs/bean/IndoorConnectionInfoBean.kt | 11 ++ .../com/navinfo/omqs/http/NetworkService.kt | 6 + .../navinfo/omqs/http/NetworkServiceImpl.kt | 20 ++++ .../omqs/http/RetrofitNetworkServiceAPI.kt | 8 ++ .../omqs/ui/activity/scan/QRCodeViewModel.kt | 108 +++++++++++++++++- .../omqs/ui/activity/scan/QrCodeActivity.kt | 3 + 6 files changed, 153 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt diff --git a/app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt b/app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt new file mode 100644 index 00000000..3cc05594 --- /dev/null +++ b/app/src/main/java/com/navinfo/omqs/bean/IndoorConnectionInfoBean.kt @@ -0,0 +1,11 @@ +package com.navinfo.omqs.bean + +data class IndoorConnectionInfoBean( + var username: String = "", + var uname: String = "", + var userid: String = "", + var token: String = "", + var baseurl: String = "", + var plate: String = "", + var platform: String = "Android", +) \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt index 7ca994c7..beca12b6 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkService.kt @@ -2,6 +2,7 @@ package com.navinfo.omqs.http import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SysUserBean @@ -32,4 +33,9 @@ interface NetworkService { * 连接室内整理工具 */ suspend fun connectIndoorTools(url: String): NetResult + + /** + * 更新用户信息 + */ + suspend fun updateServerInfo(url: String,indoorConnectionInfoBean: IndoorConnectionInfoBean): NetResult } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt index db12984f..5bcd2782 100644 --- a/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt +++ b/app/src/main/java/com/navinfo/omqs/http/NetworkServiceImpl.kt @@ -2,6 +2,7 @@ package com.navinfo.omqs.http import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SysUserBean @@ -95,4 +96,23 @@ class NetworkServiceImpl @Inject constructor( NetResult.Error(e) } } + + override suspend fun updateServerInfo(url: String,indoorConnectionInfoBean: IndoorConnectionInfoBean): NetResult = + //在IO线程中运行 + withContext(Dispatchers.IO) { + return@withContext try { + val result = netApi.retrofitUpdateServerInfo(url,indoorConnectionInfoBean) + if (result.isSuccessful) { + if (result.code() == 200) { + NetResult.Success(result.body()) + } else { + NetResult.Failure(result.code(), result.message()) + } + } else { + NetResult.Failure(result.code(), result.message()) + } + } catch (e: Exception) { + NetResult.Error(e) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt index 89e7db1d..2f56bbab 100644 --- a/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt +++ b/app/src/main/java/com/navinfo/omqs/http/RetrofitNetworkServiceAPI.kt @@ -3,6 +3,7 @@ package com.navinfo.omqs.http import com.navinfo.omqs.bean.EvaluationInfo import com.navinfo.omqs.bean.OfflineMapCityBean import com.navinfo.collect.library.data.entity.TaskBean +import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.LoginUserBean import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SysUserBean @@ -74,6 +75,13 @@ interface RetrofitNetworkServiceAPI { @GET suspend fun retrofitConnectIndoorTools(@Url url: String): Response + /** + * 登录接口 + */ + @Headers("Content-Type: application/json") + @POST + suspend fun retrofitUpdateServerInfo(@Url url: String,@Body indoorConnectionInfoBean: IndoorConnectionInfoBean): Response + @Headers("Content-Type: application/json") @POST("/devcp/uploadSceneProblem") suspend fun postRequest(@Body listEvaluationInfo: List?): Response> diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt index 8038cf22..36921971 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QRCodeViewModel.kt @@ -7,6 +7,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.navinfo.omqs.Constant +import com.navinfo.omqs.bean.IndoorConnectionInfoBean import com.navinfo.omqs.bean.QRCodeBean import com.navinfo.omqs.bean.SysUserBean import com.navinfo.omqs.http.DefaultResponse @@ -26,12 +27,17 @@ enum class QrCodeStatus { * 网络访问失败 */ QR_CODE_STATUS_NET_FAILURE, + /** * 成功 */ - QR_CODE_STATUS_SUCCESS -} + QR_CODE_STATUS_SUCCESS, + /** + * 信息更新成功 + */ + QR_CODE_STATUS_SERVER_INFO_SUCCESS, +} @HiltViewModel class QrCodeViewModel @Inject constructor( @@ -80,7 +86,7 @@ class QrCodeViewModel @Inject constructor( val defaultUserResponse = result.data as QRCodeBean - if (defaultUserResponse.errcode==0) { + if (defaultUserResponse.errcode == 0) { Constant.INDOOR_IP = ipTemp @@ -147,6 +153,102 @@ class QrCodeViewModel @Inject constructor( } } + /** + * 扫一扫按钮 + */ + fun updateServerInfo(context: Context) { + + if (TextUtils.isEmpty(Constant.INDOOR_IP)) { + Toast.makeText(context, "获取ip失败!", Toast.LENGTH_LONG).show() + return + } + + viewModelScope.launch(Dispatchers.Default) { + val url = "http://${Constant.INDOOR_IP}:8080/sensor/service/connection" + when (val result = networkService.updateServerInfo( + url = url, + indoorConnectionInfoBean = IndoorConnectionInfoBean( + Constant.USER_ID, + Constant.USER_ID, + Constant.USER_ID, + Constant.USER_ID, + com.navinfo.collect.library.system.Constant.SERVER_ADDRESS, + Constant.USER_ID, + "Android" + ) + )) { + is NetResult.Success<*> -> { + + if (result.data != null) { + try { + + val defaultUserResponse = result.data as QRCodeBean + + if (defaultUserResponse.errcode == 0) { + + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "信息更新成功。", + Toast.LENGTH_LONG + ).show() + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_SERVER_INFO_SUCCESS) + } + } else { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${defaultUserResponse.msg}", + Toast.LENGTH_SHORT + ) + .show() + } + } + + } catch (e: IOException) { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${e.message}", + Toast.LENGTH_SHORT + ).show() + } + } + } + } + + is NetResult.Error<*> -> { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${result.exception.message}", + Toast.LENGTH_SHORT + ) + .show() + } + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE) + } + + is NetResult.Failure<*> -> { + withContext(Dispatchers.Main) { + Toast.makeText( + context, + "${result.code}:${result.msg}", + Toast.LENGTH_SHORT + ) + .show() + } + qrCodeStatus.postValue(QrCodeStatus.QR_CODE_STATUS_NET_FAILURE) + } + + else -> {} + } + + } + + } + + override fun onCleared() { super.onCleared() } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt index 0547f1d7..12706f25 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/scan/QrCodeActivity.kt @@ -58,6 +58,9 @@ class QrCodeActivity : BaseActivity() { } QrCodeStatus.QR_CODE_STATUS_NET_FAILURE -> { + } + QrCodeStatus.QR_CODE_STATUS_SERVER_INFO_SUCCESS -> { + } } }