From a39f310331f2c2e0d2cbd0b7cf493e9382966b05 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Tue, 22 Mar 2022 10:07:10 +0800 Subject: [PATCH] merge --- .../autopilot/network/AdasServiceModel.java | 4 +- .../check/VehicleMonitoringManager.kt | 2 +- .../check/net/CheckApiServiceFactory.java | 17 +- .../core/function/check/net/CheckNetWork.kt | 30 +-- .../DevaToolsProvider.kt | 12 ++ .../upgrade/UpgradeManager.kt | 49 +++++ .../upgrade/network/HostConst.kt | 22 +++ .../network/UpgradeVersionApiService.kt | 12 ++ .../network/UpgradeVersionNetWorkModel.kt | 49 +++++ .../dispatch/model/DispatchServiceModel.java | 3 +- .../hmi/ui/setting/DebugSettingView.kt | 9 + .../main/delaycheck/DelayCheckUtil.java | 8 +- .../function/monitoring/CronTaskManager.kt | 102 ++++++----- .../events/network/V2XApiServiceFactory.java | 30 ++- .../v2x/events/network/V2XRefreshModel.java | 18 +- .../events/network/V2XShareNetworkModel.java | 4 +- .../network/TrafficLightNetWorkModel.kt | 17 +- .../v2x/vip/network/VipNetWorkModel.kt | 7 +- .../com/mogo/eagle/core/data/BaseResponse.kt | 2 + .../api/devatools/IDevaToolsProvider.kt | 10 + .../api/devatools/IMoGoDevaToolsListener.kt | 5 + .../CallerDevaToolsListenerManager.kt | 9 +- .../call/devatools/CallerDevaToolsManager.kt | 14 ++ .../mogo/eagle/core/network/CoroutineDSL.kt | 14 +- .../src/main/AndroidManifest.xml | 5 + .../core/utilcode/breakpoint/Config.java | 17 ++ .../utilcode/breakpoint/bean/FileBean.java | 100 ++++++++++ .../utilcode/breakpoint/bean/ThreadBean.java | 77 ++++++++ .../breakpoint/callback/DownloadCallBack.java | 27 +++ .../core/utilcode/breakpoint/db/DBHelper.java | 35 ++++ .../utilcode/breakpoint/db/dao/ThreadDao.java | 43 +++++ .../breakpoint/db/impl/ThreadDaoImpl.java | 73 ++++++++ .../breakpoint/event/DownloadData.java | 52 ++++++ .../breakpoint/services/DownloadService.java | 171 ++++++++++++++++++ .../breakpoint/thread/DownloadTask.java | 149 +++++++++++++++ .../breakpoint/thread/DownloadThread.java | 96 ++++++++++ .../breakpoint/thread/InitThread.java | 66 +++++++ .../breakpoint/utils/DownloadUtils.java | 28 +++ .../module/service/network/RefreshModel.java | 106 +++++------ .../service/network/ZhidaoRefreshModel.java | 9 +- .../mogo/service/network/IMogoNetwork.java | 10 - .../impl/network/MogoNetWorkService.java | 5 - 42 files changed, 1317 insertions(+), 201 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/HostConst.kt create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionApiService.kt create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionNetWorkModel.kt create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/FileBean.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/ThreadBean.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/callback/DownloadCallBack.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/DBHelper.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/dao/ThreadDao.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/event/DownloadData.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/services/DownloadService.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadTask.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/InitThread.java create mode 100644 core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java diff --git a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/network/AdasServiceModel.java b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/network/AdasServiceModel.java index b19f01eb39..44465df3c5 100644 --- a/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/network/AdasServiceModel.java +++ b/core/function-impl/mogo-core-function-autopilot/src/main/java/com/mogo/eagle/core/function/autopilot/network/AdasServiceModel.java @@ -5,10 +5,10 @@ import com.mogo.commons.context.ContextHolderUtil; import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.function.autopilot.entity.AutonomousDriveStatusBean; import com.mogo.eagle.core.function.autopilot.entity.ReportSiteBean; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.eagle.core.network.RequestOptions; import com.mogo.eagle.core.network.SubscribeImpl; import com.mogo.eagle.core.network.utils.GsonUtil; -import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.HostConst; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -30,7 +30,7 @@ public class AdasServiceModel { private final IAdasApiService mAdasApiService; private AdasServiceModel() { - this.mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IAdasApiService.class, HostConst.DATA_SERVICE_HOST); + this.mAdasApiService = MoGoRetrofitFactory.getInstance(HostConst.DATA_SERVICE_HOST).create(IAdasApiService.class); } public static AdasServiceModel getInstance() { diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt index 306f3f0c7e..6f037d4a46 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/VehicleMonitoringManager.kt @@ -60,7 +60,7 @@ class VehicleMonitoringManager : ICheckProvider, IMogoStatusChangedListener { } override fun checkMonitor(context: Context) { - checkNetWork(context, object : ICheckResultCallBack { + checkNetWork( context, object : ICheckResultCallBack { override fun callBackWithCheckData(data: CheckResultData) { updateMonitoringStatus(MogoReceiver.ACTION_CHECK_VEHICLE_MONITORING, data.data.vehicle.state) if (data.data.vehicle.state == 1) { diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckApiServiceFactory.java b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckApiServiceFactory.java index aee5004d44..9754de8061 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckApiServiceFactory.java +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckApiServiceFactory.java @@ -1,11 +1,7 @@ package com.mogo.eagle.core.function.check.net; -import android.content.Context; - -import com.alibaba.android.arouter.launcher.ARouter; -import com.mogo.eagle.core.data.constants.MogoServicePaths; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.module.common.constants.HostConst; -import com.mogo.service.network.IMogoNetwork; /** * @author liujing @@ -18,18 +14,15 @@ public class CheckApiServiceFactory { /** * 获取指定域名下的 API 服务 */ - public static CheckApiServices getApiService(Context context, String netHost) { - IMogoNetwork network = (IMogoNetwork) ARouter.getInstance() - .build(MogoServicePaths.PATH_SERVICES_NETWORK) - .navigation(context); - return network.create(CheckApiServices.class, netHost); + public static CheckApiServices getApiService(String netHost) { + return MoGoRetrofitFactory.getInstance(netHost).create(CheckApiServices.class); } - public static CheckApiServices getDataApiService(Context context) { + public static CheckApiServices getDataApiService() { if (mDataApiService == null) { synchronized (CheckApiServiceFactory.class) { if (mDataApiService == null) { - mDataApiService = getApiService(context, HostConst.DATA_SERVICE_HOST); + mDataApiService = getApiService(HostConst.DATA_SERVICE_HOST); } } } diff --git a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckNetWork.kt b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckNetWork.kt index fcab4be9f8..5e37156e19 100644 --- a/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckNetWork.kt +++ b/core/function-impl/mogo-core-function-check/src/main/java/com/mogo/eagle/core/function/check/net/CheckNetWork.kt @@ -21,23 +21,23 @@ object CheckNetWork { //网络请求,获取自车检测结果(工控机上报云端) fun checkNetWork(context: Context, callbackFlow: ICheckResultCallBack) { val params = ParamsBuilder.of(false) - .append("sn", MoGoAiCloudClientConfig.getInstance().sn) - .build() + .append("sn", MoGoAiCloudClientConfig.getInstance().sn) + .build() - CheckApiServiceFactory.getDataApiService(context).loadMonitorDetail(params) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(object : SubscribeImpl(RequestOptions.create(context)) { - override fun onSuccess(o: CheckResultData) { - super.onSuccess(o) - ThreadUtils.runOnUiThread { callbackFlow?.callBackWithCheckData(o) } - } + CheckApiServiceFactory.getDataApiService().loadMonitorDetail(params) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(object : SubscribeImpl(RequestOptions.create(context)) { + override fun onSuccess(o: CheckResultData) { + super.onSuccess(o) + ThreadUtils.runOnUiThread { callbackFlow?.callBackWithCheckData(o) } + } - override fun onError(message: String, code: Int) { - super.onError(message, code) - ThreadUtils.runOnUiThread { callbackFlow?.callBackWithError(message,code) } - } - }) + override fun onError(message: String, code: Int) { + super.onError(message, code) + ThreadUtils.runOnUiThread { callbackFlow?.callBackWithError(message, code) } + } + }) } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index 6403838858..77341ceedd 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -14,6 +14,7 @@ import com.zhjt.mogo_core_function_devatools.feedback.FeedbackManager import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager +import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager import record_cache.RecordPanelOuterClass @Route(path = MogoServicePaths.PATH_DEVA_TOOLS) @@ -23,10 +24,13 @@ class DevaToolsProvider : IDevaToolsProvider { const val MODULE_NAME = "DevaTools" } + private var mContext: Context? = null + override val functionName: String get() = "DevaToolsProvider" override fun init(context: Context) { + mContext = context traceManager.init(context) MogoLogCatchManager.init(context) } @@ -80,6 +84,14 @@ class DevaToolsProvider : IDevaToolsProvider { FeedbackManager.showFeedbackWindow(ctx) } + override fun getUpgradeVersionUrls(versionName: String) { + upgradeManager.getPackageUrls(versionName) + } + + override fun downLoadPackage(downLoadKey: String) { +// upgradeManager.downLoadPackage(mContext!!, downLoadKey) + } + override fun onDestroy() { MogoLogCatchManager.onDestroy() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt new file mode 100644 index 0000000000..5351adcf9a --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/UpgradeManager.kt @@ -0,0 +1,49 @@ +package com.zhjt.mogo_core_function_devatools.upgrade + +import android.content.Context +import com.mogo.commons.context.ContextHolderUtil +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager +import com.mogo.eagle.core.utilcode.breakpoint.Config +import com.mogo.eagle.core.utilcode.breakpoint.utils.DownloadUtils +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA +import com.zhjt.mogo_core_function_devatools.upgrade.network.UpgradeVersionNetWorkModel + +class UpgradeManager { + + companion object { + + const val TAG = "UpgradeManager" + + val upgradeManager by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + UpgradeManager() + } + } + + private val upgradeVersionNetWorkModel = UpgradeVersionNetWorkModel() + private var map: Map? = null + private var version: String? = null + + fun getPackageUrls(version: String) { + this.version = version + upgradeVersionNetWorkModel.requestUpgradeVersionUrls(version, onSuccess = { + map = it + CallerDevaToolsListenerManager.invokeDevaToolsUpgradeVersionUrls(map) + }, onError = { + CallerLogger.e("$M_DEVA$TAG", " getPackageUrls error: $it") + }) + } + + fun downLoadPackage(context: Context, downLoadKey: String) { +// val downLoadUrl = map?.get(downLoadKey) +// downLoadUrl?.let { + DownloadUtils.downLoad( + context, + "https://scm-1255510688.cos.ap-beijing.myqcloud.com/test/com.mogo.launcher.f/2.5.1.1009/IntelligentPilot_v2.5.1.1009_20220216_[fPadLenovoOchTaxi-launcher-online]_debug.apk", + Config.downLoadPath, + downLoadKey, + 5 + ) +// } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/HostConst.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/HostConst.kt new file mode 100644 index 0000000000..5dd7fdb187 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/HostConst.kt @@ -0,0 +1,22 @@ +package com.zhjt.mogo_core_function_devatools.upgrade.network + +import com.mogo.commons.debug.DebugConfig + +class HostConst { + + companion object { + private const val HOST_DEV = "http://myflow.ee-private-dev.myghost.zhidaoauto.com" + private const val HOST_RELEASE = "https://myflow.zhidaoauto.com" + + fun getBaseUrl(): String { + return when (DebugConfig.getNetMode()) { + DebugConfig.NET_MODE_DEV -> HOST_DEV + DebugConfig.NET_MODE_QA -> HOST_DEV + DebugConfig.NET_MODE_DEMO -> HOST_RELEASE + DebugConfig.NET_MODE_RELEASE -> HOST_RELEASE + else -> HOST_RELEASE + } + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionApiService.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionApiService.kt new file mode 100644 index 0000000000..15887781d7 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionApiService.kt @@ -0,0 +1,12 @@ +package com.zhjt.mogo_core_function_devatools.upgrade.network + +import com.mogo.eagle.core.data.Response +import retrofit2.http.GET +import retrofit2.http.Query + +interface UpgradeVersionApiService { + + @GET("/backend/app/getApkInfo") + suspend fun getUpgradeVersion(@Query("fileName") versionName: String): Response + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionNetWorkModel.kt new file mode 100644 index 0000000000..13c5f29ff4 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/upgrade/network/UpgradeVersionNetWorkModel.kt @@ -0,0 +1,49 @@ +package com.zhjt.mogo_core_function_devatools.upgrade.network + +import com.mogo.eagle.core.data.Response +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.network.apiResponseCall +import com.mogo.eagle.core.network.request +import com.mogo.module.common.constants.HostConst +import com.zhjt.mogo_core_function_devatools.upgrade.network.HostConst.Companion.getBaseUrl + +class UpgradeVersionNetWorkModel { + + private fun getNetWorkApi(baseUrl: String = HostConst.CITY_HOST): UpgradeVersionApiService { + return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl) + .create(UpgradeVersionApiService::class.java) + } + + fun requestUpgradeVersionUrls( + versionName: String, + onSuccess: ((Map) -> Unit), + onError: ((String) -> Unit) + ) { + request> { + loader { + apiResponseCall { + getNetWorkApi(getBaseUrl()).getUpgradeVersion( + versionName + ) + } + } + onSuccess { + if (it.data != null) { + val jsonData = it.data.toString() + val map = mutableMapOf() + jsonData.split(",").forEach { data -> + val array = data.split("=") + map[array[0]] = array[1] + } + onSuccess.invoke(map) + } else { + onError.invoke("没有获取到最新版本信息") + } + } + onError { + onError.invoke(it.message ?: "获取最新版本信息失败") + } + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/model/DispatchServiceModel.java b/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/model/DispatchServiceModel.java index 60c04e640e..db78ed49ab 100644 --- a/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/model/DispatchServiceModel.java +++ b/core/function-impl/mogo-core-function-dispatch/src/main/java/com/zhjt/dispatch/model/DispatchServiceModel.java @@ -9,6 +9,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo; import com.mogo.eagle.core.data.autopilot.AutopilotStatus; import com.mogo.eagle.core.data.dispatch.ReportDispatchResult; import com.mogo.eagle.core.data.dispatch.ReportedRoute; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.eagle.core.network.RequestOptions; import com.mogo.eagle.core.network.SubscribeImpl; import com.mogo.eagle.core.network.utils.GsonUtil; @@ -34,7 +35,7 @@ public class DispatchServiceModel { private final IDispatchAdasApiService mAdasApiService; private DispatchServiceModel() { - mAdasApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create(IDispatchAdasApiService.class, DATA_SERVICE_HOST); + mAdasApiService = MoGoRetrofitFactory.getInstance(DATA_SERVICE_HOST).create(IDispatchAdasApiService.class); } public static DispatchServiceModel getInstance() { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index 434d101e80..bc0141771f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -3,10 +3,12 @@ package com.mogo.eagle.core.function.hmi.ui.setting import android.annotation.SuppressLint import android.content.Context import android.graphics.Color +import android.os.Build import android.text.Html import android.util.AttributeSet import android.view.LayoutInflater import android.view.View +import androidx.annotation.RequiresApi import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import com.mogo.cloud.passport.MoGoAiCloudClient @@ -145,6 +147,8 @@ class DebugSettingView @JvmOverloads constructor( CallerAutopilotIdentifyListenerManager.addListener(TAG, this) // 添加 规划路径相关回调 监听 CallerAutopilotPlanningListenerManager.addListener(TAG, this) + // 添加 工控机基础信息回调 监听 + CallerAutopilotCarConfigListenerManager.addListener(TAG, this) if (logInfoView != null) { logInfoView!!.onEnterForeground() } @@ -890,6 +894,10 @@ class DebugSettingView @JvmOverloads constructor( override fun moduleLogChanged(moduleTag: MutableMap) { //todo 模块日志 tag 发生变化,需要更新对应 UI } + + override fun upgradeVersionUrls(urls: Map?) { + //todo 版本信息更新 + } }) /** @@ -1145,6 +1153,7 @@ class DebugSettingView @JvmOverloads constructor( mGnssInfo = gnssInfo } + @RequiresApi(Build.VERSION_CODES.N) override fun onAutopilotIdentifyDataUpdate(trafficData: List?) { // 重制数据 mIdentifyDataSize = 0 diff --git a/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/delaycheck/DelayCheckUtil.java b/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/delaycheck/DelayCheckUtil.java index 267df7b8f6..55ad4ced29 100644 --- a/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/delaycheck/DelayCheckUtil.java +++ b/core/function-impl/mogo-core-function-main/src/main/java/com/mogo/eagle/core/function/main/delaycheck/DelayCheckUtil.java @@ -10,12 +10,12 @@ import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.data.map.MogoLocation; import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.eagle.core.network.RequestOptions; import com.mogo.eagle.core.network.SubscribeImpl; import com.mogo.eagle.core.network.utils.GsonUtil; import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.map.location.IMogoLocationClient; -import com.mogo.module.common.MogoApisHandler; import io.reactivex.schedulers.Schedulers; import okhttp3.MediaType; @@ -79,8 +79,7 @@ public class DelayCheckUtil implements Handler.Callback { private void startEmptyRequest() { requestTime = SystemClock.elapsedRealtime(); requestStartSystemTime = System.currentTimeMillis(); - MogoApisHandler.getInstance().getApis().getNetworkApi() - .create(DelayCheckApiServices.class, DelayCheckHttpConstant.getBaseUrl()) + MoGoRetrofitFactory.getInstance(DelayCheckHttpConstant.getBaseUrl()).create(DelayCheckApiServices.class) .emptyInterface().subscribeOn(Schedulers.io()).observeOn(Schedulers.io()) .subscribe(new SubscribeImpl(RequestOptions.create(context)) { @Override @@ -128,8 +127,7 @@ public class DelayCheckUtil implements Handler.Callback { RequestBody params = RequestBody.create(MediaType.get("application/json"), GsonUtil.jsonFromObject(request)); - MogoApisHandler.getInstance().getApis().getNetworkApi() - .create(DelayCheckApiServices.class, DelayCheckHttpConstant.getBaseUrl()) + MoGoRetrofitFactory.getInstance(DelayCheckHttpConstant.getBaseUrl()).create(DelayCheckApiServices.class) .uploadDelayCheckData(params).observeOn(Schedulers.io()).subscribeOn(Schedulers.io()) .subscribe(new SubscribeImpl(RequestOptions.create(context)) { @Override diff --git a/core/function-impl/mogo-core-function-monitoring/src/main/java/com/mogo/eagle/core/function/monitoring/CronTaskManager.kt b/core/function-impl/mogo-core-function-monitoring/src/main/java/com/mogo/eagle/core/function/monitoring/CronTaskManager.kt index 716ed288db..1ecf72376f 100644 --- a/core/function-impl/mogo-core-function-monitoring/src/main/java/com/mogo/eagle/core/function/monitoring/CronTaskManager.kt +++ b/core/function-impl/mogo-core-function-monitoring/src/main/java/com/mogo/eagle/core/function/monitoring/CronTaskManager.kt @@ -6,10 +6,11 @@ import android.os.Looper import android.os.Message import com.mogo.eagle.core.data.camera.CameraEntity import com.mogo.eagle.core.data.camera.ReqLiveCarBean -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MONITOR import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.function.monitoring.net.CameraListServices +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MONITOR import com.mogo.map.MogoLocationClient import com.mogo.module.common.MogoApisHandler import com.mogo.module.common.constants.HostConst @@ -58,7 +59,8 @@ class CronTaskManager(private var context: Context?) { @Deprecated("已废弃", ReplaceWith("requestDeviceList()"), DeprecationLevel.WARNING) private fun requestCameraList() { // 衡阳可直播的摄像头有限,先写死roadId便于调试 - disposable = netWork.create(CameraListServices::class.java, HostConst.CAMERA_STREAM_HOST) + disposable = MoGoRetrofitFactory.getInstance(HostConst.CAMERA_STREAM_HOST) + .create(CameraListServices::class.java) .getCameraList("10849") .subscribeOn(Schedulers.io()) .map { cameraListInfo -> @@ -88,7 +90,8 @@ class CronTaskManager(private var context: Context?) { */ private fun requestDeviceList() { MogoLocationClient.getInstance(context).lastKnowLocation?.let { location -> - disposable = netWork.create(CameraListServices::class.java, HostConst.CITY_HOST) + disposable = MoGoRetrofitFactory.getInstance(HostConst.CITY_HOST) + .create(CameraListServices::class.java) .getDeviceList(location.longitude, location.latitude, 500) .subscribeOn(Schedulers.io()) .map { cameraListInfo -> @@ -121,32 +124,32 @@ class CronTaskManager(private var context: Context?) { private fun requestCarCameraList() { MogoLocationClient.getInstance(context).lastKnowLocation?.let { location -> - carDisposable = - netWork.create(CameraListServices::class.java, HostConst.CITY_HOST) - .getCarCameraList(ReqLiveCarBean(location.longitude, location.latitude)) - .subscribeOn(Schedulers.io()) - .map { liveCarCameraInfo -> - liveCarCameraInfo.result?.liveCamera?.filter { liveCarCamera -> - !liveCarCamera.videoSn.isNullOrEmpty() - }?.map { cameraInfo -> - CameraEntity( - sn = cameraInfo.videoSn, - street = cameraInfo.street, - township = cameraInfo.township - ) - } ?: ArrayList() - } - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - carCameraList = it -// CallerLogger.d("$M_MONITOR$TAG", "requestCarCameraList返回结果为:$it") - }, { - CallerLogger.e( - "$M_MONITOR$TAG", - "message is:${it.message}, cause is:${it.cause}" + carDisposable = MoGoRetrofitFactory.getInstance(HostConst.CITY_HOST) + .create(CameraListServices::class.java) + .getCarCameraList(ReqLiveCarBean(location.longitude, location.latitude)) + .subscribeOn(Schedulers.io()) + .map { liveCarCameraInfo -> + liveCarCameraInfo.result?.liveCamera?.filter { liveCarCamera -> + !liveCarCamera.videoSn.isNullOrEmpty() + }?.map { cameraInfo -> + CameraEntity( + sn = cameraInfo.videoSn, + street = cameraInfo.street, + township = cameraInfo.township ) - it.printStackTrace() - }) + } ?: ArrayList() + } + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + carCameraList = it +// CallerLogger.d("$M_MONITOR$TAG", "requestCarCameraList返回结果为:$it") + }, { + CallerLogger.e( + "$M_MONITOR$TAG", + "message is:${it.message}, cause is:${it.cause}" + ) + it.printStackTrace() + }) } ?: run { CallerLogger.e("$M_MONITOR$TAG", "CurrentLocation is null!") } @@ -160,26 +163,26 @@ class CronTaskManager(private var context: Context?) { streamDisposable?.let { if (!it.isDisposed) it.dispose() } - streamDisposable = - netWork.create(CameraListServices::class.java, HostConst.OPEN_CAMERA_STREAM_HOST) - .openCameraStream(cameraIp) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - CallerLogger.d("$M_MONITOR$TAG", "openCameraStream返回结果为:$it") - it.result?.let { streamResult -> - if (!streamResult.flvUrl.isNullOrEmpty()) CallerHmiManager.startRoadCameraLive( - streamResult.flvUrl!! - ) - } - }, { - CallerLogger.e( - "$M_MONITOR$TAG", - "openCameraStream&message is:${it.message}, cause is:${it.cause}" + streamDisposable = MoGoRetrofitFactory.getInstance(HostConst.OPEN_CAMERA_STREAM_HOST) + .create(CameraListServices::class.java) + .openCameraStream(cameraIp) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + CallerLogger.d("$M_MONITOR$TAG", "openCameraStream返回结果为:$it") + it.result?.let { streamResult -> + if (!streamResult.flvUrl.isNullOrEmpty()) CallerHmiManager.startRoadCameraLive( + streamResult.flvUrl!! ) - CallerHmiManager.showNoSignalView() - it.printStackTrace() - }) + } + }, { + CallerLogger.e( + "$M_MONITOR$TAG", + "openCameraStream&message is:${it.message}, cause is:${it.cause}" + ) + CallerHmiManager.showNoSignalView() + it.printStackTrace() + }) } /** @@ -189,7 +192,8 @@ class CronTaskManager(private var context: Context?) { streamDisposable?.let { if (!it.isDisposed) it.dispose() } - streamDisposable = netWork.create(CameraListServices::class.java, HostConst.CITY_HOST) + streamDisposable = MoGoRetrofitFactory.getInstance(HostConst.CITY_HOST) + .create(CameraListServices::class.java) .reqOpenCameraStream(cameraIp) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XApiServiceFactory.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XApiServiceFactory.java index d106a9d025..8f687d8f5c 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XApiServiceFactory.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XApiServiceFactory.java @@ -1,11 +1,7 @@ package com.mogo.eagle.core.function.v2x.events.network; -import android.content.Context; - -import com.alibaba.android.arouter.launcher.ARouter; -import com.mogo.eagle.core.data.constants.MogoServicePaths; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.module.common.constants.HostConst; -import com.mogo.service.network.IMogoNetwork; /** * 应对不同接口对应不同服务域名的工厂累 @@ -16,54 +12,52 @@ public class V2XApiServiceFactory { private static V2XApiService mGeoFenceCarServiceApiService; private static V2XApiService mRealtimeLocationApiService; private static V2XApiService mDataServiceApiService; + /** * 获取指定域名下的 API 服务 */ - public static V2XApiService getApiService(Context context, String netHost) { - IMogoNetwork network = (IMogoNetwork) ARouter.getInstance() - .build(MogoServicePaths.PATH_SERVICES_NETWORK) - .navigation(context); - return network.create(V2XApiService.class, netHost); + public static V2XApiService getApiService(String netHost) { + return MoGoRetrofitFactory.getInstance(netHost).create(V2XApiService.class); } - public static V2XApiService getDevaApiService(Context context) { + public static V2XApiService getDevaApiService() { if (mDevaApiService == null) { synchronized (V2XApiServiceFactory.class) { if (mDevaApiService == null) { - mDevaApiService = getApiService(context, HostConst.DEVA_HOST); + mDevaApiService = getApiService(HostConst.DEVA_HOST); } } } return mDevaApiService; } - public static V2XApiService getGeoFenceCarServiceApiService(Context context) { + public static V2XApiService getGeoFenceCarServiceApiService() { if (mGeoFenceCarServiceApiService == null) { synchronized (V2XApiServiceFactory.class) { if (mGeoFenceCarServiceApiService == null) { - mGeoFenceCarServiceApiService = getApiService(context, HostConst.GEOFENCE_HOST); + mGeoFenceCarServiceApiService = getApiService(HostConst.GEOFENCE_HOST); } } } return mGeoFenceCarServiceApiService; } - public static V2XApiService getRealtimeLocationApiService(Context context) { + public static V2XApiService getRealtimeLocationApiService() { if (mRealtimeLocationApiService == null) { synchronized (V2XApiServiceFactory.class) { if (mRealtimeLocationApiService == null) { - mRealtimeLocationApiService = getApiService(context, HostConst.REALTIME_LOCATION_HOST); + mRealtimeLocationApiService = getApiService(HostConst.REALTIME_LOCATION_HOST); } } } return mRealtimeLocationApiService; } - public static V2XApiService getStrategyPushApiService(Context context) { + public static V2XApiService getStrategyPushApiService() { if (mDataServiceApiService == null) { synchronized (V2XApiServiceFactory.class) { if (mDataServiceApiService == null) { - mDataServiceApiService = getApiService(context, HostConst.STRATEGY_PUSH_HOST); + mDataServiceApiService = getApiService(HostConst.STRATEGY_PUSH_HOST); } } } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java index bfe7be0a7c..5f0d5a63e8 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XRefreshModel.java @@ -57,7 +57,7 @@ public class V2XRefreshModel { public void giveLikeLiveVideo(final V2XRefreshCallback callback, String snStr) { final Map query = new ParamsProvider.Builder(mContext).build(); query.put("data", "{\"sn\":" + snStr + "}"); - V2XApiServiceFactory.getGeoFenceCarServiceApiService(mContext).giveLikeLiveVideo(query) + V2XApiServiceFactory.getGeoFenceCarServiceApiService().giveLikeLiveVideo(query) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @@ -92,7 +92,7 @@ public class V2XRefreshModel { okhttp3.MediaType.parse("application/json; charset=utf-8"), "{\"sn\":\"" + sn + "\"}"); - V2XApiServiceFactory.getRealtimeLocationApiService(mContext).queryUserInfoBySn(body) + V2XApiServiceFactory.getRealtimeLocationApiService().queryUserInfoBySn(body) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @@ -142,7 +142,7 @@ public class V2XRefreshModel { dataStr.append("}"); query.put("data", dataStr.toString()); - V2XApiServiceFactory.getRealtimeLocationApiService(mContext).queryNearbyVehicleLiveByLocation(query) + V2XApiServiceFactory.getRealtimeLocationApiService().queryNearbyVehicleLiveByLocation(query) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @@ -182,7 +182,7 @@ public class V2XRefreshModel { .append(0) .append("}").toString(); map.put("data", json); - V2XApiServiceFactory.getRealtimeLocationApiService(mContext).sendHelpSignal(map).subscribeOn(Schedulers.io()) + V2XApiServiceFactory.getRealtimeLocationApiService().sendHelpSignal(map).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override @@ -225,7 +225,7 @@ public class V2XRefreshModel { .append("\"sn\":").append(MoGoAiCloudClientConfig.getInstance().getSn()) .append("}").toString(); map.put("data", json); - V2XApiServiceFactory.getDevaApiService(mContext).addPoiInfoFabulous(map).subscribeOn(Schedulers.io()) + V2XApiServiceFactory.getDevaApiService().addPoiInfoFabulous(map).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override @@ -263,7 +263,7 @@ public class V2XRefreshModel { .append("\"enthusiasticSn\":").append(MoGoAiCloudClientConfig.getInstance().getSn()) .append("}").toString(); map.put("data", json); - V2XApiServiceFactory.getDevaApiService(mContext).respondingToHelp(map).subscribeOn(Schedulers.io()) + V2XApiServiceFactory.getDevaApiService().respondingToHelp(map).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override @@ -290,7 +290,7 @@ public class V2XRefreshModel { final Map map = new ParamsProvider.Builder(mContext).build(); String json = "{" + "\"id\":\"" + id + "\"," + "\"sn\":\"" + MoGoAiCloudClientConfig.getInstance().getSn() + "\"," + "\"status\":" + status + "," + "\"helpId\":\"" + helpId + "\"}"; map.put("data", json); - V2XApiServiceFactory.getDevaApiService(mContext).manualMarkingTrafficJam(map).subscribeOn(Schedulers.io()) + V2XApiServiceFactory.getDevaApiService().manualMarkingTrafficJam(map).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override @@ -309,7 +309,7 @@ public class V2XRefreshModel { * 根据名称获取策略详情 */ public void getStrategyPush(V2XRefreshCallback callback) { - V2XApiServiceFactory.getStrategyPushApiService(mContext).getStrategyPush().subscribeOn(Schedulers.io()) + V2XApiServiceFactory.getStrategyPushApiService().getStrategyPush().subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override @@ -341,7 +341,7 @@ public class V2XRefreshModel { public void getHelpSignal(V2XRefreshCallback callback) { final Map map = new ParamsProvider.Builder(mContext).build(); map.put("sn", MoGoAiCloudClientConfig.getInstance().getSn()); - V2XApiServiceFactory.getRealtimeLocationApiService(mContext).queryHelpSignal(map).subscribeOn(Schedulers.io()) + V2XApiServiceFactory.getRealtimeLocationApiService().queryHelpSignal(map).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XShareNetworkModel.java b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XShareNetworkModel.java index 44101ffeef..bf79a8c55c 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XShareNetworkModel.java +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/events/network/V2XShareNetworkModel.java @@ -104,7 +104,7 @@ public class V2XShareNetworkModel { builder.append("data", GsonUtil.jsonFromObject(hashMap)); Map parameters = builder.build(); //热心指数 - V2XApiServiceFactory.getDevaApiService(mContext).getEnthusiasmIndex(parameters) + V2XApiServiceFactory.getDevaApiService().getEnthusiasmIndex(parameters) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create((mContext))) { @@ -148,7 +148,7 @@ public class V2XShareNetworkModel { builder.append("data", GsonUtil.jsonFromObject(hashMap)); Map parameters = builder.build(); - V2XApiServiceFactory.getDevaApiService(mContext).getShareEventList(parameters) + V2XApiServiceFactory.getDevaApiService().getShareEventList(parameters) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt index 4b33655f13..04c61374d9 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/trafficlight/network/TrafficLightNetWorkModel.kt @@ -4,19 +4,17 @@ import com.google.gson.Gson import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.BaseResponse import com.mogo.eagle.core.data.trafficlight.* +import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.network.apiCall import com.mogo.eagle.core.network.cancel import com.mogo.eagle.core.network.request -import com.mogo.module.common.MogoApisHandler import com.mogo.module.common.constants.HostConst.CITY_HOST - class TrafficLightNetWorkModel { private fun getNetWorkApi(baseUrl: String = CITY_HOST): TrafficLightApiService { - return MogoApisHandler.getInstance().apis.networkApi.createNoCallAdapter( - TrafficLightApiService::class.java, baseUrl - ) + return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl) + .create(TrafficLightApiService::class.java) } fun requestRoadID( @@ -86,10 +84,10 @@ class TrafficLightNetWorkModel { } } onSuccess { - if(it.result!=null){ + if (it.result != null) { onSuccess.invoke(it.result) - }else{ - onError.invoke(it.msg?:"返回result数据为null") + } else { + onError.invoke(it.msg ?: "返回result数据为null") } } onError { @@ -115,7 +113,8 @@ class TrafficLightNetWorkModel { request> { val map = hashMapOf() start { - val trafficLightRequestData = ChangeLightRequestData(lightId, crossingNo, heading, controlTime) + val trafficLightRequestData = + ChangeLightRequestData(lightId, crossingNo, heading, controlTime) map["sn"] = MoGoAiCloudClientConfig.getInstance().sn map["data"] = Gson().toJson(trafficLightRequestData) } diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/network/VipNetWorkModel.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/network/VipNetWorkModel.kt index f92ef4a096..5d44e53012 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/network/VipNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/network/VipNetWorkModel.kt @@ -3,18 +3,17 @@ package com.mogo.eagle.core.function.v2x.vip.network import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.data.BaseResponse import com.mogo.eagle.core.data.v2x.VipRequest +import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.eagle.core.network.apiCall import com.mogo.eagle.core.network.request -import com.mogo.module.common.MogoApisHandler import com.mogo.module.common.constants.HostConst.DATA_SERVICE_HOST class VipNetWorkModel { private fun getNetWorkApi(baseUrl: String = DATA_SERVICE_HOST): VipApiService { - return MogoApisHandler.getInstance().apis.networkApi.createNoCallAdapter( - VipApiService::class.java, baseUrl - ) + return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl) + .create(VipApiService::class.java) } fun requestVip(onSuccess: ((VipRequest) -> Unit), onError: ((String) -> Unit)) { diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/BaseResponse.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/BaseResponse.kt index faad8af3e3..aafc8a4808 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/BaseResponse.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/BaseResponse.kt @@ -1,3 +1,5 @@ package com.mogo.eagle.core.data class BaseResponse(val code: Int, val msg: String, val result: T) + +class Response(val code: Int, val msg: String, val data: T) \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index 1b81017f93..80a0dd7b88 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -79,4 +79,14 @@ interface IDevaToolsProvider : IMoGoFunctionServerProvider { * 展示反馈页面 */ fun showFeedbackWindow(ctx: Context) + + /** + * 获取升级版本Urls + */ + fun getUpgradeVersionUrls(versionName: String) + + /** + * 下载指定包 + */ + fun downLoadPackage(downLoadKey:String) } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsListener.kt index 488465ae7e..54742a3d82 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsListener.kt @@ -24,4 +24,9 @@ interface IMoGoDevaToolsListener { * 模块TAG更新回调 */ fun moduleLogChanged(moduleTag: MutableMap) + + /** + * 版本升级Urls + */ + fun upgradeVersionUrls(urls: Map?) } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsListenerManager.kt index 3f4a08b98f..3009b4de04 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsListenerManager.kt @@ -65,11 +65,18 @@ object CallerDevaToolsListenerManager { } } - fun invokeDevaToolsModuleLogChanges(moduleTag: MutableMap){ + fun invokeDevaToolsModuleLogChanges(moduleTag: MutableMap) { M_DEVA_TOOLS_LISTENER.forEach { val listener = it.value listener.moduleLogChanged(moduleTag) } } + fun invokeDevaToolsUpgradeVersionUrls(urls: Map?) { + M_DEVA_TOOLS_LISTENER.forEach { + val listener = it.value + listener.upgradeVersionUrls(urls) + } + } + } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index f216303736..1350291189 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -103,4 +103,18 @@ object CallerDevaToolsManager { fun showFeedbackView(ctx: Context) { devaToolsProviderApi?.showFeedbackWindow(ctx) } + + /** + * 获取升级版本Urls + */ + fun getUpgradeVersionUrls(versionName: String) { + devaToolsProviderApi?.getUpgradeVersionUrls(versionName) + } + + /** + * 下载指定包 + */ + fun downLoadPackage(downLoadKey: String) { + devaToolsProviderApi?.downLoadPackage(downLoadKey) + } } \ No newline at end of file diff --git a/core/mogo-core-network/src/main/java/com/mogo/eagle/core/network/CoroutineDSL.kt b/core/mogo-core-network/src/main/java/com/mogo/eagle/core/network/CoroutineDSL.kt index c15c268b8f..1f1957cef1 100644 --- a/core/mogo-core-network/src/main/java/com/mogo/eagle/core/network/CoroutineDSL.kt +++ b/core/mogo-core-network/src/main/java/com/mogo/eagle/core/network/CoroutineDSL.kt @@ -2,6 +2,7 @@ package com.mogo.eagle.core.network import androidx.lifecycle.LifecycleOwner import com.mogo.eagle.core.data.BaseResponse +import com.mogo.eagle.core.data.Response import com.mogo.eagle.core.network.exception.ApiException import com.mogo.eagle.core.network.exception.CommonException.Companion.NETWORK_EXCEPTION import com.mogo.eagle.core.network.exception.CommonException.Companion.NULL_EXCEPTION @@ -65,7 +66,13 @@ class Request { } val result = deferred.await() - if (result != null && result is BaseResponse<*>) { + if (result != null && (result is BaseResponse<*>)) { + if (result.code == 0 || result.code == 200) { + onSuccess?.invoke(result) + } else { + throw ApiException(result.code, result.msg) + } + } else if (result is Response<*>) { if (result.code == 0 || result.code == 200) { onSuccess?.invoke(result) } else { @@ -114,3 +121,8 @@ fun cancel(requestKey: String) { suspend fun apiCall(call: suspend () -> BaseResponse): BaseResponse { return call.invoke() } + +suspend fun apiResponseCall(call: suspend () -> Response): Response { + return call.invoke() +} + diff --git a/core/mogo-core-utils/src/main/AndroidManifest.xml b/core/mogo-core-utils/src/main/AndroidManifest.xml index 11c86de1fd..75e28a63d8 100644 --- a/core/mogo-core-utils/src/main/AndroidManifest.xml +++ b/core/mogo-core-utils/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + @@ -35,5 +36,9 @@ + + + + \ No newline at end of file diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java new file mode 100644 index 0000000000..cab22c02bf --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/Config.java @@ -0,0 +1,17 @@ +package com.mogo.eagle.core.utilcode.breakpoint; + +import android.os.Environment; + +/** + * Created by kun on 2016/11/10. + * 配置类 + */ +public class Config { + /** + * 文件下载地址 + */ + public final static String downLoadPath = Environment.getExternalStorageDirectory().getAbsolutePath() + + "/downloads/"; + + public final static String DOWN_LOAD_TAG = "Package-DownLoad"; +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/FileBean.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/FileBean.java new file mode 100644 index 0000000000..a1dd2dd74d --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/FileBean.java @@ -0,0 +1,100 @@ +package com.mogo.eagle.core.utilcode.breakpoint.bean; + +import java.io.Serializable; + +public class FileBean implements Serializable { + + private int id; + private String savePath; + private String fileName; + private String url; + private int length; + private int finished; + private int threadCount; + + public FileBean() { + } + + public FileBean(int id, String fileName, String url, int finished) { + this.id = id; + this.fileName = fileName; + this.url = url; + this.finished = finished; + } + public FileBean(int id, String savePath,String fileName, String url, int finished) { + this.id = id; + this.savePath = savePath; + this.fileName = fileName; + this.url = url; + this.finished = finished; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getSavePath() { + return savePath; + } + + public void setSavePath(String savePath) { + this.savePath = savePath; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + + + public int getFinished() { + return finished; + } + + public void setFinished(int finished) { + this.finished = finished; + } + + public int getThreadCount() { + return threadCount; + } + + public void setThreadCount(int threadCount) { + this.threadCount = threadCount; + } + + @Override + public String toString() { + int progress = (int) (finished*1.0f/length *100); + return "FileBean{" + + "id=" + id + + ", fileName='" + fileName + '\'' + + ", length=" + length + + ", finished=" + finished + + ",progress="+progress+ + '}'; + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/ThreadBean.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/ThreadBean.java new file mode 100644 index 0000000000..ca0451f852 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/bean/ThreadBean.java @@ -0,0 +1,77 @@ +package com.mogo.eagle.core.utilcode.breakpoint.bean; + +import java.io.Serializable; + +/** + * Created by kun on 2016/11/10. + */ +public class ThreadBean implements Serializable{ + + private int id; + private String url; + private int start; + private int end; + private int finished; + + public ThreadBean() { + } + + public ThreadBean(int id, String url, int start, int end, int finished) { + this.id = id; + this.url = url; + this.start = start; + this.end = end; + this.finished = finished; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public int getStart() { + return start; + } + + public void setStart(int start) { + this.start = start; + } + + public int getEnd() { + return end; + } + + public void setEnd(int end) { + this.end = end; + } + + public int getFinished() { + return finished; + } + + public void setFinished(int finished) { + this.finished = finished; + } + + @Override + public String toString() { + return "ThreadBean{" + + "id=" + id + + ", url='" + url + '\'' + + ", start=" + start + + ", end=" + end + + ", finished=" + finished + + '}'; + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/callback/DownloadCallBack.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/callback/DownloadCallBack.java new file mode 100644 index 0000000000..4e3c4a021f --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/callback/DownloadCallBack.java @@ -0,0 +1,27 @@ +package com.mogo.eagle.core.utilcode.breakpoint.callback; + + +import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean; + +/** + * Created by kun on 2016/11/11. + * 下载进度回调 + */ +public interface DownloadCallBack { + /** + * 暂停回调 + * @param threadBean + */ + void pauseCallBack(ThreadBean threadBean); + /** + * 下载进度 + * @param length + */ + void progressCallBack(int length); + + /** + * 线程下载完毕 + * @param threadBean + */ + void threadDownLoadFinished(ThreadBean threadBean); +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/DBHelper.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/DBHelper.java new file mode 100644 index 0000000000..caf4a2df67 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/DBHelper.java @@ -0,0 +1,35 @@ +package com.mogo.eagle.core.utilcode.breakpoint.db; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by kun on 2016/11/10. + */ +public class DBHelper extends SQLiteOpenHelper{ + + private static final String DB_NAME = "download.db"; + private static DBHelper dbHelper = null; + + public static DBHelper getInstance(Context context){ + if(dbHelper==null) dbHelper = new DBHelper(context); + return dbHelper; + } + + private DBHelper(Context context) { + super(context, DB_NAME, null, 1); + } + + @Override + public void onCreate(SQLiteDatabase db) { + String sql = "create table thread_info (_id integer primary key autoincrement," + + "thread_id integer,url text,start integer,ends integer,finished integer)"; + db.execSQL(sql); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/dao/ThreadDao.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/dao/ThreadDao.java new file mode 100644 index 0000000000..0481d093fa --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/dao/ThreadDao.java @@ -0,0 +1,43 @@ +package com.mogo.eagle.core.utilcode.breakpoint.db.dao; + + +import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean; + +import java.util.List; + +public interface ThreadDao { + /** + * 插入下载线程信息 + * @param threadBean + */ + void insertThread(ThreadBean threadBean); + + /** + * 更新下载线程信息 + * @param url + * @param thread_id + * @param finished + */ + void updateThread(String url, int thread_id, int finished); + + /** + * 删除下载线程 + * @param url + */ + void deleteThread(String url); + + /** + * 获取下载线程 + * @param url + * @return + */ + List getThreads(String url); + + /** + * 判断下载线程是否存在 + * @param url + * @param thread_id + * @return + */ + boolean isExists(String url, int thread_id); +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java new file mode 100644 index 0000000000..58d8b14869 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/db/impl/ThreadDaoImpl.java @@ -0,0 +1,73 @@ +package com.mogo.eagle.core.utilcode.breakpoint.db.impl; + +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + +import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean; +import com.mogo.eagle.core.utilcode.breakpoint.db.DBHelper; +import com.mogo.eagle.core.utilcode.breakpoint.db.dao.ThreadDao; + +import java.util.ArrayList; +import java.util.List; + +public class ThreadDaoImpl implements ThreadDao { + + private DBHelper dbHelper; + + public ThreadDaoImpl(Context context){ + dbHelper = DBHelper.getInstance(context); + } + + @Override + public synchronized void insertThread(ThreadBean threadBean) { + SQLiteDatabase db = dbHelper.getWritableDatabase(); + db.execSQL("insert into thread_info ( thread_id, url, start, ends, finished) values (?,?,?,?,?)" + ,new Object[]{threadBean.getId(),threadBean.getUrl(),threadBean.getStart(),threadBean.getEnd(),threadBean.getFinished()}); + db.close(); + } + + @Override + public synchronized void updateThread(String url, int thread_id, int finished) { + SQLiteDatabase db = dbHelper.getWritableDatabase(); + db.execSQL("update thread_info set finished = ? where url = ? and thread_id = ?" + ,new Object[]{finished,url,thread_id}); + db.close(); + } + + @Override + public void deleteThread(String url) { + SQLiteDatabase db = dbHelper.getWritableDatabase(); + db.execSQL("delete from thread_info where url = ?",new Object[]{url}); + db.close(); + } + + @Override + public List getThreads(String url) { + SQLiteDatabase db = dbHelper.getReadableDatabase(); + Cursor cursor = db.rawQuery("select * from thread_info where url = ?",new String[]{url}); + List threadBeanList = new ArrayList<>(); + while (cursor.moveToNext()){ + ThreadBean bean = new ThreadBean(); + bean.setId(cursor.getInt(cursor.getColumnIndex("thread_id"))); + bean.setUrl(cursor.getString(cursor.getColumnIndex("url"))); + bean.setStart(cursor.getInt(cursor.getColumnIndex("start"))); + bean.setEnd(cursor.getInt(cursor.getColumnIndex("ends"))); + bean.setFinished(cursor.getInt(cursor.getColumnIndex("finished"))); + threadBeanList.add(bean); + } + cursor.close(); + db.close(); + return threadBeanList; + } + + @Override + public boolean isExists(String url, int thread_id) { + SQLiteDatabase db = dbHelper.getReadableDatabase(); + Cursor cursor = db.rawQuery("select * from thread_info where url = ? and thread_id = ?", new String[]{url,thread_id+""}); + boolean exists = cursor.moveToNext(); + cursor.close(); + db.close(); + return exists; + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/event/DownloadData.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/event/DownloadData.java new file mode 100644 index 0000000000..085f657768 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/event/DownloadData.java @@ -0,0 +1,52 @@ +package com.mogo.eagle.core.utilcode.breakpoint.event; + +/** + * Created by G40-70M on 2016/11/16. + */ +public class DownloadData { + private String url; + private int progress; + private int length; + private String msg; + private String filePath; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public int getProgress() { + return progress; + } + + public void setProgress(int progress) { + this.progress = progress; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/services/DownloadService.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/services/DownloadService.java new file mode 100644 index 0000000000..a69d7ceb56 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/services/DownloadService.java @@ -0,0 +1,171 @@ +package com.mogo.eagle.core.utilcode.breakpoint.services; + +import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG; + +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.os.IBinder; +import android.util.Log; + +import androidx.annotation.Nullable; + +import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; +import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData; +import com.mogo.eagle.core.utilcode.breakpoint.thread.DownloadTask; +import com.mogo.eagle.core.utilcode.breakpoint.thread.InitThread; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * 下载服务 + */ +public class DownloadService extends Service implements InitThread.InitCallBack { + + public static final String ACTION_START = "ACTION_START"; + public static final String ACTION_PAUSE = "ACTION_PAUSE"; + /** + * 下载任务集合 + */ + private final List downloadTasks = new ArrayList<>(); + public static ExecutorService executorService = Executors.newCachedThreadPool(); + private NetConnectionReceiver netConnectionReceiver; + + @Override + public void onCreate() { + super.onCreate(); + IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); + netConnectionReceiver = new NetConnectionReceiver(); + registerReceiver(netConnectionReceiver, filter); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + if (intent == null) { + Log.e(DOWN_LOAD_TAG, "onStartCommand intent is null"); + return Service.START_NOT_STICKY; + } + + String action = intent.getAction(); + if (action == null) { + Log.e(DOWN_LOAD_TAG, "onStartCommand action is null"); + return Service.START_NOT_STICKY; + } + + if (action.equals(ACTION_START)) { + Log.d(DOWN_LOAD_TAG, "ACTION_START"); + FileBean fileBean = (FileBean) intent.getSerializableExtra("FileBean"); + if (downloadTasks.size() > 0) { + for (DownloadTask downloadTask : downloadTasks) { + if (downloadTask.getFileBean().getUrl().equals(fileBean.getUrl())) { + //如果下载任务中以后该文件的下载任务 则直接返回 + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setMsg("下载任务已存在"); +// EventMessage eventMessage = new EventMessage(EventMessage.TYPE_ERROR, downloadData); +// EventBus.getDefault().post(eventMessage); + return super.onStartCommand(intent, flags, startId); + } + } + } + executorService.execute(new InitThread(fileBean, this)); + } else if (intent.getAction().equals(ACTION_PAUSE)) { + FileBean fileBean = (FileBean) intent.getSerializableExtra("FileBean"); + DownloadTask pauseTask = null; + if (downloadTasks.size() > 0) { + for (DownloadTask downloadTask : downloadTasks) { + if (downloadTask.getFileBean().getUrl().equals(fileBean.getUrl())) { + downloadTask.pauseDownload(); + pauseTask = downloadTask; + break; + } + } + //将下载任务移除 + downloadTasks.remove(pauseTask); + } + } + return super.onStartCommand(intent, flags, startId); + } + + //下载线程初始化完毕 + @Override + public void initSuccess(FileBean fileBean) { + Log.d(DOWN_LOAD_TAG, "length:" + fileBean.getLength()); + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setMsg("开始下载"); + downloadData.setLength(fileBean.getLength()); +// EventMessage eventMsg = new EventMessage(EventMessage.TYPE_START, downloadData); +// EventBus.getDefault().post(eventMsg); + //开始下载 + DownloadTask downloadTask = new DownloadTask(this, fileBean, fileBean.getThreadCount()); + downloadTasks.add(downloadTask); + } + + @Override + public void initFailed(DownloadData downloadData) { + Log.e(DOWN_LOAD_TAG, "initFailed : " + downloadData.getMsg()); + } + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public void onDestroy() { + super.onDestroy(); + unregisterReceiver(netConnectionReceiver); + } + + private class NetConnectionReceiver extends BroadcastReceiver { + + @Override + public void onReceive(Context context, Intent intent) { + ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); + NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); + + if (mobNetInfo == null || wifiNetInfo == null) { + return; + } + + if (downloadTasks.size() == 0) { + return; + } + + if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) { + //网络连接已断开 + for (DownloadTask downloadTask : downloadTasks) { + downloadTask.pauseDownload();//暂停所有下载任务 + //发送下载完成事件 + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(downloadTask.getFileBean().getUrl()); + downloadData.setLength(downloadTask.getFileBean().getLength()); + downloadData.setMsg("网络断开暂停下载"); +// EventMessage message = new EventMessage(EventMessage.TYPE_PAUSE, downloadData); +// EventBus.getDefault().post(message); + } + } else { + //网络连接已连接 + for (DownloadTask downloadTask : downloadTasks) { + downloadTask.startDownload();//继续所有下载任务 + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(downloadTask.getFileBean().getUrl()); + downloadData.setLength(downloadTask.getFileBean().getLength()); + downloadData.setMsg("网络恢复继续下载"); +// EventMessage message = new EventMessage(EventMessage.TYPE_START, downloadData); +// EventBus.getDefault().post(message); + } + } + } + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadTask.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadTask.java new file mode 100644 index 0000000000..3c46c2457c --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadTask.java @@ -0,0 +1,149 @@ +package com.mogo.eagle.core.utilcode.breakpoint.thread; + +import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG; + +import android.content.Context; +import android.util.Log; + +import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; +import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean; +import com.mogo.eagle.core.utilcode.breakpoint.callback.DownloadCallBack; +import com.mogo.eagle.core.utilcode.breakpoint.db.dao.ThreadDao; +import com.mogo.eagle.core.utilcode.breakpoint.db.impl.ThreadDaoImpl; +import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData; +import com.mogo.eagle.core.utilcode.breakpoint.services.DownloadService; + +import java.util.ArrayList; +import java.util.List; + +/** + * 下载任务 + */ +public class DownloadTask implements DownloadCallBack { + + private FileBean fileBean; + private int downloadThreadCount; + private ThreadDao dao; + + /** + * 总下载完成进度 + */ + private int finishedProgress = 0; + /** + * 下载线程信息集合 + */ + private List threads; + /** + * 下载线程集合 + */ + private final List downloadThreads = new ArrayList<>(); + + public DownloadTask(Context context, FileBean fileBean, int downloadThreadCount) { + this.fileBean = fileBean; + this.downloadThreadCount = downloadThreadCount; + dao = new ThreadDaoImpl(context); + //初始化下载线程 + initDownThreads(); + } + + private void initDownThreads() { + //查询数据库中的下载线程信息 + threads = dao.getThreads(fileBean.getUrl()); + if(threads.size()==0){//如果列表没有数据 则为第一次下载 + Log.w(DOWN_LOAD_TAG,"第一次下载"); + //根据下载的线程总数平分各自下载的文件长度 + int length = fileBean.getLength()/downloadThreadCount; + for(int i = 0; i500 || finishedProgress==fileBean.getLength()){ + fileBean.setFinished(finishedProgress); + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setProgress((int) (finishedProgress*1.0/fileBean.getLength()*100)); + downloadData.setLength(fileBean.getLength()); + downloadData.setMsg("下载进度回调"); +// EventMessage message = new EventMessage(EventMessage.TYPE_PROGRESS,downloadData); +// EventBus.getDefault().post(message); + curTime = System.currentTimeMillis(); + } + } + + @Override + public synchronized void threadDownLoadFinished(ThreadBean threadBean) { + for(ThreadBean bean:threads){ + if(bean.getId() == threadBean.getId()){ + //从列表中将已下载完成的线程信息移除 + threads.remove(bean); + break; + } + } + if(threads.size()==0){//如果列表size为0 则所有线程已下载完成 + //删除数据库中的信息 + dao.deleteThread(fileBean.getUrl()); + //发送下载完成事件 + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setMsg("下载完成"); + downloadData.setFilePath(fileBean.getSavePath()+fileBean.getFileName()); +// EventMessage message = new EventMessage(EventMessage.TYPE_FINISHED,downloadData); +// EventBus.getDefault().post(message); + } + } + + public FileBean getFileBean() { + return fileBean; + } + +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java new file mode 100644 index 0000000000..057d85c596 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/DownloadThread.java @@ -0,0 +1,96 @@ +package com.mogo.eagle.core.utilcode.breakpoint.thread; + + +import com.mogo.eagle.core.utilcode.breakpoint.Config; +import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; +import com.mogo.eagle.core.utilcode.breakpoint.bean.ThreadBean; +import com.mogo.eagle.core.utilcode.breakpoint.callback.DownloadCallBack; +import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData; + +import java.io.File; +import java.io.InputStream; +import java.io.RandomAccessFile; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * 下载线程 + */ +public class DownloadThread extends Thread { + + private FileBean fileBean; + private ThreadBean threadBean; + private DownloadCallBack callback; + private Boolean isPause = false; + + public DownloadThread(FileBean fileBean, ThreadBean threadBean, DownloadCallBack callback) { + this.fileBean = fileBean; + this.threadBean = threadBean; + this.callback = callback; + } + + public void setPause(Boolean pause) { + isPause = pause; + } + + @Override + public void run() { + HttpURLConnection connection = null; + RandomAccessFile raf = null; + InputStream inputStream = null; + try { + URL url = new URL(threadBean.getUrl()); + connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(10000); + connection.setRequestMethod("GET"); + //设置下载起始位置 + int start = threadBean.getStart() + threadBean.getFinished(); + connection.setRequestProperty("Range","bytes="+start+"-"+threadBean.getEnd()); + //设置写入位置 + File file = new File(Config.downLoadPath,fileBean.getFileName()); + raf = new RandomAccessFile(file,"rwd"); + raf.seek(start); + //开始下载 + if(connection.getResponseCode() == HttpURLConnection.HTTP_PARTIAL){ + inputStream = connection.getInputStream(); + byte[] bytes = new byte[1024]; + int len = -1; + while ((len = inputStream.read(bytes))!=-1){ + raf.write(bytes,0,len); + //将加载的进度回调出去 + callback.progressCallBack(len); + //保存进度 + threadBean.setFinished(threadBean.getFinished()+len); + //在下载暂停的时候将下载进度保存到数据库 + if(isPause){ + callback.pauseCallBack(threadBean); + return; + } + } + //下载完成 + callback.threadDownLoadFinished(threadBean); + } + + } catch (Exception e) { + e.printStackTrace(); + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setMsg(e.getMessage()); +// EventMessage eventMessage = new EventMessage(EventMessage.TYPE_ERROR,downloadData); +// EventBus.getDefault().post(eventMessage); + } finally { + try { + inputStream.close(); + raf.close(); + connection.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setMsg(e.getMessage()); +// EventMessage eventMessage = new EventMessage(EventMessage.TYPE_ERROR,downloadData); +// EventBus.getDefault().post(eventMessage); + } + } + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/InitThread.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/InitThread.java new file mode 100644 index 0000000000..b456f56e84 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/thread/InitThread.java @@ -0,0 +1,66 @@ +package com.mogo.eagle.core.utilcode.breakpoint.thread; + +import static com.mogo.eagle.core.utilcode.breakpoint.Config.DOWN_LOAD_TAG; + +import android.util.Log; + +import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; +import com.mogo.eagle.core.utilcode.breakpoint.event.DownloadData; + +import java.io.File; +import java.io.RandomAccessFile; +import java.net.HttpURLConnection; +import java.net.URL; + +/** + * 初始化线程 + */ +public class InitThread extends Thread{ + + private final FileBean fileBean; + private InitCallBack initCallBack; + + public InitThread(FileBean fileBean,InitCallBack initCallBack) { + this.fileBean = fileBean; + this.initCallBack = initCallBack; + } + + public interface InitCallBack{ + + void initSuccess(FileBean fileBean); + + void initFailed(DownloadData downloadData); + } + + @Override + public void run() { + HttpURLConnection connection ; + RandomAccessFile randomAccessFile ; + try { + URL url = new URL(fileBean.getUrl()); + connection = (HttpURLConnection) url.openConnection(); + connection.setConnectTimeout(10000); + connection.setRequestMethod("GET"); + int fileLength = -1; + if(connection.getResponseCode() == HttpURLConnection.HTTP_OK){ + fileLength = connection.getContentLength(); + } + if(fileLength<=0) return; + File dir = new File(fileBean.getSavePath()); + if(!dir.exists()){ + dir.mkdir(); + } + File file = new File(dir,fileBean.getFileName()); + randomAccessFile = new RandomAccessFile(file,"rwd"); + randomAccessFile.setLength(fileLength); + fileBean.setLength(fileLength); + this.initCallBack.initSuccess(fileBean); + }catch (Exception e){ + DownloadData downloadData = new DownloadData(); + downloadData.setUrl(fileBean.getUrl()); + downloadData.setMsg(e.getMessage()); + this.initCallBack.initFailed(downloadData); + e.printStackTrace(); + } + } +} diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java new file mode 100644 index 0000000000..ff6cd05fb8 --- /dev/null +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/breakpoint/utils/DownloadUtils.java @@ -0,0 +1,28 @@ +package com.mogo.eagle.core.utilcode.breakpoint.utils; + +import android.content.Context; +import android.content.Intent; + +import com.mogo.eagle.core.utilcode.breakpoint.bean.FileBean; +import com.mogo.eagle.core.utilcode.breakpoint.services.DownloadService; + + +public class DownloadUtils { + + public static void downLoad(Context context,String url,String savePath,String fileName,int downloadThreadCount){ + FileBean fileBean = new FileBean(0,savePath,fileName,url,0); + fileBean.setThreadCount(downloadThreadCount); + Intent startIntent = new Intent(context, DownloadService.class); + startIntent.setAction(DownloadService.ACTION_START); + startIntent.putExtra("FileBean", fileBean); + context.startService(startIntent); + } + + public static void pauseDownLoad(Context context,String url){ + FileBean fileBean = new FileBean(0,null,null,url,0); + Intent pauseIntent = new Intent(context, DownloadService.class); + pauseIntent.setAction(DownloadService.ACTION_PAUSE); + pauseIntent.putExtra("FileBean", fileBean); + context.startService(pauseIntent); + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index 7ffc90e78f..9228b1e204 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -5,10 +5,10 @@ import android.content.Context; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.commons.network.ParamsProvider; import com.mogo.eagle.core.data.map.MogoLatLng; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; import com.mogo.eagle.core.network.RequestOptions; import com.mogo.eagle.core.network.SubscribeImpl; import com.mogo.eagle.core.network.utils.GsonUtil; -import com.mogo.module.common.MogoApisHandler; import com.mogo.module.common.constants.HostConst; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.service.ServiceConst; @@ -32,56 +32,56 @@ public class RefreshModel { private final Context mContext; private final RefreshApiService mRefreshApiService; - public RefreshModel( Context context ) { + public RefreshModel(Context context) { this.mContext = context; - this.mRefreshApiService = MogoApisHandler.getInstance().getApis().getNetworkApi().create( RefreshApiService.class, HostConst.LAUNCHER_SNAPSHOT_HOST); + this.mRefreshApiService = MoGoRetrofitFactory.getInstance(HostConst.LAUNCHER_SNAPSHOT_HOST).create(RefreshApiService.class); } public RefreshApiService getRefreshApiService() { return mRefreshApiService; } - public void refreshExplorerWayData( MogoLatLng latLng, int radius, int limit, final RefreshCallback callback ) { - if ( mRefreshApiService != null ) { - final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build(); + public void refreshExplorerWayData(MogoLatLng latLng, int radius, int limit, final RefreshCallback callback) { + if (mRefreshApiService != null) { + final Map query = new ParamsProvider.Builder(mContext).build(); final RefreshBody refreshBody = new RefreshBody(); refreshBody.limit = limit; - refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lon ); + refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lon); refreshBody.radius = radius; refreshBody.viewPush = true; - refreshBody.dataType.add( ServiceConst.CARD_TYPE_ROAD_CONDITION ); + refreshBody.dataType.add(ServiceConst.CARD_TYPE_ROAD_CONDITION); - String data = GsonUtil.jsonFromObject( refreshBody ); - query.put( "data", data ); + String data = GsonUtil.jsonFromObject(refreshBody); + query.put("data", data); - mRefreshApiService.refreshDataSync( query ) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe( new SubscribeImpl< MarkerResponse >( RequestOptions.create( mContext ) ) { + mRefreshApiService.refreshDataSync(query) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override - public void onSuccess( MarkerResponse o ) { - super.onSuccess( o ); - if ( callback != null ) { - callback.onSuccess( o ); + public void onSuccess(MarkerResponse o) { + super.onSuccess(o); + if (callback != null) { + callback.onSuccess(o); } } @Override - public void onError( Throwable e ) { - super.onError( e ); - if ( callback != null ) { + public void onError(Throwable e) { + super.onError(e); + if (callback != null) { callback.onFail(); } } @Override - public void onError( String message, int code ) { - super.onError( message, code ); - if ( callback != null ) { + public void onError(String message, int code) { + super.onError(message, code); + if (callback != null) { callback.onFail(); } } - } ); + }); } } @@ -95,56 +95,56 @@ public class RefreshModel { * @param callback * @param onlyRealUser 是否只查询真实用户 */ - public void queryOnLineCarWithRoute( MogoLatLng latLng, - boolean onlyFocus, - boolean onlySameCity, - int radius, - int limit, - boolean onlyRealUser, - final RefreshCallback callback ) { - if ( mRefreshApiService != null ) { - final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build(); + public void queryOnLineCarWithRoute(MogoLatLng latLng, + boolean onlyFocus, + boolean onlySameCity, + int radius, + int limit, + boolean onlyRealUser, + final RefreshCallback callback) { + if (mRefreshApiService != null) { + final Map query = new ParamsProvider.Builder(mContext).build(); final RefreshBody refreshBody = new RefreshBody(); refreshBody.sn = MoGoAiCloudClientConfig.getInstance().getSn(); - if ( limit > 0 ) { + if (limit > 0) { refreshBody.limit = limit; } refreshBody.radius = radius; - refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lon ); + refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lon); refreshBody.onlyFocus = onlyFocus; refreshBody.onlySameCity = onlySameCity; refreshBody.onlyRealUser = onlyRealUser; - refreshBody.dataType.add( ServiceConst.CARD_TYPE_USER_DATA ); + refreshBody.dataType.add(ServiceConst.CARD_TYPE_USER_DATA); - query.put( "data", GsonUtil.jsonFromObject( refreshBody ) ); - mRefreshApiService.queryOnLineCarWithRoute( query ) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe( new SubscribeImpl< MarkerResponse >( RequestOptions.create( mContext ) ) { + query.put("data", GsonUtil.jsonFromObject(refreshBody)); + mRefreshApiService.queryOnLineCarWithRoute(query) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { @Override - public void onSuccess( MarkerResponse o ) { - super.onSuccess( o ); - if ( callback != null ) { - callback.onSuccess( o ); + public void onSuccess(MarkerResponse o) { + super.onSuccess(o); + if (callback != null) { + callback.onSuccess(o); } } @Override - public void onError( Throwable e ) { - super.onError( e ); - if ( callback != null ) { + public void onError(Throwable e) { + super.onError(e); + if (callback != null) { callback.onFail(); } } @Override - public void onError( String message, int code ) { - super.onError( message, code ); - if ( callback != null ) { + public void onError(String message, int code) { + super.onError(message, code); + if (callback != null) { callback.onFail(); } } - } ); + }); } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java index 2cdd6091fa..a360a519fe 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/ZhidaoRefreshModel.java @@ -3,8 +3,9 @@ package com.mogo.module.service.network; import android.content.Context; import com.alibaba.android.arouter.launcher.ARouter; -import com.mogo.module.common.constants.HostConst; import com.mogo.eagle.core.data.constants.MogoServicePaths; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; +import com.mogo.module.common.constants.HostConst; import com.mogo.service.network.IMogoNetwork; @@ -20,9 +21,9 @@ public class ZhidaoRefreshModel { private final ZhidaoApiService mRefreshApiService; - public ZhidaoRefreshModel( Context context ) { - IMogoNetwork network = ( IMogoNetwork ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_NETWORK ).navigation( context ); - this.mRefreshApiService = network.create( ZhidaoApiService.class, HostConst.CARLIFE_HOST); + public ZhidaoRefreshModel(Context context) { + IMogoNetwork network = (IMogoNetwork) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_NETWORK).navigation(context); + this.mRefreshApiService = MoGoRetrofitFactory.getInstance(HostConst.CARLIFE_HOST).create(ZhidaoApiService.class); } public ZhidaoApiService getRefreshApiService() { diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/network/IMogoNetwork.java b/services/mogo-service-api/src/main/java/com/mogo/service/network/IMogoNetwork.java index 0857b2fef1..d995f43e5d 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/network/IMogoNetwork.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/network/IMogoNetwork.java @@ -23,14 +23,4 @@ public interface IMogoNetwork extends IProvider { @Keep T create(final Class service, String baseUrl); - /** - * 返回无CallAdapter Retrofit代理对象 - * - * @param service 业务类 - * @param baseUrl url - * @param - * @return 业务类动态代理 - */ - @Keep - T createNoCallAdapter(final Class service, String baseUrl); } diff --git a/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java b/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java index 0343ebd25c..d5ffc1db45 100644 --- a/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java +++ b/services/mogo-service/src/main/java/com/mogo/service/impl/network/MogoNetWorkService.java @@ -26,9 +26,4 @@ public class MogoNetWorkService implements IMogoNetwork { return MoGoRetrofitFactory.getInstance(baseUrl).create(service); } - @Override - public T createNoCallAdapter(Class service, String baseUrl) { - return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl).create(service); - } - }