From bc0da0294326ae89ceeb28289d93cb5a4f50dbf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98iamlfc=E2=80=99?= <‘iamlifuchang@163.com’> Date: Tue, 21 Feb 2023 14:37:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/swallow/gyps/main/MainRepository.kt | 14 ++++++ .../swallow/gyps/service/HealthyService.kt | 9 +++- config.gradle | 4 +- .../com/swallow/fly/http/di/ClientModule.kt | 3 ++ .../swallow/fly/http/di/DynamicTimeout.java | 13 ++++++ .../http/interceptor/TimeoutInterceptor.kt | 44 +++++++++++++++++++ 6 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 swallow/src/main/java/com/swallow/fly/http/di/DynamicTimeout.java create mode 100644 swallow/src/main/java/com/swallow/fly/http/interceptor/TimeoutInterceptor.kt diff --git a/app/src/main/java/com/swallow/gyps/main/MainRepository.kt b/app/src/main/java/com/swallow/gyps/main/MainRepository.kt index 0dc8bdd..3784f47 100644 --- a/app/src/main/java/com/swallow/gyps/main/MainRepository.kt +++ b/app/src/main/java/com/swallow/gyps/main/MainRepository.kt @@ -31,4 +31,18 @@ class MainRepository @Inject constructor() : BaseRepository() { handleError(it) } } + + /** + * 获取设备 待维修/正在维修列表 + */ + fun reportHealthyStatus2(model: HealthModel): Flow>> { + return flow { + val response = obtainService(HealthyService::class.java).reportHealthyStatus2(model) + emit(HttpResult.Success(response)) + }.retry(1) + .flowOn(Dispatchers.IO) + .catch { + handleError(it) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/swallow/gyps/service/HealthyService.kt b/app/src/main/java/com/swallow/gyps/service/HealthyService.kt index 8d9b0b7..e683641 100644 --- a/app/src/main/java/com/swallow/gyps/service/HealthyService.kt +++ b/app/src/main/java/com/swallow/gyps/service/HealthyService.kt @@ -1,5 +1,6 @@ package com.swallow.gyps.service +import com.swallow.fly.http.di.DynamicTimeout import com.swallow.fly.http.result.BaseResponse import com.swallow.gyps.main.models.HealthModel import retrofit2.http.Body @@ -15,6 +16,10 @@ import retrofit2.http.POST interface HealthyService { @POST("add") suspend fun reportHealthyStatus(@Body model: HealthModel): BaseResponse - - + + + @POST("tuzai/mobile/killpass/test") + @DynamicTimeout(timeout =20 ) + suspend fun reportHealthyStatus2(@Body model: HealthModel): BaseResponse + } \ No newline at end of file diff --git a/config.gradle b/config.gradle index e5420dd..1b59b3e 100644 --- a/config.gradle +++ b/config.gradle @@ -4,8 +4,8 @@ ext { buildToolsVersion: "30.0.2", minSdkVersion : 21, targetSdkVersion : 30, - versionCode : 27, - versionName : "1.4.3" + versionCode : 28, + versionName : "1.4.4" ] version = [ androidSupportSdkVersion: "28.0.0", diff --git a/swallow/src/main/java/com/swallow/fly/http/di/ClientModule.kt b/swallow/src/main/java/com/swallow/fly/http/di/ClientModule.kt index be1186c..a873040 100644 --- a/swallow/src/main/java/com/swallow/fly/http/di/ClientModule.kt +++ b/swallow/src/main/java/com/swallow/fly/http/di/ClientModule.kt @@ -10,6 +10,7 @@ import com.swallow.fly.base.app.AppModule import com.swallow.fly.http.CoroutineCallAdapterFactory import com.swallow.fly.http.TimeoutCallAdapterFactory import com.swallow.fly.http.interceptor.GlobalHttpHandler +import com.swallow.fly.http.interceptor.TimeoutInterceptor import dagger.Module import dagger.Provides import dagger.hilt.InstallIn @@ -81,6 +82,8 @@ object ClientModule { } }) builder.addInterceptor(intercept) + builder.addInterceptor(TimeoutInterceptor()) + //如果外部提供了 Interceptor 的集合则遍历添加 // if (!interceptors.isNullOrEmpty()) { // for (item in interceptors) { diff --git a/swallow/src/main/java/com/swallow/fly/http/di/DynamicTimeout.java b/swallow/src/main/java/com/swallow/fly/http/di/DynamicTimeout.java new file mode 100644 index 0000000..1098647 --- /dev/null +++ b/swallow/src/main/java/com/swallow/fly/http/di/DynamicTimeout.java @@ -0,0 +1,13 @@ +package com.swallow.fly.http.di; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.METHOD) +public @interface DynamicTimeout { + int timeout(); +} diff --git a/swallow/src/main/java/com/swallow/fly/http/interceptor/TimeoutInterceptor.kt b/swallow/src/main/java/com/swallow/fly/http/interceptor/TimeoutInterceptor.kt new file mode 100644 index 0000000..d42b450 --- /dev/null +++ b/swallow/src/main/java/com/swallow/fly/http/interceptor/TimeoutInterceptor.kt @@ -0,0 +1,44 @@ +package com.swallow.fly.http.interceptor + +import com.swallow.fly.http.di.ClientModule +import com.swallow.fly.http.di.DynamicTimeout +import okhttp3.Interceptor +import okhttp3.Request +import okhttp3.Response +import retrofit2.Invocation +import java.util.concurrent.TimeUnit + + +/** + * @Description: 超时配置拦截器 + * @Author: lfc + * @Email: iamlifuchang@163.com + * @CreateTime: 2023/2/21 10:45 + * @UpdateRemark: 超时配置拦截器 + */ +class TimeoutInterceptor : Interceptor { + override fun intercept(chain: Interceptor.Chain): Response { + val request = chain.request() + try { + val reequest: Request = chain.request() + + //核心代码!!! + //核心代码!!! + val tag = request.tag(Invocation::class.java) + val timeout: DynamicTimeout? = + tag?.method()?.getAnnotation(DynamicTimeout::class.java) + + + return chain.withConnectTimeout(timeout?.timeout ?: 10, TimeUnit.SECONDS) + .withReadTimeout(timeout?.timeout ?: 10, TimeUnit.SECONDS) + .proceed(reequest) +// return chain.proceed(reequest) + } catch (e: Exception) { + e.printStackTrace() + return chain.proceed(request); + + } + + + } +} \ No newline at end of file