[6.9.0]
[fix] [shuttle、bus、scheduled] [服务器时间同步、部分功能]
This commit is contained in:
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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))
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user