[6.4.0]
[模式拦截、车型名称修改、清扫车路由]
This commit is contained in:
@@ -21,7 +21,7 @@ object BusVoiceManager {
|
||||
}
|
||||
|
||||
fun arrivedStationBus(siteNameCN: String?, siteNameKR: String?) {
|
||||
if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
return
|
||||
}
|
||||
val context = AbsMogoApplication.getApp()
|
||||
|
||||
@@ -20,9 +20,9 @@ class BizMapView @JvmOverloads constructor(
|
||||
private lateinit var mapBizView: MapBizView
|
||||
|
||||
init {
|
||||
if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
LayoutInflater.from(context).inflate(R.layout.bus_m2_bizmap_map, this, true)
|
||||
}else if(AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)){
|
||||
}else if(AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)){
|
||||
LayoutInflater.from(context).inflate(R.layout.bus_jl_bizmap_map, this, true)
|
||||
}else{
|
||||
LayoutInflater.from(context).inflate(R.layout.bus_jl_bizmap_map, this, true)
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.mogo.och.bus.passenger.passenger.ui.widget.M2StatusBarView
|
||||
import com.mogo.och.bus.passenger.ui.BusPStatusBarView
|
||||
import com.mogo.och.bus.passenger.ui.BusPassengerRouteFragment
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonService
|
||||
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
|
||||
|
||||
@@ -33,7 +32,7 @@ class BusPassengerProvider : CommonServiceImpl() {
|
||||
private lateinit var mPM2Fragment: Fragment
|
||||
|
||||
override fun getFragment(): Fragment {
|
||||
if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
MultiDisplayUtils.startActWithSecond(ActivityUtils.getTopActivity(), MediaPlayerActivity::class.java)
|
||||
}
|
||||
return mPM2Fragment
|
||||
@@ -41,9 +40,9 @@ class BusPassengerProvider : CommonServiceImpl() {
|
||||
|
||||
override fun getStatusBarView(context: Context): View {
|
||||
if(statusBarView==null) {
|
||||
statusBarView = if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
statusBarView = if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
M2StatusBarView(context)
|
||||
} else if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
} else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
BusPStatusBarView(context)
|
||||
} else{
|
||||
StatusBarView(context)
|
||||
@@ -54,9 +53,9 @@ class BusPassengerProvider : CommonServiceImpl() {
|
||||
|
||||
override fun init(context: Context) {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + tag, "init")
|
||||
mPM2Fragment = if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
mPM2Fragment = if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
PM2BaseFragment()
|
||||
} else if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
} else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
BusPassengerRouteFragment()
|
||||
} else {
|
||||
BusPassengerRouteFragment()
|
||||
|
||||
@@ -40,7 +40,7 @@ import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManag
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
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.TaxiLoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.manager.CharterSendTripInfoManager
|
||||
import com.mogo.och.common.module.manager.CharterSendTripInfoManager.LEAVE_STATION
|
||||
@@ -164,7 +164,7 @@ object CharterPassengerModel {
|
||||
*/
|
||||
private fun listenerLoginStatus() {
|
||||
LoginStatusManager.addListener(TAG,object : ILoginCallback{
|
||||
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum?) {
|
||||
override fun onStatusChange(currentStatus: LoginStatusEnum?) {
|
||||
if (LoginStatusManager.isLogin()) {
|
||||
// 1、打开视频播放、
|
||||
// 2 、打开空调暖风机灯设置页面
|
||||
|
||||
@@ -7,15 +7,18 @@ import com.alibaba.android.arouter.facade.annotation.Route
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.biz.login.callback.ILoginViewCallback
|
||||
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
|
||||
import com.mogo.och.biz.login.model.LoginStatusDefaultModel
|
||||
import com.mogo.och.biz.login.ui.LoginFragment
|
||||
import com.mogo.och.biz.login.ui.LoginPassengerFragment
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.login.BusinessEnum
|
||||
import com.mogo.och.common.module.biz.login.LoginInfo
|
||||
import com.mogo.och.common.module.biz.login.LoginService
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.login.TaxiDriverRoleEnum
|
||||
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.login.RoleEnum
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusEnum
|
||||
|
||||
/**
|
||||
* 网约车小巴业务实现入口
|
||||
@@ -27,7 +30,8 @@ class LoginProvider : LoginService {
|
||||
|
||||
private val tag = LoginProvider::class.java.simpleName
|
||||
private lateinit var loginFragment: Fragment
|
||||
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
|
||||
private var loginStatus: LoginStatusEnum = LoginStatusEnum.None
|
||||
private var businessEnum: BusinessEnum = BusinessEnum.None
|
||||
private var loginInfo: LoginInfo?=null
|
||||
|
||||
override fun init(context: Context) {
|
||||
@@ -54,13 +58,13 @@ class LoginProvider : LoginService {
|
||||
CallerLogger.d(tag,"setLoginStatus:${status}")
|
||||
when (status) {
|
||||
0 -> {
|
||||
setLoginStatus(TaxiLoginStatusEnum.Logout)
|
||||
setLoginStatus(LoginStatusEnum.Logout)
|
||||
}
|
||||
1 -> {
|
||||
setLoginStatus(TaxiLoginStatusEnum.Login)
|
||||
setLoginStatus(LoginStatusEnum.Login)
|
||||
}
|
||||
else -> {
|
||||
setLoginStatus(TaxiLoginStatusEnum.None)
|
||||
setLoginStatus(LoginStatusEnum.None)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -75,6 +79,42 @@ class LoginProvider : LoginService {
|
||||
LoginStatusDefaultModel.logout(mLatitude, mLongitude)
|
||||
}
|
||||
|
||||
override fun checkBusiness(data: LoginInfo): Boolean {
|
||||
val businessEnum = BusinessEnum.valueOf(data.businessType)
|
||||
FunctionBuildConfig.supportBusiness.forEach {
|
||||
when (it) {
|
||||
"shuttle" -> {
|
||||
return checkBusiness(businessEnum==BusinessEnum.Shuttle)
|
||||
}
|
||||
"bus" -> {
|
||||
return checkBusiness(businessEnum==BusinessEnum.Bus)
|
||||
}
|
||||
"taxi" -> {
|
||||
return checkBusiness(businessEnum==BusinessEnum.Taxi)
|
||||
}
|
||||
"charter" -> {
|
||||
return checkBusiness(businessEnum==BusinessEnum.Charter)
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
if(loginFragment is ILoginViewCallback){
|
||||
(loginFragment as ILoginViewCallback).showErrorInfo("业务模式不支持")
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
private fun checkBusiness(isSupply:Boolean):Boolean{
|
||||
return if(isSupply){
|
||||
true
|
||||
}else{
|
||||
if(loginFragment is ILoginViewCallback){
|
||||
(loginFragment as ILoginViewCallback).showErrorInfo("业务模式不支持")
|
||||
}
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
override fun setLoginInfo(loginInfo: LoginInfo) {
|
||||
CallerLogger.d(tag,"setLoginInfo:${loginInfo}")
|
||||
this.loginInfo = loginInfo
|
||||
@@ -85,28 +125,43 @@ class LoginProvider : LoginService {
|
||||
return loginInfo
|
||||
}
|
||||
|
||||
override fun getPurpose(): TaxiDriverRoleEnum {
|
||||
override fun getPurpose(): RoleEnum {
|
||||
CallerLogger.d(tag,"getPurpose")
|
||||
return TaxiDriverRoleEnum.valueOf(loginInfo?.purpose)
|
||||
return RoleEnum.valueOf(loginInfo?.purpose)
|
||||
}
|
||||
|
||||
override fun isLogin(): Boolean {
|
||||
CallerLogger.d(tag,"isLogin")
|
||||
return loginStatus == TaxiLoginStatusEnum.Login
|
||||
CallerLogger.d(tag,"isLogin:${loginStatus == LoginStatusEnum.Login}")
|
||||
return loginStatus == LoginStatusEnum.Login
|
||||
}
|
||||
|
||||
override fun getLoginStatus(): TaxiLoginStatusEnum {
|
||||
override fun getLoginStatus(): LoginStatusEnum {
|
||||
CallerLogger.d(tag,"getLoginStatus:${loginStatus}")
|
||||
return loginStatus
|
||||
}
|
||||
|
||||
|
||||
override fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
|
||||
CallerLogger.d(tag,"setLoginStatus:${loginStatus}")
|
||||
override fun setLoginStatus(loginStatus: LoginStatusEnum) {
|
||||
CallerLogger.d(tag,"setLoginStatus:${loginStatus}----old${this.loginStatus}")
|
||||
if(loginStatus!=this.loginStatus){
|
||||
this.loginStatus = loginStatus
|
||||
LoginStatusManager.invokeLoginStatusChange(loginStatus)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun setBusinessType(type: Int) {
|
||||
CallerLogger.d(tag,"setBusinessType:${type}")
|
||||
if (businessEnum.code!=type) {
|
||||
this.businessEnum = BusinessEnum.valueOf(type)
|
||||
LoginStatusManager.invokeLBusinessTypeChange(this.businessEnum)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getBusinessType(): BusinessEnum {
|
||||
CallerLogger.d(tag,"getBusinessType")
|
||||
return businessEnum
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -11,4 +11,10 @@ import com.mogo.och.common.module.biz.login.LoginInfo;
|
||||
public class DriverStatusQueryRespBean extends BaseData {
|
||||
public LoginInfo data;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "DriverStatusQueryRespBean{" +
|
||||
"data=" + data +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mogo.och.biz.login.callback
|
||||
|
||||
interface ILoginViewCallback {
|
||||
fun showErrorInfo(errorInfo: String)
|
||||
}
|
||||
@@ -7,5 +7,4 @@ package com.mogo.och.biz.login.callback;
|
||||
*/
|
||||
public interface ITaxiLoginCallback {
|
||||
void getPhoneCodeSuccess();
|
||||
void loginSuccess();
|
||||
}
|
||||
|
||||
@@ -11,8 +11,6 @@ import com.mogo.och.biz.login.bean.TaxiLoginReqBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginRespBean
|
||||
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
|
||||
import com.mogo.och.biz.login.net.OchCommonServiceManager
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
@@ -98,11 +96,10 @@ object LoginModel {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 获取验证码成功
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.module_och_taxi_login_login_success))
|
||||
LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login)
|
||||
LoginStatusDefaultModel.queryCarStatus()
|
||||
mContext?.let { c ->
|
||||
SharedPrefsMgr.getInstance().putString("och_account", phone)
|
||||
}
|
||||
iTaxiLoginCallback?.loginSuccess()
|
||||
} else {
|
||||
if (data != null) {
|
||||
ToastCharterUtils.showToastShort(data.code.toString())
|
||||
|
||||
@@ -5,12 +5,14 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAX
|
||||
import android.content.Context;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||
import com.mogo.och.biz.R;
|
||||
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean;
|
||||
import com.mogo.och.biz.login.net.OchCommonServiceManager;
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusEnum;
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager;
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst;
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
|
||||
@@ -52,9 +54,20 @@ public abstract class LoginStatusModel {
|
||||
@Override
|
||||
public void onSuccess(DriverStatusQueryRespBean data) {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 业务不支持
|
||||
if (!LoginStatusManager.checkBusiness(data.data)) {
|
||||
// 后台已登录 去退出登录
|
||||
if (LoginStatusEnum.valueOf(data.data.driverStatus)==LoginStatusEnum.Login) {
|
||||
double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
|
||||
double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
|
||||
LoginStatusManager.loginOut(mLatitude,mLongitude);
|
||||
return;
|
||||
}
|
||||
}
|
||||
LoginStatusManager.setBusinessType(data.data.businessType);
|
||||
LoginStatusManager.setLoginStatus(data.data.driverStatus);
|
||||
LoginStatusManager.setLoginInfo(data.data);
|
||||
CallerLogger.d(M_TAXI + TAG, "changeCarStatus:" + LoginStatusManager.getLoginStatus());
|
||||
CallerLogger.d(M_TAXI + TAG, "登录信息:" + data);
|
||||
loginSuccess(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginRespBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean
|
||||
@@ -88,6 +89,7 @@ object OchCommonServiceManager {
|
||||
location4Login: TaxiLoginReqBean.Location4Login,
|
||||
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "gotoLoginBycode:通过手机验证码登录:${phone}---${code}");
|
||||
val sn = SharedPrefsMgr.getInstance().sn
|
||||
if (ProjectUtils.isMogo()) {
|
||||
ochLoginServiceMogo.gotoLoginBycode(
|
||||
@@ -113,6 +115,7 @@ object OchCommonServiceManager {
|
||||
location4Login: TaxiLogoutReqBean.Location4Login?,
|
||||
callback: OchCommonServiceCallback<BaseData>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "logout:登出");
|
||||
if (ProjectUtils.isMogo()) {
|
||||
ochLoginServiceMogo.logout(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@@ -145,6 +148,7 @@ object OchCommonServiceManager {
|
||||
context: Context,
|
||||
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态");
|
||||
val sn =
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
SharedPrefsMgr.getInstance().sn
|
||||
|
||||
@@ -43,8 +43,4 @@ class LoginPassengerPresenter(view: LoginPassengerFragment?) : Presenter<LoginPa
|
||||
|
||||
}
|
||||
|
||||
override fun loginSuccess() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -87,10 +87,6 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), IT
|
||||
})
|
||||
}
|
||||
|
||||
override fun loginSuccess() {
|
||||
mView?.loginSuccess()
|
||||
}
|
||||
|
||||
fun gotoLogin(phone: String, code: String) {
|
||||
if(!LoginModel.hasInit()){
|
||||
initListeners()
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.mogo.och.biz.login.ui
|
||||
import android.graphics.Rect
|
||||
import android.os.SystemClock
|
||||
import android.view.*
|
||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.widget.addTextChangedListener
|
||||
import com.mogo.commons.mvp.MvpFragment
|
||||
@@ -12,7 +13,9 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.callback.ILoginViewCallback
|
||||
import com.mogo.och.biz.login.presenter.LoginPresenter
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import kotlinx.android.synthetic.main.biz_login_view.biz_acbtn_login
|
||||
@@ -22,13 +25,14 @@ import kotlinx.android.synthetic.main.biz_login_view.biz_actv_login_get_code
|
||||
import kotlinx.android.synthetic.main.biz_login_view.biz_actv_login_show_sn
|
||||
import kotlinx.android.synthetic.main.biz_login_view.biz_actv_welcome_login_title
|
||||
import kotlinx.android.synthetic.main.biz_login_view.biz_cl_driver_main
|
||||
import kotlinx.android.synthetic.main.biz_login_view.eiv_Info
|
||||
|
||||
|
||||
/**
|
||||
* @author: yangyakun
|
||||
* @date: 2022/8/15
|
||||
*/
|
||||
class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(){
|
||||
class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginViewCallback {
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.biz_login_view
|
||||
@@ -65,22 +69,32 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(){
|
||||
biz_actv_welcome_login_title.setOnClickListener {
|
||||
continuousClick()
|
||||
}
|
||||
biz_cl_driver_main.viewTreeObserver.addOnGlobalLayoutListener {
|
||||
val rect = Rect()
|
||||
biz_cl_driver_main.getWindowVisibleDisplayFrame(rect)
|
||||
val mainInvisibleHeight = biz_cl_driver_main.rootView.height - rect.bottom
|
||||
if (mainInvisibleHeight > 100) {
|
||||
val outLocation = IntArray(2)
|
||||
biz_acbtn_login.getLocationInWindow(outLocation)
|
||||
val srollHeight = (outLocation[1] + biz_acbtn_login.height) - rect.bottom
|
||||
if (srollHeight > 0) {
|
||||
biz_cl_driver_main.scrollTo(0, srollHeight)
|
||||
biz_cl_driver_main.viewTreeObserver.addOnGlobalLayoutListener(object :OnGlobalLayoutListener{
|
||||
override fun onGlobalLayout() {
|
||||
try {
|
||||
if (biz_cl_driver_main==null) {
|
||||
biz_cl_driver_main.viewTreeObserver.removeOnGlobalLayoutListener(this)
|
||||
}else{
|
||||
val rect = Rect()
|
||||
biz_cl_driver_main.getWindowVisibleDisplayFrame(rect)
|
||||
val mainInvisibleHeight = biz_cl_driver_main.rootView.height - rect.bottom
|
||||
if (mainInvisibleHeight > 100) {
|
||||
val outLocation = IntArray(2)
|
||||
biz_acbtn_login.getLocationInWindow(outLocation)
|
||||
val srollHeight = (outLocation[1] + biz_acbtn_login.height) - rect.bottom
|
||||
if (srollHeight > 0) {
|
||||
biz_cl_driver_main.scrollTo(0, srollHeight)
|
||||
}
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight")
|
||||
} else {
|
||||
biz_cl_driver_main.scrollTo(0, 0)
|
||||
}
|
||||
}
|
||||
}catch (e:Exception){
|
||||
e.printStackTrace()
|
||||
}
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight")
|
||||
} else {
|
||||
biz_cl_driver_main.scrollTo(0, 0)
|
||||
}
|
||||
}
|
||||
})
|
||||
biz_actv_login_get_code.onClick {
|
||||
mPresenter?.getPhoneCode(biz_ace_login_phone_value.text.toString())
|
||||
}
|
||||
@@ -159,8 +173,9 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(){
|
||||
}
|
||||
}
|
||||
|
||||
fun loginSuccess() {
|
||||
|
||||
override fun showErrorInfo(errorInfo: String) {
|
||||
ToastUtils.showLong(errorInfo)
|
||||
eiv_Info.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.callback.ILoginViewCallback
|
||||
import com.mogo.och.biz.login.presenter.LoginPassengerPresenter
|
||||
import kotlinx.android.synthetic.main.biz_login_passenger_view.biz_cl_passenger_main
|
||||
|
||||
@@ -13,7 +14,8 @@ import kotlinx.android.synthetic.main.biz_login_passenger_view.biz_cl_passenger_
|
||||
* @author: yangyakun
|
||||
* @date: 2022/8/15
|
||||
*/
|
||||
class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPassengerPresenter?>(){
|
||||
class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPassengerPresenter?>(),
|
||||
ILoginViewCallback {
|
||||
|
||||
override fun getLayoutId(): Int {
|
||||
return R.layout.biz_login_passenger_view
|
||||
@@ -24,7 +26,7 @@ class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPasseng
|
||||
AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))
|
||||
) {
|
||||
biz_cl_passenger_main.setBackgroundResource(R.drawable.biz_login_passenger_1920x1080)
|
||||
} else if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode) &&
|
||||
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode) &&
|
||||
AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))
|
||||
) {
|
||||
biz_cl_passenger_main.setBackgroundResource(R.drawable.biz_login_passenger_1080x1920)
|
||||
@@ -48,6 +50,10 @@ class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPasseng
|
||||
val TAG = LoginPassengerFragment::class.java.simpleName
|
||||
}
|
||||
|
||||
override fun showErrorInfo(errorInfo: String) {
|
||||
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
CallerLogger.d(TAG,"onResume")
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.mogo.och.biz.login.ui.errorview
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.och.biz.R
|
||||
import kotlinx.android.synthetic.main.biz_login_errorinfo_view.view.actv_countdown
|
||||
|
||||
|
||||
class ErrorInfoView : ConstraintLayout, ErrorInfoViewModel.IErrorInfoViewCallback {
|
||||
|
||||
private val TAG = "ItineraryView"
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
private var viewModel: ErrorInfoViewModel? = null
|
||||
private fun initView() {
|
||||
LayoutInflater.from(context).inflate(R.layout.biz_login_errorinfo_view, this, true)
|
||||
}
|
||||
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
|
||||
viewModel = findViewTreeViewModelStoreOwner()?.let {
|
||||
ViewModelProvider(it).get(ErrorInfoViewModel::class.java)
|
||||
}
|
||||
|
||||
viewModel?.setDistanceCallback(this)
|
||||
}
|
||||
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
if(isVisible){
|
||||
viewModel?.showCountDown()
|
||||
}else{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
override fun setCountDownText(countDown: String, isEnd: Boolean) {
|
||||
if(isEnd){
|
||||
visibility = GONE
|
||||
}else{
|
||||
actv_countdown.text = countDown
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.mogo.och.biz.login.ui.errorview
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class ErrorInfoViewModel : ViewModel() {
|
||||
|
||||
private val TAG = ErrorInfoViewModel::class.java.simpleName
|
||||
|
||||
private var viewCallback: IErrorInfoViewCallback? = null
|
||||
|
||||
private var countDownDisposable: Disposable? = null
|
||||
|
||||
|
||||
init {
|
||||
|
||||
}
|
||||
|
||||
fun setDistanceCallback(viewCallback: IErrorInfoViewCallback) {
|
||||
this.viewCallback = viewCallback
|
||||
}
|
||||
|
||||
fun showCountDown(){
|
||||
val countDownSeconds = 10L
|
||||
if(RxUtils.isNotDisposed(countDownDisposable)){
|
||||
return
|
||||
}
|
||||
countDownDisposable = Observable.intervalRange(0, countDownSeconds, 0, 1, TimeUnit.SECONDS)
|
||||
.map { aLong -> countDownSeconds - aLong }
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
viewCallback?.setCountDownText("${it}s",false)
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时:$it")
|
||||
}, {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onError:${it}")
|
||||
it.printStackTrace()
|
||||
viewCallback?.setCountDownText(AbsMogoApplication.getApp().getString(R.string.module_och_taxi_login_get_code),true)
|
||||
}, {
|
||||
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onComplete")
|
||||
viewCallback?.setCountDownText(AbsMogoApplication.getApp().getString(R.string.module_och_taxi_login_get_code),true)
|
||||
})
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
this.viewCallback = null
|
||||
|
||||
}
|
||||
|
||||
interface IErrorInfoViewCallback {
|
||||
fun setCountDownText(s: String, b: Boolean)
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/biz_login_5F6582"/>
|
||||
<corners android:radius="46dp"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/biz_login_A0B3DA"/>
|
||||
<corners android:radius="@dimen/dp_80"/>
|
||||
</shape>
|
||||
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="@dimen/dp_939"
|
||||
android:layout_height="@dimen/dp_710"
|
||||
android:background="@drawable/biz_login_error_info">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_countdown"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_35"
|
||||
android:layout_marginEnd="@dimen/dp_45"
|
||||
android:textColor="@color/biz_login_72A7FF"
|
||||
android:textSize="@dimen/dp_40"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="10s" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_error_head"
|
||||
android:layout_width="@dimen/dp_818"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_120"
|
||||
android:gravity="center"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/dp_46"
|
||||
app:layout_constraintBottom_toTopOf="@+id/actv_error_body"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="当前Apk为包车模式,配置为接驳模式,请检查应用或配置" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_error_body"
|
||||
android:layout_width="@dimen/dp_818"
|
||||
android:layout_height="0dp"
|
||||
android:gravity="center"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/dp_40"
|
||||
app:layout_constraintBottom_toTopOf="@+id/actv_see"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.495"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/actv_error_head"
|
||||
tools:text="T1 passanger-Saas Online-5.4.1001 AppSN:12342392349 司机SN:0383423942739" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/actv_see"
|
||||
android:layout_width="@dimen/dp_350"
|
||||
android:layout_height="@dimen/dp_130"
|
||||
android:layout_marginBottom="@dimen/dp_80"
|
||||
android:background="@drawable/biz_login_error_see"
|
||||
android:gravity="center"
|
||||
android:text="@string/biz_log_i_see"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="@dimen/dp_46"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/actv_error_body" />
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -128,5 +128,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<com.mogo.och.biz.login.ui.errorview.ErrorInfoView
|
||||
android:id="@+id/eiv_Info"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_414"
|
||||
android:layout_width="@dimen/dp_939"
|
||||
android:layout_height="@dimen/dp_710"/>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
8
OCH/common/biz/src/main/res/values/colors.xml
Normal file
8
OCH/common/biz/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<color name="biz_login_5F6582">#5F6582</color>
|
||||
<color name="biz_login_72A7FF">#72A7FF</color>
|
||||
<color name="biz_login_A0B3DA">#A0B3DA</color>
|
||||
|
||||
</resources>
|
||||
@@ -17,4 +17,6 @@
|
||||
|
||||
<string name="qr_cancel">取消</string>
|
||||
<string name="bind_driver_qr_title">扫描二维码完成车辆绑定</string>
|
||||
|
||||
<string name="biz_log_i_see">我知道了</string>
|
||||
</resources>
|
||||
@@ -14,5 +14,7 @@ enum class DPMsgType(val type: Int) {
|
||||
TYPE_ARRIVEDEST_STATUS(6), //到站通知 status
|
||||
TYPE_ORDER_CLOSED_BY_M1_STATUS(7), //到站通知 status
|
||||
TYPE_WRITEOFF_INFO(8), //核销信息
|
||||
TYPE_WRITEOFF_DEVICES_INFO(9) //核销设备信息
|
||||
TYPE_WRITEOFF_DEVICES_INFO(9), //核销设备信息
|
||||
TYPE_CHANGE_BUSINESS_TYPE(10), //业务模式切换
|
||||
TYPE_ENV_CHECK(11) //环境核验
|
||||
}
|
||||
@@ -8,14 +8,16 @@ package com.mogo.och.common.module.biz.login
|
||||
* 10 已登录,
|
||||
* 20 已登出,
|
||||
*/
|
||||
enum class TaxiLoginStatusEnum(val code: Int) {
|
||||
enum class BusinessEnum(val code: Int) {
|
||||
None( 0 ),
|
||||
Login( 10),
|
||||
Logout( 20),;
|
||||
Taxi( 9),
|
||||
Bus( 10),
|
||||
Shuttle( 11),
|
||||
Charter( 13),;
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(code: Int): TaxiLoginStatusEnum? {
|
||||
fun valueOf(code: Int): BusinessEnum {
|
||||
for (value in values()) {
|
||||
if (value.code == code) {
|
||||
return value
|
||||
@@ -5,6 +5,8 @@ public interface ILoginCallback {
|
||||
|
||||
default void loginFail(){}
|
||||
|
||||
default void onStatusChange(TaxiLoginStatusEnum currentStatus){}
|
||||
default void onStatusChange(LoginStatusEnum currentStatus){}
|
||||
|
||||
default void onBusinessChange(BusinessEnum businessEnum){}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.mogo.och.common.module.biz.login;
|
||||
|
||||
public class LoginInfo {
|
||||
public int driverStatus; //1登录,0登出
|
||||
public int businessType; //9: taxi. 10: bus公交 11:接驳 13:包车
|
||||
public String orderNo;
|
||||
public int purpose; // 1 运营, 2 测试, 3演示
|
||||
public String sn;
|
||||
|
||||
@@ -6,12 +6,15 @@ interface LoginService :CommonService {
|
||||
fun setLoginInfo(loginInfo: LoginInfo)
|
||||
fun getLoginInfo():LoginInfo?
|
||||
|
||||
fun getPurpose():TaxiDriverRoleEnum
|
||||
fun getPurpose():RoleEnum
|
||||
|
||||
fun isLogin():Boolean
|
||||
fun getLoginStatus(): TaxiLoginStatusEnum
|
||||
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum)
|
||||
fun getLoginStatus(): LoginStatusEnum
|
||||
fun setLoginStatus(loginStatus: LoginStatusEnum)
|
||||
fun setLoginStatus(status: Int)
|
||||
fun setBusinessType(type: Int)
|
||||
|
||||
fun getBusinessType():BusinessEnum
|
||||
|
||||
fun queryLoginStatusByNet()
|
||||
|
||||
@@ -19,5 +22,6 @@ interface LoginService :CommonService {
|
||||
* 登出
|
||||
*/
|
||||
fun loginOut(mLatitude:Double,mLongitude:Double)
|
||||
fun checkBusiness(data: LoginInfo): Boolean
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.mogo.och.common.module.biz.login
|
||||
|
||||
/**
|
||||
* Created on 2022/08/19
|
||||
*
|
||||
*
|
||||
* 0 初始状态,
|
||||
* 10 已登录,
|
||||
* 20 已登出,
|
||||
*/
|
||||
enum class LoginStatusEnum(val code: Int) {
|
||||
None( -1 ),
|
||||
Login( 1),
|
||||
Logout( 0),;
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(code: Int): LoginStatusEnum? {
|
||||
for (value in values()) {
|
||||
if (value.code == code) {
|
||||
return value
|
||||
}
|
||||
}
|
||||
return None
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,10 +3,8 @@ package com.mogo.och.common.module.biz.login
|
||||
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.alibaba.android.arouter.launcher.ARouter
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsListenerManager
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.utils.CallerBase
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
object LoginStatusManager : CallerBase<ILoginCallback>() {
|
||||
|
||||
@@ -31,11 +29,11 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
|
||||
loginService?.queryLoginStatusByNet()
|
||||
}
|
||||
@JvmStatic
|
||||
fun getPurpose(): TaxiDriverRoleEnum {
|
||||
fun getPurpose(): RoleEnum {
|
||||
loginService?.let {
|
||||
return it.getPurpose()
|
||||
}
|
||||
return TaxiDriverRoleEnum.None
|
||||
return RoleEnum.None
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -51,18 +49,29 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
|
||||
fun setLoginStatus(status: Int) {
|
||||
loginService?.setLoginStatus(status)
|
||||
}
|
||||
@JvmStatic
|
||||
fun setBusinessType(type: Int) {
|
||||
loginService?.setBusinessType(type)
|
||||
}
|
||||
|
||||
fun getBusInessType():BusinessEnum{
|
||||
loginService?.let {
|
||||
return it.getBusinessType()
|
||||
}
|
||||
return BusinessEnum.None
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
|
||||
fun setLoginStatus(loginStatus: LoginStatusEnum) {
|
||||
loginService?.setLoginStatus(loginStatus)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun getLoginStatus(): TaxiLoginStatusEnum {
|
||||
fun getLoginStatus(): LoginStatusEnum {
|
||||
loginService?.let {
|
||||
return it.getLoginStatus()
|
||||
}
|
||||
return TaxiLoginStatusEnum.None
|
||||
return LoginStatusEnum.None
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -73,11 +82,27 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
|
||||
return false
|
||||
}
|
||||
|
||||
fun invokeLoginStatusChange(currentStatus: TaxiLoginStatusEnum) {
|
||||
fun invokeLoginStatusChange(currentStatus: LoginStatusEnum) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onStatusChange(currentStatus)
|
||||
}
|
||||
}
|
||||
|
||||
fun invokeLBusinessTypeChange(currentStatus: BusinessEnum) {
|
||||
M_LISTENERS.forEach {
|
||||
val listener = it.value
|
||||
listener.onBusinessChange(currentStatus)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun checkBusiness(data: LoginInfo):Boolean {
|
||||
loginService?.let {
|
||||
return it.checkBusiness(data)
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -4,7 +4,7 @@ package com.mogo.och.common.module.biz.login
|
||||
* Created on 2021/12/7
|
||||
* 1 运营, 2 测试, 3演示
|
||||
*/
|
||||
enum class TaxiDriverRoleEnum(val code: Int) {
|
||||
enum class RoleEnum(val code: Int) {
|
||||
None( 0),
|
||||
OPERATION( 1),
|
||||
TEST( 2),
|
||||
@@ -13,13 +13,13 @@ enum class TaxiDriverRoleEnum(val code: Int) {
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun valueOf(code: Int?): TaxiDriverRoleEnum {
|
||||
for (value in TaxiDriverRoleEnum.values()) {
|
||||
fun valueOf(code: Int?): RoleEnum {
|
||||
for (value in RoleEnum.values()) {
|
||||
if (value.code == code) {
|
||||
return value
|
||||
}
|
||||
}
|
||||
return TaxiDriverRoleEnum.None
|
||||
return RoleEnum.None
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.network.RequestOptions
|
||||
import com.mogo.eagle.core.network.SubscribeImpl
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag
|
||||
|
||||
class OchCommonSubscribeImpl<T : BaseData>(
|
||||
@@ -16,21 +17,29 @@ class OchCommonSubscribeImpl<T : BaseData>(
|
||||
const val TAG = "OchCommonSubscribeImpl"
|
||||
}
|
||||
|
||||
init {
|
||||
CallerLogger.e("$flavorTag$TAG", "$apiName: 去请求()")
|
||||
OchChainLogManager.writeChainLogNet("接口:${apiName}","去请求")
|
||||
}
|
||||
|
||||
override fun onSuccess(o: T) {
|
||||
super.onSuccess(o)
|
||||
CallerLogger.d("$flavorTag$TAG", "$apiName: onSuccess() ${o.msg}")
|
||||
OchChainLogManager.writeChainLogNet("接口:${apiName}","请求成功:${o}")
|
||||
callback?.onSuccess(o)
|
||||
}
|
||||
|
||||
override fun onError(e: Throwable) {
|
||||
super.onError(e)
|
||||
CallerLogger.e("$flavorTag$TAG", "$apiName: onError() ${e.message}")
|
||||
OchChainLogManager.writeChainLogNet("接口:${apiName}","请求失败:${e.message}")
|
||||
callback?.onError("$apiName: onError() ${e.message}")
|
||||
}
|
||||
|
||||
override fun onError(message: String, code: Int) {
|
||||
super.onError(message, code)
|
||||
CallerLogger.e("$flavorTag$TAG", "$apiName: onError() code = $code; message = $message")
|
||||
OchChainLogManager.writeChainLogNet("接口:${apiName}","请求失败: onError() code = $code; message = $message\"")
|
||||
callback?.onFail(code, message)
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ package com.mogo.och.common.module.biz.network.interceptor
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClient
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusEnum
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.ObservableSource
|
||||
import io.reactivex.functions.Function
|
||||
@@ -16,7 +16,7 @@ class FRetryWithTime<T : BaseData> : Function<T, ObservableSource<T>> {
|
||||
MoGoAiCloudClient.getInstance().refreshToken()
|
||||
return Observable.error(OchCommonRetryException())
|
||||
}else if(it.code == 1003){
|
||||
LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Logout)
|
||||
LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout)
|
||||
}
|
||||
}
|
||||
return Observable.just(baseData)
|
||||
|
||||
@@ -11,4 +11,6 @@ interface CommonService : IProvider {
|
||||
|
||||
fun getStatusBarView(context: Context): View
|
||||
|
||||
fun invokeByName(type:String,value:Any){}
|
||||
|
||||
}
|
||||
@@ -22,6 +22,13 @@ object OchChainLogManager {
|
||||
// 需要举行观察的
|
||||
const val EVENT_KEY_INFE_ERROR = "event_key_och_error"
|
||||
|
||||
const val EVENT_KEY_INFO_Net = "event_key_och_net"
|
||||
|
||||
|
||||
fun writeChainLogNet(info: String, changeInfo: String){
|
||||
writeChainLog(info,changeInfo,true,EVENT_KEY_INFO_Net)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Info 订单详细信息
|
||||
* @param changeInfo 变化信息
|
||||
|
||||
@@ -5,33 +5,40 @@ project.dependencies {
|
||||
|
||||
} else {
|
||||
if (isCurrentDriver("C1")) {
|
||||
println "och.gradle---Driver---C1"
|
||||
implementation project.project(':OCH:sweeper:driver')
|
||||
} else if (isCurrentDriver("B1")) {
|
||||
println "och.gradle---Driver---B1"
|
||||
implementation project.project(':OCH:shuttle:driver')
|
||||
implementation project.project(':OCH:bus:driver')
|
||||
} else if (isCurrentPassenger("B1")) {
|
||||
println "och.gradle---Passenger---B1"
|
||||
implementation project.project(':OCH:bus:passenger')
|
||||
implementation project.project(':OCH:shuttle:passenger')
|
||||
} else if (isCurrentDriver("M1")) {
|
||||
println "utils.gradle------isDriverM1"
|
||||
println "och.gradle---Driver---M1"
|
||||
implementation project.project(':OCH:charter:driver')
|
||||
} else if (isCurrentPassenger("M1")) {
|
||||
println "och.gradle---Passenger---M1"
|
||||
implementation project.project(':OCH:charter:passenger')
|
||||
println "utils.gradle------isPassengerM1"
|
||||
} else if (isCurrentDriver("B2")) {
|
||||
println "och.gradle---Driver---B2"
|
||||
implementation project.project(':OCH:shuttle:driver')
|
||||
implementation project.project(':OCH:bus:driver')
|
||||
} else if (isCurrentPassenger("B2")) {
|
||||
println "och.gradle---Passenger---B2"
|
||||
implementation project.project(':OCH:bus:passenger')
|
||||
implementation project.project(':OCH:shuttle:passenger')
|
||||
} else if (isCurrentDriver("ochT1T2")) {
|
||||
} else if (isCurrentDriver("T1T2")) {
|
||||
println "och.gradle---Driver---T1T2"
|
||||
if(isCurrentDriver("saas")){
|
||||
implementation project.project(':OCH:taxi:unmanned-driver')
|
||||
}
|
||||
if(isCurrentDriver("mogo")){
|
||||
implementation project.project(':OCH:taxi:driver')
|
||||
}
|
||||
} else if (isCurrentPassenger("ochT1T2")) {
|
||||
} else if (isCurrentPassenger("T1T2")) {
|
||||
println "och.gradle---Passenger---T1T2"
|
||||
if(isCurrentDriver("saas")){
|
||||
implementation project.project(':OCH:taxi:unmanned-passenger')
|
||||
}
|
||||
|
||||
@@ -1,28 +1,12 @@
|
||||
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.common.module.biz.login.LoginStatusEnum
|
||||
import com.mogo.och.facade.constant.FacadeConst
|
||||
|
||||
/**
|
||||
@@ -34,7 +18,34 @@ import com.mogo.och.facade.constant.FacadeConst
|
||||
class FacadeDriverProvider : FacadeProvider() {
|
||||
private val TAG = "FacadeDriverProvider"
|
||||
|
||||
private val sweeperFacadeProvider:SweeperFacadeProvider by lazy {
|
||||
SweeperFacadeProvider()
|
||||
}
|
||||
|
||||
override val functionName: String
|
||||
get() = TAG
|
||||
|
||||
override fun init(context: Context) {
|
||||
if (AppIdentityModeUtils.isC1(FunctionBuildConfig.appIdentityMode)) {
|
||||
sweeperFacadeProvider.init(context)
|
||||
}else {
|
||||
super.init(context)
|
||||
}
|
||||
}
|
||||
|
||||
override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? {
|
||||
if (AppIdentityModeUtils.isC1(FunctionBuildConfig.appIdentityMode)) {
|
||||
return sweeperFacadeProvider.createCoverage(fragmentActivity,integer)
|
||||
}else {
|
||||
return super.createCoverage(fragmentActivity, integer)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
}
|
||||
|
||||
override fun onStatusChange(currentStatus: LoginStatusEnum) {
|
||||
super.onStatusChange(currentStatus)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,17 +11,22 @@ import androidx.fragment.app.FragmentManager
|
||||
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.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.SopView
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
|
||||
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.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.login.BusinessEnum
|
||||
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.login.LoginStatusEnum
|
||||
import com.mogo.och.common.module.biz.provider.CommonService
|
||||
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.ProjectUtils
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
|
||||
/**
|
||||
* 网约车小巴业务实现入口
|
||||
@@ -48,10 +53,12 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
|
||||
|
||||
private fun showFragment() {
|
||||
val supportFragmentManager: FragmentManager? = activity?.supportFragmentManager
|
||||
|
||||
val fragment = if (LoginStatusManager.isLogin()) {
|
||||
getFragment()
|
||||
} else {
|
||||
CallerHmiManager.hideToolsView()
|
||||
ToggleDebugView.toggleDebugView.dismiss()
|
||||
SopView.sopView.dismiss()
|
||||
LoginStatusManager.getFragment()
|
||||
}
|
||||
|
||||
@@ -123,11 +130,23 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
|
||||
activity!!.finish()
|
||||
}
|
||||
|
||||
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum) {
|
||||
override fun onStatusChange(currentStatus: LoginStatusEnum) {
|
||||
d(TAG, "登录状态发生改变 ${currentStatus}")
|
||||
showFragment()
|
||||
}
|
||||
|
||||
override fun onBusinessChange(businessEnum: BusinessEnum) {
|
||||
super.onBusinessChange(businessEnum)
|
||||
val (bussness, identity, model) =AppIdentityModeUtils.getInfo(FunctionBuildConfig.appIdentityMode)
|
||||
when (businessEnum) {
|
||||
BusinessEnum.None -> {}
|
||||
BusinessEnum.Taxi -> FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.TAXI}_${identity}_${model}"
|
||||
BusinessEnum.Bus -> FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.BUS}_${identity}_${model}"
|
||||
BusinessEnum.Shuttle -> FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.SHUTTLE}_${identity}_${model}"
|
||||
BusinessEnum.Charter -> FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.CHARTER}_${identity}_${model}"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun injectStatusBar() {
|
||||
activity?.let {
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
package com.mogo.och.facade.route
|
||||
|
||||
import android.content.Context
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.fragment.app.FragmentManager
|
||||
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.api.vehicle.IMoGoSweeperModeListener
|
||||
import com.mogo.eagle.core.function.call.vehicle.CallerSweeperModeListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonService
|
||||
|
||||
/**
|
||||
* 网约车小巴业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
class SweeperFacadeProvider : IMoGoFunctionProvider, IMoGoSweeperModeListener {
|
||||
private var containerId = 0
|
||||
private var activity: FragmentActivity? = null
|
||||
private val TAG = "SweeperFacadeProvider"
|
||||
private var commonService: CommonService? = null
|
||||
|
||||
override val functionName: String
|
||||
get() = TAG
|
||||
|
||||
override fun init(context: Context) {
|
||||
d(TAG, "SweeperFacadeProvider:init")
|
||||
CallerSweeperModeListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun createCoverage(fragmentActivity: FragmentActivity?, integer: Int?): Fragment? {
|
||||
containerId = integer!!
|
||||
activity = fragmentActivity
|
||||
showFragment()
|
||||
return null
|
||||
}
|
||||
|
||||
private fun showFragment() {
|
||||
val supportFragmentManager: FragmentManager? = activity?.supportFragmentManager
|
||||
val (_, identity, model) =AppIdentityModeUtils.getInfo(FunctionBuildConfig.appIdentityMode)
|
||||
FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.SWEEPER}_${identity}_${model}"
|
||||
val fragment = getFragmentByServeName(OchCommonConst.SWEEPER_DRIVER)
|
||||
|
||||
d(TAG, "切换 fragment:${fragment}")
|
||||
|
||||
if (supportFragmentManager != null) {
|
||||
val back = supportFragmentManager.beginTransaction()
|
||||
back.replace(containerId, fragment, fragment.tag)
|
||||
back.commit()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFragmentByServeName(serviceName: String): Fragment {
|
||||
commonService = ARouter.getInstance().build(serviceName).navigation() as CommonService?
|
||||
return commonService!!.getFragment()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
|
||||
if (activity == null) return
|
||||
activity!!.finish()
|
||||
}
|
||||
|
||||
override fun onSweeperCurrentModeChanged(currentMode: String) {
|
||||
commonService?.invokeByName("reStart",currentMode)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -32,7 +32,6 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxBubbleView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView;
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.TrafficDataView;
|
||||
import com.mogo.eagle.core.function.smp.view.SmallMapView;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener;
|
||||
@@ -257,10 +256,10 @@ public abstract class BaseShuttleTabFragment<V extends IView, P extends Presente
|
||||
|
||||
IMogoMapUIController mapUIController = CallerMapUIServiceManager.INSTANCE.getMapUIController(MogoMap.DEFAULT);
|
||||
if(mapUIController!=null){
|
||||
if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
mapUIController.changeCurrentIcon(R.raw.m2);
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.m2;
|
||||
}else if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
}else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
mapUIController.changeCurrentIcon(R.raw.xiaoba);
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaoba;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ import java.util.ArrayList
|
||||
object ShuttleVoiceManager {
|
||||
|
||||
fun arrivedStationBus(siteNameCN: String?, siteNameKR: String?) {
|
||||
if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
return
|
||||
}
|
||||
val context = AbsMogoApplication.getApp()
|
||||
|
||||
@@ -24,9 +24,9 @@ class BizMapView @JvmOverloads constructor(
|
||||
private lateinit var mapBizView: MapBizView
|
||||
|
||||
init {
|
||||
if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
LayoutInflater.from(context).inflate(R.layout.shuttle_m2_bizmap_map, this, true)
|
||||
}else if(AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)){
|
||||
}else if(AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)){
|
||||
LayoutInflater.from(context).inflate(R.layout.shuttle_jl_bizmap_map, this, true)
|
||||
}else{
|
||||
LayoutInflater.from(context).inflate(R.layout.shuttle_jl_bizmap_map, this, true)
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.mogo.och.shuttle.passenger">
|
||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<application>
|
||||
<activity android:name="com.mogo.eagle.core.function.main.MainLauncherActivity"
|
||||
android:screenOrientation="portrait"
|
||||
tools:replace="android:screenOrientation"/>
|
||||
</application>
|
||||
</manifest>
|
||||
@@ -9,7 +9,6 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonService
|
||||
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
|
||||
import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
|
||||
import com.mogo.och.shuttle.passenger.model.TicketModel
|
||||
@@ -31,9 +30,9 @@ class ShuttlePassengerProvider : CommonServiceImpl() {
|
||||
|
||||
override fun init(context: Context) {
|
||||
TicketModel.load()
|
||||
mPM2Fragment = if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
mPM2Fragment = if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
PM2BaseFragment()
|
||||
}else if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
}else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
BusPassengerRouteFragment()
|
||||
}else{
|
||||
BusPassengerRouteFragment()
|
||||
@@ -42,9 +41,9 @@ class ShuttlePassengerProvider : CommonServiceImpl() {
|
||||
|
||||
override fun getStatusBarView(context: Context): View {
|
||||
if(statusBarView==null){
|
||||
statusBarView = if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
statusBarView = if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
M2StatusBarView(context);
|
||||
} else if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
} else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
BusPStatusBarView(context);
|
||||
}else{
|
||||
BusPStatusBarView(context);
|
||||
@@ -54,7 +53,7 @@ class ShuttlePassengerProvider : CommonServiceImpl() {
|
||||
}
|
||||
|
||||
override fun getFragment(): Fragment {
|
||||
if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
MultiDisplayUtils.startActWithSecond(ActivityUtils.getTopActivity(), MediaPlayerActivity::class.java)
|
||||
}
|
||||
return mPM2Fragment
|
||||
|
||||
@@ -55,7 +55,7 @@ object TicketModel : StateChangeListener {
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
CallerLogger.d(M_BUS_P + TAG, "核销失败 ${code}-----${msg}")
|
||||
when (code) {
|
||||
6002 -> {sendMessage2Driver("同一订单核销间隔时间需大于5分钟")}
|
||||
6002 -> {sendMessage2Driver("同一订单核销间隔时间需大于2分钟")}
|
||||
1009 -> {sendMessage2Driver("车票所选乘车日期非今日")}
|
||||
1005 -> {sendMessage2Driver("车辆未登录、或没有任务")}
|
||||
1006 -> {sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合")}
|
||||
@@ -64,7 +64,7 @@ object TicketModel : StateChangeListener {
|
||||
1012 -> {sendMessage2Driver("当前用户下单路线非当前的车辆所属公司")}
|
||||
else -> {
|
||||
when (msg) {
|
||||
"6002" -> {sendMessage2Driver("同一订单核销间隔时间需大于5分钟")}
|
||||
"6002" -> {sendMessage2Driver("同一订单核销间隔时间需大于2分钟")}
|
||||
"1009" -> {sendMessage2Driver("车票所选乘车日期非今日")}
|
||||
"1005" -> {sendMessage2Driver("车辆未登录、或没有任务")}
|
||||
"1006" -> {sendMessage2Driver("车票路线信息与当前车辆执行任务的路线信息不符合")}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
|
||||
android {
|
||||
compileSdkVersion rootProject.ext.android.compileSdkVersion
|
||||
@@ -15,9 +16,11 @@ android {
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
consumerProguardFiles "consumer-rules.pro"
|
||||
|
||||
javaCompileOptions {
|
||||
annotationProcessorOptions {
|
||||
arguments = [AROUTER_MODULE_NAME: project.getName(),"room.schemaLocation": "$projectDir/schemas".toString()]
|
||||
kapt {
|
||||
useBuildCache = false
|
||||
arguments {
|
||||
arg("AROUTER_MODULE_NAME", project.getName())
|
||||
arg("room.schemaLocation", "$projectDir/schemas".toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,7 +52,7 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.androidxappcompat
|
||||
implementation rootProject.ext.dependencies.arouter
|
||||
testImplementation 'junit:junit:4.12'
|
||||
annotationProcessor rootProject.ext.dependencies.aroutercompiler
|
||||
kapt rootProject.ext.dependencies.aroutercompiler
|
||||
implementation rootProject.ext.dependencies.androidxconstraintlayout
|
||||
implementation rootProject.ext.dependencies.amapnavi3dmap
|
||||
|
||||
@@ -58,7 +61,7 @@ dependencies {
|
||||
implementation rootProject.ext.dependencies.androidxrecyclerview
|
||||
implementation rootProject.ext.dependencies.androidxcardview
|
||||
implementation rootProject.ext.dependencies.androidxroomruntime
|
||||
annotationProcessor rootProject.ext.dependencies.androidxroomcompiler
|
||||
kapt rootProject.ext.dependencies.androidxroomcompiler
|
||||
implementation rootProject.ext.dependencies.localbroadcastmanager
|
||||
|
||||
implementation project(":OCH:common:common")
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
package com.mogo.och.sweeper;
|
||||
|
||||
import androidx.annotation.IdRes;
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
|
||||
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
|
||||
|
||||
public
|
||||
/**
|
||||
* @author congtaowang
|
||||
* @since 2021/1/15
|
||||
*
|
||||
* 网约车抽象接口
|
||||
*/
|
||||
interface IMogoOCH extends IMoGoFunctionProvider {
|
||||
|
||||
/**
|
||||
* 初始化网约车容器
|
||||
*
|
||||
* @param activity
|
||||
* @param containerId 容器ID
|
||||
*/
|
||||
void createCoverage(FragmentActivity activity, @IdRes int containerId);
|
||||
}
|
||||
@@ -1,191 +0,0 @@
|
||||
package com.mogo.och.sweeper;
|
||||
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
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.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.function.api.vehicle.IMoGoSweeperModeListener;
|
||||
import com.mogo.eagle.core.function.call.vehicle.CallerSweeperModeListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst;
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch;
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase;
|
||||
import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperOperateFragment;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.functions.Consumer;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
/**
|
||||
* 清扫车业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = OchCommonConst.SWEEPER_DRIVER)
|
||||
public class SweeperProvider implements IMogoOCH, IMoGoSweeperModeListener {
|
||||
|
||||
private static final String TAG = "SweeperProvider";
|
||||
|
||||
private SweeperOperateFragment sweeperOperateFragment;
|
||||
private SweeperCloudFragment sweeperCloudFragment;
|
||||
private int containerId;
|
||||
private FragmentActivity activity;
|
||||
|
||||
@Override
|
||||
public void init(Context context) {
|
||||
}
|
||||
|
||||
private void showOperateFragment() {
|
||||
FragmentManager supportFragmentManager = activity.getSupportFragmentManager();
|
||||
if (sweeperOperateFragment == null) {
|
||||
CallerLogger.d(TAG, "准备add fragment======");
|
||||
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(SweeperOperateFragment.TAG);
|
||||
if (fragmentByTag instanceof SweeperOperateFragment) {
|
||||
sweeperOperateFragment = (SweeperOperateFragment) fragmentByTag;
|
||||
} else {
|
||||
sweeperOperateFragment = new SweeperOperateFragment();
|
||||
}
|
||||
if (!sweeperOperateFragment.isAdded()) {
|
||||
supportFragmentManager.beginTransaction().add(containerId, sweeperOperateFragment, SweeperOperateFragment.TAG).commitAllowingStateLoss();
|
||||
}
|
||||
return;
|
||||
}
|
||||
CallerLogger.d(TAG, "准备show fragment");
|
||||
supportFragmentManager.beginTransaction().show(sweeperOperateFragment).commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
private void showCloudFragment() {
|
||||
FragmentManager supportFragmentManager = activity.getSupportFragmentManager();
|
||||
if (sweeperCloudFragment == null) {
|
||||
CallerLogger.d(TAG, "准备add fragment======");
|
||||
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(SweeperCloudFragment.TAG);
|
||||
if (fragmentByTag instanceof SweeperCloudFragment) {
|
||||
sweeperCloudFragment = (SweeperCloudFragment) fragmentByTag;
|
||||
} else {
|
||||
sweeperCloudFragment = new SweeperCloudFragment();
|
||||
}
|
||||
if (!sweeperCloudFragment.isAdded()) {
|
||||
supportFragmentManager.beginTransaction().add(containerId, sweeperCloudFragment, SweeperCloudFragment.TAG).commitAllowingStateLoss();
|
||||
}
|
||||
return;
|
||||
}
|
||||
CallerLogger.d(TAG, "准备show fragment");
|
||||
supportFragmentManager.beginTransaction().show(sweeperCloudFragment).commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
private void hideFragment() {
|
||||
if (sweeperOperateFragment != null) {
|
||||
CallerLogger.d(TAG, "准备hide operate fragment");
|
||||
activity.getSupportFragmentManager().beginTransaction().hide(sweeperOperateFragment).commitAllowingStateLoss();
|
||||
} else if (sweeperCloudFragment != null) {
|
||||
CallerLogger.d(TAG, "准备hide cloud fragment");
|
||||
activity.getSupportFragmentManager().beginTransaction().hide(sweeperCloudFragment).commitAllowingStateLoss();
|
||||
}
|
||||
CallerSweeperModeListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCoverage(FragmentActivity activity, int containerId) {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getFunctionName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Fragment createCoverage(@Nullable FragmentActivity fragmentActivity, @Nullable Integer integer) {
|
||||
this.containerId = integer;
|
||||
this.activity = fragmentActivity;
|
||||
|
||||
// 第一优先级:需要默认能切换清扫业务模式
|
||||
// 第二优先级:如果能切换清扫模式,查询SP中缓存的当前模式(用户切换后会在SP中写入当前模式,切换完后清除,因为现在产品确认还不需要每次启动时首先使用用户上次选择的模式,目前优先还是使用gradle中默认配置的模式打开)
|
||||
// 第三优先级:如果不能切换清扫模式或者SP中没有用户选择的当前模式,查询gradle中默认配置的当前模式(用户不进行切换时SP中没有配置,默认使用的gradle中默认当前模式)
|
||||
CallerLogger.i(M_SWEEPER + TAG, "清扫车启动,当前业务模式:isSPCurrentSweeperOperateMode="
|
||||
+ SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode()
|
||||
+ ", isSPCurrentSweeperCloudMode=" + SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode());
|
||||
if (SweeperVehicleConfigUtils.isDefaultSweeperCanSwitchMode(FunctionBuildConfig.sweeperCanSwitchMode)
|
||||
&& SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode()) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE;
|
||||
showOperateFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:运营");
|
||||
} else if (SweeperVehicleConfigUtils.isDefaultSweeperCanSwitchMode(FunctionBuildConfig.sweeperCanSwitchMode)
|
||||
&& SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode()) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
|
||||
showCloudFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:云控");
|
||||
} else if (SweeperVehicleConfigUtils.isDefaultSweeperOperateMode(FunctionBuildConfig.sweeperDefaultMode)) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE;
|
||||
showOperateFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:运营");
|
||||
} else if (SweeperVehicleConfigUtils.isDefaultSweeperCloudMode(FunctionBuildConfig.sweeperDefaultMode)) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
|
||||
showCloudFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:云控");
|
||||
} else {
|
||||
// 默认云控模式
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD;
|
||||
showCloudFragment();
|
||||
ToastUtils.showLong("当前清扫业务模式:云控");
|
||||
}
|
||||
|
||||
CallerSweeperModeListenerManager.INSTANCE.addListener(TAG, this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
|
||||
if (activity == null) return;
|
||||
activity.finish();
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
@Override
|
||||
public void onSweeperCurrentModeChanged(@NonNull String currentMode) {
|
||||
// 日志、埋点
|
||||
CallerLogger.i(M_SWEEPER + TAG, "切换清扫车业务模式,当前切换的模式:" + currentMode);
|
||||
SweeperAnalyticsManager.getInstance().trackSweeperModeChangeEvent(currentMode);
|
||||
|
||||
Observable.just(currentMode)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe(new Consumer<String>() {
|
||||
@Override
|
||||
public void accept(String s) throws Exception {
|
||||
// 写入SP当前模式
|
||||
SweeperVehicleConfigUtils.setSPCurrentSweeperMode(currentMode);
|
||||
// 清除本地业务缓存数据
|
||||
MyDataBase.getInstance().getWeltDataDao().deleteAllWeltData();
|
||||
// 等清除完数据库数据后,重启App
|
||||
UiThreadHandler.postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
AppUtils.relaunchApp(true);
|
||||
}
|
||||
}, 1000L);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,122 @@
|
||||
package com.mogo.och.sweeper
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
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.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.vehicle.IMoGoSweeperModeListener
|
||||
import com.mogo.eagle.core.function.call.vehicle.CallerSweeperModeListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils.isDefaultSweeperCanSwitchMode
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils.isDefaultSweeperCloudMode
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils.isDefaultSweeperOperateMode
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils.isSPCurrentSweeperCloudMode
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils.isSPCurrentSweeperOperateMode
|
||||
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils.setSPCurrentSweeperMode
|
||||
import com.mogo.eagle.core.utilcode.util.AppUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.CommonServiceImpl
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase
|
||||
import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperOperateFragment
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
|
||||
/**
|
||||
* 清扫车业务实现入口
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
@Route(path = OchCommonConst.SWEEPER_DRIVER)
|
||||
class SweeperProvider : CommonServiceImpl() {
|
||||
private var sweeperOperateFragment: SweeperOperateFragment? = null
|
||||
private var sweeperCloudFragment: SweeperCloudFragment? = null
|
||||
|
||||
override fun getFragment(): Fragment {
|
||||
// 第一优先级:需要默认能切换清扫业务模式
|
||||
// 第二优先级:如果能切换清扫模式,查询SP中缓存的当前模式(用户切换后会在SP中写入当前模式,切换完后清除,因为现在产品确认还不需要每次启动时首先使用用户上次选择的模式,目前优先还是使用gradle中默认配置的模式打开)
|
||||
// 第三优先级:如果不能切换清扫模式或者SP中没有用户选择的当前模式,查询gradle中默认配置的当前模式(用户不进行切换时SP中没有配置,默认使用的gradle中默认当前模式)
|
||||
i(
|
||||
SceneConstant.M_SWEEPER + TAG, "清扫车启动,当前业务模式:isSPCurrentSweeperOperateMode="
|
||||
+ isSPCurrentSweeperOperateMode()
|
||||
+ ", isSPCurrentSweeperCloudMode=" + isSPCurrentSweeperCloudMode()
|
||||
)
|
||||
if (isDefaultSweeperCanSwitchMode(FunctionBuildConfig.sweeperCanSwitchMode)
|
||||
&& isSPCurrentSweeperOperateMode()
|
||||
) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE
|
||||
ToastUtils.showLong("当前清扫业务模式:运营")
|
||||
return showOperateFragment()
|
||||
} else if (isDefaultSweeperCanSwitchMode(FunctionBuildConfig.sweeperCanSwitchMode)
|
||||
&& isSPCurrentSweeperCloudMode()
|
||||
) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD
|
||||
ToastUtils.showLong("当前清扫业务模式:云控")
|
||||
return showCloudFragment()
|
||||
} else if (isDefaultSweeperOperateMode(FunctionBuildConfig.sweeperDefaultMode)) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_OPERATE
|
||||
ToastUtils.showLong("当前清扫业务模式:运营")
|
||||
return showOperateFragment()
|
||||
} else if (isDefaultSweeperCloudMode(FunctionBuildConfig.sweeperDefaultMode)) {
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD
|
||||
ToastUtils.showLong("当前清扫业务模式:云控")
|
||||
return showCloudFragment()
|
||||
} else {
|
||||
// 默认云控模式
|
||||
FunctionBuildConfig.sweeperCurrentMode = SweeperVehicleConfigUtils.BUSINESS_MODE_CLOUD
|
||||
ToastUtils.showLong("当前清扫业务模式:云控")
|
||||
return showCloudFragment()
|
||||
}
|
||||
}
|
||||
|
||||
override fun init(context: Context) {
|
||||
|
||||
}
|
||||
private fun showOperateFragment():Fragment {
|
||||
if(sweeperOperateFragment==null){
|
||||
sweeperOperateFragment = SweeperOperateFragment()
|
||||
}
|
||||
return sweeperOperateFragment!!
|
||||
}
|
||||
|
||||
private fun showCloudFragment():Fragment {
|
||||
if(sweeperCloudFragment==null){
|
||||
sweeperCloudFragment = SweeperCloudFragment()
|
||||
}
|
||||
return sweeperCloudFragment!!
|
||||
}
|
||||
@SuppressLint("CheckResult")
|
||||
fun onSweeperCurrentModeChanged(currentMode: String) {
|
||||
// 日志、埋点
|
||||
i(SceneConstant.M_SWEEPER + TAG, "切换清扫车业务模式,当前切换的模式:$currentMode")
|
||||
SweeperAnalyticsManager.getInstance().trackSweeperModeChangeEvent(currentMode)
|
||||
Observable.just(currentMode)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe { // 写入SP当前模式
|
||||
setSPCurrentSweeperMode(currentMode)
|
||||
// 清除本地业务缓存数据
|
||||
MyDataBase.getInstance().weltDataDao.deleteAllWeltData()
|
||||
// 等清除完数据库数据后,重启App
|
||||
UiThreadHandler.postDelayed({ AppUtils.relaunchApp(true) }, 1000L)
|
||||
}
|
||||
}
|
||||
|
||||
override fun invokeByName(type: String,value: Any) {
|
||||
if (value is String && type=="reStart") {
|
||||
onSweeperCurrentModeChanged(value)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val TAG = "SweeperProvider"
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager
|
||||
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
|
||||
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
|
||||
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
|
||||
import com.mogo.och.common.module.biz.login.TaxiDriverRoleEnum;
|
||||
import com.mogo.och.common.module.biz.login.RoleEnum;
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
|
||||
import com.mogo.och.taxi.ui.routing.TaxiRoutingModel;
|
||||
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
|
||||
@@ -203,9 +203,9 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
|
||||
// 设置当前用户角色
|
||||
String role = "";
|
||||
if (TaxiDriverRoleEnum.DEMO == LoginStatusManager.getPurpose()) {
|
||||
if (RoleEnum.DEMO == LoginStatusManager.getPurpose()) {
|
||||
role = TaxiUnmannedConst.DEMO_USER;
|
||||
} else if (TaxiDriverRoleEnum.TEST == LoginStatusManager.getPurpose()) {
|
||||
} else if (RoleEnum.TEST == LoginStatusManager.getPurpose()) {
|
||||
role = TaxiUnmannedConst.TEST_USER;
|
||||
}
|
||||
String finalRole = role;
|
||||
|
||||
@@ -351,15 +351,3 @@ def variantName() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
def variantVehicleName() {
|
||||
if(gradle.startParameter.taskNames.size()>0) {
|
||||
for (String taskName : gradle.startParameter.taskNames) {
|
||||
if (taskName.contains("Debug") | taskName.contains("Release")) {
|
||||
return taskName
|
||||
}
|
||||
}
|
||||
}
|
||||
return "buspassenger"
|
||||
}
|
||||
|
||||
|
||||
24
app/config/productWithVehicle.json
Normal file
24
app/config/productWithVehicle.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"mogo": {
|
||||
"B1":["shuttle","bus"],
|
||||
"B2":["shuttle","bus"],
|
||||
"T1T2":["taxi"],
|
||||
"M1":["charter"]
|
||||
},
|
||||
"dali": {
|
||||
"B1":["shuttle"],
|
||||
"B2":["shuttle"],
|
||||
"M1":["charter"]
|
||||
},
|
||||
"yantai": {
|
||||
"B1":["shuttle"],
|
||||
"B2":["shuttle"],
|
||||
"M1":["charter"]
|
||||
},
|
||||
"saas": {
|
||||
"T1T2":["taxi"],
|
||||
"B1":["shuttle","bus"],
|
||||
"B2":["shuttle","bus"],
|
||||
"M1":["charter"]
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ project.android.productFlavors {
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("mogo").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'musicUrlConfig', "\"${readMusicUrlConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'supportProduct', "\"${readProductWithVehicleConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
|
||||
}
|
||||
yantai {
|
||||
dimension "project"
|
||||
@@ -15,6 +16,7 @@ project.android.productFlavors {
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("yantai").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("yantai").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'musicUrlConfig', "\"${readMusicUrlConfigFromJsonFile("yantai").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'supportBusiness', "\"${readProductWithVehicleConfigFromJsonFile("yantai").replace("\"", "\\\"")}\""
|
||||
}
|
||||
|
||||
dali {
|
||||
@@ -23,6 +25,7 @@ project.android.productFlavors {
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("dali").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("dali").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'musicUrlConfig', "\"${readMusicUrlConfigFromJsonFile("dali").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'supportBusiness', "\"${readProductWithVehicleConfigFromJsonFile("dali").replace("\"", "\\\"")}\""
|
||||
}
|
||||
saas {
|
||||
dimension "project"
|
||||
@@ -30,6 +33,7 @@ project.android.productFlavors {
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("saas").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("saas").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'musicUrlConfig', "\"${readMusicUrlConfigFromJsonFile("saas").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'supportBusiness', "\"${readProductWithVehicleConfigFromJsonFile("saas").replace("\"", "\\\"")}\""
|
||||
}
|
||||
|
||||
// 配置网络环境,QA、线上、演示
|
||||
|
||||
@@ -18,7 +18,6 @@ Object readMediaUrlConfigFromJsonFile(env){
|
||||
def getKey = flavorNames
|
||||
config.get(env).each {key, value ->
|
||||
// 匹配flavor对应的 json
|
||||
println "--------${flavorNames.toLowerCase()}---------${key}"
|
||||
if(flavorNames.toLowerCase().contains(key)){
|
||||
getKey = key
|
||||
return true
|
||||
@@ -31,6 +30,39 @@ Object readMediaUrlConfigFromJsonFile(env){
|
||||
return null
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取各车型宣传视频本地配置
|
||||
* @param env
|
||||
* @return
|
||||
*/
|
||||
Object readProductWithVehicleConfigFromJsonFile(env){
|
||||
try {
|
||||
// 加载config.json 文件
|
||||
File file = new File("${rootDir}/app/config/productWithVehicle.json")
|
||||
def jsonSlurper = new JsonSlurper()
|
||||
// 解析json
|
||||
def config = jsonSlurper.parse(file)
|
||||
def flavorNames = variantVehicleName()
|
||||
def jsonOutput = new JsonOutput()
|
||||
def getKey = flavorNames
|
||||
config.get(env).each {key, value ->
|
||||
// 匹配flavor对应的 json
|
||||
println "对比${flavorNames.toLowerCase()}---------${key}---${value}"
|
||||
if(flavorNames.toLowerCase().contains("${env}${key.toLowerCase()}")){
|
||||
getKey = key
|
||||
println "对比结果${flavorNames.toLowerCase()}---------${key}"
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return jsonOutput.toJson(config.get(env).get(getKey))
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 读取各车型宣传视频本地配置
|
||||
@@ -61,6 +93,17 @@ Object readMusicUrlConfigFromJsonFile(env){
|
||||
return null
|
||||
}
|
||||
|
||||
def variantVehicleName() {
|
||||
if(gradle.startParameter.taskNames.size()>0) {
|
||||
for (String taskName : gradle.startParameter.taskNames) {
|
||||
if (taskName.contains("Debug") | taskName.contains("Release")) {
|
||||
return taskName
|
||||
}
|
||||
}
|
||||
}
|
||||
return "buspassenger"
|
||||
}
|
||||
|
||||
|
||||
boolean isCurrentDriver(String flavors) {
|
||||
if(isDriver() && isCurrentFlavors(flavors)){
|
||||
@@ -114,4 +157,5 @@ ext {
|
||||
isCurrentPassenger = this.&isCurrentPassenger
|
||||
readMediaUrlConfigFromJsonFile = this.&readMediaUrlConfigFromJsonFile
|
||||
readMusicUrlConfigFromJsonFile = this.&readMusicUrlConfigFromJsonFile
|
||||
readProductWithVehicleConfigFromJsonFile = this.&readProductWithVehicleConfigFromJsonFile
|
||||
}
|
||||
@@ -7,11 +7,11 @@ project.android.productFlavors {
|
||||
|
||||
// 配置AndroidManifest.xml中用到的参数
|
||||
manifestPlaceholders = [
|
||||
CHANNEL_VALUE_TAIL : "JL",
|
||||
CHANNEL_VALUE_TAIL : "B1",
|
||||
]
|
||||
|
||||
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"JL\""
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"B1\""
|
||||
|
||||
// ②构建的是否要动态更换模型
|
||||
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
|
||||
|
||||
@@ -14,11 +14,11 @@ project.android.productFlavors {
|
||||
}
|
||||
//高德地图鉴权信息
|
||||
manifestPlaceholders = [
|
||||
CHANNEL_VALUE_TAIL: "M2",
|
||||
CHANNEL_VALUE_TAIL: "B2",
|
||||
]
|
||||
|
||||
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"M2\""
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"B2\""
|
||||
|
||||
// ②构建的是否要动态更换模型
|
||||
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'false'
|
||||
|
||||
@@ -7,16 +7,22 @@ project.android.productFlavors {
|
||||
|
||||
// 配置AndroidManifest.xml中用到的参数
|
||||
manifestPlaceholders = [
|
||||
CHANNEL_VALUE_TAIL: "FT",
|
||||
CHANNEL_VALUE_TAIL: "C1",
|
||||
]
|
||||
|
||||
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"FT\""
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"C1\""
|
||||
|
||||
// ②构建的是否要动态更换模型
|
||||
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
|
||||
|
||||
// ③不能启动自驾的档位
|
||||
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'UNABLE_LAUNCH_AUTOPILOT_GEAR', 'null'
|
||||
|
||||
// ⑤清扫车 默认模式(运营/云控)
|
||||
buildConfigField 'String', 'SWEEPER_DEFAULT_MODE', '\"Cloud\"'
|
||||
|
||||
// ⑥清扫车 是否能切换模式
|
||||
buildConfigField 'boolean', 'SWEEPER_CAN_SWITCH_MODE', 'true'
|
||||
}
|
||||
}
|
||||
@@ -7,12 +7,12 @@ project.android.productFlavors {
|
||||
|
||||
// 配置AndroidManifest.xml中用到的参数
|
||||
manifestPlaceholders = [
|
||||
CHANNEL_VALUE_TAIL: "DFHQ",
|
||||
CHANNEL_VALUE_TAIL: "T1T2",
|
||||
]
|
||||
|
||||
|
||||
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"DFHQ\""
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"T1T2\""
|
||||
|
||||
// ②构建的是否要动态更换模型
|
||||
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.launcher.startup
|
||||
|
||||
import android.content.Context
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.mogo.commons.debug.DebugConfig
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
@@ -40,8 +41,10 @@ object ConfigStartUp {
|
||||
FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER
|
||||
// 演示模式,上一次勾选的数据
|
||||
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE
|
||||
// // app安装的身份信息
|
||||
// app安装的身份信息
|
||||
FunctionBuildConfig.appIdentityMode = "Product_${BuildConfig.APP_IDENTITY_MODE_BODY}_${BuildConfig.APP_IDENTITY_MODE_TAIL}"
|
||||
// 支持的业务类型
|
||||
FunctionBuildConfig.supportBusiness = GsonUtils.fromJson(BuildConfig.supportBusiness, object : TypeToken<MutableList<String>>() {}.type)
|
||||
// 各个module需要的url
|
||||
FunctionBuildConfig.urlJson = GsonUtils.fromJson(BuildConfig.URLs, UrlConfig::class.java)
|
||||
//不能启动自动驾驶的档位
|
||||
@@ -105,13 +108,13 @@ object ConfigStartUp {
|
||||
} else if (AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)) {
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.huanwei
|
||||
}
|
||||
if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)){
|
||||
if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)){
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.xiaoba
|
||||
}
|
||||
if (AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)){
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.m1
|
||||
}
|
||||
if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
HdMapBuildConfig.currentCarVrIconRes = R.raw.m2
|
||||
}
|
||||
|
||||
@@ -119,7 +122,7 @@ object ConfigStartUp {
|
||||
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) ||
|
||||
AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)
|
||||
|| AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode) ||
|
||||
AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode)) {
|
||||
AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
|
||||
//是否显示 限速UI
|
||||
HmiBuildConfig.isShowLimitingVelocityView = false
|
||||
//白天模式
|
||||
|
||||
@@ -174,9 +174,9 @@ class SmallMapView @JvmOverloads constructor(
|
||||
// 关闭显示实时路况图层,aMap是地图控制器对象。
|
||||
mAMap?.isTrafficEnabled = false
|
||||
// 设置 锚点 图标
|
||||
iconRes = if (AppIdentityModeUtils.isJL(FunctionBuildConfig.appIdentityMode)) {
|
||||
iconRes = if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
|
||||
R.drawable.map_bus_icon
|
||||
} else if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode) || AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) {
|
||||
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode) || AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) {
|
||||
R.drawable.map_m2_icon
|
||||
} else {
|
||||
R.drawable.map_car_icon
|
||||
|
||||
@@ -119,6 +119,12 @@ object FunctionBuildConfig {
|
||||
@JvmField
|
||||
var appIdentityMode = "Taxi_Driver_Base"
|
||||
|
||||
|
||||
@Volatile
|
||||
@JvmField
|
||||
var supportBusiness = mutableListOf<String>()
|
||||
|
||||
|
||||
/**
|
||||
* 各车型宣传视频本地配置
|
||||
* 广告json
|
||||
|
||||
@@ -11,13 +11,13 @@ fun AppIdentityModeUtils.getMisChannelCode(appIdentityMode: String): Int {
|
||||
isCharter(appIdentityMode) && isPassenger(appIdentityMode) -> 8 // 包车乘客端
|
||||
isCharter(appIdentityMode) && isDriver(appIdentityMode) -> 9 // 包车司机端
|
||||
|
||||
isShuttle(appIdentityMode) && isPassenger(appIdentityMode) && isJL(appIdentityMode) -> 10 // B1接驳乘客端
|
||||
isShuttle(appIdentityMode) && isDriver(appIdentityMode) && isJL(appIdentityMode) -> 11 // B1接驳司机端
|
||||
isShuttle(appIdentityMode) && isPassenger(appIdentityMode) && isB1(appIdentityMode) -> 10 // B1接驳乘客端
|
||||
isShuttle(appIdentityMode) && isDriver(appIdentityMode) && isB1(appIdentityMode) -> 11 // B1接驳司机端
|
||||
|
||||
isSweeper(appIdentityMode) && isDriver(appIdentityMode) -> 12 // 清扫车司机端
|
||||
|
||||
isShuttle(appIdentityMode) && isPassenger(appIdentityMode) && isM2(appIdentityMode) -> 17 // B2接驳乘客端
|
||||
isShuttle(appIdentityMode) && isDriver(appIdentityMode) && isM2(appIdentityMode) -> 15 // B2接驳司机端
|
||||
isShuttle(appIdentityMode) && isPassenger(appIdentityMode) && isB2(appIdentityMode) -> 17 // B2接驳乘客端
|
||||
isShuttle(appIdentityMode) && isDriver(appIdentityMode) && isB2(appIdentityMode) -> 15 // B2接驳司机端
|
||||
|
||||
else -> 0
|
||||
}
|
||||
@@ -34,21 +34,21 @@ object AppIdentityModeUtils {
|
||||
private const val PASSENGER = "Passenger"
|
||||
|
||||
// 业务
|
||||
private const val TAXI = "Taxi"
|
||||
private const val BUS = "Bus"
|
||||
private const val SWEEPER = "Sweeper"
|
||||
private const val SHUTTLE = "Shuttle"
|
||||
private const val CHARTER = "Charter"
|
||||
const val TAXI = "Taxi"
|
||||
const val BUS = "Bus"
|
||||
const val SWEEPER = "Sweeper"
|
||||
const val SHUTTLE = "Shuttle"
|
||||
const val CHARTER = "Charter"
|
||||
|
||||
// 车型
|
||||
private const val M1 = "M1"
|
||||
private const val M2 = "M2"
|
||||
private const val JL = "JL"
|
||||
private const val DFHQ = "DFHQ"
|
||||
private const val FT = "FT"
|
||||
private const val B2 = "B2"
|
||||
private const val B1 = "B1"
|
||||
private const val T1T2 = "T1T2"
|
||||
private const val C1 = "C1"
|
||||
|
||||
|
||||
private fun getInfo(appIdentityMode: String): Array<String> {
|
||||
fun getInfo(appIdentityMode: String): Array<String> {
|
||||
val split = appIdentityMode.split("_")
|
||||
if (split.size == 3) {
|
||||
return split.toTypedArray()
|
||||
@@ -244,24 +244,24 @@ object AppIdentityModeUtils {
|
||||
fun isDFHQ(appIdentityMode: String): Boolean {
|
||||
val (_, _, model) = getInfo(appIdentityMode)
|
||||
if (model.isNotEmpty()) {
|
||||
return model == DFHQ
|
||||
return model == T1T2
|
||||
}
|
||||
return false
|
||||
}
|
||||
@JvmStatic
|
||||
fun isFT(appIdentityMode: String): Boolean {
|
||||
fun isC1(appIdentityMode: String): Boolean {
|
||||
val (_, _, model) = getInfo(appIdentityMode)
|
||||
if (model.isNotEmpty()) {
|
||||
return model == FT
|
||||
return model == C1
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun isJL(appIdentityMode: String): Boolean {
|
||||
fun isB1(appIdentityMode: String): Boolean {
|
||||
val (_, _, model) = getInfo(appIdentityMode)
|
||||
if (model.isNotEmpty()) {
|
||||
return model == JL
|
||||
return model == B1
|
||||
}
|
||||
return false
|
||||
}
|
||||
@@ -276,10 +276,10 @@ object AppIdentityModeUtils {
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun isM2(appIdentityMode: String): Boolean {
|
||||
fun isB2(appIdentityMode: String): Boolean {
|
||||
val (_, _, model) = getInfo(appIdentityMode)
|
||||
if (model.isNotEmpty()) {
|
||||
return model == M2
|
||||
return model == B2
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mogo.commons.screen;
|
||||
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
|
||||
|
||||
@@ -8,7 +7,6 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
|
||||
|
||||
import me.jessyan.autosize.AutoSizeConfig;
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils;
|
||||
|
||||
public class ScreenHelper {
|
||||
|
||||
@@ -25,7 +23,7 @@ public class ScreenHelper {
|
||||
AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))) {
|
||||
baseWidth = 1920;
|
||||
baseHeight = 1080;
|
||||
} else if (AppIdentityModeUtils.isM2(FunctionBuildConfig.appIdentityMode) &&
|
||||
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode) &&
|
||||
AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))) {
|
||||
baseWidth = 1080;
|
||||
baseHeight = 1920;
|
||||
|
||||
Reference in New Issue
Block a user