[6.4.0]
[业务分发]
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
package com.mogo.och.facade.route
|
||||
|
||||
import android.content.Context
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.FragmentManager
|
||||
@@ -8,6 +12,7 @@ import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
@@ -26,85 +31,10 @@ import com.mogo.och.facade.constant.FacadeConst
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = FacadeConst.DRIVER_PATH)
|
||||
class FacadeDriverProvider : IMoGoFunctionProvider, ILoginCallback {
|
||||
private var containerId = 0
|
||||
private var activity: FragmentActivity? = null
|
||||
class FacadeDriverProvider : FacadeProvider() {
|
||||
private val TAG = "FacadeDriverProvider"
|
||||
override fun init(context: Context) {
|
||||
d(TAG, "init")
|
||||
LoginStatusManager.addListener(TAG, this)
|
||||
queryLoginStatusByNet()
|
||||
}
|
||||
|
||||
override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? {
|
||||
containerId = integer!!
|
||||
activity = fragmentActivity
|
||||
showFragment()
|
||||
return null
|
||||
}
|
||||
|
||||
override val functionName: String
|
||||
get() = TAG
|
||||
|
||||
private fun showFragment() {
|
||||
val supportFragmentManager: FragmentManager? = activity?.supportFragmentManager
|
||||
|
||||
val fragment= if(LoginStatusManager.isLogin()){
|
||||
getFragment()
|
||||
}else{
|
||||
LoginStatusManager.getFragment()
|
||||
}
|
||||
d(SceneConstant.M_TAXI_P + TAG, "准备add fragment======")
|
||||
|
||||
if(supportFragmentManager!=null){
|
||||
val back = supportFragmentManager.beginTransaction()
|
||||
back.replace(containerId,fragment,fragment.tag)
|
||||
back.commit()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFragment(): Fragment {
|
||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.BUS_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.SHUTTLE_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.CHARTER_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.TAXI_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.SWEEPER_DRIVER)
|
||||
}
|
||||
return LoginStatusManager.getFragment()
|
||||
}
|
||||
|
||||
private fun getFragmentByServeName(serviceName: String): Fragment {
|
||||
val bizService = ARouter.getInstance().build(serviceName).navigation() as CommonService?
|
||||
if (bizService == null) {
|
||||
try {
|
||||
return LoginStatusManager.getFragment()
|
||||
} catch (e: ClassNotFoundException) {
|
||||
OchChainLogManager.writeChainLog(
|
||||
"Init",
|
||||
"没有找到登录Fragment",
|
||||
eventID = OchChainLogManager.EVENT_KEY_INFE_ERROR
|
||||
)
|
||||
return Fragment()
|
||||
}
|
||||
} else {
|
||||
return bizService.getFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
|
||||
if (activity == null) return
|
||||
activity!!.finish()
|
||||
}
|
||||
|
||||
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum) {
|
||||
d(TAG, "登录状态发生改变 ${currentStatus}")
|
||||
//showFragment()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
|
||||
package com.mogo.och.facade.route;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.facade.constant.FacadeConst;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* 网约车小巴业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = FacadeConst.PASSENGER_PATH)
|
||||
public class FacadePassengerProvider implements IMoGoFunctionProvider {
|
||||
|
||||
private static final String TAG = "FacadePassengerProvider";
|
||||
|
||||
private int containerId;
|
||||
private FragmentActivity activity;
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
}
|
||||
|
||||
private void showFragment() {
|
||||
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFunctionName() {
|
||||
return TAG;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Fragment createCoverage(@Nullable FragmentActivity fragmentActivity, @Nullable Integer integer) {
|
||||
this.containerId = integer;
|
||||
this.activity = fragmentActivity;
|
||||
showFragment();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
|
||||
if (activity == null) return;
|
||||
activity.finish();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.mogo.och.facade.route
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.och.facade.constant.FacadeConst
|
||||
|
||||
/**
|
||||
* 网约车小巴业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = FacadeConst.PASSENGER_PATH)
|
||||
class FacadePassengerProvider : FacadeProvider() {
|
||||
private val TAG = FacadePassengerProvider::class.java.simpleName
|
||||
|
||||
override val functionName: String
|
||||
get() = TAG
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
package com.mogo.och.facade.route
|
||||
|
||||
import android.content.Context
|
||||
import android.view.Gravity
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.login.ILoginCallback
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager.queryLoginStatusByNet
|
||||
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.provider.CommonService
|
||||
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
|
||||
import com.mogo.och.facade.constant.FacadeConst
|
||||
|
||||
/**
|
||||
* 网约车小巴业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
|
||||
private var containerId = 0
|
||||
private var activity: FragmentActivity? = null
|
||||
private val TAG = "FacadeProvider"
|
||||
private var commonService: CommonService? = null
|
||||
override fun init(context: Context) {
|
||||
d(TAG, "FacadeProvider:init")
|
||||
LoginStatusManager.addListener(TAG, this)
|
||||
queryLoginStatusByNet()
|
||||
}
|
||||
|
||||
override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? {
|
||||
containerId = integer!!
|
||||
activity = fragmentActivity
|
||||
showFragment()
|
||||
return null
|
||||
}
|
||||
|
||||
private fun showFragment() {
|
||||
val supportFragmentManager: FragmentManager? = activity?.supportFragmentManager
|
||||
|
||||
val fragment = if (LoginStatusManager.isLogin()) {
|
||||
getFragment()
|
||||
} else {
|
||||
LoginStatusManager.getFragment()
|
||||
}
|
||||
|
||||
d(TAG, "切换 fragment:${fragment}")
|
||||
|
||||
if (supportFragmentManager != null) {
|
||||
val back = supportFragmentManager.beginTransaction()
|
||||
back.replace(containerId, fragment, fragment.tag)
|
||||
back.commit()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFragment(): Fragment {
|
||||
if (AppIdentityModeUtils.isBusDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.BUS_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isShuttleDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.SHUTTLE_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isCharterDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.CHARTER_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isTaxiDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.TAXI_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.SWEEPER_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isBusPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.BUS_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isShuttlePassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.SHUTTLE_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isCharterPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.CHARTER_DRIVER)
|
||||
} else if (AppIdentityModeUtils.isTaxiPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
return getFragmentByServeName(OchCommonConst.TAXI_DRIVER)
|
||||
}
|
||||
return LoginStatusManager.getFragment()
|
||||
}
|
||||
|
||||
private fun getFragmentByServeName(serviceName: String): Fragment {
|
||||
commonService = ARouter.getInstance().build(serviceName).navigation() as CommonService?
|
||||
return if (commonService == null) {
|
||||
try {
|
||||
LoginStatusManager.getFragment()
|
||||
} catch (e: ClassNotFoundException) {
|
||||
OchChainLogManager.writeChainLog(
|
||||
"Init",
|
||||
"没有找到登录Fragment",
|
||||
eventID = OchChainLogManager.EVENT_KEY_INFE_ERROR
|
||||
)
|
||||
Fragment()
|
||||
}
|
||||
} else {
|
||||
commonService!!.getFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
|
||||
if (activity == null) return
|
||||
activity!!.finish()
|
||||
}
|
||||
|
||||
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum) {
|
||||
d(TAG, "登录状态发生改变 ${currentStatus}")
|
||||
showFragment()
|
||||
}
|
||||
|
||||
|
||||
private fun injectStatusBar() {
|
||||
activity?.let {
|
||||
val decorView = it.window.decorView as? FrameLayout ?: return
|
||||
val contentView =
|
||||
(decorView.findViewById<View>(android.R.id.content) as? ViewGroup)?.getChildAt(0)
|
||||
?: return
|
||||
contentView.fitsSystemWindows = false
|
||||
decorView.clipToPadding = false
|
||||
var statusBarView = decorView.findViewWithTag<View>("status_bar")
|
||||
val statusBar = commonService?.getStatusBarView(it)
|
||||
statusBarView = statusBar ?: StatusBarView(it)
|
||||
statusBarView.tag = "status_bar"
|
||||
val statusBarLP = FrameLayout.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||
)
|
||||
statusBarLP.topMargin = 0
|
||||
statusBarLP.gravity = Gravity.TOP
|
||||
decorView.addView(statusBarView, statusBarLP)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user