[fix]
[shuttle、bus、scheduled]
[服务器时间同步、部分功能]
This commit is contained in:
yangyakun
2024-12-27 12:00:21 +08:00
parent af91842dae
commit da612d1951
12 changed files with 226 additions and 9 deletions

View File

@@ -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;
/**

View File

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

View File

@@ -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<TimeRespBean> {
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
}
}

View File

@@ -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()

View File

@@ -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
* <p>
* 网约车-出租车接口定义
*/
interface OchTimeServiceApi {
@Headers({"Content-type:application/json;charset=UTF-8"})
@GET("/och-shuttle-bus/v1/applets/order/sys/timestamp")
Observable<TimeRespBean> queryServerTime(@Header("appId") String appId, @Header("ticket") String ticket);
}

View File

@@ -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<TimeRespBean>?
) {
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态");
ochSkinService.queryServerTime(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryTime",false))
}
}

View File

@@ -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()
}
}

View File

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

View File

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

View File

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

View File

@@ -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);

View File

@@ -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()
}