From f67cf3b81a00f732ca743431258ae6b78f5f40ab Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期四, 17 四月 2025 15:05:28 +0800
Subject: [PATCH] 11、我的	切换头像  点击切换头像没有显示允许存储权限的窗口,华为的手机目前有 49、首页	实时刷新  点击全部取件或其他分类后,回到上一层,内容没有刷新(5个分类) 52、数据统计	数据统计  1.周月年的柱状图统计逻辑需要修改为只统计快递类的数据  2.按年的图形统计,右下方加上图示说明 53、首页	首页登录  点击用户协议、隐私政策无反应

---
 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