package com.za.common import android.app.Application import com.amap.api.location.AMapLocation import com.blankj.utilcode.util.AppUtils import com.tencent.mmkv.MMKV import com.za.base.AppConfig import com.za.base.Const import com.za.bean.db.order.OrderInfo import com.za.common.log.LogUtil import com.za.room.RoomHelper import com.za.room.db.user.DriverInfoBean import com.za.service.location.ZdLocationManager internal object GlobalData : GlobalLocalData() { lateinit var application : Application private val mmkv : MMKV by lazy { MMKV.defaultMMKV() } var activityCount : Int = 0 var isMaster = AppUtils.getAppPackageName() == "com.za.rescue.dealer" var token : String? = null get() { return mmkv.decodeString("TOKEN", null) } set(value) { mmkv.encode("TOKEN", value) field = value } var regid : String? = null get() { return mmkv.decodeString("regid", null) } set(value) { mmkv.encode("regid", value) field = value } var aesKey : String? = null get() { return mmkv.decodeString("AES_KEY", null) } set(value) { mmkv.encode("AES_KEY", value) field = value } //新订单是否已经被处理 var isHandlerNewOrder : Boolean? = false var driverInfoBean : DriverInfoBean? = null get() { return try { val driverInfo = MMKV.defaultMMKV() .decodeParcelable("driverInfoBean", DriverInfoBean::class.java) field = driverInfo field } catch (e : Exception) { LogUtil.print("local_driverInfoBean", "获取司机信息失败: ${e.message}") null } } set(value) { try { MMKV.defaultMMKV().encode("driverInfoBean", value) if (value != null) { lastLoginBean = value } field = value } catch (e : Exception) { LogUtil.print("set local_driverInfoBean", "保存司机信息失败: ${e.message}") } } var lastLoginBean : DriverInfoBean? = null get() { val driverInfoBean = mmkv.decodeParcelable("lastLoginBean", DriverInfoBean::class.java) field = driverInfoBean return driverInfoBean } set(value) { mmkv.encode("lastLoginBean", value) } //是否已经完成登录后的人脸识别 var isLoginRecognition : Boolean? = null get() { return mmkv.decodeBool("isLoginRecognition", false) } set(value) { mmkv.encode("isLoginRecognition", value == true) field = value } var currentOrder : OrderInfo? = null get() { if (field == null) { field = localCurrentOrder } return field } set(value) { localCurrentOrder = value field = value } var currentLocation : AMapLocation? = null get() { val location = mmkv.decodeParcelable("currentLocation", AMapLocation::class.java) if (location != null && (System.currentTimeMillis() .minus(location.time) < 5 * 60 * 1000) ) { return location } else { ZdLocationManager.init(application) return null } } set(value) { mmkv.encode("currentLocation", value) field = value } var loginTime : Long? = null get() { return mmkv.decodeLong("loginTime", System.currentTimeMillis()) } set(value) { mmkv.encode("loginTime", value ?: System.currentTimeMillis()) field = value } var networkEnv : Int get() { return if (AppConfig.isRelease) { mmkv.decodeInt("isReviewEnv", Const.NetEnv.Main) } else { mmkv.decodeInt("isReviewEnv", Const.NetEnv.CRM1) } } set(value) { mmkv.encode("isReviewEnv", value) } var isHasShowKeepAlive : Boolean get() { return mmkv.decodeBool("isShowKeepAlive", false) } set(value) { mmkv.encode("isShowKeepAlive", value) } var lastUploadLogTime : Long get() { return mmkv.decodeLong("lastUploadLogTime", 0) } set(value) { mmkv.encode("lastUploadLogTime", value) } var vehicleId : Int? = null get() { field = mmkv.decodeInt("vehicleId") return field } set(value) { mmkv.encode("vehicleId", value ?: 0) field = value } var driverId : Int? = null get() { field = mmkv.decodeInt("driverId") return field } set(value) { mmkv.encode("driverId", value ?: 0) field = value } var deviceId : String? = null get() { field = mmkv.decodeString("deviceId") return field } set(value) { mmkv.encode("deviceId", value) field = value } fun clearUserCache() { token = null aesKey = null currentLocation = null driverInfoBean = null loginTime = null isLoginRecognition = null isHasShowKeepAlive = false lastUploadLogTime = 0 deviceId = null vehicleId = null driverId = null if (AppConfig.isRelease) { networkEnv = if (AppConfig.isRelease) { Const.NetEnv.Main } else { Const.NetEnv.CRM1 } } } fun clearAllOrderCache() { currentOrder = null RoomHelper.clearAll() } fun clearOrderCache(taskId : Int) { RoomHelper.clearOrderFromTaskCode(taskId = taskId) } }