From d8ac807fdb56fe60cba0dbcb2e093b396595e43d Mon Sep 17 00:00:00 2001 From: wangyu Date: Tue, 3 Feb 2026 11:21:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=B6=E9=97=B4=E6=88=B3?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=EF=BC=8C=E4=BC=98=E5=8C=96=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=98=BE?= =?UTF-8?q?=E7=A4=BA,=202.6.0/260?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../com/cheng/blzb/bean/UserConfigEntity.kt | 3 +- .../cheng/blzb/manager/UserConfigManager.kt | 52 ++++++++++++++----- .../com/cheng/blzb/net/RequestInterceptor.kt | 5 +- .../blzb/ui/activity/LauncherActivity.kt | 4 +- .../mine/account/AccountManageFragment.kt | 23 ++++++++ 6 files changed, 72 insertions(+), 19 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5eb4477..2fbe653 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,8 +20,8 @@ android { applicationId "com.cheng.BoLe" minSdk 26 targetSdk 34 - versionCode 240 - versionName "2.4.0" + versionCode 260 + versionName "2.6.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/com/cheng/blzb/bean/UserConfigEntity.kt b/app/src/main/java/com/cheng/blzb/bean/UserConfigEntity.kt index 9e7d59a..fa88386 100644 --- a/app/src/main/java/com/cheng/blzb/bean/UserConfigEntity.kt +++ b/app/src/main/java/com/cheng/blzb/bean/UserConfigEntity.kt @@ -7,5 +7,6 @@ class UserConfigEntity : Serializable{ var temp = false var name = "" var user_id = "" - var config: com.cheng.blzb.bean.ConfigEntity? = null + var nowtime = "" + var config: ConfigEntity? = null } diff --git a/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt b/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt index a950404..932bb24 100644 --- a/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt +++ b/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt @@ -6,6 +6,9 @@ import androidx.lifecycle.MutableLiveData import com.cheng.blzb.bean.AreaEntity import com.cheng.blzb.bean.BidTypeEntity import com.cheng.blzb.bean.HotWordEntity +import com.cheng.blzb.bean.UserConfigEntity +import com.cheng.blzb.bean.UserEntity +import com.cheng.blzb.bean.WxShareEntity import com.cheng.blzb.net.ApiFactory import com.example.base.extensions.toast import com.example.base.utils.MMKVUtils @@ -22,17 +25,40 @@ import kotlinx.coroutines.withContext import org.json.JSONObject object UserConfigManager { - val _userConfigLiveData = MutableLiveData() + val _userConfigLiveData = MutableLiveData() - val userConfig: com.cheng.blzb.bean.UserConfigEntity? get() = _userConfigLiveData.value + val userConfig: UserConfigEntity? get() = _userConfigLiveData.value - val userInfoLiveData = MutableLiveData() + val userInfoLiveData = MutableLiveData() - val userInfo: com.cheng.blzb.bean.UserEntity? get() = userInfoLiveData.value + val userInfo: UserEntity? get() = userInfoLiveData.value + + //服务器时间和本地时间的偏移量 + private var timeDiff = 0L + + //真实的服务器时间 + fun serverTimeMillis(): Long { + return System.currentTimeMillis() + timeDiff * 1000 + } + + fun getServerTime(clickFun: () -> Unit?) { + GlobalScope.launch { + try { + val response = ApiFactory.apiService.getServerTime() + if (response.status) { + timeDiff = response.data.toLong() - System.currentTimeMillis() / 1000 + } + } catch (e: Exception) { + e.printStackTrace() + } finally { + getUserConfig { clickFun.invoke() } + } + } + } fun getUserConfig(clickFun: () -> Unit?) { if (!TextUtils.isEmpty(MMKVUtils.getString("userConfig"))) { - val data = Gson().fromJson(MMKVUtils.getString("userConfig"), com.cheng.blzb.bean.UserConfigEntity::class.java) + val data = Gson().fromJson(MMKVUtils.getString("userConfig"), UserConfigEntity::class.java) _userConfigLiveData.postValue(data) getOaId() @@ -51,6 +77,8 @@ object UserConfigManager { val oaid = MMKVUtils.getString("oaid") ?: "" val response = ApiFactory.apiService.getUserConfig(oaid, Build.VERSION.SDK_INT, "", DeviceIdentifier.getAndroidID(Utils.getApp()), getGTCid()) if (response.status) { + timeDiff = response.data.nowtime.toLong() - System.currentTimeMillis() / 1000 + _userConfigLiveData.postValue(response.data) MMKVUtils.put("userConfig", Gson().toJson(response.data)) @@ -70,7 +98,7 @@ object UserConfigManager { } } - private fun saveUserConfig(data: com.cheng.blzb.bean.UserConfigEntity) { + private fun saveUserConfig(data: UserConfigEntity) { try { LoginManager.saveToken(data.token) saveIsTemp(data.temp) @@ -92,14 +120,14 @@ object UserConfigManager { } } - fun saveLastUserinfo(userinfo: com.cheng.blzb.bean.UserEntity?) { + fun saveLastUserinfo(userinfo: UserEntity?) { MMKVUtils.put("last_userinfo", Gson().toJson(userinfo)) } - fun getLastUserinfo(): com.cheng.blzb.bean.UserEntity? { + fun getLastUserinfo(): UserEntity? { val str = MMKVUtils.getString("last_userinfo") if (!TextUtils.isEmpty(str)) { - return Gson().fromJson(str, com.cheng.blzb.bean.UserEntity::class.java) + return Gson().fromJson(str, UserEntity::class.java) } return null } @@ -175,14 +203,14 @@ object UserConfigManager { return emptyList() } - private fun saveShareEntity(entity: com.cheng.blzb.bean.WxShareEntity?) { + private fun saveShareEntity(entity: WxShareEntity?) { MMKVUtils.put("weixin_share", Gson().toJson(entity)) } - fun getShareEntity(): com.cheng.blzb.bean.WxShareEntity? { + fun getShareEntity(): WxShareEntity? { val s = MMKVUtils.getString("weixin_share") if (!TextUtils.isEmpty(s)) { - return Gson().fromJson(s, com.cheng.blzb.bean.WxShareEntity::class.java) + return Gson().fromJson(s, WxShareEntity::class.java) } return null } diff --git a/app/src/main/java/com/cheng/blzb/net/RequestInterceptor.kt b/app/src/main/java/com/cheng/blzb/net/RequestInterceptor.kt index 3c6cafb..30d199c 100644 --- a/app/src/main/java/com/cheng/blzb/net/RequestInterceptor.kt +++ b/app/src/main/java/com/cheng/blzb/net/RequestInterceptor.kt @@ -2,6 +2,7 @@ package com.cheng.blzb.net import android.text.TextUtils import com.cheng.blzb.common.Constants +import com.cheng.blzb.manager.UserConfigManager import com.cheng.blzb.utils.StringUtils import com.example.base.utils.L import okhttp3.Interceptor @@ -33,9 +34,9 @@ class RequestInterceptor : Interceptor { } var queryString = url.encodedQuery queryString = if (!TextUtils.isEmpty(queryString)) { - (queryString + "&nonce=" + StringUtils.createUUID()) + "×tamp=" + System.currentTimeMillis() / 1000 + (queryString + "&nonce=" + StringUtils.createUUID()) + "×tamp=" + UserConfigManager.serverTimeMillis() / 1000 } else { - ("nonce=" + StringUtils.createUUID()) + "×tamp=" + System.currentTimeMillis() / 1000 + ("nonce=" + StringUtils.createUUID()) + "×tamp=" + UserConfigManager.serverTimeMillis() / 1000 } val sortQueryString = Arrays.stream(queryString.split("&".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()) .sorted { obj: String, anotherString: String? -> obj.compareTo(anotherString!!) } diff --git a/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt b/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt index eb19a41..41cc61f 100644 --- a/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt +++ b/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt @@ -57,7 +57,7 @@ class LauncherActivity : BaseActivity() { if (UserConfigManager.isAgree()) { loadingDialog.show() UserConfigManager.saveBDVID() - UserConfigManager.getUserConfig { + UserConfigManager.getServerTime { EventReportManager.eventReport(EventConstants.APP_LAUNCH, "", "") loadingDialog.dismiss() initUM() @@ -76,7 +76,7 @@ class LauncherActivity : BaseActivity() { loadingDialog.show() UserConfigManager.saveAgree() UserConfigManager.saveBDVID() - UserConfigManager.getUserConfig { + UserConfigManager.getServerTime { EventReportManager.eventReport(EventConstants.APP_LAUNCH, "", "") loadingDialog.dismiss() initUM() diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/mine/account/AccountManageFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/mine/account/AccountManageFragment.kt index 20f73e3..60f1e37 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/mine/account/AccountManageFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/mine/account/AccountManageFragment.kt @@ -1,6 +1,7 @@ package com.cheng.blzb.ui.fragment.mine.account import android.graphics.Color +import android.text.TextUtils import com.cheng.blzb.bean.AccountEntity import com.cheng.blzb.common.EventConstants import com.cheng.blzb.databinding.FragmentAccountManageBinding @@ -66,6 +67,28 @@ class AccountManageFragment : BaseFragment() + if (!TextUtils.isEmpty(userinfo!!.unionid)) { + bind.add("weixin") + } + if (!TextUtils.isEmpty(userinfo.phone)) { + bind.add("phone") + } + val account = AccountEntity( + userinfo.avater, + bind, + "", + userinfo.name, + userinfo.phone, + userinfo.role.toInt(), + userinfo.temp, + userinfo.user_id, + userinfo.vip_name, + userinfo.vip + ) + mAdapter.addData(0, account) } }