From da612d195113c8ada766c3bfd658be9b4c49a058 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Fri, 27 Dec 2024 12:00:21 +0800 Subject: [PATCH] =?UTF-8?q?[6.9.0]=20[fix]=20[shuttle=E3=80=81bus=E3=80=81?= =?UTF-8?q?scheduled]=20[=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E3=80=81=E9=83=A8=E5=88=86=E5=8A=9F=E8=83=BD?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../och/biz/skin/net/OchSkinServiceApi.java | 8 -- .../och/biz/skin/net/OchSkinServiceManager.kt | 1 - .../com/mogo/och/biz/time/TimeProvider.kt | 86 +++++++++++++++++++ .../mogo/och/biz/time/bean/TimeRespBean.kt | 10 +++ .../och/biz/time/net/OchTimeServiceApi.java | 21 +++++ .../och/biz/time/net/OchTimeServiceManager.kt | 45 ++++++++++ .../och/common/module/biz/time/TimeManager.kt | 34 ++++++++ .../och/common/module/biz/time/TimeService.kt | 14 +++ .../common/module/constant/OchCommonConst.kt | 1 + .../logchainanalytic/OchChainLogManager.kt | 8 ++ .../och/common/module/utils/DateTimeUtil.java | 5 ++ .../mogo/och/facade/route/FacadeProvider.kt | 2 + 12 files changed, 226 insertions(+), 9 deletions(-) create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/time/bean/TimeRespBean.kt create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceApi.java create mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceManager.kt create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt create mode 100644 OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java index 9a9a93c4bc..7a25f29ec1 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceApi.java @@ -1,19 +1,11 @@ package com.mogo.och.biz.skin.net; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean; -import com.mogo.och.biz.login.bean.TaxiLoginReqBean; -import com.mogo.och.biz.login.bean.TaxiLoginRespBean; -import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean; -import com.mogo.och.biz.login.bean.TaxiLogoutReqBean; import com.mogo.och.biz.skin.bean.SkinRespBean; import io.reactivex.Observable; -import retrofit2.http.Body; import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.Headers; -import retrofit2.http.POST; import retrofit2.http.Query; /** diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt index 6fe37da62c..3f375e11db 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/skin/net/OchSkinServiceManager.kt @@ -7,7 +7,6 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean import com.mogo.och.biz.skin.bean.SkinRespBean import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket import com.mogo.och.common.module.constant.OchCommonConst diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt new file mode 100644 index 0000000000..7efdfef901 --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/TimeProvider.kt @@ -0,0 +1,86 @@ +package com.mogo.och.biz.time + +import android.content.Context +import com.alibaba.android.arouter.facade.annotation.Route +import com.mogo.commons.env.ProjectUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON +import com.mogo.och.biz.time.bean.TimeRespBean +import com.mogo.och.biz.time.net.OchTimeServiceManager +import com.mogo.och.common.module.biz.time.TimeService +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.RxUtils + +@Route(path = OchCommonConst.BIZ_TIME) +class TimeProvider : TimeService { + + private var context: Context? = null + + private val TAG = M_OCHCOMMON + "TimeProvider" + + private var diffTime = 0L + + override fun loadNewTime() { + OchChainLogManager.writeChainLogTime("时间同步", "开始时间同步") + d(TAG, "时间同步_开始时间同步") + val startTime = System.currentTimeMillis() + if (ProjectUtils.isSaas()) { + context?.let { + OchTimeServiceManager.queryTime(it, + object : OchCommonServiceCallback { + override fun onSuccess(data: TimeRespBean?) { + val endTime = System.currentTimeMillis() + data?.data?.let { serverTime -> + val netTime = (endTime - startTime) / 2 + val currentServerTime = serverTime + netTime + diffTime = currentServerTime - endTime + } + + OchChainLogManager.writeChainLogTime( + "时间信息", + "请求时间信息成功:${data};时间差是:${diffTime}" + ) + d(TAG, "时间同步_请求时间信息成功:${data};时间差是:${diffTime}") + } + + override fun onError() { + super.onError() + OchChainLogManager.writeChainLogTime( + "时间信息", + "请求时间信息网络失败5s后重试" + ) + d(TAG, "时间同步_请求时间信息网络失败5s后重试") + RxUtils.createSubscribe(5_000) { + loadNewTime() + } + } + + override fun onFail(code: Int, msg: String?) { + OchChainLogManager.writeChainLogTime( + "时间信息", + "请求时间信息网络失败5s后重试" + ) + d(TAG, "时间同步_请求时间信息网络失败5s后重试") + RxUtils.createSubscribe(5_000) { + loadNewTime() + } + } + + }) + } + } + } + + override fun getCurrentTimeStamp(): Long { + d(TAG,"获取时间_${System.currentTimeMillis() + diffTime}") + return System.currentTimeMillis() + diffTime + } + + + override fun init(context: Context?) { + this.context = context + } + +} \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/time/bean/TimeRespBean.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/bean/TimeRespBean.kt new file mode 100644 index 0000000000..37597b0710 --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/bean/TimeRespBean.kt @@ -0,0 +1,10 @@ +package com.mogo.och.biz.time.bean + +import com.mogo.eagle.core.data.BaseData + +/** + * Created by pangfan on 2021/8/19 + * + * 状态查询返回数据结构 + */ +data class TimeRespBean(var data: Long?) : BaseData() diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceApi.java b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceApi.java new file mode 100644 index 0000000000..168bdad78f --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceApi.java @@ -0,0 +1,21 @@ +package com.mogo.och.biz.time.net; + +import com.mogo.och.biz.time.bean.TimeRespBean; + +import io.reactivex.Observable; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; + +/** + * Created by pangfan on 2021/8/19 + *

+ * 网约车-出租车接口定义 + */ +interface OchTimeServiceApi { + + @Headers({"Content-type:application/json;charset=UTF-8"}) + @GET("/och-shuttle-bus/v1/applets/order/sys/timestamp") + Observable queryServerTime(@Header("appId") String appId, @Header("ticket") String ticket); + +} diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceManager.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceManager.kt new file mode 100644 index 0000000000..5c773453b8 --- /dev/null +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/time/net/OchTimeServiceManager.kt @@ -0,0 +1,45 @@ +package com.mogo.och.biz.time.net + +import android.content.Context +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.biz.time.bean.TimeRespBean +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.network.interceptor.transformTry + +object OchTimeServiceManager { + + private const val TAG = "OchCommonServiceManager" + + private val ochSkinService: OchTimeServiceApi by lazy { + MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create( + OchTimeServiceApi::class.java + ) + } + + + /** + * 接单状态和登录状态查询 + * + * @param context + * @param callback + */ + @JvmStatic + fun queryTime( + context: Context, + callback: OchCommonServiceCallback? + ) { + CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态"); + ochSkinService.queryServerTime( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + SharedPrefsMgr.getInstance().token + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryTime",false)) + + } + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt new file mode 100644 index 0000000000..109127aa32 --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeManager.kt @@ -0,0 +1,34 @@ +package com.mogo.och.common.module.biz.time + +import com.alibaba.android.arouter.launcher.ARouter +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager +import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.common.module.manager.loop.LoopInfo +import io.reactivex.schedulers.Schedulers + +object TimeManager { + + private const val TAG = M_OCHCOMMON+"TimeManager" + + private var skinService: TimeService? = + ARouter.getInstance().build(OchCommonConst.BIZ_TIME).navigation() as TimeService + + + fun load(){ + OchChainLogManager.writeChainLogInit("初始化信息","初始化时间系统") + d(TAG,"初始化信息_初始化时间系统") + BizLoopManager.setLoopFunction(TAG, LoopInfo(60*2, TimeManager::loadNewTime,immediately = true, scheduler = Schedulers.io())) + } + + fun loadNewTime(){ + skinService?.loadNewTime() + } + + fun getCurrentTimeStamp():Long{ + return skinService?.getCurrentTimeStamp()?:System.currentTimeMillis() + } + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt new file mode 100644 index 0000000000..a1e3bb2726 --- /dev/null +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/time/TimeService.kt @@ -0,0 +1,14 @@ +package com.mogo.och.common.module.biz.time + +import com.alibaba.android.arouter.facade.template.IProvider + +interface TimeService : IProvider { + + /** + * 获取serverTime + */ + fun loadNewTime() + + fun getCurrentTimeStamp():Long + +} \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt index f7bbf5f1d0..8d4a5a1d98 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/constant/OchCommonConst.kt @@ -30,6 +30,7 @@ class OchCommonConst { const val BIZ_LOGIN = "/ochbiz/common/login" const val BIZ_SKIN = "/ochbiz/common/skin" + const val BIZ_TIME = "/ochbiz/common/time" const val BIZ_OFFLINE = "/offlinedriver/offlinedata" const val BUS_DRIVER = "/busdriver/busdriver" diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt index 151424c21f..13c90a0199 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/logchainanalytic/OchChainLogManager.kt @@ -64,6 +64,14 @@ object OchChainLogManager { const val EVENT_KEY_INFO_MAP = "analytics_event_och_map" + const val EVENT_KEY_INFO_TIME = "analytics_event_och_time" + + // 时间方面的日志 + fun writeChainLogTime(title: String, info: String) { + writeChainLog(title, info, true, EVENT_KEY_INFO_TIME) + } + + // 轨迹方面的日志 fun writeChainLogTrajectory(title: String, info: String) { writeChainLog(title, info, true, EVENT_KEY_INFE_WITH_TRAJECTORY) diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java index de2f21f05a..5811bdc763 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/utils/DateTimeUtil.java @@ -3,6 +3,7 @@ package com.mogo.och.common.module.utils; import android.annotation.SuppressLint; import com.mogo.eagle.core.utilcode.util.DateTimeUtils; +import com.mogo.och.common.module.biz.time.TimeManager; import java.text.SimpleDateFormat; import java.util.Calendar; @@ -103,6 +104,10 @@ public class DateTimeUtil { return System.currentTimeMillis(); } + public static long getCurrentTimeStampServer(){ + return TimeManager.INSTANCE.getCurrentTimeStamp(); + } + public static long getTodayStartTime(){ Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8")); calendar.set(Calendar.HOUR_OF_DAY,0); diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt index 457b3e288a..a54a18a5da 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt @@ -35,6 +35,7 @@ import com.mogo.och.common.module.biz.login.LoginStatusEnum import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.biz.provider.CommonService import com.mogo.och.common.module.biz.skin.SkinManager +import com.mogo.och.common.module.biz.time.TimeManager import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager @@ -56,6 +57,7 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { LoginStatusManager.addListener(TAG, this) if(ProjectUtils.isSaas()) { SkinManager.load() + TimeManager.load() }else{ SkinManager.resetSkin() }