From 04b138d3836e03c9adbcbd367fd71d92905c5206 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 17 四月 2025 13:17:45 +0800 Subject: [PATCH] add: 重复登录处理 --- app/src/main/java/com/example/firstapp/database/service/ApiService.kt | 47 ++++++++++++++++++++++++++++++++--------------- 1 files changed, 32 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/database/service/ApiService.kt b/app/src/main/java/com/example/firstapp/database/service/ApiService.kt index 41c83c2..989348b 100644 --- a/app/src/main/java/com/example/firstapp/database/service/ApiService.kt +++ b/app/src/main/java/com/example/firstapp/database/service/ApiService.kt @@ -1,6 +1,7 @@ package com.example.firstapp.database.service import TokenResponse +import android.content.Context import com.example.firstapp.database.entity.ApiResponse import com.example.firstapp.database.entity.KeywordConfig import com.example.firstapp.database.request.ProductOrdersRequest @@ -16,6 +17,8 @@ import com.example.firstapp.model.CategoryConfig import com.example.firstapp.model.CategoryConfigSync import com.example.firstapp.network.AuthInterceptor +import com.example.firstapp.network.ResponseInterceptor +import com.example.firstapp.network.TokenExpiredInterceptor import okhttp3.MultipartBody import okhttp3.OkHttpClient import okhttp3.RequestBody @@ -72,9 +75,11 @@ @POST("api/account/close") suspend fun closeAccount(): AccountCloseResponse - fun getUserCategories(currentUserId: String): List<CategoryConfig> + @GET("api/categoryConfig/getByUserId/{userId}") + suspend fun getUserCategories(@Path("userId") currentUserId: String): List<CategoryConfig> - fun saveUserCategories(categoryConfigSync: CategoryConfigSync) + @POST("api/categoryConfig/saveOrUpdate/") + suspend fun saveUserCategories(@Body categoryConfigSync: CategoryConfigSync) } @@ -84,25 +89,37 @@ // private const val BASE_URL ="http://192.168.1.213:8080/flower/" private const val BASE_URL ="http://14.103.144.28:8080/flower/" + private lateinit var appContext: Context + + // 初始化方法,需要在Application中调用 + fun init(context: Context) { + appContext = context.applicationContext + } // 创建OkHttpClient,配置拦截器和超时时间 - private val okHttpClient = OkHttpClient.Builder() - .addInterceptor(AuthInterceptor()) - .connectTimeout(30, TimeUnit.SECONDS) - .readTimeout(30, TimeUnit.SECONDS) - .writeTimeout(30, TimeUnit.SECONDS) - .build() + private val okHttpClient by lazy { + OkHttpClient.Builder() + .addInterceptor(AuthInterceptor()) + .addInterceptor(TokenExpiredInterceptor(appContext)) + .addInterceptor(ResponseInterceptor(appContext)) + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .build() + } //添加Gson解析器,用于自动将JSON响应转换为Kotlin/Java对象 - private val retrofit = Retrofit - .Builder() - .client(okHttpClient) - .baseUrl(BASE_URL) - .addConverterFactory(GsonConverterFactory.create()) - .build() + private val retrofit by lazy { + Retrofit + .Builder() + .client(okHttpClient) + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } //通过动态代理技术创建ApiService接口的具体实现类 - val apiService:ApiService = retrofit.create(ApiService::class.java) + val apiService by lazy { retrofit.create(ApiService::class.java) } } -- Gitblit v1.9.3