[fea]
[删除车型维度]
This commit is contained in:
yangyakun
2025-01-23 14:55:57 +08:00
parent 496af11530
commit bf313f04c1
98 changed files with 1540 additions and 1689 deletions

View File

@@ -15,7 +15,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager.OPERATION_ROAD_SIDE_TYPE
import com.mogo.och.bridge.autopilot.OCHAdasAbilityManager
@@ -70,7 +70,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
DriverM1Model.get().release()
}
override fun onStatusChange(currentStatus: LoginStatusEnum?) {
override fun onLoginStatusChange(currentStatus: EnumLoginStatus?) {
d(SceneConstant.M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin())
if(LoginStatusManager.isLogin()){
// 查询服务状态

View File

@@ -39,7 +39,7 @@ import com.mogo.och.common.module.manager.socket.lan.bean.ChangeDestMsg
import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.bridge.autopilot.autopilot.bean.ArrivedStation
import com.mogo.och.bridge.autopilot.autopilot.IOchAutopilotStatusListener
@@ -47,7 +47,6 @@ import com.mogo.och.bridge.autopilot.autopilot.OchAutoPilotManager
import com.mogo.och.bridge.autopilot.autopilot.OchAutoPilotStatusListenerManager
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.beautifymode.BeautifyManager
import com.mogo.och.bridge.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.common.module.manager.socket.lan.LedScreenManager
@@ -169,7 +168,7 @@ object CharterPassengerModel {
*/
private fun listenerLoginStatus() {
LoginStatusManager.addListener(TAG,object : ILoginCallback{
override fun onStatusChange(currentStatus: LoginStatusEnum?) {
override fun onLoginStatusChange(currentStatus: EnumLoginStatus?) {
if (LoginStatusManager.isLogin()) {
// 1、打开视频播放、
// 2 、打开空调暖风机灯设置页面

View File

@@ -1,57 +1,67 @@
package com.mogo.och.biz.login
import android.content.Context
import android.util.Log
import android.view.View
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.utilcode.mogo.Vehicle
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.och.biz.login.bean.LoginInfo
import com.mogo.och.biz.login.callback.ILoginViewCallback
import com.mogo.och.biz.login.model.LoginModel
import com.mogo.och.biz.login.ui.LoginFragment
import com.mogo.och.biz.login.ui.LoginPassengerFragment
import com.mogo.och.common.module.constant.OchCommonConst
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.RoleEnum
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum
import com.mogo.och.common.module.manager.cache.OchSPManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.biz.login.EnumRole
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
import com.mogo.och.common.module.biz.login.bean.OchBizInfo
import com.mogo.och.common.module.biz.login.bean.OchCarInfo
import com.mogo.och.common.module.biz.login.bean.OchLoginInfo
import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.LoginInfo2Client
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
import com.mogo.och.common.module.manager.socket.lan.bean.VehicleType
import com.mogo.och.common.module.utils.FlavorUtils
/**
* 网约车小巴业务实现入口
*
* @author tongchenfei
*/
@Route(path = OchCommonConst.BIZ_LOGIN)
class LoginProvider : LoginService {
private val tag = LoginProvider::class.java.simpleName
private var loginFragment: Fragment?=null
private var loginStatus: LoginStatusEnum = LoginStatusEnum.None
private var businessEnum = Product.NONE
private var openOrderStatusEnum: OpenOrderStatusEnum = OpenOrderStatusEnum.None
private var carModel: Carmodel = Carmodel.T2
private var loginInfo: LoginInfo? = null
private val tag = M_OCHCOMMON +LoginProvider::class.java.simpleName
// 登录页面
private var loginFragment: Fragment? = null
// 环境监测+业务展示和跳转
private val changeBusinessType = object : ILanMessageListener<LoginInfo2Client> {
override fun targetLan(): Class<LoginInfo2Client> {
return LoginInfo2Client::class.java
}
override fun onLanMsgReceived(first: LoginInfo2Client?) {
first?.let {
if (LoginServiceManager.checkAllEnv(it.project,it.env)) {
d(tag,"从司机屏获取账号信息:${it}")
val driverLoginInfo = GsonUtils.fromJson(it.loginInfo, LoginInfo::class.java)
LoginServiceManager.setLoginInfo(driverLoginInfo)
}
}
}
}
private val loginInfoKey = "LOGININFOKEY"
override fun init(context: Context) {
CallerLogger.d(tag, "LoginProvider init")
d(tag, "登录模块 init")
loginFragment = if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
LoginFragment()
} else if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
@@ -59,18 +69,24 @@ class LoginProvider : LoginService {
} else {
LoginFragment()
}
// 乘客屏监听司机端发送的业务修改通知(
LanSocketManager.registerSocketMessageListener(
DPMsgType.TYPE_LOGIN_INFO.type,
changeBusinessType
)
}
override fun getFragment(): Fragment {
CallerLogger.d(tag, "getFragment:${loginFragment}")
if(loginFragment==null){
loginFragment = if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
LoginFragment()
} else if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
LoginPassengerFragment()
} else {
LoginFragment()
}
d(tag, "getFragment:${loginFragment}")
if (loginFragment == null) {
loginFragment =
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
LoginFragment()
} else if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
LoginPassengerFragment()
} else {
LoginFragment()
}
}
return loginFragment!!
}
@@ -84,175 +100,74 @@ class LoginProvider : LoginService {
return View(context)
}
override fun setLoginStatus(status: Int) {
CallerLogger.d(tag, "setLoginStatus:${status}")
when (status) {
0 -> {
setLoginStatus(LoginStatusEnum.Logout)
}
1 -> {
setLoginStatus(LoginStatusEnum.Login)
}
else -> {
setLoginStatus(LoginStatusEnum.None)
}
}
}
override fun queryLoginStatusByNet(readCatche:Boolean) {
CallerLogger.d(tag, "queryLoginStatusByNet")
Log.d("登录","设置源:queryLoginStatusByNet")
LoginModel.queryCarStatus(readCatche)
override fun queryLoginStatusByNet(readCatche: Boolean) {
LoginServiceManager.queryLoginStatusByNet(readCatche)
}
override fun loginOut() {
CallerLogger.d(tag, "loginOut ")
LoginModel.logout()
}
override fun checkBusiness(businessType: Int): Boolean {
val businessInfo = FlavorUtils.getBusinessInfo(businessType)
if(businessInfo.isEmpty()){
return true
}
if (loginFragment is ILoginViewCallback) {
UiThreadHandler.post({
if (loginFragment?.isAdded==true) {
(loginFragment as ILoginViewCallback).showErrorInfo(businessInfo)
}
},UiThreadHandler.MODE.QUEUE)
}
return false
}
override fun checkAllEnv(
projectType: ProjectType,
envType: EnvType,
vehicleType: VehicleType,
businessType: BusinessType
): Boolean {
val checkAllEnv = FlavorUtils.checkAllEnv(projectType, envType, vehicleType, businessType)
if(checkAllEnv.isEmpty()){
}else{
if (loginFragment is ILoginViewCallback) {
changeStatus(checkAllEnv)
UiThreadHandler.post({
changeStatus(checkAllEnv)
if (loginFragment?.isAdded==true) {
(loginFragment as ILoginViewCallback).checkAllEnv(checkAllEnv)
}
},UiThreadHandler.MODE.QUEUE)
}
}
return checkAllEnv.isEmpty()
LoginServiceManager.loginOut()
}
override fun changeStatus(currentStatus: String) {
if (loginFragment?.isAdded==true) {
if (loginFragment?.isAdded == true) {
(loginFragment as ILoginViewCallback).updateStatus(currentStatus)
}
}
override fun setLoginInfo(loginInfo: LoginInfo) {
CallerLogger.d(tag, "setLoginInfo:${loginInfo}")
if(this.loginInfo!=loginInfo){
this.loginInfo = loginInfo
OchChainLogManager.writeChainLog("登录信息",loginInfo.toString())
}
CallerEagleBaseFunctionCall4OchManager.setOchLoginNo(loginInfo.phone)
CallerEagleBaseFunctionCall4OchManager.setOchCarModel(Carmodel.getCarModelFromServerName(loginInfo.carModel,loginInfo.tenantId))
CallerEagleBaseFunctionCall4OchManager.setOchPlateNumber(loginInfo.plateNumber)
CallerEagleBaseFunctionCall4OchManager.updateTenantId(loginInfo.tenantId)
val carModel = Carmodel.getCarModelFromServerName(LoginStatusManager.getLoginInfo()?.carModel,loginInfo.tenantId)
if(this.carModel!=carModel){
this.carModel = carModel
LoginStatusManager.invokeCarModelChange(this.carModel)
}
HdMapBuildConfig.currentCarVrIconRes = carModel.rawValue
override fun getOchBizInfo(): OchBizInfo? {
d(tag, "getOchBizInfo")
return LoginServiceManager.getOchBizInfo()
}
override fun getLoginInfo(): LoginInfo? {
CallerLogger.d(tag, "getLoginInfo")
return loginInfo
override fun getOchCarInfo(): OchCarInfo? {
d(tag, "getOchCarInfo")
return LoginServiceManager.getOchCarInfo()
}
override fun getPurpose(): RoleEnum {
CallerLogger.d(tag, "getPurpose")
return RoleEnum.valueOf(loginInfo?.purpose)
override fun getOchLoginInfo(): OchLoginInfo? {
d(tag, "getOchLoginInfo")
return LoginServiceManager.getOchLoginInfo()
}
override fun getPurpose(): EnumRole {
d(tag, "getPurpose")
return LoginServiceManager.getPurpose()
}
override fun isLogin(): Boolean {
CallerLogger.d(tag, "isLogin:${loginStatus == LoginStatusEnum.Login}")
return loginStatus == LoginStatusEnum.Login
return LoginServiceManager.isLogin()
}
override fun getLoginStatus(): LoginStatusEnum {
CallerLogger.d(tag, "getLoginStatus:${loginStatus}")
return loginStatus
override fun getLoginStatus(): EnumLoginStatus {
return LoginServiceManager.getLoginStatuType()
}
override fun getCarModel(): Carmodel {
CallerLogger.d(tag, "getCarModel:${carModel}")
return carModel
override fun getCarModelType(): Carmodel {
return LoginServiceManager.getCarModelType()
}
override fun setLoginStatus(loginStatus: LoginStatusEnum) {
CallerLogger.d(tag, "setLoginStatus:${loginStatus}----old${this.loginStatus}")
if (loginStatus != this.loginStatus) {
OchChainLogManager.writeChainLog("登录状态变化","${this.loginStatus}-->${loginStatus}");
this.loginStatus = loginStatus
Log.d("登录","设置源:invokeLoginStatusChange")
LoginStatusManager.invokeLoginStatusChange(loginStatus)
}
override fun getProductType(): Product {
return LoginServiceManager.getProductType()
}
override fun setBusinessType(type: Int) {
CallerLogger.d(tag, "setBusinessType:${type}")
if (businessEnum.code != type) {
this.businessEnum = Product.valueOf(type)
LoginStatusManager.invokeLBusinessTypeChange(this.businessEnum)
}
override fun getVehicleType(): Vehicle {
return LoginServiceManager.getVehicleType()
}
override fun getBusinessType(): Product {
CallerLogger.d(tag, "getBusinessType")
return businessEnum
override fun sendLogin2Client() {
LoginServiceManager.sendLogin2Client(1)
}
override fun setOpenOrderStatusType(type: Int) {
CallerLogger.d(tag, "setOpenOrderStatusType:${type}")
if (openOrderStatusEnum.code != type) {
OchChainLogManager.writeChainLog("接单状态变化","${this.openOrderStatusEnum}-->${OpenOrderStatusEnum.valueOf(type)}");
this.openOrderStatusEnum = OpenOrderStatusEnum.valueOf(type)
LoginStatusManager.invokeLOpenOrderStatusChange(this.openOrderStatusEnum)
}
}
override fun getOpenOrderStatusType(): OpenOrderStatusEnum {
CallerLogger.d(tag, "getOpenOrderStatusType:${openOrderStatusEnum}")
return openOrderStatusEnum
override fun getOpenOrderStatusType(): EnumOpenOrderStatus {
return LoginServiceManager.getOpenOrderStatusType()
}
override fun isOpenOrderType(): Boolean {
CallerLogger.d(tag, "isOpenOrderType:${openOrderStatusEnum == OpenOrderStatusEnum.Ordering}")
return openOrderStatusEnum == OpenOrderStatusEnum.Ordering
return LoginServiceManager.isOpenOrderType()
}
override fun removeLoginInfo() {
this.loginInfo = null
OchSPManager.remove(loginInfoKey)
LoginServiceManager.removeLoginInfo()
}
}

View File

@@ -0,0 +1,485 @@
package com.mogo.och.biz.login
import android.content.pm.ActivityInfo
import android.util.Log
import androidx.fragment.app.Fragment
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.env.Env
import com.mogo.commons.env.EnvUtils
import com.mogo.commons.env.Project
import com.mogo.commons.env.ProjectUtils
import com.mogo.commons.screen.ScreenHelper
import com.mogo.commons.utils.MogoAnalyticUtils
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.Vehicle
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.biz.login.callback.ILoginViewCallback
import com.mogo.och.biz.login.model.LoginModel
import com.mogo.och.biz.login.bean.LoginInfo
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.EnumRole
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
import com.mogo.och.common.module.biz.login.bean.OchBizInfo
import com.mogo.och.common.module.biz.login.bean.OchCarInfo
import com.mogo.och.common.module.biz.login.bean.OchLoginInfo
import com.mogo.och.common.module.manager.cache.OchSPManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.manager.loop.LoopInfo
import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvCheck
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.LoginInfo2Client
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
import com.mogo.och.common.module.utils.FlavorUtils
import com.mogo.och.common.module.utils.RxUtils
import io.reactivex.schedulers.Schedulers
import kotlin.properties.Delegates
/**
* 网约车小巴业务实现入口
*/
object LoginServiceManager {
private val tag = M_OCHCOMMON + "LoginManager"
private var TAGLoopStatus = "LoginStatusManagerLoop"
// 登录页面
private var loginFragment: Fragment? = null
// 登录状态
private var loginStatus: EnumLoginStatus by Delegates.observable(EnumLoginStatus.None) { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("登录状态变化", "${oldValue}-->${newValue}")
Log.d(tag, "登录状态变化:${oldValue}-->${newValue}")
if (newValue == EnumLoginStatus.Login && AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
BizLoopManager.setLoopFunction(
TAGLoopStatus,
LoopInfo(60 * 2, ::queryLoginStatusByNet, immediately = false, scheduler = Schedulers.io())
)
} else {
BizLoopManager.removeLoopFunction(TAGLoopStatus)
}
LoginStatusManager.invokeLoginStatusChange(loginStatus)
}
}
// 业务模式
private var productEnum: Product by Delegates.observable(Product.NONE) { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("业务模式发生变化", "${oldValue}-->${newValue}")
Log.d(tag, "业务模式发生变化:${oldValue}-->${newValue}")
onProductChange(newValue)
LoginStatusManager.invokeLProductChange(newValue)
CallerEagleBaseFunctionCall4OchManager.onOchProductChange()
}
}
// 车型
private var vehicleEnum: Vehicle by Delegates.observable(Vehicle.NONE) { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("车型发生变化", "${oldValue}-->${newValue}")
Log.d(tag, "车型发生变化:${oldValue}-->${newValue}")
onVehicleChange(newValue)
LoginStatusManager.invokeLVehicleChange(newValue)
CallerEagleBaseFunctionCall4OchManager.onOchVehicleChange()
}
}
// 接单状态
private var openOrderStatusEnum: EnumOpenOrderStatus by Delegates.observable(EnumOpenOrderStatus.None) { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("接单状态变化", "${oldValue}-->${newValue}")
Log.d(tag, "接单状态变化:${oldValue}-->${newValue}")
LoginStatusManager.invokeOpenOrderStatusChange(this.openOrderStatusEnum)
}
}
// 车模
private var carModel: Carmodel by Delegates.observable(Carmodel.T2) { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("车辆模型发生变化", "${oldValue}-->${newValue}")
Log.d(tag, "车辆模型发生变化:${oldValue}-->${newValue}")
HdMapBuildConfig.currentCarVrIconRes = newValue.rawValue
LoginStatusManager.invokeCarModelChange(newValue)
CallerEagleBaseFunctionCall4OchManager.setOchCarModel(newValue)
}
}
private var phoneNum: String by Delegates.observable("") { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("手机号发生变化", "${oldValue}-->${newValue}")
Log.d(tag, "手机号发生变化:${oldValue}-->${newValue}")
CallerEagleBaseFunctionCall4OchManager.setOchLoginNo(newValue)
}
}
private var plateNumber: String by Delegates.observable("") { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("车牌号发生变化", "${oldValue}-->${newValue}")
Log.d(tag, "车牌号发生变化:${oldValue}-->${newValue}")
CallerEagleBaseFunctionCall4OchManager.setOchPlateNumber(newValue)
}
}
private var tenantId: Long by Delegates.observable(0L) { _, oldValue, newValue ->
if (oldValue != newValue) {
OchChainLogManager.writeChainLog("租户Id发生变化", "${oldValue}-->${newValue}")
Log.d(tag, "租户Id发生变化:${oldValue}-->${newValue}")
LoginStatusManager.invokeTenantIdChange(newValue)
CallerEagleBaseFunctionCall4OchManager.updateTenantId(newValue)
}
}
// 登录信息
private var loginInfo: LoginInfo? = null
// 登录账号信息
private var ochLoginInfo: OchLoginInfo? = null
// 车辆信息
private var ochCarInfo: OchCarInfo? = null
// 业务信息
private var ochBizInfo: OchBizInfo? = null
private val loginInfoKey = "LOGININFOKEY"
private const val OCHLOGININFOKEY = "OCHLOGININFOKEY"
private const val OCHBIZINFOKEY = "OCHBIZINFOKEY"
private const val OCHCARINFOKEY = "OCHCARINFOKEY"
private const val OCHPRODUCT = "OCHPRODUCT"
private const val OCHVEHICLE = "OCHVEHICLE"
init {
initProductAndVehicle()
}
/**
* 查看是否提前设置上
*/
private fun initProductAndVehicle() {
productEnum = AppIdentityModeUtils.getProduct(FunctionBuildConfig.appIdentityMode)
vehicleEnum =AppIdentityModeUtils.getVehicle(FunctionBuildConfig.appIdentityMode)
}
fun queryLoginStatusByNet() {
LoginModel.queryCarStatus(false)
}
fun queryLoginStatusByNet(readCatche: Boolean) {
d(tag, "queryLoginStatusByNet")
LoginModel.queryCarStatus(readCatche)
}
fun loginOut() {
d(tag, "loginOut ")
LoginModel.logout()
}
fun checkAllEnv(
projectType: Project,
envType: Env,
): Boolean {
val checkAllEnv = FlavorUtils.checkAllEnv(projectType, envType)
if (checkAllEnv.isNotEmpty()) {
if (loginFragment is ILoginViewCallback) {
changeStatus(checkAllEnv)
UiThreadHandler.post({
changeStatus(checkAllEnv)
if (loginFragment?.isAdded == true) {
(loginFragment as ILoginViewCallback).checkAllEnv(checkAllEnv)
}
}, UiThreadHandler.MODE.QUEUE)
}
}
return checkAllEnv.isEmpty()
}
fun changeStatus(currentStatus: String) {
if (loginFragment?.isAdded == true) {
(loginFragment as ILoginViewCallback).updateStatus(currentStatus)
}
}
/**
* 设置登录信息
* 1、乘客屏从司机端获取到登录信息
* 2、支持老版本数据升级
* 3、
*/
fun setLoginInfo(loginInfo: LoginInfo) {
d(tag, "setLoginInfo:${loginInfo}")
if (this.loginInfo != loginInfo) {
this.loginInfo = loginInfo
saveInfo2SP(loginInfoKey, loginInfo)
sendLogin2Client(1)
val ochLoginInfo = loginInfo.toOchLoginInfo()
if (ochLoginInfo != this.ochLoginInfo) {
this.ochLoginInfo = ochLoginInfo
saveInfo2SP(OCHLOGININFOKEY, ochLoginInfo)
}
val ochCarInfo = loginInfo.toOchCarInfo()
if (this.ochCarInfo != ochCarInfo) {
this.ochCarInfo = ochCarInfo
saveInfo2SP(OCHCARINFOKEY, ochCarInfo)
}
val ochBizInfo = loginInfo.toOchBizInfo()
if (this.ochBizInfo != ochBizInfo) {
this.ochBizInfo = ochBizInfo
saveInfo2SP(OCHBIZINFOKEY, ochBizInfo)
}
OchChainLogManager.writeChainLog("登录信息", loginInfo.toString())
}
// 设置业务模式
setProductType(Product.valueOf(loginInfo.businessType))
// 设置登录状态
setLoginStatusType(EnumLoginStatus.valueOf(loginInfo.driverStatus))
// 设置接单状态
setOpenOrderStatusType(EnumOpenOrderStatus.valueOf(loginInfo.servingStatus))
// 设置车型
setVehicleType(Vehicle.getCarVehicleFromServerName(loginInfo.carModel))
// 设置车辆模型
setCarModelType(Carmodel.getCarModelFromServerName(loginInfo.carModel, loginInfo.tenantId))
this.phoneNum = loginInfo.phone ?: ""
this.plateNumber = loginInfo.plateNumber ?: ""
this.tenantId = loginInfo.tenantId
}
fun getLoginInfo(): LoginInfo? {
d(tag, "getLoginInfo")
if (loginInfo == null) {
this.loginInfo = getInfoFromSp<LoginInfo>(loginInfoKey)
}
return loginInfo
}
fun getOchBizInfo(): OchBizInfo? {
supply6100()
d(tag, "getOchBizInfo")
if (ochBizInfo == null) {
this.ochBizInfo = getInfoFromSp<OchBizInfo>(OCHBIZINFOKEY)
}
return ochBizInfo
}
fun getOchCarInfo(): OchCarInfo? {
supply6100()
d(tag, "getOchCarInfo")
if (ochCarInfo == null) {
this.ochCarInfo = getInfoFromSp<OchCarInfo>(OCHCARINFOKEY)
}
return ochCarInfo
}
fun getOchLoginInfo(): OchLoginInfo? {
supply6100()
d(tag, "getOchLoginInfo")
if (ochLoginInfo == null) {
this.ochLoginInfo = getInfoFromSp<OchLoginInfo>(OCHLOGININFOKEY)
}
return ochLoginInfo
}
fun getPurpose(): EnumRole {
d(tag, "getPurpose")
return EnumRole.valueOf(loginInfo?.purpose)
}
fun isLogin(): Boolean {
d(tag, "isLogin:${loginStatus == EnumLoginStatus.Login}")
return loginStatus == EnumLoginStatus.Login
}
fun getLoginStatuType(): EnumLoginStatus {
d(tag, "getLoginStatus:${loginStatus}")
return loginStatus
}
fun setCarModelType(carModel: Carmodel) {
d(tag, "setCarModel:${carModel}")
this.carModel = carModel
}
fun getCarModelType(): Carmodel {
d(tag, "getCarModel:${carModel}")
return this.carModel
}
fun setLoginStatusType(loginStatus: EnumLoginStatus) {
d(tag, "setLoginStatus:${this.loginStatus}---->${loginStatus}")
this.loginStatus = loginStatus
}
fun setProductType(product: Product) {
d(tag, "setProductType:${product}")
this.productEnum = product
}
fun getProductType(): Product {
d(tag, "getBusinessType:${productEnum}")
return productEnum
}
fun setVehicleType(vehicle: Vehicle) {
d(tag, "setVehicleType:${vehicle}")
this.vehicleEnum = vehicle
}
fun getVehicleType(): Vehicle {
d(tag, "getVehicleType:${vehicleEnum}")
return vehicleEnum
}
fun setOpenOrderStatusType(type: EnumOpenOrderStatus) {
d(tag, "setOpenOrderStatusType:${type}")
this.openOrderStatusEnum = type
}
fun getOpenOrderStatusType(): EnumOpenOrderStatus {
d(tag, "getOpenOrderStatusType:${openOrderStatusEnum}")
return openOrderStatusEnum
}
fun isOpenOrderType(): Boolean {
d(
tag,
"isOpenOrderType:${openOrderStatusEnum == EnumOpenOrderStatus.Ordering}"
)
return openOrderStatusEnum == EnumOpenOrderStatus.Ordering
}
fun removeLoginInfo() {
this.loginInfo = null
OchSPManager.remove(loginInfoKey)
}
private fun saveInfo2SP(key: String, value: Any) {
val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd)
val loginInfo4Json = GsonUtils.toJson(value)
OchSPManager.putString(key, timeText + loginInfo4Json)
}
inline fun <reified T> getInfoFromSp(key: String): T? {
val logingInfoJson = OchSPManager.getString(key)
logingInfoJson?.let { logininfo ->
val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd)
if (logininfo.startsWith(timeText)) {
val json = logingInfoJson.replace(timeText, "")
val oldLoginInfo = GsonUtils.fromJson(json, T::class.java)
return oldLoginInfo
}
}
return null
}
private fun supply6100() {
val loginInfo = getLoginInfo()
if (ochCarInfo == null && loginInfo != null) {
setLoginInfo(loginInfo)
}
}
private fun onProductChange(businessEnum: Product){
val (_, identity, model) = AppIdentityModeUtils.getInfo(FunctionBuildConfig.appIdentityMode)
when (businessEnum) {
Product.NONE -> {}
Product.TAXI -> {
FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.TAXI}_${identity}_${model}"
OchSPManager.putString(OCHPRODUCT,AppIdentityModeUtils.TAXI)
}
Product.BUS ->{
FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.BUS}_${identity}_${model}"
OchSPManager.putString(OCHPRODUCT,AppIdentityModeUtils.BUS)
}
Product.SHUTTLE -> {
FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.SHUTTLE}_${identity}_${model}"
OchSPManager.putString(OCHPRODUCT,AppIdentityModeUtils.SHUTTLE)
}
Product.CHARTER -> {
FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.CHARTER}_${identity}_${model}"
OchSPManager.putString(OCHPRODUCT,AppIdentityModeUtils.CHARTER)
}
Product.SCHEDULED -> {
FunctionBuildConfig.appIdentityMode = "${AppIdentityModeUtils.SCHEDULED}_${identity}_${model}"
OchSPManager.putString(OCHPRODUCT,AppIdentityModeUtils.SCHEDULED)
}
}
ScreenHelper.setScreenConfig(AbsMogoApplication.getApp())
CallerDevaToolsManager.updateAppChannel()
// 加入启动统计
val mStartParams: HashMap<String, Any> = HashMap()
mStartParams["start_time"] = TimeUtils.getNowMills()
mStartParams["app_version"] = AppUtils.getAppVersionName()
mStartParams["app_identity_mode"] = FunctionBuildConfig.appIdentityMode
MogoAnalyticUtils.track("app_start_time", mStartParams)
}
private fun onVehicleChange(vehicle: Vehicle) {
val tempInfo = FunctionBuildConfig.appIdentityMode
val (product, identity, model) = AppIdentityModeUtils.getInfo(tempInfo)
FunctionBuildConfig.appIdentityMode = "${product}_${identity}_${vehicle.code}"
OchSPManager.putString(OCHVEHICLE,vehicle.code)
ScreenHelper.setScreenConfig(AbsMogoApplication.getApp())
if (vehicle == Vehicle.B2 && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
BizLoopManager.runInMainThread{
ActivityUtils.getTopActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
}
}
CallerDevaToolsManager.updateAppChannel()
OchChainLogManager.writeChainLogInit("车辆信息","修改车型${tempInfo}--->${FunctionBuildConfig.appIdentityMode}")
}
/**
* 向乘客端发送登录信息
*/
fun sendLogin2Client(count: Int) {
if(count>3){
return
}
if (loginInfo==null) {
RxUtils.createSubscribeOnOwnThread {
sendLogin2Client(count+1)
}
}else{
val toJson = GsonUtils.toJson(loginInfo)
val msg = LoginInfo2Client(toJson,ProjectUtils.getProjectType(),EnvUtils.getEnvType())
LanSocketManager.sendMsgToClient(msg)
}
}
}

View File

@@ -1,7 +1,6 @@
package com.mogo.och.biz.login.bean;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.login.LoginInfo;
/**
* Created by pangfan on 2021/8/19

View File

@@ -0,0 +1,123 @@
package com.mogo.och.biz.login.bean
import com.mogo.och.common.module.biz.login.bean.OchBizInfo
import com.mogo.och.common.module.biz.login.bean.OchCarInfo
import com.mogo.och.common.module.biz.login.bean.OchLoginInfo
import java.util.Objects
class LoginInfo {
var driverStatus: Int = 0 //1登录0登出
var servingStatus: Int = 0 //1接单中0暂停接单
var businessType: Int = 0 //9: taxi. 10: bus公交 11:接驳 13:包车
var orderNo: String? = null
var purpose: Int = 0 // 1 运营, 2 测试, 3演示
var sn: String? = null
var plateNumber: String? = null //车牌号
var phone: String? = null //手机号
var lineId: Long? = null //线路id
var taskId: Long? = null //任务id
var siteId: Long? = null //站点id 包车使用
var currentSite: Long? = null //当前站点 接驳、公交、班车使用
var leaving: Boolean? = null // 当前站点是否出发
var shiftsId: Long? = null //模板id
var taskDate: Long? = null // 任务或模板的日期
var vin: String? = null //车辆唯一识别码
var cityCode: String? = null //城市编码
var brand: String? = null //东风
//
// E70 东风 H9 红旗
// B2 B1 M1
var carModel: String? = null
var photos: String? = null //车身照片:
var tenantId: Long = 0 //租户id:
var driverId: Long = 0
var businessStatus: Long = 0 //?????
fun toOchBizInfo(): OchBizInfo {
return OchBizInfo(
businessType,
orderNo?:"",
servingStatus,
lineId?:0,
taskId?:0,
currentSite?:0,
leaving?:false,
shiftsId?:0,
taskDate?:0,
siteId?:0,
businessStatus
)
}
fun toOchCarInfo(): OchCarInfo {
return OchCarInfo(plateNumber,vin,cityCode,brand,carModel,photos,tenantId)
}
fun toOchLoginInfo(): OchLoginInfo {
return OchLoginInfo(
driverStatus,
purpose,
sn?:"",
phone?:"",
driverId
)
}
override fun toString(): String {
return "LoginInfo{" +
"driverStatus=" + driverStatus +
", servingStatus=" + servingStatus +
", businessType=" + businessType +
", orderNo='" + orderNo + '\'' +
", purpose=" + purpose +
", sn='" + sn + '\'' +
", plateNumber='" + plateNumber + '\'' +
", phone='" + phone + '\'' +
", lineId=" + lineId +
", taskId=" + taskId +
", siteId=" + siteId +
", vin='" + vin + '\'' +
", cityCode='" + cityCode + '\'' +
", brand='" + brand + '\'' +
", carModel='" + carModel + '\'' +
", photos='" + photos + '\'' +
", tenantId=" + tenantId +
", driverId=" + driverId +
", businessStatus=" + businessStatus +
'}'
}
override fun equals(o: Any?): Boolean {
if (this === o) return true
if (o == null || javaClass != o.javaClass) return false
val loginInfo = o as LoginInfo
return driverStatus == loginInfo.driverStatus && servingStatus == loginInfo.servingStatus && businessType == loginInfo.businessType && purpose == loginInfo.purpose && tenantId == loginInfo.tenantId && driverId == loginInfo.driverId && businessStatus == loginInfo.businessStatus && orderNo == loginInfo.orderNo && sn == loginInfo.sn && plateNumber == loginInfo.plateNumber && phone == loginInfo.phone && lineId == loginInfo.lineId && taskId == loginInfo.taskId && siteId == loginInfo.siteId && vin == loginInfo.vin && cityCode == loginInfo.cityCode && brand == loginInfo.brand && carModel == loginInfo.carModel && photos == loginInfo.photos
}
override fun hashCode(): Int {
var result = driverStatus
result = 31 * result + servingStatus
result = 31 * result + businessType
result = 31 * result + Objects.hashCode(orderNo)
result = 31 * result + purpose
result = 31 * result + Objects.hashCode(sn)
result = 31 * result + Objects.hashCode(plateNumber)
result = 31 * result + Objects.hashCode(phone)
result = 31 * result + Objects.hashCode(lineId)
result = 31 * result + Objects.hashCode(taskId)
result = 31 * result + Objects.hashCode(siteId)
result = 31 * result + Objects.hashCode(vin)
result = 31 * result + Objects.hashCode(cityCode)
result = 31 * result + Objects.hashCode(brand)
result = 31 * result + Objects.hashCode(carModel)
result = 31 * result + Objects.hashCode(photos)
result = 31 * result + java.lang.Long.hashCode(tenantId)
result = 31 * result + java.lang.Long.hashCode(driverId)
result = 31 * result + java.lang.Long.hashCode(businessStatus)
return result
}
}

View File

@@ -6,7 +6,7 @@ import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
import com.mogo.och.common.module.manager.socket.lan.bean.VehicleType
interface ILoginViewCallback {
fun showErrorInfo(errorInfo: String)
fun showErrorInfo(errorInfo: String){}
fun checkAllEnv(
reason:String

View File

@@ -6,8 +6,7 @@ package com.mogo.och.biz.login.callback;
* Model->Presenter回调订单相关进行中/待服务单变更,当前进行单状态变更,新到预约单,抢单,抢单结果状态等等)
*/
public interface ITaxiLoginCallback {
void getPhoneCodeSuccess();
default void searchStatusSuccess(){}
default void getPhoneCodeSuccess(){}
void netErrorCallback();
default void netErrorCallback(){}
}

View File

@@ -11,17 +11,12 @@ import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.commons.utils.MogoAnalyticUtils
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchManager
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
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.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.och.biz.R
import com.mogo.och.biz.login.LoginConst
import com.mogo.och.biz.login.LoginServiceManager
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
import com.mogo.och.biz.login.bean.TaxiLoginReqBean
import com.mogo.och.biz.login.bean.TaxiLoginRespBean
@@ -29,19 +24,14 @@ import com.mogo.och.biz.login.bean.TaxiLogoutReqBean
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
import com.mogo.och.biz.login.net.OchCommonServiceManager
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.LoginStatusEnum.Companion.valueOf
import com.mogo.och.biz.login.bean.LoginInfo
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.cache.ISpCallback
import com.mogo.och.common.module.manager.cache.OchSPManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.socket.lan.bean.BusCacheKey
import com.mogo.och.common.module.manager.socket.lan.bean.LoginCacheStatus
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.ToastUtilsOch
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
import com.mogo.och.data.manager.cache.CacheDataManager
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
import java.util.concurrent.TimeUnit
@@ -66,17 +56,20 @@ object LoginModel {
private val mNetWorkIntentListener = IMogoIntentListener { intentStr, _ ->
d(TAG, "onIntentReceived = %s", intentStr)
if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) {
if (NetworkUtils.isConnected(mContext)) {
if (NetworkUtils.isConnected(mContext)
&& AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
// 网络链接成功可以先读取本地再获取服务器
queryCarStatus()
}
}
}
private val snChangeListener = object :ISpCallback{
private val snChangeListener = object : ISpCallback {
override fun snChange() {
d(TAG, "sn 发生变化${OchSPManager.getSn()}")
queryCarStatus(false)
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
queryCarStatus(false)
}
}
}
@@ -86,26 +79,18 @@ object LoginModel {
.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
}
fun init(context: Context) {
}
fun hasInit(): Boolean {
return iTaxiLoginCallback != null
}
fun getiTaxiLoginCallback(): ITaxiLoginCallback? {
return iTaxiLoginCallback
}
fun setiTaxiLoginCallback(iTaxiLoginCallback: ITaxiLoginCallback?) {
d(TAG,"setiTaxiLoginCallback")
OchSPManager.addListener(TAG,snChangeListener)
d(TAG, "setiTaxiLoginCallback")
OchSPManager.addListener(TAG, snChangeListener)
LoginModel.iTaxiLoginCallback = iTaxiLoginCallback
}
fun release() {
d(TAG,"release")
d(TAG, "release")
OchSPManager.remove(TAG)
iTaxiLoginCallback = null
}
@@ -114,11 +99,11 @@ object LoginModel {
* 获取手机验证码
*/
fun getPhoneCode(phone: String?) {
if(mContext==null){
OchChainLogManager.writeChainLog("登录页面","获取验证码 mContext${mContext}")
}else {
if (mContext == null) {
OchChainLogManager.writeChainLog("登录页面", "获取验证码 mContext${mContext==null}")
} else {
mContext?.let {
OchChainLogManager.writeChainLog("登录页面","网络请求去获取验证码")
OchChainLogManager.writeChainLog("登录页面", "网络请求去获取验证码")
OchCommonServiceManager.getPhoneCode(it, phone,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
@@ -188,48 +173,43 @@ object LoginModel {
/**
* 接单状态和登录状态查询
* 1、初始化查询
* 2、错误重试
* 3、错误重试
* 4、登出后重试
* 5、变更出车状态查下
* 6、变更出车状态查下
* 7、网络状态变更后查询
* 8、登录页面关闭后查下状态
* 1、司机端登录成功后开启2分钟定时请求登录状态
* 2、对外提供查询登录状态
* 3、网络状态发生变化后查询
* 4、sn 发生变化后查询
* 5、登录成功后主动查询
* 6、错误重试
* 7、错误重试
* 8、登出后重试
*/
fun queryCarStatus(readCatche:Boolean = true) {
fun queryCarStatus(readCatche: Boolean = true) {
mContext?.let {
Log.d(TAG,"设置源:queryCarStatus")
if(readCatche){
val logingInfoJson = OchSPManager.getString(loginInfoKey)
val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd)
logingInfoJson?.let {logininfo->
if(logininfo.startsWith(timeText)){
val json = logingInfoJson.replace(timeText,"" )
val oldLoginInfo = GsonUtils.fromJson(json, DriverStatusQueryRespBean::class.java)
go2LoginInfo(oldLoginInfo,"缓存获取")
}
}
Log.d(TAG, "设置源:queryCarStatus")
if (readCatche) {
val loginInfo = LoginServiceManager.getLoginInfo()
go2LoginInfo(loginInfo,"缓存获取")
}
OchCommonServiceManager.queryDriverServiceStatus(it, object : OchCommonServiceCallback<DriverStatusQueryRespBean> {
override fun onSuccess(data: DriverStatusQueryRespBean?) {
OchCommonServiceManager.queryDriverServiceStatus(
it,
object : OchCommonServiceCallback<DriverStatusQueryRespBean> {
override fun onSuccess(data: DriverStatusQueryRespBean) {
val map: MutableMap<String, Any> = HashMap()
map["msg"] = data.toString()
MogoAnalyticUtils.track("QueryCarStatus",map)
go2LoginInfo(data,"接口获取")
MogoAnalyticUtils.track("QueryCarStatus", map)
go2LoginInfo(data.data, "接口获取")
}
override fun onError() {
val map: MutableMap<String, Any> = HashMap()
map["msg"] = "网络错误"
MogoAnalyticUtils.track("QueryCarStatus",map)
MogoAnalyticUtils.track("QueryCarStatus", map)
if (!NetworkUtils.isConnected(mContext)) {
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.network_error_tip))
} else {
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.request_error_tip))
}
LoginStatusManager.setLoginError(-10012,"网络错误")
LoginStatusManager.setLoginError(-10012, "网络错误")
// 依赖参数
subscribe = Observable.timer(5, TimeUnit.SECONDS)
.subscribe { _: Long? -> queryCarStatus(readCatche) }
@@ -239,9 +219,9 @@ object LoginModel {
val map: MutableMap<String, Any> = HashMap()
map["msg"] = msg
map["code"] = code
MogoAnalyticUtils.track("QueryCarStatus",map)
MogoAnalyticUtils.track("QueryCarStatus", map)
LoginStatusManager.setLoginError(code,"msg:${msg}")
LoginStatusManager.setLoginError(code, "msg:${msg}")
ToastUtilsOch.showWithCodeMessage(code, msg)
// 依赖参数
subscribe = Observable.timer(3, TimeUnit.SECONDS)
@@ -249,7 +229,6 @@ object LoginModel {
// if (code == OchCommonConst.WAIT_TAKEN) {
//
// } else {
loginFail(LoginStatusManager.isLogin())
// }
}
})
@@ -257,34 +236,10 @@ object LoginModel {
}
@Synchronized
private fun go2LoginInfo(data: DriverStatusQueryRespBean?, source: String) {
d(TAG,"设置源:${source}")
private fun go2LoginInfo(data: LoginInfo?, source: String) {
d(TAG, "设置源:${source}")
data?.let {
LoginStatusManager.setLoginInfo(data.data)
}
if (FunctionBuildConfig.ochdebug) {
return
}
if (null != data && 0 == data.code) {
// 不用登录也可以获得支持的业务模式
LoginStatusManager.setBusinessType(data.data.businessType)
iTaxiLoginCallback?.searchStatusSuccess()
// 后台已登录
if (!FunctionBuildConfig.isOffLine) {
if (valueOf(data.data.driverStatus) == LoginStatusEnum.Login) {
// 业务不支持 去退出登录
if (!LoginStatusManager.checkBusiness(data.data.businessType)) {
LoginStatusManager.loginOut()
return
}
}
LoginStatusManager.setLoginStatus(data.data.driverStatus)
}
val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd)
val loginInfo4Json = GsonUtils.toJson(data)
OchSPManager.putString(loginInfoKey,timeText+loginInfo4Json)
LoginStatusManager.setOpenOrderType(data.data.servingStatus)
d(TAG, "登录信息:$data")
LoginServiceManager.setLoginInfo(data)
loginSuccess(data)
}
}
@@ -292,18 +247,11 @@ object LoginModel {
// 登出
fun logout() {
val location4Login = TaxiLogoutReqBean.Location4Login()
if (FunctionBuildConfig.isOffLine) {
d(TAG, "离线模式登录后退出 setLoginStatus:${LoginStatusEnum.Logout}")
LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout)
FunctionBuildConfig.isOffLine = false
return
}
OchCommonServiceManager.logout(
mContext!!, location4Login,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
if (null != data && 0 == data.code) {
loginFail(false)
OchSPManager.remove(loginInfoKey)
// 退出登录成功需要查询新的
queryCarStatus(false)
@@ -320,44 +268,22 @@ object LoginModel {
override fun onFail(code: Int, msg: String) {
ToastUtilsOch.showWithCodeMessage(code, msg)
if(!LoginStatusManager.isLogin()){
LoginStatusManager.invokeLBusinessTypeChangeDebug(Product.NONE)
}
}
})
}
fun loginSuccess(data: DriverStatusQueryRespBean?) {
d(TAG, "loginSuccess:${LoginStatusManager.isLogin()}")
if (LoginStatusManager.isLogin()) {
SharedPrefsMgr.getInstance().putString("och_account", data?.data?.phone)
fun loginSuccess(data: LoginInfo?) {
d(TAG, "loginSuccess:${LoginServiceManager.isLogin()}")
if (LoginServiceManager.isLogin()) {
SharedPrefsMgr.getInstance().putString("och_account", data?.phone)
} else {
SharedPrefsMgr.getInstance().putString("och_account", "")
}
data?.data?.driverStatus?.let { updateLoginLocalStatus(it) }
}
private fun updateLoginLocalStatus(loginStatus: Int = 0) {
val loginCacheStatus = LoginCacheStatus(loginStatus, DateTimeUtil.getCurrentTimeStamp())
mContext?.let {
CacheDataManager.instance.putCacheData(
it, BusCacheKey.BUS_LOGIN_STATUS_CACHE,
GsonUtils.toJson(loginCacheStatus))
}
}
fun loginFail(isLogin: Boolean) {
d(TAG, "loginFail:$isLogin")
updateLoginLocalStatus(0)
}
fun gotoOfflineMode() {
FunctionBuildConfig.isOffLine = true
d(TAG, "离线模式登录 setLoginStatus:${LoginStatusEnum.Login}")
LoginStatusManager.setLoginStatus(LoginStatusEnum.Login)
CallerEagleBaseFunctionCall4OchManager.setOchLoginNo(LoginConst.OFFLINEPHONE)
}
}

View File

@@ -77,7 +77,7 @@ object OchCommonServiceManager {
location4Login: TaxiLoginReqBean.Location4Login,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
CallerLogger.d(TAG, "gotoLoginBycode:通过手机验证码登录:${phone}---${code}");
CallerLogger.d(TAG, "gotoLoginBycode:通过手机验证码登录:${phone}---${code}")
val sn = OchSPManager.getSn()
if (ProjectUtils.isMogo()) {
ochLoginServiceMogo.gotoLoginBycode(
@@ -103,7 +103,7 @@ object OchCommonServiceManager {
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
CallerLogger.d(TAG, "logout:登出");
CallerLogger.d(TAG, "logout:登出")
if (ProjectUtils.isMogo()) {
ochLoginServiceMogo.logout(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
@@ -143,14 +143,14 @@ object OchCommonServiceManager {
LoginLanPassengerSocket.driverSn
}
if(sn.isNullOrEmpty()){
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态 没有有效的sn");
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态 没有有效的sn")
return
}
if(FunctionBuildConfig.ochdebug){
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态 ochdebug模式");
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态 ochdebug模式")
return
}
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态${sn}");
CallerLogger.d(TAG, "queryDriverServiceStatus:查询登录状态${sn}")
if (ProjectUtils.isMogo()) {
ochLoginServiceMogo.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,

View File

@@ -26,7 +26,6 @@ class LoginPassengerPresenter(view: LoginPassengerFragment?) : Presenter<LoginPa
}
private fun initListeners() {
LoginModel.init(AbsMogoApplication.getApp())
LoginModel.setiTaxiLoginCallback(this)
BizLoopManager.setLoopFunction(TAG, LoopInfo(2,::showStatus))
}
@@ -45,12 +44,4 @@ class LoginPassengerPresenter(view: LoginPassengerFragment?) : Presenter<LoginPa
BizLoopManager.removeLoopFunction(TAG)
}
override fun getPhoneCodeSuccess() {
}
override fun netErrorCallback() {
}
}

View File

@@ -3,15 +3,20 @@ package com.mogo.och.biz.login.presenter
import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.Presenter
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.Vehicle
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.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.RegexUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.och.biz.R
import com.mogo.och.biz.login.LoginConst
import com.mogo.och.biz.login.LoginServiceManager
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
import com.mogo.och.biz.login.ui.LoginFragment
import com.mogo.och.biz.login.model.LoginModel
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
@@ -27,26 +32,30 @@ import java.util.concurrent.TimeUnit
*
* 描述
*/
class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), ITaxiLoginCallback {
class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), ITaxiLoginCallback,
ILoginCallback {
private var countDownDisposable: Disposable? = null
private val TAG = LoginPresenter::class.java.simpleName
private var phone:String?=null
private var code:String?=null
private val TAG = M_OCHCOMMON+LoginPresenter::class.java.simpleName
init {
initListeners()
CallerLogger.d(SceneConstant.M_TAXI + TAG, "网约车-Init")
CallerLogger.d(TAG, "网约车-Init")
}
private fun initListeners() {
LoginModel.init(AbsMogoApplication.getApp())
LoginModel.setiTaxiLoginCallback(this)
LoginStatusManager.addListener(TAG,this)
}
override fun onProductChange(businessEnum: Product?) {
mView?.setBg()
}
override fun onVehicleChage(vehicle: Vehicle?) {
mView?.setBg()
}
fun getPhoneCode(phone:String){
OchChainLogManager.writeChainLog("登录页面","获取验证码${phone}")
@@ -65,7 +74,7 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), IT
override fun onCreate(owner: LifecycleOwner) {
super.onCreate(owner)
CallerLogger.d(SceneConstant.M_TAXI + TAG, "网约车-出租车登陆")
CallerLogger.d(TAG, "网约车-出租车登陆")
}
@@ -88,13 +97,13 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), IT
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
mView?.setCountDownText("${it}s",false)
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时:$it")
CallerLogger.d(TAG, "倒计时:$it")
}, {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onError:${it}")
CallerLogger.d(TAG, "倒计时onError:${it}")
it.printStackTrace()
mView?.setCountDownText(AbsMogoApplication.getApp().getString(R.string.module_och_taxi_login_get_code),true)
}, {
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onComplete")
CallerLogger.d(TAG, "倒计时onComplete")
mView?.setCountDownText(AbsMogoApplication.getApp().getString(R.string.module_och_taxi_login_get_code),true)
})
}
@@ -116,25 +125,8 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), IT
gotoOfflineMode()
return
}
// 需要实时查询新的
LoginModel.queryCarStatus(false)
LoginModel.gotoLogin(phone, code)
mView?.closeSoftInput()
this.phone = phone
this.code = code
}
override fun searchStatusSuccess() {
if (StringUtils.isEmpty(phone) || StringUtils.isEmpty(code)) {
return
}
if(!LoginStatusManager.checkBusiness(LoginStatusManager.getBusInessType().code)){
return
}
if(!StringUtils.isEmpty(phone)&&!StringUtils.isEmpty(code)) {
LoginModel.gotoLogin(phone!!, code!!)
}
this.phone = null
this.code = null
}
override fun netErrorCallback() {

View File

@@ -257,11 +257,7 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
// 司机屏不用处理 只处理 后台返回的业务模型就行
}
override fun onResume() {
biz_cl_driver_main?.viewTreeObserver?.addOnGlobalLayoutListener(onlayoutListener)
super.onResume()
CallerIpcConnectStateToastManager.loginFragment(true)
CallerLogger.d(TAG, "onResume")
fun setBg(){
context?.let {
val videoUrl:String
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
@@ -347,6 +343,14 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
}
}
override fun onResume() {
biz_cl_driver_main?.viewTreeObserver?.addOnGlobalLayoutListener(onlayoutListener)
super.onResume()
CallerIpcConnectStateToastManager.loginFragment(true)
CallerLogger.d(TAG, "onResume")
setBg()
}
override fun onPause() {
biz_cl_driver_main?.viewTreeObserver?.removeOnGlobalLayoutListener(onlayoutListener)
super.onPause()

View File

@@ -1,26 +1,29 @@
package com.mogo.och.biz.login.ui
import android.content.res.Configuration
import android.util.TypedValue
import android.view.View
import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.ScreenUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.biz.BuildConfig
import com.mogo.och.biz.R
import com.mogo.och.biz.login.callback.ILoginViewCallback
import com.mogo.och.biz.login.presenter.LoginPassengerPresenter
import com.mogo.och.biz.login.ui.debugview.BusinessView
import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket
import com.mogo.och.common.module.utils.FlavorUtils
import kotlinx.android.synthetic.main.biz_login_passenger_view.actv_app_version
import kotlinx.android.synthetic.main.biz_login_passenger_view.actv_connect_status
import kotlinx.android.synthetic.main.biz_login_passenger_view.biz_cl_passenger_main
import kotlinx.android.synthetic.main.biz_login_view.bv_switch_business
import kotlinx.android.synthetic.main.biz_login_view.eiv_Info
import me.jessyan.autosize.AutoSizeCompat
import me.jessyan.autosize.utils.AutoSizeUtils
import kotlin.math.abs
/**
@@ -29,36 +32,53 @@ import kotlinx.android.synthetic.main.biz_login_view.eiv_Info
*/
class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPassengerPresenter?>(),
ILoginViewCallback {
private var biz_cl_passenger_main: ConstraintLayout?=null
private var biz_actv_login_show_sn: AppCompatTextView?=null
private var bv_switch_business: BusinessView?=null
private var actv_app_version: AppCompatTextView?=null
private var actv_connect_status: AppCompatTextView?=null
private val statusList = mutableListOf<String>()
override fun getLayoutId(): Int {
return R.layout.biz_login_passenger_view
}
if (AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))) {
return R.layout.biz_login_passenger_view_1920x1080
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isPassenger((FunctionBuildConfig.appIdentityMode))) {
return R.layout.biz_login_passenger_view_1080x1920
private val width2560 = 2560
private val width1920 = 1920
private fun changeUi(){
val screenWidth = ScreenUtils.getScreenWidth()
val screenHeight = ScreenUtils.getScreenHeight()
val textSize: Float
val marginBottom: Int
if(screenWidth>screenHeight){//横屏
if(abs(screenWidth - width2560)<abs(screenWidth-width1920)){
// 使用2560的横屏配置
biz_cl_passenger_main?.setBackgroundResource(R.drawable.biz_login_passenger_2560x1600)
textSize = AutoSizeUtils.dp2px(context, 30f).toFloat()
marginBottom = AutoSizeUtils.dp2px(context, 70f)
CallerLogger.d(TAG,"width:${screenWidth}----height:${screenHeight}----001")
}else{
// 使用1920的横屏效果
biz_cl_passenger_main?.setBackgroundResource(R.drawable.biz_login_passenger_1920x1080)
textSize = AutoSizeUtils.dp2px(context, 28f).toFloat()
marginBottom = AutoSizeUtils.dp2px(context, 41f)
CallerLogger.d(TAG,"width:${screenWidth}----height:${screenHeight}----002")
}
}else{// 竖屏 使用1080 的横屏效果
biz_cl_passenger_main?.setBackgroundResource(R.drawable.biz_login_passenger_1080x1920)
textSize = AutoSizeUtils.dp2px(context, 28f).toFloat()
marginBottom = AutoSizeUtils.dp2px(context, 41f)
CallerLogger.d(TAG,"width:${screenWidth}----height:${screenHeight}----003")
}
return R.layout.biz_login_passenger_view_2560x1600
actv_connect_status?.setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize)
actv_app_version?.setTextSize(TypedValue.COMPLEX_UNIT_PX,textSize)
val layoutParams = actv_app_version.layoutParams as ConstraintLayout.LayoutParams
layoutParams.bottomMargin = marginBottom
actv_app_version.layoutParams = layoutParams
}
override fun initViews() {
biz_cl_passenger_main = findViewById(R.id.biz_cl_passenger_main)
biz_actv_login_show_sn= findViewById(R.id.biz_actv_login_show_sn)
bv_switch_business= findViewById(R.id.bv_switch_business)
actv_app_version= findViewById(R.id.actv_app_version)
actv_connect_status= findViewById(R.id.actv_connect_status)
CallerLogger.d(TAG, "init")
actv_app_version?.text = FlavorUtils.getInfo()
if(BuildConfig.DEBUG) {
@@ -74,8 +94,7 @@ class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPasseng
true
}
}
CallerLogger.d(TAG, "init")
changeUi()
}
override fun createPresenter(): LoginPassengerPresenter {
@@ -87,14 +106,9 @@ class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPasseng
}
companion object {
val TAG = LoginPassengerFragment::class.java.simpleName
}
override fun showErrorInfo(errorInfo: String) {
}
override fun checkAllEnv(
reason:String
) {
@@ -103,7 +117,7 @@ class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPasseng
}
override fun updateStatus(status: String) {
statusList?.add(status)
statusList.add(status)
}
override fun onResume() {
@@ -134,5 +148,7 @@ class LoginPassengerFragment : MvpFragment<LoginPassengerFragment?, LoginPasseng
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
CallerLogger.d(TAG, newConfig)
AutoSizeCompat.autoConvertDensityOfGlobal(resources)
changeUi()
}
}

View File

@@ -6,12 +6,10 @@ import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.och.biz.R
import com.mogo.och.common.module.biz.login.LoginStatusManager
import kotlinx.android.synthetic.main.biz_login_business_view.view.actv_business_bus
import kotlinx.android.synthetic.main.biz_login_business_view.view.actv_business_charter
import kotlinx.android.synthetic.main.biz_login_business_view.view.actv_business_shuttle
@@ -63,8 +61,7 @@ class BusinessView : ConstraintLayout, BusinessViewModel.IErrorInfoViewCallback
}
private fun swtichBusiness(businessEnum: Product) {
LoginStatusManager.invokeLBusinessTypeChangeDebug(businessEnum)
visibility = GONE
}
@@ -78,31 +75,10 @@ class BusinessView : ConstraintLayout, BusinessViewModel.IErrorInfoViewCallback
}
fun selectBusniess() {
visibility = VISIBLE
actv_business_shuttle.visibility = GONE
actv_business_bus.visibility = GONE
actv_business_taxi.visibility = GONE
actv_business_charter.visibility = GONE
FunctionBuildConfig.supportBusiness.forEach {
when (it) {
"shuttle" -> {
actv_business_shuttle.visibility = VISIBLE
}
"bus" -> {
actv_business_bus.visibility = VISIBLE
}
"taxi" -> {
actv_business_taxi.visibility = VISIBLE
}
"charter" -> {
actv_business_charter.visibility = VISIBLE
}
else -> {}
}
if(visibility== VISIBLE){
visibility = GONE
}else {
visibility = VISIBLE
}
}

View File

@@ -4,9 +4,12 @@ import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.commons.env.ProjectUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.och.biz.R
import com.mogo.och.biz.skin.bean.SkinRespBean
import com.mogo.och.biz.skin.net.OchSkinServiceManager
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.skin.SkinService
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
@@ -17,11 +20,21 @@ import com.mogo.skin.SkinManager
import com.mogo.skin.utils.FileUtils
@Route(path = OchCommonConst.BIZ_SKIN)
class SkinProvider : SkinService {
class SkinProvider : SkinService, ILoginCallback {
private var context: Context?= null
private val TAG = "SkinProvider"
private val TAG = M_OCHCOMMON+"SkinProvider"
init {
d(TAG,"皮肤信息_监听租户")
LoginStatusManager.addListener(TAG,this)
}
override fun onTenantIdChange(tenantId: Long?) {
d(TAG,"皮肤信息_租户变化重新请求皮肤包")
loadNewSkin()
}
override fun loadNewSkin() {
OchChainLogManager.writeChainLogSkin("皮肤信息","请求皮肤信息")

View File

@@ -1,7 +1,6 @@
package com.mogo.och.biz.skin.bean
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.login.LoginInfo
/**
* Created by pangfan on 2021/8/19

View File

@@ -126,7 +126,7 @@ class TimeProvider : TimeService {
}
fun tryload(){
if (netTime > 3_000 || FunctionBuildConfig.isOffLine) {
if (netTime > 3_000) {
// 网络延迟大 10s 同步一次
RxUtils.disposeSubscribe(nextGetTime)
nextGetTime = RxUtils.createSubscribeOnOwnThread(30_000) {

View File

@@ -5,7 +5,6 @@
android:id="@+id/biz_cl_passenger_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/biz_login_passenger_2560x1600"
app:isUseSkin="true">
@@ -13,12 +12,12 @@
android:id="@+id/actv_connect_status"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="当前状态:连接司机屏中"
android:textColor="@color/white"
android:gravity="center"
android:textSize="@dimen/dp_30"
android:layout_marginStart="@dimen/dp_160"
android:layout_marginEnd="@dimen/dp_160"
android:gravity="center"
android:text="当前状态:连接司机屏中"
android:textColor="@color/white"
android:textSize="@dimen/dp_30"
app:layout_constraintBottom_toTopOf="@+id/actv_app_version"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
@@ -28,10 +27,10 @@
android:id="@+id/actv_app_version"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_70"
android:layout_marginStart="@dimen/dp_160"
android:layout_marginEnd="@dimen/dp_160"
android:layout_marginBottom="@dimen/dp_70"
android:gravity="center"
android:text="版本号:6.4.0"
android:textColor="@color/white"
android:textSize="@dimen/dp_30"

View File

@@ -1,73 +0,0 @@
<?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:id="@+id/biz_cl_passenger_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/biz_login_passenger_1080x1920"
app:isUseSkin="true">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_connect_status"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="当前状态:连接司机屏中"
android:textColor="@color/white"
android:gravity="center"
android:layout_marginStart="@dimen/dp_160"
android:layout_marginEnd="@dimen/dp_160"
android:textSize="@dimen/dp_30"
app:layout_constraintBottom_toTopOf="@+id/actv_app_version"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_app_version"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_41"
android:layout_marginStart="@dimen/dp_160"
android:layout_marginEnd="@dimen/dp_160"
android:gravity="center"
android:text="版本号:6.4.0"
android:textColor="@color/white"
android:textSize="@dimen/dp_30"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.mogo.och.biz.login.ui.errorview.ErrorInfoView
android:id="@+id/eiv_Info"
android:layout_width="@dimen/dp_751"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.mogo.och.biz.login.ui.debugview.BusinessView
android:id="@+id/bv_switch_business"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_login_show_sn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_50"
android:layout_marginBottom="@dimen/dp_40"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_30"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -1,76 +0,0 @@
<?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:id="@+id/biz_cl_passenger_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/biz_login_passenger_1920x1080"
app:isUseSkin="true">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_connect_status"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/actv_app_version"
android:text="当前状态:连接司机屏中"
android:textColor="@color/white"
android:layout_marginStart="@dimen/dp_160"
android:layout_marginEnd="@dimen/dp_160"
android:textSize="@dimen/dp_28"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_app_version"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_41"
android:layout_marginStart="@dimen/dp_160"
android:layout_marginEnd="@dimen/dp_160"
android:text="版本号:6.4.0"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/dp_28"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
<com.mogo.och.biz.login.ui.errorview.ErrorInfoView
android:id="@+id/eiv_Info"
android:layout_width="@dimen/dp_939"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.mogo.och.biz.login.ui.debugview.BusinessView
android:id="@+id/bv_switch_business"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/biz_actv_login_show_sn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_50"
android:layout_marginBottom="@dimen/dp_40"
android:textColor="@android:color/white"
android:textSize="@dimen/dp_30"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -29,38 +29,37 @@ object CheckVinManager : IMoGoAutopilotCarConfigListener {
fun getVin(): String {
var delineVin = CallerAutoPilotControlManager.getVIN()
if(delineVin.isEmpty()){
delineVin = LoginStatusManager.getLoginInfo()?.vin?:""
delineVin = LoginStatusManager.getOchCarInfo()?.vin?:""
}
return delineVin
}
private fun checkVin() {
LoginStatusManager.getLoginInfo()?.let {loginInfo ->
val serverVin = loginInfo.vin
LoginStatusManager.getOchCarInfo()?.vin?.let { serverVin ->
val delineVin = CallerAutoPilotControlManager.getVIN()
OchChainLogManager.writeChainLog(
"checkVin",
"5分钟检测VIN服务器Vin:${serverVin}-----底盘Vin:${delineVin}", true,
CheckVinErrorDialog.EVENT_KEY_INFO_CHECK_VIN
)
if(serverVin.isNullOrBlank()){
if (serverVin.isNullOrBlank()) {
return
}
if(delineVin.isNullOrBlank()){
if (delineVin.isNullOrBlank()) {
return
}
if(serverVin!=delineVin){
if (serverVin != delineVin) {
val topActivity = ActivityUtils.getTopActivity()
topActivity?.let {
UiThreadHandler.post({
if(checkVinErrorDialog !=null&& checkVinErrorDialog!!.isShowing){
if (checkVinErrorDialog != null && checkVinErrorDialog!!.isShowing) {
return@post
}
checkVinErrorDialog = CheckVinErrorDialog(it)
checkVinErrorDialog?.showDialog()
},UiThreadHandler.MODE.QUEUE)
}, UiThreadHandler.MODE.QUEUE)
}
}

View File

@@ -1,9 +1,12 @@
package com.mogo.och.common.module.biz.lansocket
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import android.util.Log
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.och.common.module.BuildConfig
import com.mogo.och.common.module.biz.lansocket.bean.DevicesInfo
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -15,10 +18,14 @@ import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.ChangeBusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvCheck
import com.mogo.och.common.module.manager.socket.lan.bean.ScreenType
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.FlavorUtils
object LoginLanDriverSocket : ILoginCallback {
private const val TAG = "LoginLanSocket"
private const val TAG = M_OCHCOMMON+"LoginLanSocket"
private val thridDevices = mutableListOf<DevicesInfo>()
// 接受到客户端注册信息后立即返回业务模式
private val registerListener = object : ILanMessageListener<BaseDPMsg> {
@@ -28,6 +35,15 @@ object LoginLanDriverSocket : ILoginCallback {
override fun onLanMsgReceived(obj: BaseDPMsg?) {
println("-------${obj}")
obj?.let {msg->
var currentDevices = thridDevices.find { it.sn == msg.sourceSn && it.msgVersion == msg.msgVersion }
if(currentDevices==null){
currentDevices = DevicesInfo(msg.sourceScreenType, msg.sourceSn,msg.msgVersion)
thridDevices.add(currentDevices)
}else{
currentDevices.registerTime = DateTimeUtil.getCurrentTimeStamp()
}
}
if(LoginStatusManager.isLogin()) {
FlavorUtils.getEnvCheck()
val msg = ChangeBusinessType(FlavorUtils.vehicleType!!, FlavorUtils.businessType!!, FlavorUtils.projectType!!, FlavorUtils.envType!!)
@@ -37,9 +53,10 @@ object LoginLanDriverSocket : ILoginCallback {
val msg = ChangeBusinessType(FlavorUtils.vehicleType!!, BusinessType.none, FlavorUtils.projectType!!, FlavorUtils.envType!!)
LanSocketManager.sendMsgToClient(msg)
}
LoginStatusManager.sendLogin2Client()
}
};
}
fun load() {
OchChainLogManager.writeChainLogInit("初始化信息","初始司机屏局域网内通知监听")
@@ -47,6 +64,7 @@ object LoginLanDriverSocket : ILoginCallback {
init {
// 登录状态变化的监听
CallerLogger.d(TAG,"初始化局域网通信")
LoginStatusManager.addListener(TAG, this)
// 注册监听乘客屏和报站屏注册信息
LanSocketManager.registerSocketMessageListener(
@@ -56,11 +74,11 @@ object LoginLanDriverSocket : ILoginCallback {
}
// 司机端发送业务模式更改和环境校验
override fun onStatusChange(currentStatus: LoginStatusEnum?) {
override fun onLoginStatusChange(currentStatus: EnumLoginStatus?) {
FlavorUtils.getEnvCheck()
if (FlavorUtils.vehicleType != null && FlavorUtils.projectType != null && FlavorUtils.envType != null) {
when (currentStatus) {
LoginStatusEnum.Login -> {
EnumLoginStatus.Login -> {
val msg =
ChangeBusinessType(
FlavorUtils.vehicleType!!,

View File

@@ -3,11 +3,8 @@ package com.mogo.och.common.module.biz.lansocket
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -15,16 +12,11 @@ import com.mogo.och.common.module.manager.loop.LoopInfo
import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.ChangeBusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvCheck
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
import com.mogo.och.common.module.manager.socket.lan.bean.ScreenType
import com.mogo.och.common.module.manager.socket.lan.bean.VehicleType
import com.mogo.och.common.module.utils.CallerBase
import java.lang.StringBuilder
import kotlin.properties.Delegates
object LoginLanPassengerSocket : IReceivedMsgListener, CallerBase<IOchLanPassengerStatusListener>() {
@@ -83,73 +75,12 @@ object LoginLanPassengerSocket : IReceivedMsgListener, CallerBase<IOchLanPasseng
override fun onLanMsgReceived(first: EnvCheck?) {
first?.let {
val checkEnv = checkEnv(first.projectType, first.envType, first.vehicleType, first.businessType)
if (first.sourceScreenType== ScreenType.Driver) {
driverSn = first.sourceSn
}
if(checkEnv){
}else{
CallerLogger.d(TAG, "乘客屏 收到消息 检测环境不支持:${LoginStatusEnum.Logout}")
LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout)
}
}
}
}
private fun checkEnv(
projectType: ProjectType,
envType: EnvType,
vehicleType: VehicleType,
businessType: BusinessType
): Boolean {
return LoginStatusManager.checkAllEnv(projectType, envType, vehicleType, businessType)
}
// 环境监测+业务展示和跳转
private val changeBusinessType = object : ILanMessageListener<ChangeBusinessType> {
override fun targetLan(): Class<ChangeBusinessType> {
return ChangeBusinessType::class.java
}
override fun onLanMsgReceived(first: ChangeBusinessType?) {
first?.let {
val checkEnv = checkEnv(
first.projectType,
first.envType,
first.vehicleType,
first.businessType
)
if(checkEnv){
val status = StringBuilder()
status.append("切换业务模式<当前:${LoginStatusManager.getBusInessType().name}")
when (first.businessType) {
BusinessType.none -> {
LoginStatusManager.setBusinessType(Product.NONE.code)
CallerLogger.d(TAG, "乘客屏 收到消息 司机屏没有登录:${LoginStatusEnum.Logout}")
return LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout)
}
BusinessType.bus -> LoginStatusManager.setBusinessType(Product.BUS.code)
BusinessType.shuttle -> LoginStatusManager.setBusinessType(Product.SHUTTLE.code)
BusinessType.charter -> LoginStatusManager.setBusinessType(Product.CHARTER.code)
BusinessType.taxi -> LoginStatusManager.setBusinessType(Product.TAXI.code)
BusinessType.taxiunmanned ->LoginStatusManager.setBusinessType(Product.TAXI.code)
BusinessType.scheduled ->LoginStatusManager.setBusinessType(Product.SCHEDULED.code)
}
status.append(", 切换后:${LoginStatusManager.getBusInessType().name}>")
LoginStatusManager.changeStatus(status.toString())
UiThreadHandler.postDelayed({
CallerLogger.d(TAG, "乘客屏 收到消息 司机屏业务模式相同:${LoginStatusEnum.Login}")
LoginStatusManager.setLoginStatus(LoginStatusEnum.Login)
},2000)
}
}
}
};
fun load() {
OchChainLogManager.writeChainLogInit("初始化信息","初始局乘客屏局域网内部分信息")
}
@@ -164,11 +95,7 @@ object LoginLanPassengerSocket : IReceivedMsgListener, CallerBase<IOchLanPasseng
DPMsgType.TYPE_ENV_CHECK.type,
checkListener
)
// 乘客屏监听司机端发送的业务修改通知(
LanSocketManager.registerSocketMessageListener(
DPMsgType.TYPE_CHANGE_BUSINESS_TYPE.type,
changeBusinessType
)
}
override fun onReceivedMsg(type: Int, byteArray: ByteArray) {}

View File

@@ -0,0 +1,29 @@
package com.mogo.och.common.module.biz.lansocket.bean
import com.mogo.och.common.module.manager.socket.lan.bean.ScreenType
import com.mogo.och.common.module.utils.DateTimeUtil
data class DevicesInfo(
val screenType: ScreenType,// 屏幕类型
val sn: String,// 屏幕sn
val msgVersion:Int,
var registerTime: Long = DateTimeUtil.getCurrentTimeStamp(),//注册时间
){
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as DevicesInfo
if (sn != other.sn) return false
if (msgVersion != other.msgVersion) return false
return true
}
override fun hashCode(): Int {
var result = sn.hashCode()
result = 31 * result + msgVersion
return result
}
}

View File

@@ -8,14 +8,14 @@ package com.mogo.och.common.module.biz.login
* 10 已登录,
* 20 已登出,
*/
enum class LoginStatusEnum(val code: Int) {
enum class EnumLoginStatus(val code: Int) {
None( -1 ),
Login( 1),
Logout( 0),;
companion object {
@JvmStatic
fun valueOf(code: Int): LoginStatusEnum? {
fun valueOf(code: Int): EnumLoginStatus {
for (value in values()) {
if (value.code == code) {
return value

View File

@@ -8,14 +8,14 @@ package com.mogo.och.common.module.biz.login
* 10 接单状态 可接单,
* 20 暂停接到哪 不可接单,
*/
enum class OpenOrderStatusEnum(val code: Int) {
enum class EnumOpenOrderStatus(val code: Int) {
UnOrdering( 0 ),
Ordering( 1),
None( -1),;
companion object {
@JvmStatic
fun valueOf(code: Int): OpenOrderStatusEnum {
fun valueOf(code: Int): EnumOpenOrderStatus {
for (value in values()) {
if (value.code == code) {
return value

View File

@@ -4,7 +4,7 @@ package com.mogo.och.common.module.biz.login
* Created on 2021/12/7
* 1 运营, 2 测试, 3演示
*/
enum class RoleEnum(val code: Int) {
enum class EnumRole(val code: Int) {
None( 0),
OPERATION( 1),
TEST( 2),
@@ -13,13 +13,13 @@ enum class RoleEnum(val code: Int) {
companion object {
@JvmStatic
fun valueOf(code: Int?): RoleEnum {
for (value in RoleEnum.values()) {
fun valueOf(code: Int?): EnumRole {
for (value in EnumRole.values()) {
if (value.code == code) {
return value
}
}
return RoleEnum.None
return EnumRole.None
}
}
}

View File

@@ -2,18 +2,21 @@ package com.mogo.och.common.module.biz.login;
import com.mogo.eagle.core.data.enums.Carmodel;
import com.mogo.eagle.core.utilcode.mogo.Product;
import com.mogo.eagle.core.utilcode.mogo.Vehicle;
public interface ILoginCallback {
default void onStatusChange(LoginStatusEnum currentStatus){}
default void onLoginStatusChange(EnumLoginStatus currentStatus){}
default void onCarModelChange(Carmodel currentStatus){}
default void onBusinessChange(Product businessEnum){}
default void onProductChange(Product businessEnum){}
default void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum){}
default void onVehicleChage(Vehicle vehicle){}
default void onBusinessChangeDebug(Product businessEnum){}
default void onOpenOrderStatusEnumChange(EnumOpenOrderStatus businessEnum){}
default void onTenantIdChange(Long tenantId){}
default void onLoginErrorInfo(int code,String msg){}

View File

@@ -1,278 +0,0 @@
package com.mogo.och.common.module.biz.login;
import java.util.Objects;
public class LoginInfo {
private int driverStatus; //1登录0登出
private int servingStatus;//1接单中0暂停接单
private int businessType; //9: taxi. 10: bus公交 11:接驳 13:包车
private String orderNo;
private int purpose; // 1 运营, 2 测试, 3演示
private String sn;
private String plateNumber;//车牌号
private String phone;//手机号
private Long lineId;//线路id
private Long taskId;//任务id
private Long siteId;//站点id 包车使用
private Long currentSite;//当前站点 接驳、公交、班车使用
private Boolean leaving;// 当前站点是否出发
private Long shiftsId;//模板id
private Long taskDate;// 任务或模板的日期
private String vin;//车辆唯一识别码
private String cityCode;//城市编码
private String brand;//东风
//
// E70 东风 H9 红旗
// B2 B1 M1
private String carModel;
private String photos;//车身照片:
private long tenantId;//租户id:
private long driverId;
private long businessStatus;//?????
public int getDriverStatus() {
return driverStatus;
}
public void setDriverStatus(int driverStatus) {
this.driverStatus = driverStatus;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public int getPurpose() {
return purpose;
}
public void setPurpose(int purpose) {
this.purpose = purpose;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getPlateNumber() {
return plateNumber;
}
public void setPlateNumber(String plateNumber) {
this.plateNumber = plateNumber;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public int getServingStatus() {
return servingStatus;
}
public void setServingStatus(int servingStatus) {
this.servingStatus = servingStatus;
}
public int getBusinessType() {
return businessType;
}
public void setBusinessType(int businessType) {
this.businessType = businessType;
}
public String getVin() {
return vin;
}
public void setVin(String vin) {
this.vin = vin;
}
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getCarModel() {
return carModel;
}
public void setCarModel(String carModel) {
this.carModel = carModel;
}
public String getPhotos() {
return photos;
}
public void setPhotos(String photos) {
this.photos = photos;
}
public long getTenantId() {
return tenantId;
}
public void setTenantId(long tenantId) {
this.tenantId = tenantId;
}
public long getDriverId() {
return driverId;
}
public void setDriverId(long driverId) {
this.driverId = driverId;
}
public long getBusinessStatus() {
return businessStatus;
}
public void setBusinessStatus(long businessStatus) {
this.businessStatus = businessStatus;
}
public Long getCurrentSite() {
return currentSite;
}
public void setCurrentSite(Long currentSite) {
this.currentSite = currentSite;
}
public Boolean getLeaving() {
return leaving;
}
public void setLeaving(Boolean leaving) {
this.leaving = leaving;
}
public Long getTaskDate() {
return taskDate;
}
public void setTaskDate(Long taskDate) {
this.taskDate = taskDate;
}
public Long getLineId() {
return lineId;
}
public void setLineId(Long lineId) {
this.lineId = lineId;
}
public Long getTaskId() {
return taskId;
}
public void setTaskId(Long taskId) {
this.taskId = taskId;
}
public Long getSiteId() {
return siteId;
}
public void setSiteId(Long siteId) {
this.siteId = siteId;
}
public Long getShiftsId() {
return shiftsId;
}
public void setShiftsId(Long shiftsId) {
this.shiftsId = shiftsId;
}
@Override
public String toString() {
return "LoginInfo{" +
"driverStatus=" + driverStatus +
", servingStatus=" + servingStatus +
", businessType=" + businessType +
", orderNo='" + orderNo + '\'' +
", purpose=" + purpose +
", sn='" + sn + '\'' +
", plateNumber='" + plateNumber + '\'' +
", phone='" + phone + '\'' +
", lineId=" + lineId +
", taskId=" + taskId +
", siteId=" + siteId +
", vin='" + vin + '\'' +
", cityCode='" + cityCode + '\'' +
", brand='" + brand + '\'' +
", carModel='" + carModel + '\'' +
", photos='" + photos + '\'' +
", tenantId=" + tenantId +
", driverId=" + driverId +
", businessStatus=" + businessStatus +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LoginInfo loginInfo = (LoginInfo) o;
return driverStatus == loginInfo.driverStatus && servingStatus == loginInfo.servingStatus && businessType == loginInfo.businessType && purpose == loginInfo.purpose && tenantId == loginInfo.tenantId && driverId == loginInfo.driverId && businessStatus == loginInfo.businessStatus && Objects.equals(orderNo, loginInfo.orderNo) && Objects.equals(sn, loginInfo.sn) && Objects.equals(plateNumber, loginInfo.plateNumber) && Objects.equals(phone, loginInfo.phone) && Objects.equals(lineId, loginInfo.lineId) && Objects.equals(taskId, loginInfo.taskId) && Objects.equals(siteId, loginInfo.siteId) && Objects.equals(vin, loginInfo.vin) && Objects.equals(cityCode, loginInfo.cityCode) && Objects.equals(brand, loginInfo.brand) && Objects.equals(carModel, loginInfo.carModel) && Objects.equals(photos, loginInfo.photos);
}
@Override
public int hashCode() {
int result = driverStatus;
result = 31 * result + servingStatus;
result = 31 * result + businessType;
result = 31 * result + Objects.hashCode(orderNo);
result = 31 * result + purpose;
result = 31 * result + Objects.hashCode(sn);
result = 31 * result + Objects.hashCode(plateNumber);
result = 31 * result + Objects.hashCode(phone);
result = 31 * result + Objects.hashCode(lineId);
result = 31 * result + Objects.hashCode(taskId);
result = 31 * result + Objects.hashCode(siteId);
result = 31 * result + Objects.hashCode(vin);
result = 31 * result + Objects.hashCode(cityCode);
result = 31 * result + Objects.hashCode(brand);
result = 31 * result + Objects.hashCode(carModel);
result = 31 * result + Objects.hashCode(photos);
result = 31 * result + Long.hashCode(tenantId);
result = 31 * result + Long.hashCode(driverId);
result = 31 * result + Long.hashCode(businessStatus);
return result;
}
}

View File

@@ -2,49 +2,76 @@ package com.mogo.och.common.module.biz.login
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.Vehicle
import com.mogo.och.common.module.biz.login.bean.OchBizInfo
import com.mogo.och.common.module.biz.login.bean.OchCarInfo
import com.mogo.och.common.module.biz.login.bean.OchLoginInfo
import com.mogo.och.common.module.biz.provider.CommonService
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
import com.mogo.och.common.module.manager.socket.lan.bean.VehicleType
interface LoginService :CommonService {
fun setLoginInfo(loginInfo: LoginInfo)
fun getLoginInfo():LoginInfo?
fun getPurpose():RoleEnum
/**
* 获取登录新形象
*/
fun getOchLoginInfo():OchLoginInfo?
/**
* 获取业务信息
*/
fun getOchBizInfo():OchBizInfo?
/**
* 获取车辆信息
*/
fun getOchCarInfo():OchCarInfo?
/**
* 设置角色
*/
fun getPurpose():EnumRole
/**
* 判断是否登录
*/
fun isLogin():Boolean
fun getLoginStatus(): LoginStatusEnum
fun getCarModel(): Carmodel
fun setLoginStatus(loginStatus: LoginStatusEnum)
fun setLoginStatus(status: Int)
fun setBusinessType(type: Int)
fun getBusinessType(): Product
/**
* 获取登录状态
*/
fun getLoginStatus(): EnumLoginStatus
/**
* 获取车辆模型
*/
fun getCarModelType(): Carmodel
/**
* 获取业务模式
*/
fun getProductType(): Product
/**
* 通过网络获取登录状态
* @param readCatche true:先使用缓存同时网络请求也存在 false:只是用缓存
*/
fun queryLoginStatusByNet(readCatche:Boolean=false)
/**
* 登出
*/
fun loginOut()
fun checkBusiness(businessType: Int): Boolean
fun checkAllEnv(
projectType: ProjectType,
envType: EnvType,
vehicleType: VehicleType,
businessType: BusinessType
): Boolean
fun changeStatus(currentStatus: String)
fun setOpenOrderStatusType(type: Int)
fun getOpenOrderStatusType(): OpenOrderStatusEnum
fun getOpenOrderStatusType(): EnumOpenOrderStatus
fun isOpenOrderType(): Boolean
fun removeLoginInfo()
fun getVehicleType(): Vehicle
fun sendLogin2Client()
}

View File

@@ -1,22 +1,18 @@
package com.mogo.och.common.module.biz.login
import android.util.Log
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.enums.Carmodel
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.Vehicle
import com.mogo.och.common.module.biz.login.bean.OchBizInfo
import com.mogo.och.common.module.biz.login.bean.OchCarInfo
import com.mogo.och.common.module.biz.login.bean.OchLoginInfo
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.manager.loop.LoopInfo
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
import com.mogo.och.common.module.manager.socket.lan.bean.VehicleType
import com.mogo.och.common.module.utils.CallerBase
import io.reactivex.schedulers.Schedulers
object LoginStatusManager : CallerBase<ILoginCallback>() {
@@ -24,7 +20,6 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
ARouter.getInstance().build(OchCommonConst.BIZ_LOGIN).navigation() as LoginService
private var TAG = "LoginStatusManager"
private var TAGLoopStatus = "LoginStatusManagerLoop"
@JvmStatic
fun getFragment():Fragment {
@@ -33,6 +28,7 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
}
throw ClassNotFoundException("没有找到登录Fragment");
}
@JvmStatic
fun resetFragment(){
loginService?.let {
@@ -49,51 +45,57 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
fun queryLoginStatusByNet(readCatche:Boolean=false) {
loginService?.queryLoginStatusByNet(readCatche)
}
@JvmStatic
fun getPurpose(): RoleEnum {
fun getOchCarInfo(): OchCarInfo? {
return loginService?.getOchCarInfo()
}
fun getOchBizInfo(): OchBizInfo? {
return loginService?.getOchBizInfo()
}
fun getOchLoginInfo(): OchLoginInfo? {
return loginService?.getOchLoginInfo()
}
/**
* 移除登录信息
*/
fun removeLoginInfo() {
loginService?.removeLoginInfo()
}
/**
* 获取业务模式
*/
fun getProductType():Product{
loginService?.let {
return it.getPurpose()
}
return RoleEnum.None
}
@JvmStatic
fun setLoginInfo(loginInfo: LoginInfo) {
loginService?.setLoginInfo(loginInfo)
}
fun getLoginInfo(): LoginInfo? {
return loginService?.getLoginInfo()
}
@JvmStatic
fun setLoginStatus(status: Int) {
loginService?.setLoginStatus(status)
}
@JvmStatic
fun setBusinessType(type: Int) {
loginService?.setBusinessType(type)
}
fun getBusInessType():Product{
loginService?.let {
return it.getBusinessType()
return it.getProductType()
}
return Product.NONE
}
@JvmStatic
fun setOpenOrderType(type: Int) {
loginService?.setOpenOrderStatusType(type)
fun getVehicleType():Vehicle{
loginService?.let {
return it.getVehicleType()
}
return Vehicle.NONE
}
/**
* 获取接单状态
*/
@JvmStatic
fun getOpenOrderType():OpenOrderStatusEnum{
fun getOpenOrderType():EnumOpenOrderStatus{
loginService?.let {
return it.getOpenOrderStatusType()
}
return OpenOrderStatusEnum.None
return EnumOpenOrderStatus.None
}
/**
* 是否在接单中
*/
@JvmStatic
fun isOpenOrderType():Boolean{
loginService?.let {
@@ -102,34 +104,20 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
return false
}
/**
* 获取登录状态
*/
@JvmStatic
fun setLoginStatus(loginStatus: LoginStatusEnum) {
CallerLogger.d(TAG, "setLoginStatus:${loginStatus}")
loginService?.setLoginStatus(loginStatus)
}
fun removeLoginInfo() {
loginService?.removeLoginInfo()
}
@JvmStatic
fun getLoginStatus(): LoginStatusEnum {
fun getLoginStatus(): EnumLoginStatus {
loginService?.let {
return it.getLoginStatus()
}
return LoginStatusEnum.None
return EnumLoginStatus.None
}
@JvmStatic
fun getCarModel(): Carmodel {
loginService?.let {
return it.getCarModel()
}
return Carmodel.T2
}
/**
* 是否登录中
*/
@JvmStatic
fun isLogin(): Boolean {
loginService?.let {
@@ -138,72 +126,73 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
return false
}
fun invokeLoginStatusChange(currentStatus: LoginStatusEnum) {
Log.d("登录","设置源:invokeLoginStatusChange")
if(!FunctionBuildConfig.isOffLine){
if(currentStatus==LoginStatusEnum.Login){
Log.d("登录","设置源:queryLoginStatusByNet")
BizLoopManager.setLoopFunction(TAGLoopStatus, LoopInfo(60*2, ::queryLoginStatusByNet,immediately = true, scheduler = Schedulers.io()))
}else{
BizLoopManager.removeLoopFunction(TAGLoopStatus)
}
/**
* 获取车辆模型
*/
@JvmStatic
fun getCarModel(): Carmodel {
loginService?.let {
return it.getCarModelType()
}
return Carmodel.T2
}
/**
* 发送登录信息到乘客屏
*/
fun sendLogin2Client() {
loginService?.sendLogin2Client()
}
/**
* 登录状态变更通知
*/
fun invokeLoginStatusChange(currentStatus: EnumLoginStatus) {
M_LISTENERS.forEach {
val listener = it.value
listener.onStatusChange(currentStatus)
listener.onLoginStatusChange(currentStatus)
}
}
fun invokeLBusinessTypeChange(currentStatus: Product) {
/**
* 业务模式发生变化通知
*/
fun invokeLProductChange(currentStatus: Product) {
M_LISTENERS.forEach {
val listener = it.value
listener.onBusinessChange(currentStatus)
}
}
fun invokeLBusinessTypeChangeDebug(currentStatus: Product) {
M_LISTENERS.forEach {
val listener = it.value
listener.onBusinessChangeDebug(currentStatus)
listener.onProductChange(currentStatus)
}
}
fun invokeLOpenOrderStatusChange(currentStatus: OpenOrderStatusEnum) {
/**
* 车型发生变化通知
*/
fun invokeLVehicleChange(currentStatus: Vehicle) {
M_LISTENERS.forEach {
val listener = it.value
listener.onVehicleChage(currentStatus)
}
}
/**
* 接单状态变化发送通知
*/
fun invokeOpenOrderStatusChange(currentStatus: EnumOpenOrderStatus) {
M_LISTENERS.forEach {
val listener = it.value
listener.onOpenOrderStatusEnumChange(currentStatus)
}
}
@JvmStatic
fun checkBusiness(businessType: Int):Boolean {
loginService?.let {
return it.checkBusiness(businessType)
}
return false
}
fun checkAllEnv(
projectType: ProjectType,
envType: EnvType,
vehicleType: VehicleType,
businessType: BusinessType
):Boolean {
loginService?.let {
return it.checkAllEnv(projectType,envType,vehicleType,businessType)
}
return false
}
fun changeStatus(status: String) {
loginService?.let {
it.changeStatus(status)
}
loginService?.changeStatus(status)
}
override fun doSomeAfterAddListener(tag: String, listener: ILoginCallback) {
super.doSomeAfterAddListener(tag, listener)
listener.onStatusChange(getLoginStatus())
listener.onBusinessChange(getBusInessType())
listener.onLoginStatusChange(getLoginStatus())
listener.onProductChange(getProductType())
listener.onVehicleChage(getVehicleType())
listener.onOpenOrderStatusEnumChange(getOpenOrderType())
listener.onCarModelChange(getCarModel())
}
@@ -215,6 +204,9 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
}
}
/**
* 车辆模型变化通知
*/
fun invokeCarModelChange(carModel: Carmodel) {
M_LISTENERS.forEach {
val listener = it.value
@@ -222,5 +214,12 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
}
}
fun invokeTenantIdChange(tenantId: Long) {
M_LISTENERS.forEach {
val listener = it.value
listener.onTenantIdChange(tenantId)
}
}
}

View File

@@ -0,0 +1,33 @@
package com.mogo.och.common.module.biz.login.bean
data class OchBizInfo(
//9: taxi. 10: bus公交 11:接驳 13:包车 14:班车
val businessType: Int = -1,
// taxi使用
// 订单号
val orderNo: String = "",
//1接单中0暂停接单
val servingStatus: Int = 0,
//接驳、公交、班车使用
// 正在执行的线路id
val lineId: Long,
// 正在执行的班次id
val taskId: Long,
// 当前站点
val currentSite: Long,
// 是否滑动出发
val leaving: Boolean,
// 当前班次的模板id
val shiftsId: Long,
// 当前班次的具体时间
val taskDate: Long,
// 包车使用
// 当前站点id 包车使用
val siteId: Long,
// 包车车辆状态 1闲置中 2使用中
val businessStatus: Long,
)

View File

@@ -0,0 +1,12 @@
package com.mogo.och.common.module.biz.login.bean
data class OchCarInfo(
val plateNumber:String?,
val vin:String?,
val cityCode:String?,// 车辆所在城市
val brand:String?,// 车辆生产产商 品牌
val carModel:String?,// 车辆类型 型号
val photos:String?,// 车身照片
// 租户id
val tenantId: Long?,
)

View File

@@ -0,0 +1,14 @@
package com.mogo.och.common.module.biz.login.bean
data class OchLoginInfo(
//1登录0登出
val driverStatus: Int = 0,
// 1 运营, 2 测试, 3演示
val purpose: Int = 0,
// 后台车辆配置的sn
val sn: String = "",
// 司机手机号
val phone: String = "",
// 司机id
val driverId: Long?,
)

View File

@@ -4,8 +4,9 @@ import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OFFLINE
import com.mogo.och.common.module.biz.lansocket.LoginLanDriverSocket
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
@@ -17,18 +18,20 @@ object OfflineManager : ILoginCallback {
private var offlineService: OfflineService? = ARouter.getInstance().build(OchCommonConst.BIZ_OFFLINE).navigation() as OfflineService
init {
CallerLogger.d(TAG,"初始化离线系统")
LoginStatusManager.addListener(TAG,this)
}
override fun onStatusChange(currentStatus: LoginStatusEnum?) {
if(!FunctionBuildConfig.isOffLine){
if(currentStatus==LoginStatusEnum.Login) {
// 同步数据
synergyBaseData()
// 删除正在运行的数据
deleteObsoleteData()
}
}
override fun onLoginStatusChange(currentStatus: EnumLoginStatus?) {
// TODO: 6.10.0 删除离线数据
// if(!FunctionBuildConfig.isOffLine){
// if(currentStatus==EnumLoginStatus.Login) {
// // 同步数据
// synergyBaseData()
// // 删除正在运行的数据
// deleteObsoleteData()
// }
// }
}
/**

View File

@@ -109,7 +109,7 @@ object ScannerManager : IOchLanPassengerStatusListener {
override fun onReceive(data: VerificationData?) {
OchChainLogManager.writeChainLogScanner(
TAG + "onActiveDataReceive",
TAG + "ScannerManageronActiveDataReceive",
"扫码结果data:${data}"
)
data?.let {

View File

@@ -6,7 +6,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
open class BaseDPMsg(
open var type: Int = DPMsgType.TYPE_CLIENT_REGISTER.type,
open var msgVersion: Int = 1,
open var msgVersion: Int = 2,
open var targetScreenTypes: MutableList<ScreenType> =
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
mutableListOf(ScreenType.Passenger, ScreenType.Guide)

View File

@@ -22,5 +22,6 @@ enum class DPMsgType(val type: Int) {
TYPE_WRITEOFF_INFO_DETAIL(13), //核销信息
TYPE_WRITEOFF_INFO_RESULT(14), //核销结果
TYPE_OUTOF_VOICE(15), //转发给乘客屏播放
TYPE_LOGIN_INFO(16), //转发给乘客屏播放
TYPE_CLIENT_REGISTER(12); //客户端注册 服务端需要
}

View File

@@ -1,5 +1,9 @@
package com.mogo.och.common.module.manager.socket.lan.bean
import com.mogo.commons.env.Env
import com.mogo.commons.env.Project
import com.mogo.och.common.module.biz.login.bean.OchLoginInfo
/**
* @author: wangmingjun
* @date: 2023/3/27
@@ -130,6 +134,11 @@ data class OutofVoice(
val notice: String,
) : BaseDPMsg(DPMsgType.TYPE_OUTOF_VOICE.type, targetScreenTypes = mutableListOf(ScreenType.Passenger))
data class LoginInfo2Client(
val loginInfo: String,
val project: Project,
val env: Env,
) : BaseDPMsg(DPMsgType.TYPE_LOGIN_INFO.type,targetScreenTypes = mutableListOf(ScreenType.Passenger))
// 车辆类型
enum class VehicleType {

View File

@@ -2,11 +2,9 @@ package com.mogo.och.common.module.network.interceptor
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
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.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import io.reactivex.Observable
import io.reactivex.ObservableSource
import io.reactivex.functions.Function
@@ -19,12 +17,8 @@ class FRetryWithTime<T : BaseData> : Function<T, ObservableSource<T>> {
MoGoAiCloudClient.getInstance().refreshToken()
return Observable.error(OchCommonRetryException())
}else if(it.code == 1003){
if(!FunctionBuildConfig.isOffLine&&!FunctionBuildConfig.ochdebug){
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
CallerLogger.d("FRetryWithTime", "接口失败报错 1003:${LoginStatusEnum.Logout}")
LoginStatusManager.setLoginStatus(LoginStatusEnum.Logout)
}
}
CallerLogger.d("FRetryWithTime", "接口失败报错 1003:${EnumLoginStatus.Logout}")
LoginStatusManager.queryLoginStatusByNet(false)
}
}
return Observable.just(baseData)

View File

@@ -1,6 +1,8 @@
package com.mogo.och.common.module.utils
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.env.Env
import com.mogo.commons.env.EnvUtils
import com.mogo.commons.env.Project
import com.mogo.commons.env.ProjectUtils
import com.mogo.commons.storage.SharedPrefsMgr
@@ -8,6 +10,7 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.och.common.module.manager.cache.OchSPManager
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
@@ -41,7 +44,7 @@ object FlavorUtils {
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
info.append(" B2")
} else {
info.append(" C1")
info.append(" none")
}
when (DebugConfig.getNetMode()) {
@@ -68,61 +71,14 @@ object FlavorUtils {
}
info.append(" ${AppUtils.getAppVersionName()}")
info.append(" AppSN:${SharedPrefsMgr.getInstance().sn}")
info.append(" AppSN:${OchSPManager.getSn()}")
return info.toString()
}
fun getBusinessInfo(businessType: Int): String {
val businessEnum = Product.valueOf(businessType)
FunctionBuildConfig.supportBusiness.forEach {
when (it) {
"shuttle" -> {
val isSupply = businessEnum == Product.SHUTTLE
if (isSupply) {
return ""
}
}
"bus" -> {
val isSupply = businessEnum == Product.BUS
if (isSupply) {
return ""
}
}
"taxi" -> {
val isSupply = businessEnum == Product.TAXI
if (isSupply) {
return ""
}
}
"charter" -> {
val isSupply = businessEnum == Product.CHARTER
if (isSupply) {
return ""
}
}
"scheduled" -> {
val isSupply = businessEnum == Product.SCHEDULED
if (isSupply) {
return ""
}
}
else -> {}
}
}
val reason = StringBuilder()
reason.append("业务异常<当前支持:")
FunctionBuildConfig.supportBusiness.forEachIndexed { index, s ->
if (index == FunctionBuildConfig.supportBusiness.size - 1) {
reason.append(s)
} else {
reason.append("${s},")
}
}
when (businessEnum) {
Product.TAXI -> reason.append(" 后台配置:taxi>")
Product.BUS -> reason.append(" 后台配置:bus>")
@@ -212,100 +168,25 @@ object FlavorUtils {
}
fun checkAllEnv(
projectType: ProjectType,
envType: EnvType,
vehicleType: VehicleType,
businessType: BusinessType
projectType: Project,
envType: Env,
): String {
val reason = StringBuilder()
val isProjectSupply = when (ProjectUtils.getProjectType()) {
Project.SAAS -> projectType == ProjectType.saas
Project.DALI -> projectType == ProjectType.dali
Project.MOGO -> projectType == ProjectType.mogo
Project.YANTAI -> projectType == ProjectType.yantai
}
val isProjectSupply = ProjectUtils.getProjectType()==projectType
if (!isProjectSupply) {
reason.append("项目异常<当前:${ProjectUtils.getProjectType().name}, 后台配置:${projectType.name}> ")
reason.append("项目异常<当前:${ProjectUtils.getProjectType().value}, 后台配置:${projectType.value}> ")
}
val currentVehicle: String
val vehicleTypeSupply =
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
currentVehicle = VehicleType.T1T2.name
vehicleType == VehicleType.T1T2
} else if (AppIdentityModeUtils.isM1(FunctionBuildConfig.appIdentityMode)) {
currentVehicle = VehicleType.M1.name
vehicleType == VehicleType.M1
} else if (AppIdentityModeUtils.isB1(FunctionBuildConfig.appIdentityMode)) {
currentVehicle = VehicleType.B1.name
vehicleType == VehicleType.B1
} else if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
currentVehicle = VehicleType.B2.name
vehicleType == VehicleType.B2
} else {
currentVehicle = VehicleType.C1.name
vehicleType == VehicleType.C1
}
if (!vehicleTypeSupply) {
reason.append("车型异常<当前:${currentVehicle}, 后台配置:${vehicleType.name}> ")
}
val envTypeSupply = EnvUtils.getEnvType()==envType
val currentenvType: String
val envTypeSupply = when (DebugConfig.getNetMode()) {
2 -> {
currentenvType = EnvType.qa.name
envType == EnvType.qa
}
3 -> {
currentenvType = EnvType.online.name
envType == EnvType.online
}
4 -> {
currentenvType = EnvType.demo.name
envType == EnvType.demo
}
else -> {
currentenvType = EnvType.qa.name
envType == EnvType.qa
}
}
if (!envTypeSupply) {
reason.append("环境异常<当前:${currentenvType} 后台配置:${envType.name}> ")
}
val businessTypeSupply = checkBusinessMine(businessType)
if (!businessTypeSupply) {
reason.append("业务异常<当前支持:")
FunctionBuildConfig.supportBusiness.forEachIndexed { index, s ->
if (index == FunctionBuildConfig.supportBusiness.size - 1) {
reason.append(s)
} else {
reason.append("${s},")
}
}
reason.append(" 后台配置:${businessType.name}> ")
reason.append("环境异常<当前:${EnvUtils.getEnvType().value} 后台配置:${envType.value}> ")
}
return reason.toString()
}
fun checkBusinessMine(businessType: BusinessType): Boolean {
if (businessType == BusinessType.none) {
return true
}
FunctionBuildConfig.supportBusiness.forEach {
if (businessType.name == it) {
return true
}
}
return false
}
}

View File

@@ -42,7 +42,7 @@ class LoadingMapStatusView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerLogger.d(TAG,"onAttachedToWindow")
CallerLogger.d(TAG,"地图loading_onAttachedToWindow")
LoginStatusManager.addListener(TAG,this)
visibility = VISIBLE
MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG,this)

View File

@@ -3,15 +3,16 @@ package com.mogo.och.common.module.wigets.map.orderstatus
import androidx.annotation.DrawableRes
import androidx.lifecycle.ViewModel
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.R
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.OpenOrderStatusEnum
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
class OrderStatusViewModel : ViewModel(), ILoginCallback {
private val TAG = OrderStatusViewModel::class.java.simpleName
private val TAG = M_OCHCOMMON+OrderStatusViewModel::class.java.simpleName
private var viewCallback: IVisualCallback? = null
@@ -26,11 +27,12 @@ class OrderStatusViewModel : ViewModel(), ILoginCallback {
}
fun setDistanceCallback(viewCallback: IVisualCallback) {
CallerLogger.d(TAG,"监听接单状态")
LoginStatusManager.addListener(TAG, this)
this.viewCallback = viewCallback
}
override fun onOpenOrderStatusEnumChange(businessEnum: OpenOrderStatusEnum?) {
override fun onOpenOrderStatusEnumChange(businessEnum: EnumOpenOrderStatus?) {
CallerLogger.d(TAG,"新的接单状态${businessEnum}")
UiThreadHandler.post({
if (LoginStatusManager.isOpenOrderType()) {

View File

@@ -35,20 +35,6 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
flavorDimensions "vehicle"
productFlavors {
// 车型:金旅星辰、开沃 小巴业务
jinlvvan {
dimension "vehicle"
buildConfigField 'int', 'NEW_TEST', '0'
}
// 车型金旅m2 小巴业务
m2 {
dimension "vehicle"
buildConfigField 'int', 'NEW_TEST', '1'
}
}
}
dependencies {

View File

@@ -6,49 +6,32 @@ project.dependencies {
} else {
if(isDriver()){
implementation project.project(':OCH:offline:driver')
}
if (isCurrentDriver("C1")) {
implementation project.project(':OCH:sweeper:driver')
} else if (isCurrentDriver("B1")) {
implementation project.project(':OCH:shuttle:driver_weaknet')
} else if (isCurrentPassenger("B1")) {
implementation project.project(':OCH:shuttle:passenger_weaknet')
} else if (isCurrentBaiLing("B1")) {
implementation project.project(':OCH:shuttle:driver_weaknet')
implementation project.project(':OCH:shuttle:passenger_weaknet')
} else if (isCurrentDriver("M1")) {
implementation project.project(':OCH:charter:driver')
implementation project.project(':OCH:shuttle:driver_weaknet')
} else if (isCurrentPassenger("M1")) {
implementation project.project(':OCH:shuttle:passenger_weaknet')
} else if (isCurrentDriver("B2")) {
implementation project.project(':OCH:shuttle:driver_weaknet')
} else if (isCurrentPassenger("B2")) {
implementation project.project(':OCH:shuttle:passenger_weaknet')
} else if (isCurrentDriver("T1T2")) {
implementation project.project(':OCH:taxi:unmanned-driver')
} else if (isCurrentPassenger("T1T2")) {
implementation project.project(':OCH:taxi:unmanned-passenger')
} else if (isCurrentDriver("ALL")) {
implementation project.project(':OCH:taxi:unmanned-driver')
implementation project.project(':OCH:charter:driver')
implementation project.project(':OCH:sweeper:driver')
implementation project.project(':OCH:shuttle:driver_weaknet')
} else if (isCurrentPassenger("ALL")) {
implementation project.project(':OCH:charter:driver')
implementation project.project(':OCH:taxi:unmanned-driver')
}else if(isPassenger()){
implementation project.project(':OCH:shuttle:passenger_weaknet')
implementation project.project(':OCH:taxi:unmanned-passenger')
implementation project.project(':OCH:charter:passenger')
}else if(isBaiLing()){
implementation project.project(':OCH:offline:driver')
implementation project.project(':OCH:shuttle:driver_weaknet')
implementation project.project(':OCH:shuttle:passenger_weaknet')
} else {
implementation project.project(':OCH:charter:driver')
implementation project.project(':OCH:charter:passenger')
implementation project.project(':OCH:sweeper:driver')
// implementation project.project(':OCH:taxi:driver')
// implementation project.project(':OCH:taxi:passenger')
implementation project.project(':OCH:taxi:unmanned-driver')
implementation project.project(':OCH:taxi:unmanned-passenger')
implementation project.project(':OCH:shuttle:passenger_weaknet')
}else {
implementation project.project(':OCH:offline:driver')
implementation project.project(':OCH:shuttle:driver_weaknet')
implementation project.project(':OCH:shuttle:passenger_weaknet')
implementation project.project(':OCH:charter:driver')
implementation project.project(':OCH:charter:passenger')
implementation project.project(':OCH:sweeper:driver')
implementation project.project(':OCH:taxi:unmanned-driver')
implementation project.project(':OCH:taxi:unmanned-passenger')
}
}
}

View File

@@ -9,7 +9,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.och.bridge.device.checkvin.CheckVinManager
import com.mogo.och.bridge.ota.OTAManager
import com.mogo.och.common.module.biz.lansocket.LoginLanDriverSocket
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.offline.OfflineManager
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager
@@ -58,7 +58,7 @@ class FacadeDriverProvider : FacadeProvider() {
super.onDestroy()
}
override fun onStatusChange(currentStatus: LoginStatusEnum) {
super.onStatusChange(currentStatus)
override fun onLoginStatusChange(currentStatus: EnumLoginStatus) {
super.onLoginStatusChange(currentStatus)
}
}

View File

@@ -22,7 +22,6 @@ 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.Product
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.DeviceUtils
@@ -31,7 +30,7 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.utilcode.util.VolumeUtils
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.provider.CommonService
import com.mogo.och.common.module.biz.skin.SkinManager
@@ -97,13 +96,6 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
}
private fun getFragment(): Fragment {
if (FunctionBuildConfig.isOffLine) {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
return getFragmentByServeName(OchCommonConst.OFFLINE_DRIVER)
} else if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
return getFragmentByServeName(OchCommonConst.OFFLINE_PASSENGER)
}
}
if(DeviceUtils.isEB5Model() && !AppIdentityModeUtils.isCharterPassenger(FunctionBuildConfig.appIdentityMode)){
val maxVolume = VolumeUtils.getMaxVolume(AudioManager.STREAM_MUSIC)
val volume = VolumeUtils.getVolume(AudioManager.STREAM_MUSIC)
@@ -165,10 +157,10 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
activity!!.finish()
}
override fun onStatusChange(currentStatus: LoginStatusEnum) {
override fun onLoginStatusChange(currentStatus: EnumLoginStatus) {
d(TAG, "登录状态发生改变 $currentStatus")
when (currentStatus) {
LoginStatusEnum.Login -> {
EnumLoginStatus.Login -> {
CallerEagleBaseFunctionCall4OchManager.updateLoginStatus(true)
}
else -> {
@@ -180,69 +172,6 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
}
}
override fun onBusinessChange(businessEnum: Product) {
super.onBusinessChange(businessEnum)
val (_, identity, model) = AppIdentityModeUtils.getInfo(FunctionBuildConfig.appIdentityMode)
when (businessEnum) {
Product.NONE -> {}
Product.TAXI -> FunctionBuildConfig.appIdentityMode =
"${AppIdentityModeUtils.TAXI}_${identity}_${model}"
Product.BUS -> FunctionBuildConfig.appIdentityMode =
"${AppIdentityModeUtils.BUS}_${identity}_${model}"
Product.SHUTTLE -> FunctionBuildConfig.appIdentityMode =
"${AppIdentityModeUtils.SHUTTLE}_${identity}_${model}"
Product.CHARTER -> FunctionBuildConfig.appIdentityMode =
"${AppIdentityModeUtils.CHARTER}_${identity}_${model}"
Product.SCHEDULED -> FunctionBuildConfig.appIdentityMode =
"${AppIdentityModeUtils.SCHEDULED}_${identity}_${model}"
}
CallerDevaToolsManager.updateAppChannel()
// 加入启动统计
val mStartParams: HashMap<String, Any> = HashMap()
mStartParams["start_time"] = TimeUtils.getNowMills()
mStartParams["app_version"] = AppUtils.getAppVersionName()
mStartParams["app_identity_mode"] = FunctionBuildConfig.appIdentityMode
MogoAnalyticUtils.track("app_start_time", mStartParams)
}
override fun onBusinessChangeDebug(businessEnum: Product) {
if (businessEnum == Product.NONE) {
CallerHmiManager.hideToolsView()
ToggleDebugView.toggleDebugView.dismiss()
SopView.sopView.dismiss()
CallerHmiManager.dismissFSMExceptionStatusWindow()
CallerHmiManager.hideStatusSummaryDialog()
_commonService?.resetFragment()
val fragment = LoginStatusManager.getFragment()
val supportFragmentManager: FragmentManager? = activity?.supportFragmentManager
if (supportFragmentManager != null) {
val back = supportFragmentManager.beginTransaction()
back.replace(containerId, fragment, fragment.tag)
back.commitAllowingStateLoss()
}
removeStatusBar()
} else {
onBusinessChange(businessEnum)
FunctionBuildConfig.ochdebug = true
d(TAG, "denbug模式进入${LoginStatusEnum.Login}")
LoginStatusManager.setLoginStatus(LoginStatusEnum.Login)
val supportFragmentManager: FragmentManager? = activity?.supportFragmentManager
val fragment = getFragment()
d(TAG, "切换 fragment:${fragment}_activity:$activity _ ${containerId}_$this")
LoginStatusManager.resetFragment()
if (supportFragmentManager != null) {
val back = supportFragmentManager.beginTransaction()
back.replace(containerId, fragment, fragment.tag)
back.commitAllowingStateLoss()
}
injectStatusBar()
}
}
private fun injectStatusBar() {
activity?.let {
val decorView = it.window.decorView as? FrameLayout ?: return

View File

@@ -10,7 +10,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OCHCOMMON
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.provider.CommonService
import com.mogo.och.facade.constant.FacadeConst
@@ -19,18 +19,17 @@ import com.mogo.och.facade.route.FacadeProvider
@Route(path = FacadeConst.OCH_VIEW_PATH)
class OchCustomViewProvider : IOchCustomViewProvider, ILoginCallback {
companion object {
const val TAG = M_OCHCOMMON+"OchCustomViewProvider"
}
private val TAG = M_OCHCOMMON+"OchViewProvider"
init {
CallerLogger.d(TAG,"初始化_提供View")
LoginStatusManager.addListener(TAG,this)
}
private var commonService: CommonService?=null
override fun onStatusChange(currentStatus: LoginStatusEnum?) {
if(currentStatus!=LoginStatusEnum.Login){
override fun onLoginStatusChange(currentStatus: EnumLoginStatus?) {
if(currentStatus!=EnumLoginStatus.Login){
commonService = null
}
}

View File

@@ -447,7 +447,6 @@ object OrderModel {
LineManager.setLineInfo(null)
LineManager.setContraiInfo(null)
LineManager.setStartAndEndStation(null,null)
FunctionBuildConfig.isOffLine = false
LoginStatusManager.loginOut()
}
}

View File

@@ -31,7 +31,7 @@ object LineDb: IDbRepository {
* 读取可用线路
*/
fun queryCanUseLineRx(): Observable<List<LineDataBean>?>? {
return lineDao?.loadDataRx(tenantId = LoginStatusManager.getLoginInfo()?.tenantId?:0L, projectName = ProjectUtils.getProjectType().value)
return lineDao?.loadDataRx(tenantId = LoginStatusManager.getOchCarInfo()?.tenantId?:0L, projectName = ProjectUtils.getProjectType().value)
}
fun checkAndUpdate(serverDatalist:List<LineDataBean>){
@@ -40,7 +40,7 @@ object LineDb: IDbRepository {
override fun run() {
// 校验数据个数
lineDao?.let { lineDao->
val loadData = lineDao.loadData(tenantId = LoginStatusManager.getLoginInfo()?.tenantId?:0L, projectName = ProjectUtils.getProjectType().value)
val loadData = lineDao.loadData(tenantId = LoginStatusManager.getOchCarInfo()?.tenantId?:0L, projectName = ProjectUtils.getProjectType().value)
if(loadData.isNullOrEmpty()){
// 插入新的值
lineDao.insert(*serverDatalist.toTypedArray())

View File

@@ -36,7 +36,7 @@ data class BindLineListResponse(val data: List<Result>?) : BaseData(){
tempLineInfo.lineId = lineInfo.lineId
tempLineInfo.lineName = lineInfo.lineName
tempLineInfo.endStationName = dataInfo.siteList?.last()?.name?:""
tempLineInfo.tenantId = LoginStatusManager.getLoginInfo()?.tenantId?:0
tempLineInfo.tenantId = LoginStatusManager.getOchCarInfo()?.tenantId?:0
tempLineInfo.projectName = ProjectUtils.getProjectType().value
lineList.add(tempLineInfo)
}

View File

@@ -6,7 +6,7 @@ import com.mogo.commons.mvp.Presenter
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OFFLINE
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusManager.isLogin
import com.mogo.och.bridge.autopilot.OCHAdasAbilityManager
@@ -43,7 +43,7 @@ class OfflinePresenter(view: OfflineFragment?) : Presenter<OfflineFragment?>(vie
OrderModel.release()
}
override fun onStatusChange(currentStatus: LoginStatusEnum) {
override fun onLoginStatusChange(currentStatus: EnumLoginStatus) {
d(TAG, " loginStatus =" + isLogin())
if (!isLogin()) {
OffLineTrajectoryManager.stopTrajReqLoop()

View File

@@ -78,21 +78,21 @@ class GoLoginModel : ViewModel(), IBusLinesCallback {
fun createTimelater(){
d(TAG,"开始检查是否展示登录页面")
if(FunctionBuildConfig.isOffLine){
// 2分钟内有网络成功过
if(System.currentTimeMillis()- OchCommonNet.getLastNetSuccessTime()<60*1000){
if (NetworkUtils.isConnected()) {
BizLoopManager.runInMainThread{
this.viewCallback?.showView()
}
}
}
}
RxUtils.disposeSubscribe(time60_000)
time60_000 = RxUtils.createSubscribeOnOwnThread(60_000) {
// 检测是否需要展示
createTimelater()
}
// if(FunctionBuildConfig.isOffLine){
// // 2分钟内有网络成功过
// if(System.currentTimeMillis()- OchCommonNet.getLastNetSuccessTime()<60*1000){
// if (NetworkUtils.isConnected()) {
// BizLoopManager.runInMainThread{
// this.viewCallback?.showView()
// }
// }
// }
// }
// RxUtils.disposeSubscribe(time60_000)
// time60_000 = RxUtils.createSubscribeOnOwnThread(60_000) {
// // 检测是否需要展示
// createTimelater()
// }
}
override fun onRunningTask() {

View File

@@ -21,7 +21,7 @@ class TaskUsedAction() :
override fun onMsgReceived(obj: TaskUsedMsg?) {
i(tag, "onMsgReceived = $obj")
obj?.apply {
if (LoginStatusManager.getLoginInfo()?.businessType==businessType
if (LoginStatusManager.getOchBizInfo()?.businessType==businessType
&&RepositoryManager.supportDb()) {
LineModel.endTaskByOther(taskId,plateNumber)
}

View File

@@ -18,7 +18,7 @@ data class ShuttleEventRequest(val requestId: String, val sn: String,val vin:Str
waitUpdateEvent: List<EventDataBean>?,
waitUpdateWriteOffEvent: List<WriteOffDataBean>?
): ShuttleEventRequest {
val businessTypeShuttle = LoginStatusManager.getLoginInfo()?.businessType?:11
val businessTypeShuttle = LoginStatusManager.getOchBizInfo()?.businessType?:11
val eventList4Request = mutableListOf<Event>()
var tempEvent: Event?=null
waitUpdateEvent?.forEach {

View File

@@ -470,7 +470,7 @@ object LineModel {
}
fun endTaskByOther(taskId: Long,plateNumber:String) {
if(LoginStatusManager.getLoginInfo()?.plateNumber==plateNumber){
if(LoginStatusManager.getOchCarInfo()?.plateNumber==plateNumber){
d(TAG,"当前车辆消耗任务")
return
}

View File

@@ -41,7 +41,7 @@ object EventDb: IDbRepository {
event.taskStartTime = taskStartTime
event.businessTime = DateTimeUtil.getCurrentTimeStamp()
event.writeVersion = DateTimeUtil.getCurrentTimeStamp()
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1
event.driverId = LoginStatusManager.getOchLoginInfo()?.driverId?:-1
event.siteId = 0L
event.seq = 0
event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}"
@@ -72,7 +72,7 @@ object EventDb: IDbRepository {
event.businessTime = DateTimeUtil.getCurrentTimeStamp()
event.writeVersion = DateTimeUtil.getCurrentTimeStamp()
event.siteId = siteId
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1
event.driverId = LoginStatusManager.getOchLoginInfo()?.driverId?:-1
event.seq = seq
event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}"
BizLoopManager.runInIoThread {
@@ -101,7 +101,7 @@ object EventDb: IDbRepository {
event.lineName = lineName
event.businessTime = DateTimeUtil.getCurrentTimeStamp()
event.writeVersion = DateTimeUtil.getCurrentTimeStamp()
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1L
event.driverId = LoginStatusManager.getOchLoginInfo()?.driverId?:-1L
event.siteId = siteId
event.seq = seq
event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}"
@@ -129,7 +129,7 @@ object EventDb: IDbRepository {
event.taskStartTime = taskStartTime
event.businessTime = DateTimeUtil.getCurrentTimeStamp()
event.writeVersion = DateTimeUtil.getCurrentTimeStamp()
event.driverId = LoginStatusManager.getLoginInfo()?.driverId?:-1L
event.driverId = LoginStatusManager.getOchLoginInfo()?.driverId?:-1L
event.siteId = 0L
event.seq = 0
event.msgId = "${OchSPManager.getSn()}_${DateTimeUtil.getCurrentTimeStamp()}"

View File

@@ -174,7 +174,7 @@ class WeaknetRepository : ILineRepository {
// 2、check 数据库数据
// 3、数据库没有数据 做延迟等待同步接口同步基础数据 ?? 等待基础数据同步完在进行
// 4、恢复本地正在运行的数据
val loginInfo = LoginStatusManager.getLoginInfo()
val loginInfo = LoginStatusManager.getOchBizInfo()
return Observable.just(loginInfo).flatMap {
// check数据 是否正在之心
val taskId = if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)||

View File

@@ -107,7 +107,7 @@ class WriteOffCacheRepository : IWriteOffRepository {
// 1、校验租户id
it.tenantId?.let { tenantId->
if(LoginStatusManager.getLoginInfo()?.tenantId==tenantId){
if(LoginStatusManager.getOchCarInfo()?.tenantId==tenantId){
}else{
throw DataException(1012,"当前用户下单路线非当前的车辆所属公司")
@@ -124,7 +124,7 @@ class WriteOffCacheRepository : IWriteOffRepository {
}
}
// 3、校验 bus和shuttle
if (LoginStatusManager.getBusInessType()!=Product.valueOf(it.typeBiz)) {
if (LoginStatusManager.getProductType()!=Product.valueOf(it.typeBiz)) {
throw DataException(1005,"车辆未登录、或没有任务")
}
// 4 二维码1分钟失效
@@ -201,7 +201,7 @@ class WriteOffCacheRepository : IWriteOffRepository {
addWrite.ticketSize = it.ticketSize
addWrite.ticketName = it.ticketName
addWrite.msgId = OchSPManager.getSn()+System.currentTimeMillis()
addWrite.driverId = LoginStatusManager.getLoginInfo()?.driverId?:0
addWrite.driverId = LoginStatusManager.getOchLoginInfo()?.driverId?:0
addWrite.businessTime = System.currentTimeMillis()
WriteOffDb.addOrUpdate(addWrite)
val reslut = PassengerWriteOffResponse.Result(it.phone,it.ticketSize,it.ticketName,it.availableTimes?.toLong(),addWrite.businessTime)
@@ -259,7 +259,7 @@ class WriteOffCacheRepository : IWriteOffRepository {
addWrite.ticketSize = passenger.passengerSize
addWrite.ticketName = passenger.ticketName
//addWrite.msgId = OchSPManager.getSn()+System.currentTimeMillis()
addWrite.driverId = LoginStatusManager.getLoginInfo()?.driverId?:0
addWrite.driverId = LoginStatusManager.getOchLoginInfo()?.driverId?:0
//addWrite.businessTime = System.currentTimeMillis()
addWrite.updateStatus = WriteOffDataBean.updated
WriteOffDb.addOrUpdate(addWrite)

View File

@@ -4,10 +4,9 @@ import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.Presenter
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.EnumLoginStatus
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusManager.isLogin
import com.mogo.och.bridge.autopilot.OCHAdasAbilityManager
@@ -44,7 +43,7 @@ class BusPresenter(view: ShuttleFragment?) : Presenter<ShuttleFragment?>(view),
OrderModel.release()
}
override fun onStatusChange(currentStatus: LoginStatusEnum) {
override fun onLoginStatusChange(currentStatus: EnumLoginStatus) {
d(TAG, " loginStatus =" + isLogin())
if (!isLogin()) {
BusTrajectoryManager.stopTrajReqLoop()

View File

@@ -13,7 +13,6 @@ import com.mogo.eagle.core.function.view.SiteMarkerBean
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
import com.mogo.och.shuttle.weaknet.passenger.R
import com.mogo.och.shuttle.weaknet.passenger.presenter.PM2DrivingPresenter
import com.mogo.och.common.module.utils.DateTimeUtil.*
import com.mogo.och.common.module.utils.NumberFormatUtil
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.data.bean.BusStationBean

View File

@@ -18,7 +18,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
import com.mogo.och.data.taxi.TaxiOrderStatusEnum
import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.common.module.wigets.StartAutopilotAnimationView
@@ -307,14 +307,14 @@ class TaxiFragment :MvpFragment<TaxiFragment?, TaxiPresenter?>(),
* @param inOperation true 可以接单 false 暂停接单
* @param role 测试车辆:测试 演示车辆V 运营车辆: ""空
*/
fun updateOperationStatus(inOperation: OpenOrderStatusEnum) {
fun updateOperationStatus(inOperation: Boolean) {
e(
SceneConstant.M_TAXI + TAG,
"onOperationChanged:$inOperation"
)
updateOperationBtnStatusOnModeChange(MogoStatusManager.getInstance().isTaxiUnmanedDriverLineRoutingVerifyMode)
MogoStatusManager.getInstance()
.setTaxiUnmanedDriverTakingOrders(TAG, inOperation == OpenOrderStatusEnum.Ordering)
.setTaxiUnmanedDriverTakingOrders(TAG, inOperation)
}
fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) {
if (isAmap) {

View File

@@ -11,9 +11,9 @@ import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.bridge.autopilot.OCHAdasAbilityManager;
import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusEnum;
import com.mogo.och.common.module.biz.login.EnumLoginStatus;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum;
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus;
import com.mogo.och.unmanned.taxi.utils.order.OrderListener;
import com.mogo.och.unmanned.taxi.utils.order.OrderModel;
import com.mogo.och.data.taxi.TaxiOrderStatusEnum;
@@ -164,12 +164,12 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
@Override
public void onStatusChange(LoginStatusEnum currentStatus) {
public void onLoginStatusChange(EnumLoginStatus currentStatus) {
UiThreadHandler.post(new Runnable() {
@Override
public void run() {
if(mView!=null) {
mView.updateOperationStatus(LoginStatusManager.getOpenOrderType());
mView.updateOperationStatus(LoginStatusManager.isOpenOrderType());
}
}
}, UiThreadHandler.MODE.QUEUE);
@@ -179,12 +179,12 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
@Override
public void onOpenOrderStatusEnumChange(OpenOrderStatusEnum businessEnum) {
public void onOpenOrderStatusEnumChange(EnumOpenOrderStatus businessEnum) {
UiThreadHandler.post(new Runnable() {
@Override
public void run() {
if(mView!=null) {
mView.updateOperationStatus(LoginStatusManager.getOpenOrderType());
mView.updateOperationStatus(LoginStatusManager.isOpenOrderType());
}
}
}, UiThreadHandler.MODE.QUEUE);

View File

@@ -19,7 +19,7 @@ import com.mogo.och.data.taxi.TaxiOrderStatusEnum
import com.mogo.och.bridge.autopilot.line.LineManager
import com.mogo.och.bridge.autopilot.location.OchLocationManager
import com.mogo.och.common.module.biz.birdge.BridgeManager
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum
import com.mogo.och.common.module.biz.login.EnumOpenOrderStatus
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.utils.ToastUtilsOch
@@ -514,14 +514,14 @@ class ItineraryCurrentModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
fun cancleTask() {
DebugView.printInfoMsg("[车辆复位] 准备发送请求")
val openOrderType = LoginStatusManager.getOpenOrderType()
val openOrderType = LoginStatusManager.isOpenOrderType()
TaxiTaskWithOrderServiceManager.resetInit(
AbsMogoApplication.getApp().applicationContext,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
DebugView.printInfoMsg("[车辆复位] 请求success")
LoginStatusManager.queryLoginStatusByNet()
if(openOrderType== OpenOrderStatusEnum.Ordering) {
if(openOrderType) {
VoiceNotice.showNotice("暂停接单啦!");
}
TaxiTaskModel.cancelAutopilot()

View File

@@ -140,7 +140,7 @@ android {
// 项目 business
// 业务线 product
// 车型 vehicle
flavorDimensions "project","vehicle" ,"role", "env"
flavorDimensions "project","role", "env"
productFlavors {
}
@@ -150,15 +150,7 @@ android {
apply from: "./script/roleFlavors/passenger.gradle"
apply from: "./script/roleFlavors/driverpassenger.gradle"
// 配置不同渠道参数,直接影响功能完整度
apply from: "./script/vehicleFlavors/B1.gradle"
apply from: "./script/vehicleFlavors/B2.gradle"
apply from: "./script/vehicleFlavors/T1T2.gradle"
apply from: "./script/vehicleFlavors/ALL.gradle"
apply from: "./script/vehicleFlavors/C1.gradle"
//包车
apply from: "./script/vehicleFlavors/M1.gradle"
apply from: "./script/flavorfilter/flavorsFilterConfig.gradle"
// apply from: "./script/flavorfilter/flavorsFilterConfig.gradle"
packagingOptions {
exclude 'META-INF/io.netty.versions.properties'

View File

@@ -1,25 +0,0 @@
{
"mogo": {
"B1":["shuttle","bus"],
"B2":["shuttle","bus"],
"T1T2":["taxi"],
"ALL":["charter","shuttle","bus","taxi"]
},
"dali": {
"B1":["shuttle"],
"B2":["shuttle"],
"M1":["charter"]
},
"yantai": {
"B1":["shuttle"],
"B2":["shuttle"],
"M1":["charter"]
},
"saas": {
"T1T2":["taxi"],
"B1":["shuttle","bus","scheduled"],
"B2":["shuttle","bus","scheduled"],
"M1":["charter","shuttle"],
"ALL":["charter","shuttle","bus","taxi","scheduled"]
}
}

View File

@@ -9,7 +9,6 @@ project.android.productFlavors {
buildConfigField 'String', 'URLs', "\"${readFileToJson("mogo").replace("\"", "\\\"")}\""
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
buildConfigField 'String', 'musicUrlConfig', "\"${readMusicUrlConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
buildConfigField 'String', 'supportBusiness', "\"${readProductWithVehicleConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
}
yantai {
dimension "project"
@@ -18,7 +17,6 @@ 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 {
@@ -28,7 +26,6 @@ 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"
@@ -37,7 +34,6 @@ 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、线上、演示

View File

@@ -8,10 +8,6 @@ project.android.productFlavors {
}
}
manifestPlaceholders = [
CHANNEL_VALUE_BODY : "Driver",
]
// ①标识
buildConfigField 'String', 'APP_IDENTITY_MODE_BODY', "\"Driver\""

View File

@@ -9,10 +9,6 @@ project.android.productFlavors {
}
}
manifestPlaceholders = [
CHANNEL_VALUE_BODY : "Passenger",
]
// ①标识
buildConfigField 'String', 'APP_IDENTITY_MODE_BODY', "\"Passenger\""

View File

@@ -8,10 +8,6 @@ project.android.productFlavors {
}
}
manifestPlaceholders = [
CHANNEL_VALUE_BODY : "Passenger",
]
// ①标识
buildConfigField 'String', 'APP_IDENTITY_MODE_BODY', "\"Passenger\""

View File

@@ -30,38 +30,6 @@ 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 "${env}____ 对比${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
}
/**
@@ -139,5 +107,4 @@ ext {
isBaiLing = this.&isBaiLing
readMediaUrlConfigFromJsonFile = this.&readMediaUrlConfigFromJsonFile
readMusicUrlConfigFromJsonFile = this.&readMusicUrlConfigFromJsonFile
readProductWithVehicleConfigFromJsonFile = this.&readProductWithVehicleConfigFromJsonFile
}

View File

@@ -4,24 +4,6 @@ project.android.productFlavors {
dimension "vehicle"
missingDimensionStrategy "vehicle","dfhq","jinlvvan"
// 配置AndroidManifest.xml中用到的参数
manifestPlaceholders = [
CHANNEL_VALUE_TAIL: "ALL",
]
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"ALL\""
// ②构建的是否要动态更换模型
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
// ③能启动自驾的档位 MAP<360代码中会移除P档
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_D);add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_P);}}'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
}
}

View File

@@ -5,21 +5,5 @@ project.android.productFlavors {
matchingFallbacks = ['jinlvvan']
missingDimensionStrategy "vehicle", "jinlvvan"
// 配置AndroidManifest.xml中用到的参数
manifestPlaceholders = [
CHANNEL_VALUE_TAIL : "B1",
]
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"B1\""
// ②构建的是否要动态更换模型
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
// ③能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_D);}}'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
}
}

View File

@@ -12,21 +12,6 @@ project.android.productFlavors {
matchingFallbacks = ['jinlvvan']
missingDimensionStrategy "vehicle", "m21", "jinlvvan"
}
//高德地图鉴权信息
manifestPlaceholders = [
CHANNEL_VALUE_TAIL: "B2",
]
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"B2\""
// ②构建的是否要动态更换模型
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'false'
// ③M2能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_D);}}'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
}
}

View File

@@ -5,26 +5,11 @@ project.android.productFlavors {
missingDimensionStrategy "vehicle","ft","jinlvvan"
// 配置AndroidManifest.xml中用到的参数
manifestPlaceholders = [
CHANNEL_VALUE_TAIL: "C1",
]
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"C1\""
// ②构建的是否要动态更换模型
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
// ③能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'null'
// ⑤清扫车 默认模式(运营/云控)
buildConfigField 'String', 'SWEEPER_DEFAULT_MODE', '\"Cloud\"'
// ⑥清扫车 是否能切换模式
buildConfigField 'boolean', 'SWEEPER_CAN_SWITCH_MODE', 'true'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
}
}

View File

@@ -3,21 +3,5 @@ project.android.productFlavors {
M1 {
dimension "vehicle"
missingDimensionStrategy "vehicle", "jinlvvan"
// 配置AndroidManifest.xml中用到的参数
manifestPlaceholders = [
CHANNEL_VALUE_TAIL: "M1",
]
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"M1\""
// ②M1能启动自驾的档位
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_D);}}'
// ③不能启动自驾的档位
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'false'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
}
}

View File

@@ -4,24 +4,9 @@ project.android.productFlavors {
dimension "vehicle"
missingDimensionStrategy "vehicle","dfhq","jinlvvan"
// 配置AndroidManifest.xml中用到的参数
manifestPlaceholders = [
CHANNEL_VALUE_TAIL: "T1T2",
]
// ①标识构建的应用身份类型,具体查看 README.md APP_IDENTITY_MODE规则
buildConfigField 'String', 'APP_IDENTITY_MODE_TAIL', "\"T1T2\""
// ②构建的是否要动态更换模型
buildConfigField 'boolean', 'IS_CAR_MODEL_CHANGE', 'true'
// ③能启动自驾的档位 MAP<360代码中会移除P档
buildConfigField 'java.util.Set<chassis.Chassis.GearPosition>', 'LAUNCH_AUTOPILOT_GEAR', 'new java.util.HashSet<chassis.Chassis.GearPosition>(){{add(chassis.Chassis.GearPosition.GEAR_D);add(chassis.Chassis.GearPosition.GEAR_N);add(chassis.Chassis.GearPosition.GEAR_P);}}'
// ④是否支持多屏显示
buildConfigField 'boolean', 'IS_MULTI_DISPLAY', 'false'
}
}

View File

@@ -51,10 +51,6 @@ object ConfigStartUp {
// 演示模式,上一次勾选的数据
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE
FunctionBuildConfig.ttsLanguage = BuildConfig.ttsLanguage
// 支持的业务类型
if(!StringUtils.isEmpty(BuildConfig.supportBusiness)&&BuildConfig.supportBusiness!="null"){
FunctionBuildConfig.supportBusiness = GsonUtils.fromJson(BuildConfig.supportBusiness, object : TypeToken<MutableList<String>>() {}.type)
}
// 各个module需要的url
FunctionBuildConfig.urlJson = GsonUtils.fromJson(BuildConfig.URLs, UrlConfig::class.java)
@@ -68,15 +64,7 @@ object ConfigStartUp {
// app安装的身份信息
// 这里影响当前Activity的身份信息多进程主进程为司机端:passenger 进程为乘客端
// TODO emArrow isMultiDisplay暂时不启用仅测试3588在B2 2024车预研
if (DebugConfig.isMultiDisplay()) {
if(ProcessUtils.getCurrentProcessName().contains("passenger")){
FunctionBuildConfig.appIdentityMode = "Product_Passenger_${BuildConfig.APP_IDENTITY_MODE_TAIL}"
}else{
FunctionBuildConfig.appIdentityMode = "Product_Driver_${BuildConfig.APP_IDENTITY_MODE_TAIL}"
}
}else{
FunctionBuildConfig.appIdentityMode = "Product_${BuildConfig.APP_IDENTITY_MODE_BODY}_${BuildConfig.APP_IDENTITY_MODE_TAIL}"
}
FunctionBuildConfig.appIdentityMode = "Product_${BuildConfig.APP_IDENTITY_MODE_BODY}_Vehicle"
// 不同身份对应不同的IP地址
FunctionBuildConfig.adasConnectIP = BuildConfig.ADAS_CONNECT_IP
// 是否开启secure校验
@@ -102,11 +90,10 @@ object ConfigStartUp {
DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE)
// todo DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product)
DebugConfig.setProjectFlavor(BuildConfig.FLAVOR_project)
DebugConfig.setEnvFlavor(BuildConfig.FLAVOR_env)
DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID)
DebugConfig.setMapVersion(BuildConfig.MAP_SDK_VERSION)
DebugConfig.setMapOptVersion(BuildConfig.MAP_SDK_OPT_VERSION)
DebugConfig.setMultiDisplay(BuildConfig.IS_MULTI_DISPLAY)
DebugConfig.setCarModelChange(BuildConfig.IS_CAR_MODEL_CHANGE)
}
private fun initOtherConfig(context: Context) {

View File

@@ -165,21 +165,6 @@ class BindingCarNetWorkManager private constructor() {
})
}
private fun updateCarVrIconRes(brandId: String?) {
d(SceneConstant.M_DEVA + TAG, "CarModelChange : ${DebugConfig.isCarModelChange()}")
if (!DebugConfig.isCarModelChange()) {
return
}
if (brandId == null || brandId.isEmpty()) {
return
}
d(SceneConstant.M_DEVA + TAG, "getDefaultId() : ${getDefaultId()} ---- brandId = $brandId")
if (getDefaultId() == brandId) {
return
}
d(SceneConstant.M_DEVA + TAG, "updateCarVrIconRes : $brandId")
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
linkCode = ChainConstant.CHAIN_SOURCE_INIT,

View File

@@ -59,7 +59,7 @@
android:hardwareAccelerated="true"
android:launchMode="singleTask"
android:resizeableActivity="false"
android:screenOrientation="landscape"
android:screenOrientation="locked"
android:resumeWhilePausing="true"
android:stateNotNeeded="true"
android:theme="@style/Main"
@@ -89,7 +89,7 @@
android:process=":passenger"
android:resizeableActivity="false"
android:resumeWhilePausing="true"
android:screenOrientation="landscape"
android:screenOrientation="locked"
android:stateNotNeeded="true"
android:theme="@style/Main"
android:windowSoftInputMode="adjustPan|stateHidden">

View File

@@ -2093,13 +2093,13 @@ internal class DebugSettingView @JvmOverloads constructor(
AppIdentityModeUtils.getProduct(
FunctionBuildConfig.appIdentityMode
)
}"
}_${AppIdentityModeUtils.getVehicle(FunctionBuildConfig.appIdentityMode)}"
tvAppVersionNameKey.text =
"鹰眼版本:${AppUtils.getAppVersionName()} Git Hash${AppConfigInfo.workingBranchHash}\n渠道信息:${AppConfigInfo.flavor}_${
AppIdentityModeUtils.getProduct(
FunctionBuildConfig.appIdentityMode
)
}"
}_${AppIdentityModeUtils.getVehicle(FunctionBuildConfig.appIdentityMode)}"
tvAutopilotProtocolVersionInfo.text =
"Autopilot协议版本${CallerAutoPilotControlManager.getProtocolVersion()}"

View File

@@ -45,17 +45,6 @@ public class MainLauncherActivity extends MainActivity {
EventBus.getDefault().register(this);
CallerLogger.i(M_HMI + TAG, "onCreate");
if(DebugConfig.isMultiDisplay()){
try {
// 在第二个屏幕启动乘客端app
// 多进程方案
CallerLogger.i(M_HMI + TAG, "MultiDisplayUtils startActWithSecond");
// MultiDisplayUtils.INSTANCE.startActWithSecond(this, "com.mogo.launcher.passenger");
// MultiDisplayUtils.INSTANCE.startActWithSecond(this, PassengerLauncherActivity.class);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
@@ -89,24 +78,17 @@ public class MainLauncherActivity extends MainActivity {
private void loadOCHModule() {
IMoGoFunctionProvider ochProvider;
// 兼容处理之前联想PAD及小巴车多个设备部署不同APP方案
if (!DebugConfig.isMultiDisplay()) {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
Log.i("emArrow","Driver start");
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
} else if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){
Log.i("emArrow","Passenger start");
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
} else {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
}
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
Log.i("emArrow","Driver start");
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
} else if(AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)){
Log.i("emArrow","Passenger start");
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
} else {
// 目前只有金旅星辰乘客屏是连接的双屏
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());

View File

@@ -9,6 +9,7 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.commons.module.MogoModule;
import com.mogo.commons.module.MogoModulePaths;
import com.mogo.commons.storage.SharedPrefsMgr;
import com.mogo.commons.utils.MogoAnalyticUtils;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.constants.MogoServicePaths;

View File

@@ -6,6 +6,7 @@ import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.startup.IStartUpProvider
import com.mogo.eagle.core.function.startup.stageone.APMStartup
import com.mogo.eagle.core.function.startup.stageone.CarBizInfoStartup
import com.mogo.eagle.core.function.startup.stageone.HttpDnsStartUp
import com.mogo.eagle.core.function.startup.stagetwo.*
import com.rousetime.android_startup.StartupListener
@@ -53,6 +54,7 @@ class MogoStartUpProvider : IStartUpProvider {
StartupManager.Builder()
.addStartup(HttpDnsStartUp())
.addStartup(APMStartup())
.addStartup(CarBizInfoStartup())
.setConfig(config)
.build(it)
.start()
@@ -70,6 +72,7 @@ class MogoStartUpProvider : IStartUpProvider {
}
context?.let {
StartupManager.Builder()
.addStartup(ScreenStartUp())
.addStartup(DataCenterStartUp())
.addStartup(AutopilotStartUp())
.addStartup(ObuStartUp())

View File

@@ -0,0 +1,73 @@
package com.mogo.eagle.core.function.startup.stageone
import android.content.Context
import com.google.gson.reflect.TypeToken
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.screen.ScreenHelper
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.Product
import com.mogo.eagle.core.utilcode.mogo.Vehicle
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.rousetime.android_startup.AndroidStartup
class CarBizInfoStartup : AndroidStartup<Boolean?>() {
private val OCHPRODUCT = "OCHPRODUCT"
private val OCHVEHICLE = "OCHVEHICLE"
private val loginInfoKey = "LOGININFOKEY"
private val tag = "CarBizInfoStartup"
override fun create(context: Context): Boolean? {
CallerLogger.d(tag,"开始设置:${FunctionBuildConfig.appIdentityMode}")
// apm
val ochProduct = SharedPrefsMgr.getInstance().getString(OCHPRODUCT)
val ochVehicle = SharedPrefsMgr.getInstance().getString(OCHVEHICLE)
if(!ochProduct.isNullOrEmpty()&&!ochVehicle.isNullOrEmpty()){
val (_, identity, _) = AppIdentityModeUtils.getInfo(FunctionBuildConfig.appIdentityMode)
FunctionBuildConfig.appIdentityMode = "${ochProduct}_${identity}_${ochVehicle}"
CallerLogger.d(tag,"设置成功1:${FunctionBuildConfig.appIdentityMode}")
ScreenHelper.setScreenConfig(context)
}else{
SharedPrefsMgr.getInstance().getString(loginInfoKey)?.let {
val timeText = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd)
if (it.startsWith(timeText)) {
val loginjson = it.replace(timeText, "")
val type = object : TypeToken<HashMap<String, Any>>() {}.type
val hashMap:HashMap<String,Any> = GsonUtils.fromJson(loginjson,type)
val businessType = hashMap["businessType"]
val carModel = hashMap["carModel"]
if(businessType is Int && carModel is String && carModel.isNotEmpty()){
val product = Product.getName(businessType)
val vehicle = Vehicle.getCarVehicleFromServerName(carModel)
if(product.isNotEmpty()&&vehicle!=Vehicle.NONE){
val (_, identity, _) = AppIdentityModeUtils.getInfo(FunctionBuildConfig.appIdentityMode)
FunctionBuildConfig.appIdentityMode = "${ochProduct}_${identity}_${ochVehicle}"
ScreenHelper.setScreenConfig(context)
CallerLogger.d(tag,"设置成功2:${FunctionBuildConfig.appIdentityMode}")
}
}
}
}
}
CallerLogger.d(tag,"结束设置:${FunctionBuildConfig.appIdentityMode}")
return true
}
override fun callCreateOnMainThread(): Boolean {
return true
}
override fun waitOnMainThread(): Boolean {
return false
}
override fun dependenciesByName(): List<String> {
return emptyList()
}
}

View File

@@ -0,0 +1,40 @@
package com.mogo.eagle.core.function.startup.stagetwo
import android.content.Context
import android.content.pm.ActivityInfo
import com.mogo.commons.screen.ScreenHelper
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.ScreenUtils
import com.rousetime.android_startup.AndroidStartup
class ScreenStartUp: AndroidStartup<Boolean>() {
override fun create(context: Context): Boolean? {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
ActivityUtils.getTopActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}else if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
ActivityUtils.getTopActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}else{
ActivityUtils.getTopActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
}else{
ActivityUtils.getTopActivity().requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
}
return true
}
override fun callCreateOnMainThread(): Boolean {
return true
}
override fun waitOnMainThread(): Boolean {
return true
}
override fun dependenciesByName(): List<String>? {
return emptyList()
}
}

View File

@@ -146,12 +146,6 @@ object FunctionBuildConfig {
@JvmField
var ttsLanguage = 1
@Volatile
@JvmField
var supportBusiness = mutableListOf<String>()
/**
* 各车型宣传视频本地配置
* 广告json

View File

@@ -115,4 +115,7 @@ interface IEagleBaseFunctionCall4Och {
*/
fun setOchAutopilotOrderId(orderId:String){}
fun onOchProductChange(){}
fun onOchVehicleChange(){}
}

View File

@@ -11,11 +11,6 @@ import com.alibaba.android.arouter.facade.template.IProvider
*/
interface IOchCustomViewProvider : IProvider {
/**
* Interface Tag
*/
val TAG: String
get() = "IOchCustomViewProvider"
/**
* 创建 Och业务层 自定义View

View File

@@ -130,4 +130,12 @@ object CallerEagleBaseFunctionCall4OchManager : IEagleBaseFunctionCall4Och {
override fun onOrderRemoval() {
CallerDataCenterBizManager.notifyOrderRemoval()
}
override fun onOchProductChange() {
}
override fun onOchVehicleChange() {
}
}

View File

@@ -19,7 +19,7 @@ object CallerOchCustomViewManager {
.navigation() as? IOchCustomViewProvider
fun init(context: Context) {
ochCustomViewProviderApi?.init(context)
}
/**

View File

@@ -330,6 +330,12 @@ object AppIdentityModeUtils {
else -> Role.NONE
}
}
fun getVehicle(appIdentityMode: String):Vehicle{
val (_, _, carType) = getInfo(appIdentityMode)
return Vehicle.getVehicleByName(carType)
}
@JvmStatic
fun getCarType(appIdentityMode: String): CarType {
val (_, _, carType) = getInfo(appIdentityMode)
@@ -371,6 +377,75 @@ enum class Product(val code: Int) {
}
return NONE
}
fun getName(code: Int?):String{
val product = valueOf(code)
return when (product) {
NONE -> ""
BUS -> AppIdentityModeUtils.BUS
TAXI -> AppIdentityModeUtils.TAXI
SWEEPER -> AppIdentityModeUtils.SWEEPER
SHUTTLE -> AppIdentityModeUtils.SHUTTLE
CHARTER -> AppIdentityModeUtils.CHARTER
SCHEDULED -> AppIdentityModeUtils.SCHEDULED
}
}
}
}
enum class Vehicle(val code:String){
NONE("Vehicle"),
T1T2("T1T2"),
B1("B1"),
B2("B2"),
C1("C1"),
M1("M1");
companion object{
fun getVehicleByName(name:String):Vehicle{
return when (name) {
NONE.code -> {NONE}
T1T2.code -> {T1T2}
B1.code -> {B1}
B2.code -> {B2}
C1.code -> {C1}
M1.code -> {M1}
else -> {
NONE
}
}
}
@JvmStatic
fun getCarVehicleFromServerName(serverName:String?): Vehicle {
return when (serverName) {
"E70" -> {
T1T2
}
"H9" -> {
T1T2
}
"B1" -> {
B1
}
"金旅牌XML6606JEVY0" -> {
B1
}
"NJL6450ICEV" -> {
B1
}
"B2","M2" -> {
B2
}
"M1" -> {
M1
}
"BJ5122TXSEV-H1" -> {
C1
}
else -> {
T1T2
}
}
}
}
}

View File

@@ -22,7 +22,7 @@ class SceneConstant {
const val M_OTHER = "M_OTHER-"
// Och common
const val M_OCHCOMMON = "M_OCHCOMMON-"
const val M_OCHCOMMON = "M_OCH-"
// Och offline
const val M_OFFLINE = "M_OFFLINE-"

View File

@@ -126,6 +126,8 @@ public class DebugConfig {
private static String sProductFlavor;
private static String sProjectFlavor = "";
private static String sEnvFlavor = "";
public static String getProductFlavor() {
return sProductFlavor;
}
@@ -151,6 +153,18 @@ public class DebugConfig {
return sProjectFlavor;
}
/**
* project flavor
* @param projectFlavor
*/
public static void setEnvFlavor(String projectFlavor) {
DebugConfig.sEnvFlavor = projectFlavor;
}
public static String getEnvFlavor() {
return sEnvFlavor;
}
private static String sSocketAppId;
public static void setSocketAppId(String sSocketAppId) {
@@ -181,25 +195,4 @@ public class DebugConfig {
return mapOptVersion;
}
// 兼容是否支持多屏幕方案
private static boolean isMultiDisplay = false;
public static void setMultiDisplay(boolean status) {
isMultiDisplay = status;
}
public static boolean isMultiDisplay() {
return isMultiDisplay;
}
// 兼容是否支持多屏幕方案
private static boolean isCarModelChange = true;
public static void setCarModelChange(boolean status) {
isCarModelChange = status;
}
public static boolean isCarModelChange() {
return isCarModelChange;
}
}

View File

@@ -0,0 +1,32 @@
package com.mogo.commons.env
import com.mogo.commons.debug.DebugConfig
object EnvUtils {
fun isQA(): Boolean {
return DebugConfig.getEnvFlavor() == Env.QA.value
}
fun isOnLine(): Boolean {
return DebugConfig.getEnvFlavor() == Env.ONLINE.value
}
fun getEnvType(): Env {
when (DebugConfig.getEnvFlavor()) {
Env.QA.value -> {
return Env.QA
}
Env.ONLINE.value -> {
return Env.ONLINE
}
}
return Env.ONLINE
}
}
enum class Env(val value: String) {
QA("qa"),
ONLINE("online"),
}

View File

@@ -1,10 +1,14 @@
package com.mogo.commons.mvp;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.mogo.eagle.core.utilcode.util.ActivityUtils;
/**
* @author congtaowang
* @since 2019-12-23

View File

@@ -160,7 +160,6 @@ object MogoAnalyticUtils {
AppConfigInfo.netMode
}
}
map["app_support_business"] = FunctionBuildConfig.supportBusiness
map["product_type"] =
AppIdentityModeUtils.getProduct(FunctionBuildConfig.appIdentityMode).name