refactor(user): 重构司机信息存储逻辑

- 将司机信息从 MMKV 迁移到 Room 数据库
- 新增 DriverInfoBean 实体类和 DriverInfoDao接口
- 更新 GlobalData 中的 driverInfo 相关逻辑- 修改相关 Activity 和 ViewModel 中的代码,使用新的数据库存储方式- 优化了司机信息的获取和更新流程
This commit is contained in:
songzhiling
2025-04-16 15:58:07 +08:00
parent d2f2752499
commit 0f24648cb1
53 changed files with 1259 additions and 1272 deletions

View File

@ -1,5 +1,6 @@
package com.za.net
import com.za.bean.AppNewDriverInfoDTO
import com.za.bean.BaseResponse
import com.za.bean.BatteryCostQueryBean
import com.za.bean.BatteryCostQueryRequest
@ -30,6 +31,7 @@ import com.za.bean.VehicleInfo
import com.za.bean.db.order.OrderInfo
import com.za.bean.db.order.PhotoTemplateInfo
import com.za.bean.request.AcceptOrderRequest
import com.za.bean.request.AppNewOrderVoiceRequest
import com.za.bean.request.CustomerPaymentCreateBean
import com.za.bean.request.CustomerPaymentCreateRequest
import com.za.bean.request.DriverFaceCompareBean
@ -114,6 +116,10 @@ interface ApiService {
@POST("/driverApp/task/login")
fun login(@Body info : LoginRequest) : Observable<BaseResponse<DriverInfo?>>
//获取该手机号下面服务商列表
@POST("/driverApp/supplier/getDriverListInfo")
fun getDriverListInfo(@Body info : VerifyCodeRequest) : Observable<BaseResponse<List<AppNewDriverInfoDTO>>>
@POST("/driverApp/task/loginWithTask")
fun loginWithTask(@Body loginWithTaskRequest : LoginWithTaskRequest) : Observable<BaseResponse<LoginWithTaskBean>>
@ -262,4 +268,7 @@ interface ApiService {
//获取车辆维修历史
@POST("/driverApp/supplier/v2/vehicleMaintenanceList")
fun vehicleMaintenanceList(@Body info : FetchVehicleMaintenanceSubmitHistoryRequestBean) : Observable<BaseResponse<List<VehicleMaintenanceHistoryBean>>>
@POST("driverApp/base/getVoiceUrl")
fun getVoiceUrl(@Body info : AppNewOrderVoiceRequest) : Observable<BaseResponse<String>>
}

View File

@ -5,12 +5,10 @@ import android.graphics.BitmapFactory
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.ImageUtils
import com.za.base.Const
import com.za.bean.DriverInfo
import com.za.bean.GeneralInfo
import com.za.bean.ImageBean
import com.za.bean.JpushBean
import com.za.bean.NewOrderRequestBean
import com.za.bean.VehicleInfo
import com.za.bean.db.ele.EleCarDamagePhotoBean
import com.za.bean.db.ele.EleWorkOrderBean
import com.za.bean.db.order.OrderInfo
@ -120,8 +118,8 @@ object CommonMethod {
success : (GeneralInfo) -> Unit = {},
failed : (String?) -> Unit = {}) {
val generalInfoRequest =
GeneralInfoRequest(vehicleId = vehicleId ?: GlobalData.vehicleInfo?.vehicleId,
driverId = userId ?: GlobalData.driverInfo?.userId,
GeneralInfoRequest(vehicleId = vehicleId ?: GlobalData.driverInfoBean?.vehicleId,
driverId = userId ?: GlobalData.driverInfoBean?.userId,
deviceId = DeviceUtil.getAndroidId(ActivityUtils.getTopActivity()))
RetrofitHelper.getDefaultService().generalInfo(generalInfoRequest)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
@ -129,51 +127,27 @@ object CommonMethod {
override fun doSuccess(it : GeneralInfo?) {
if (it == null) {
failed("获取车辆信息失败")
LogUtil.print("getGenerateInfo", "获取车辆信息失败")
return
}
if (GlobalData.vehicleInfo == null) {
GlobalData.vehicleInfo = VehicleInfo(vehicleId = it.vehicleId,
vehicleName = it.vehicleName,
userName = it.userName,
userPhone = it.userPhone,
status = it.vehicleState,
plateNumber = it.plateNumber,
vehicleState = it.vehicleState,
supplierType = it.supplierType)
} else {
GlobalData.vehicleInfo =
GlobalData.vehicleInfo?.copy(vehicleId = it.vehicleId,
vehicleName = it.vehicleName,
userName = it.userName,
userPhone = it.userPhone,
status = it.vehicleState,
plateNumber = it.plateNumber,
vehicleState = it.vehicleState,
supplierType = it.supplierType)
}
val driverInfoBean = GlobalData.driverInfoBean
GlobalData.driverInfoBean = driverInfoBean?.copy(vehicleId = it.vehicleId,
vehicleName = it.vehicleName,
userName = it.userName,
userPhone = it.userPhone,
plateNumber = it.plateNumber,
vehicleState = it.vehicleState,
supplierType = it.supplierType,
userPortrait = it.userPortrait,
userId = it.userId,
supplierId = it.supplierId,
deviceId = it.deviceId,
supplierName = it.supplierName,
authStatus = it.authStatus,
serviceList = it.serviceList?.toString())
if (GlobalData.driverInfo == null) {
GlobalData.driverInfo = DriverInfo(userPortrait = it.userPortrait,
userName = it.userName,
userId = it.userId,
userPhone = it.userPhone,
supplierId = it.supplierId.toString(),
supplierName = it.supplierName,
authStatus = it.authStatus,
supplierType = it.supplierType,
serviceList = it.serviceList)
} else {
GlobalData.driverInfo =
GlobalData.driverInfo?.copy(userPortrait = it.userPortrait,
userName = it.userName,
userId = it.userId,
userPhone = it.userPhone,
supplierId = it.supplierId.toString(),
supplierName = it.supplierName,
authStatus = it.authStatus,
supplierType = it.supplierType,
serviceList = it.serviceList)
}
LogUtil.print("GlobalData.driverInfoBean",
"${GlobalData.driverInfoBean?.toJson()}}")
success(it)
}
@ -187,7 +161,7 @@ object CommonMethod {
}
fun getNewOrder(context : Context) {
val newOrderRequestBean = NewOrderRequestBean(GlobalData.vehicleInfo?.vehicleId)
val newOrderRequestBean = NewOrderRequestBean(GlobalData.driverInfoBean?.vehicleId)
RetrofitHelper.getDefaultService().getNewOrder(newOrderRequestBean)
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(object : BaseObserver<JpushBean>() {
@ -229,7 +203,7 @@ object CommonMethod {
success : (OrderInfo?, List<OrderInfo>?) -> Unit,
failed : (String?) -> Unit) {
RetrofitHelper.getDefaultService()
.queryOrderList(OrderListRequest(vehicleId = GlobalData.vehicleInfo?.vehicleId,
.queryOrderList(OrderListRequest(vehicleId = GlobalData.driverInfoBean?.vehicleId,
deviceId = DeviceUtil.getAndroidId(ActivityUtils.getTopActivity())))
.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
.subscribe(object : BaseObserver<List<OrderInfo>?>() {
@ -246,33 +220,6 @@ object CommonMethod {
val waitServiceOrders = it.filter { it.isCurrent == false }
if (inServicingOrder == null) {
context?.let { context ->
val order = it[0]
NewOrderActivity.goNewOrderActivity(context,
jpushBean = JpushBean(taskId = order.taskId,
taskCode = order.taskCode,
customerName = order.customerName,
customerPhone = order.customerPhone,
carBrand = order.carBrand,
carModel = order.carModel,
carNo = order.carNo,
taskState = order.taskState,
address = order.address,
addressProperty = order.addressProperty,
hotline = order.hotline,
expectArriveTime = order.expectArriveTime,
serviceTypeName = order.serviceTypeName,
dispatchTime = order.dispatchTime,
lat = order.lat,
lng = order.lng,
distLat = order.distLat,
distLng = order.distLng,
importantTip = order.importantTip,
hasReplaceBatteryCapable = order.hasReplaceBatteryCapable,
distAddress = order.distAddress,
distAddressRemark = order.distAddressRemark,
addressRemark = order.addressRemark))
}
success(null, waitServiceOrders)
return
}

View File

@ -2,6 +2,7 @@ package com.za.net
import android.util.Log
import com.za.base.AppConfig
import com.za.common.log.LogUtil
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
@ -12,72 +13,55 @@ import java.net.URLDecoder
import java.util.concurrent.TimeUnit
object RetrofitHelper {
private var retrofit: Retrofit? = null
private var apiService: ApiService? = null
private val loggerInterceptor = HttpLoggingInterceptor {
try {
private var retrofit : Retrofit? = null
private var apiService : ApiService? = null
private val loggerInterceptor = HttpLoggingInterceptor {
try {
if (it.contains("image/*") || it.contains("form-data; name=\"file\"")
|| it.startsWith("Content-Type")
|| it.startsWith("Content-Length")
|| it.startsWith("Server")
|| it.startsWith("Date")
|| it.startsWith("Transfer-Encoding")
|| it.startsWith("Connection")
|| it.startsWith("X-")
|| it.startsWith("token")
|| it.startsWith("Cache-Control")
|| it.startsWith("Expires")
|| it.startsWith("Accept")
|| it.startsWith("Vary")
|| it.isEmpty()
|| it.startsWith("Pragma")
) {
return@HttpLoggingInterceptor
}
if (it.contains("image/*") || it.contains("form-data; name=\"file\"") || it.startsWith("Content-Type") || it.startsWith(
"Content-Length") || it.startsWith("Server") || it.startsWith("Date") || it.startsWith(
"Transfer-Encoding") || it.startsWith("Connection") || it.startsWith("X-") || it.startsWith(
"token") || it.startsWith("Cache-Control") || it.startsWith("Expires") || it.startsWith(
"Accept") || it.startsWith("Vary") || it.isEmpty() || it.startsWith("Pragma")
) {
return@HttpLoggingInterceptor
}
if (it.contains("name=\"file\"; filename")) {
return@HttpLoggingInterceptor
}
Log.e(
"--network--",
URLDecoder.decode(it.replace(Regex("%(?![0-9a-fA-F]{2})"), ""), "utf-8")
)
} catch (e: UnsupportedEncodingException) {
e.printStackTrace()
}
if (it.contains("name=\"file\"; filename")) {
return@HttpLoggingInterceptor
}
LogUtil.print("--network--",
URLDecoder.decode(it.replace(Regex("%(?![0-9a-fA-F]{2})"), ""), "utf-8"))
} catch (e : UnsupportedEncodingException) {
e.printStackTrace()
}
}.setLevel(HttpLoggingInterceptor.Level.BODY)
}.setLevel(HttpLoggingInterceptor.Level.BODY)
fun getDefaultService(): ApiService {
return if (apiService == null) {
apiService = getDefaultRetrofit().create(ApiService::class.java)
apiService!!
} else {
apiService!!
}
}
fun getDefaultService() : ApiService {
return if (apiService == null) {
apiService = getDefaultRetrofit().create(ApiService::class.java)
apiService !!
} else {
apiService !!
}
}
private fun getDefaultRetrofit(): Retrofit {
return if (retrofit == null) {
retrofit = Retrofit.Builder().baseUrl(AppConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.client(getOkHttpClient())
.build()
retrofit!!
} else {
retrofit!!
}
}
private fun getDefaultRetrofit() : Retrofit {
return if (retrofit == null) {
retrofit = Retrofit.Builder().baseUrl(AppConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create()).client(getOkHttpClient())
.build()
retrofit !!
} else {
retrofit !!
}
}
private fun getOkHttpClient(): OkHttpClient {
return OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.addInterceptor(RequestEncryptInterceptor())
.addInterceptor(loggerInterceptor)
.build()
}
private fun getOkHttpClient() : OkHttpClient {
return OkHttpClient.Builder().connectTimeout(30, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS).readTimeout(60, TimeUnit.SECONDS)
.addInterceptor(RequestEncryptInterceptor()).addInterceptor(loggerInterceptor).build()
}
}