[8.5.0]
[f2a 登录]
This commit is contained in:
@@ -28,8 +28,8 @@ 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.biz.login.model.SwitchLoginModel
|
||||
import com.mogo.och.common.module.biz.lansocket.IOchLanPassengerStatusListener
|
||||
import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
@@ -180,12 +180,12 @@ object LoginServiceManager : IOchLanPassengerStatusListener {
|
||||
}
|
||||
|
||||
private fun queryLoginStatusByNet() {
|
||||
LoginModel.queryCarStatus(false)
|
||||
SwitchLoginModel.queryCarStatus(false)
|
||||
}
|
||||
|
||||
fun queryLoginStatusByNet(readCatche: Boolean) {
|
||||
d(tag, "queryLoginStatusByNet")
|
||||
LoginModel.queryCarStatus(readCatche)
|
||||
SwitchLoginModel.queryCarStatus(readCatche)
|
||||
}
|
||||
|
||||
fun loginOut() {
|
||||
@@ -198,7 +198,7 @@ object LoginServiceManager : IOchLanPassengerStatusListener {
|
||||
FunctionBuildConfig.isOffLine = false
|
||||
sendLogin2Client(1)
|
||||
}
|
||||
LoginModel.logout()
|
||||
SwitchLoginModel.logout()
|
||||
}
|
||||
|
||||
fun checkAllEnv(
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.mogo.och.biz.login.bean.f2a;
|
||||
|
||||
/**
|
||||
* Created by yangyakun on 2021/8/19
|
||||
* 通过手机号验证码登录
|
||||
*/
|
||||
public class LoginF2aReqBean {
|
||||
|
||||
public String phone;
|
||||
public String mfaCode;
|
||||
public String sn;
|
||||
public Location4Login loc;
|
||||
|
||||
public LoginF2aReqBean(String phone, String mfaCode, String sn, Location4Login location4Login) {
|
||||
this.phone = phone;
|
||||
this.mfaCode = mfaCode;
|
||||
this.sn = sn;
|
||||
this.loc = location4Login;
|
||||
}
|
||||
|
||||
public static class Location4Login{
|
||||
public double lat;
|
||||
public double lon;
|
||||
public String coordinateType = "WGS84";
|
||||
|
||||
|
||||
public Location4Login(double lat, double lon,String coordinateType) {
|
||||
this.lat = lat;
|
||||
this.lon = lon;
|
||||
this.coordinateType = coordinateType;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.mogo.och.biz.login.bean.f2a;
|
||||
|
||||
/**
|
||||
* Created by yangyakun on 2021/8/19
|
||||
* 通过手机号验证码登录
|
||||
*/
|
||||
public class LoginReqBean {
|
||||
|
||||
public String phone;
|
||||
public String password;
|
||||
public String sn;
|
||||
|
||||
public LoginReqBean(String phone, String password, String sn) {
|
||||
this.phone = phone;
|
||||
this.password = password;
|
||||
this.sn = sn;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.mogo.och.biz.login.bean.f2a;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
|
||||
/**
|
||||
* Created by yangyakun on 2021/8/19
|
||||
* 通过账号密码登录
|
||||
*/
|
||||
public class LoginRespBean extends BaseData {
|
||||
|
||||
public Result data;
|
||||
|
||||
public static final class Result {
|
||||
public Long driverId;
|
||||
public boolean isFirstLogin;
|
||||
public boolean isPasswordExpired;
|
||||
public boolean isPasswordExpiringSoon;
|
||||
public boolean needInitPassword;
|
||||
public String otpAuthUrl;
|
||||
public String phone;
|
||||
public String sn;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.mogo.och.biz.login.bean.f2a;
|
||||
|
||||
/**
|
||||
* Created by yangyakun on 2021/8/19
|
||||
* 通过手机号验证码登录
|
||||
*/
|
||||
public class RestPwdReqBean {
|
||||
|
||||
public Long driverId;
|
||||
public String newPwd;
|
||||
public String oldPwd;
|
||||
|
||||
public RestPwdReqBean(Long driverId, String newPwd,String oldPwd) {
|
||||
this.driverId = driverId;
|
||||
this.newPwd = newPwd;
|
||||
this.oldPwd = oldPwd;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.mogo.och.biz.login.bean.f2a;
|
||||
|
||||
import com.mogo.eagle.core.data.BaseData;
|
||||
|
||||
/**
|
||||
* Created by yangyakun on 2021/8/19
|
||||
* 通过账号密码登录
|
||||
*/
|
||||
public class RestPwdRespBean extends BaseData {
|
||||
|
||||
public Result data;
|
||||
|
||||
public static final class Result {
|
||||
public Long driverId;
|
||||
public boolean isFirstLogin;
|
||||
public boolean isPasswordExpired;
|
||||
public boolean isPasswordExpiringSoon;
|
||||
public String otpAuthUrl;
|
||||
public String phone;
|
||||
public String sn;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,10 @@
|
||||
package com.mogo.och.biz.login.callback;
|
||||
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginRespBean;
|
||||
import com.mogo.och.biz.login.bean.f2a.RestPwdRespBean;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* Created on 2021/9/8
|
||||
*
|
||||
@@ -9,5 +14,8 @@ public interface ITaxiLoginCallback {
|
||||
default void getPhoneCodeSuccess(){}
|
||||
|
||||
default void netErrorCallback(){}
|
||||
default void stopAutoLogin(){}
|
||||
|
||||
default void loginfirstSuccess(@Nullable LoginRespBean.Result data,String oldPwd){}
|
||||
|
||||
default void restPwdSuccess(){}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
package com.mogo.och.biz.login.model
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
import android.util.Log
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.commons.module.intent.IMogoIntentListener
|
||||
import com.mogo.commons.module.intent.IntentManager
|
||||
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.function.call.devatools.CallerDevaToolsFuncConfigListenerManager
|
||||
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.Companion.M_OCHCOMMON
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.LoginServiceManager
|
||||
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
|
||||
import com.mogo.och.biz.login.bean.LoginInfo
|
||||
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
|
||||
import com.mogo.och.biz.login.net.OchCommonServiceManager
|
||||
import com.mogo.och.common.module.biz.login.LoginStatusManager
|
||||
import com.mogo.och.common.module.manager.cache.ISpCallback
|
||||
import com.mogo.och.common.module.manager.cache.OchSPManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
open class CommonLoginModel {
|
||||
|
||||
protected val TAG = M_OCHCOMMON + this.javaClass.simpleName
|
||||
|
||||
protected var mContext: Context? = null
|
||||
|
||||
open var iTaxiLoginCallback: ITaxiLoginCallback? = null
|
||||
|
||||
private val mNetWorkIntentListener = IMogoIntentListener { intentStr, _ ->
|
||||
d(TAG, "onIntentReceived = %s", intentStr)
|
||||
if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) {
|
||||
if (NetworkUtils.isConnected(mContext)
|
||||
&& AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
// 网络链接成功可以先读取本地再获取服务器
|
||||
queryCarStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val snChangeListener = object : ISpCallback {
|
||||
override fun snChange() {
|
||||
d(TAG, "sn 发生变化${OchSPManager.getSn()}")
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
queryCarStatus(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
mContext = AbsMogoApplication.getApp()
|
||||
IntentManager.getInstance()
|
||||
.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
|
||||
}
|
||||
|
||||
protected var subscribe: Disposable? = null
|
||||
|
||||
protected val loginInfoKey = "LOGININFOKEY"
|
||||
|
||||
fun hasInit(): Boolean {
|
||||
return iTaxiLoginCallback != null
|
||||
}
|
||||
|
||||
fun setiTaxiLoginCallback(iTaxiLoginCallback: ITaxiLoginCallback?) {
|
||||
d(TAG, "setiTaxiLoginCallback")
|
||||
OchSPManager.addListener(TAG, snChangeListener)
|
||||
this.iTaxiLoginCallback = iTaxiLoginCallback
|
||||
}
|
||||
|
||||
fun release() {
|
||||
d(TAG, "release")
|
||||
OchSPManager.remove(TAG)
|
||||
iTaxiLoginCallback = null
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun go2LoginInfo(data: LoginInfo?, source: String) {
|
||||
d(TAG, "设置源:${source}")
|
||||
data?.let {
|
||||
LoginServiceManager.setLoginInfo(data)
|
||||
loginSuccess(data)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 接单状态和登录状态查询
|
||||
* 1、司机端登录成功后开启2分钟定时请求登录状态
|
||||
* 2、对外提供查询登录状态
|
||||
* 3、网络状态发生变化后查询
|
||||
* 4、sn 发生变化后查询
|
||||
* 5、登录成功后主动查询
|
||||
* 6、错误重试
|
||||
* 7、错误重试
|
||||
* 8、登出后重试
|
||||
*/
|
||||
fun queryCarStatus(readCatche: Boolean = true) {
|
||||
mContext?.let {
|
||||
Log.d(TAG, "设置源:queryCarStatus")
|
||||
if (readCatche) {
|
||||
val loginInfo = LoginServiceManager.getLoginInfo()
|
||||
go2LoginInfo(loginInfo,"缓存获取")
|
||||
}
|
||||
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.data, "接口获取")
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
val map: MutableMap<String, Any> = HashMap()
|
||||
map["msg"] = "网络错误"
|
||||
MogoAnalyticUtils.track("QueryCarStatus", map)
|
||||
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.biz_login_request_error_tip))
|
||||
}
|
||||
// LoginStatusManager.setLoginError(-10012, "网络错误")
|
||||
LoginStatusManager.setLoginError(-10012, StringUtils.getString(R.string.module_och_network_mistake))
|
||||
// 依赖参数
|
||||
subscribe = Observable.timer(5, TimeUnit.SECONDS)
|
||||
.subscribe { _: Long? -> queryCarStatus(readCatche) }
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
val map: MutableMap<String, Any> = HashMap()
|
||||
map["msg"] = msg
|
||||
map["code"] = code
|
||||
MogoAnalyticUtils.track("QueryCarStatus", map)
|
||||
|
||||
LoginStatusManager.setLoginError(code, "msg:${msg}")
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
// 依赖参数
|
||||
subscribe = Observable.timer(3, TimeUnit.SECONDS)
|
||||
.subscribe { _: Long? -> queryCarStatus(readCatche) }
|
||||
// if (code == OchCommonConst.WAIT_TAKEN) {
|
||||
//
|
||||
// } else {
|
||||
// }
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun loginSuccess(data: LoginInfo?) {
|
||||
d(TAG, "loginSuccess:${LoginServiceManager.isLogin()}")
|
||||
if (LoginServiceManager.isLogin()) {
|
||||
CallerDevaToolsFuncConfigListenerManager
|
||||
SharedPrefsMgr.getInstance().putString("och_account", data?.phone)
|
||||
} else {
|
||||
SharedPrefsMgr.getInstance().putString("och_account", "")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun gotoOfflineMode() {
|
||||
FunctionBuildConfig.isOffLine = true
|
||||
var loginInfo = LoginServiceManager.getLoginInfo()
|
||||
if(loginInfo==null){
|
||||
loginInfo = LoginInfo()
|
||||
}
|
||||
LoginServiceManager.setLoginInfo(loginInfo)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
package com.mogo.och.biz.login.model
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.LoginServiceManager
|
||||
import com.mogo.och.biz.login.bean.LoginInfo
|
||||
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginF2aReqBean
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginRespBean
|
||||
import com.mogo.och.biz.login.net.OchCommonServiceManager
|
||||
import com.mogo.och.bridge.autopilot.location.OchLocationManager
|
||||
import com.mogo.och.common.module.manager.cache.OchSPManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.utils.ToastUtilsOch
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
|
||||
|
||||
/**
|
||||
* Created by pangfan on 2021/8/19
|
||||
*
|
||||
*
|
||||
* 网约车 - 出租车业务逻辑处理
|
||||
*/
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
object F2aLoginModel: CommonLoginModel() {
|
||||
|
||||
fun gotoLogin(phone: String, pwd: String) {
|
||||
mContext?.let {
|
||||
OchCommonServiceManager.gotoLoginBypwd(it, phone, pwd,
|
||||
object : OchCommonServiceCallback<LoginRespBean> {
|
||||
override fun onSuccess(data: LoginRespBean?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 登录成功需要新的值
|
||||
queryCarStatus(false)
|
||||
iTaxiLoginCallback?.loginfirstSuccess(data.data,pwd)
|
||||
} else {
|
||||
if (data != null) {
|
||||
ToastCharterUtils.showToastShort(data.msg.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_request_error_tip_unmanned))
|
||||
}
|
||||
iTaxiLoginCallback?.netErrorCallback()
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun gotoLoginByF2aCode(phone: String?, f2aCode: String) {
|
||||
mContext?.let {
|
||||
val location = OchLocationManager.getWgs02Location()
|
||||
val location4Login = LoginF2aReqBean.Location4Login(location.latitude, location.longitude,"WGS84")
|
||||
OchCommonServiceManager.gotoLoginByf2aCode(it, phone, f2aCode, location4Login,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 登录成功需要新的值
|
||||
queryCarStatus(false)
|
||||
} else {
|
||||
if (data != null) {
|
||||
ToastCharterUtils.showToastShort(data.msg.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_request_error_tip_unmanned))
|
||||
}
|
||||
iTaxiLoginCallback?.netErrorCallback()
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun gotoRestPwd(driverId:Long,pwd: String,oldPwd:String) {
|
||||
mContext?.let {
|
||||
OchCommonServiceManager.gotoRestPwd(it,driverId, pwd,oldPwd,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 登录成功需要新的值
|
||||
queryCarStatus(false)
|
||||
iTaxiLoginCallback?.restPwdSuccess()
|
||||
} else {
|
||||
if (data != null) {
|
||||
ToastCharterUtils.showToastShort(data.msg.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_request_error_tip_unmanned))
|
||||
}
|
||||
iTaxiLoginCallback?.netErrorCallback()
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Synchronized
|
||||
private fun go2LoginInfo(data: LoginInfo?, source: String) {
|
||||
d(TAG, "设置源:${source}")
|
||||
data?.let {
|
||||
LoginServiceManager.setLoginInfo(data)
|
||||
loginSuccess(data)
|
||||
}
|
||||
}
|
||||
|
||||
// 登出
|
||||
fun logout() {
|
||||
val location4Login = TaxiLogoutReqBean.Location4Login()
|
||||
OchCommonServiceManager.logout(
|
||||
mContext!!, location4Login,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
OchSPManager.remove(loginInfoKey)
|
||||
// 退出登录成功需要查询新的
|
||||
queryCarStatus(false)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.biz_login_request_error_tip))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -45,56 +45,7 @@ import java.util.concurrent.TimeUnit
|
||||
* 网约车 - 出租车业务逻辑处理
|
||||
*/
|
||||
@SuppressLint("StaticFieldLeak")
|
||||
object LoginModel {
|
||||
|
||||
private const val TAG = "${M_OCHCOMMON}LoginModel"
|
||||
private var mContext: Context? = null
|
||||
var iTaxiLoginCallback: ITaxiLoginCallback? = null
|
||||
private var subscribe: Disposable? = null
|
||||
|
||||
private val loginInfoKey = "LOGININFOKEY"
|
||||
|
||||
private val mNetWorkIntentListener = IMogoIntentListener { intentStr, _ ->
|
||||
d(TAG, "onIntentReceived = %s", intentStr)
|
||||
if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) {
|
||||
if (NetworkUtils.isConnected(mContext)
|
||||
&& AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
// 网络链接成功可以先读取本地再获取服务器
|
||||
queryCarStatus()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private val snChangeListener = object : ISpCallback {
|
||||
override fun snChange() {
|
||||
d(TAG, "sn 发生变化${OchSPManager.getSn()}")
|
||||
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
queryCarStatus(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
mContext = AbsMogoApplication.getApp()
|
||||
IntentManager.getInstance()
|
||||
.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
|
||||
}
|
||||
|
||||
fun hasInit(): Boolean {
|
||||
return iTaxiLoginCallback != null
|
||||
}
|
||||
|
||||
fun setiTaxiLoginCallback(iTaxiLoginCallback: ITaxiLoginCallback?) {
|
||||
d(TAG, "setiTaxiLoginCallback")
|
||||
OchSPManager.addListener(TAG, snChangeListener)
|
||||
LoginModel.iTaxiLoginCallback = iTaxiLoginCallback
|
||||
}
|
||||
|
||||
fun release() {
|
||||
d(TAG, "release")
|
||||
OchSPManager.remove(TAG)
|
||||
iTaxiLoginCallback = null
|
||||
}
|
||||
object LoginModel: CommonLoginModel() {
|
||||
|
||||
/**
|
||||
* 获取手机验证码
|
||||
@@ -137,7 +88,7 @@ object LoginModel {
|
||||
|
||||
}
|
||||
|
||||
fun gotoLogin(phone: String, code: String, isAutoLoginMode: Boolean) {
|
||||
fun gotoLogin(phone: String, code: String) {
|
||||
mContext?.let {
|
||||
val location = OchLocationManager.getGCJ02Location()
|
||||
val location4Login = TaxiLoginReqBean.Location4Login(location.latitude, location.longitude)
|
||||
@@ -145,12 +96,7 @@ object LoginModel {
|
||||
object : OchCommonServiceCallback<TaxiLoginRespBean> {
|
||||
override fun onSuccess(data: TaxiLoginRespBean?) {
|
||||
if (null != data && 0 == data.code) {
|
||||
// 获取验证码成功
|
||||
if (isAutoLoginMode){
|
||||
iTaxiLoginCallback?.stopAutoLogin()
|
||||
}else{
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_login_success))
|
||||
}
|
||||
// 登录成功需要新的值
|
||||
queryCarStatus(false)
|
||||
} else {
|
||||
@@ -164,12 +110,7 @@ object LoginModel {
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
if (isAutoLoginMode){
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_request_error_tip_unmanned))
|
||||
}else{
|
||||
ToastCharterUtils.showToastShort(mContext?.getString(R.string.biz_login_request_error_tip))
|
||||
}
|
||||
|
||||
}
|
||||
iTaxiLoginCallback?.netErrorCallback()
|
||||
}
|
||||
@@ -181,80 +122,6 @@ object LoginModel {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 接单状态和登录状态查询
|
||||
* 1、司机端登录成功后开启2分钟定时请求登录状态
|
||||
* 2、对外提供查询登录状态
|
||||
* 3、网络状态发生变化后查询
|
||||
* 4、sn 发生变化后查询
|
||||
* 5、登录成功后主动查询
|
||||
* 6、错误重试
|
||||
* 7、错误重试
|
||||
* 8、登出后重试
|
||||
*/
|
||||
fun queryCarStatus(readCatche: Boolean = true) {
|
||||
mContext?.let {
|
||||
Log.d(TAG, "设置源:queryCarStatus")
|
||||
if (readCatche) {
|
||||
val loginInfo = LoginServiceManager.getLoginInfo()
|
||||
go2LoginInfo(loginInfo,"缓存获取")
|
||||
}
|
||||
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.data, "接口获取")
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
val map: MutableMap<String, Any> = HashMap()
|
||||
map["msg"] = "网络错误"
|
||||
MogoAnalyticUtils.track("QueryCarStatus", map)
|
||||
|
||||
if (!NetworkUtils.isConnected(mContext)) {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.biz_login_network_error_tip))
|
||||
} else {
|
||||
ToastCharterUtils.showToastShort(mContext!!.getString(R.string.biz_login_request_error_tip))
|
||||
}
|
||||
// LoginStatusManager.setLoginError(-10012, "网络错误")
|
||||
LoginStatusManager.setLoginError(-10012, StringUtils.getString(R.string.module_och_network_mistake))
|
||||
// 依赖参数
|
||||
subscribe = Observable.timer(5, TimeUnit.SECONDS)
|
||||
.subscribe { _: Long? -> queryCarStatus(readCatche) }
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String) {
|
||||
val map: MutableMap<String, Any> = HashMap()
|
||||
map["msg"] = msg
|
||||
map["code"] = code
|
||||
MogoAnalyticUtils.track("QueryCarStatus", map)
|
||||
|
||||
LoginStatusManager.setLoginError(code, "msg:${msg}")
|
||||
ToastUtilsOch.showWithCodeMessage(code, msg)
|
||||
// 依赖参数
|
||||
subscribe = Observable.timer(3, TimeUnit.SECONDS)
|
||||
.subscribe { _: Long? -> queryCarStatus(readCatche) }
|
||||
// if (code == OchCommonConst.WAIT_TAKEN) {
|
||||
//
|
||||
// } else {
|
||||
// }
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun go2LoginInfo(data: LoginInfo?, source: String) {
|
||||
d(TAG, "设置源:${source}")
|
||||
data?.let {
|
||||
LoginServiceManager.setLoginInfo(data)
|
||||
loginSuccess(data)
|
||||
}
|
||||
}
|
||||
|
||||
// 登出
|
||||
fun logout() {
|
||||
val location4Login = TaxiLogoutReqBean.Location4Login()
|
||||
@@ -283,23 +150,4 @@ object LoginModel {
|
||||
})
|
||||
}
|
||||
|
||||
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", "")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun gotoOfflineMode() {
|
||||
FunctionBuildConfig.isOffLine = true
|
||||
var loginInfo = LoginServiceManager.getLoginInfo()
|
||||
if(loginInfo==null){
|
||||
loginInfo = LoginInfo()
|
||||
}
|
||||
LoginServiceManager.setLoginInfo(loginInfo)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.mogo.och.biz.login.model
|
||||
|
||||
import com.mogo.och.common.module.manager.EnvManager
|
||||
|
||||
object SwitchLoginModel {
|
||||
fun logout() {
|
||||
if (EnvManager.isPhoneCodeMode()) {
|
||||
F2aLoginModel.logout()
|
||||
}else{
|
||||
LoginModel.logout()
|
||||
}
|
||||
}
|
||||
|
||||
fun release() {
|
||||
LoginModel.release()
|
||||
F2aLoginModel.release()
|
||||
}
|
||||
|
||||
fun queryCarStatus(readCatche:Boolean){
|
||||
if (EnvManager.isPhoneCodeMode()) {
|
||||
F2aLoginModel.queryCarStatus(readCatche)
|
||||
}else{
|
||||
LoginModel.queryCarStatus(readCatche)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,25 +2,28 @@ package com.mogo.och.biz.login.net
|
||||
|
||||
import android.content.Context
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.env.ProjectUtils
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginReqBean
|
||||
import com.mogo.eagle.core.data.BaseData
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.network.MoGoRetrofitFactory
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginReqBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginRespBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean
|
||||
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginF2aReqBean
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginReqBean
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginRespBean
|
||||
import com.mogo.och.biz.login.bean.f2a.RestPwdReqBean
|
||||
import com.mogo.och.common.module.biz.lansocket.LoginLanPassengerSocket
|
||||
import com.mogo.och.common.module.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.manager.cache.OchSPManager
|
||||
import com.mogo.och.common.module.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.network.interceptor.transformTry
|
||||
import com.mogo.commons.env.ProjectUtils
|
||||
import com.mogo.och.common.module.manager.cache.OchSPManager
|
||||
import com.mogo.och.common.module.utils.RxUtils
|
||||
|
||||
object OchCommonServiceManager {
|
||||
|
||||
@@ -168,4 +171,64 @@ object OchCommonServiceManager {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 通过密码半登录
|
||||
* @param context
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun gotoLoginBypwd(
|
||||
context: Context, phone: String?, pwd: String?,
|
||||
callback: OchCommonServiceCallback<LoginRespBean>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "gotoLoginBycode:通过手机验证码登录:${phone}---${pwd}")
|
||||
val sn = OchSPManager.getSn()
|
||||
ochLoginServiceSaasEh.gotoLoginBypwd(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
LoginReqBean(phone, pwd, sn)
|
||||
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "login"))
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新设置密码
|
||||
* @param context
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun gotoRestPwd(
|
||||
context: Context, driverId: Long?, pwd: String?,oldPwd:String,
|
||||
callback: OchCommonServiceCallback<BaseData>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "gotoLoginBycode:重置密码")
|
||||
val sn = OchSPManager.getSn()
|
||||
ochLoginServiceSaasEh.gotoresetPwd(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
RestPwdReqBean(driverId, pwd,oldPwd)
|
||||
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoRestPwd"))
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新设置密码
|
||||
* @param context
|
||||
* @param callback
|
||||
*/
|
||||
@JvmStatic
|
||||
fun gotoLoginByf2aCode(
|
||||
context: Context, phone: String?, mfaCode: String?,
|
||||
location4Login: LoginF2aReqBean.Location4Login,
|
||||
callback: OchCommonServiceCallback<BaseData>?
|
||||
) {
|
||||
CallerLogger.d(TAG, "gotoLoginBycode:重置密码")
|
||||
val sn = OchSPManager.getSn()
|
||||
ochLoginServiceSaasEh.gotoLogByf2aCode(
|
||||
MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,
|
||||
LoginF2aReqBean(phone, mfaCode,sn,location4Login)
|
||||
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoRestPwd"))
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,6 +6,10 @@ import com.mogo.och.biz.login.bean.TaxiLoginReqBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginRespBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean;
|
||||
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean;
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginF2aReqBean;
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginReqBean;
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginRespBean;
|
||||
import com.mogo.och.biz.login.bean.f2a.RestPwdReqBean;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import retrofit2.http.Body;
|
||||
@@ -63,4 +67,45 @@ interface OchLoginServiceSaasEhApi {
|
||||
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header("appId") String appId
|
||||
, @Header("ticket") String ticket, @Query("sn") String sn);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 通过验证码登录
|
||||
*
|
||||
* @param appId
|
||||
* @param ticket
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
@Headers({"Content-type:application/json;charset=UTF-8"})
|
||||
@POST("/l4r-vehicle/api/tnt/driver/auth/v2/loginNext")
|
||||
Observable<LoginRespBean> gotoLoginBypwd(@Header("appId") String appId
|
||||
, @Header("ticket") String ticket, @Body LoginReqBean data);
|
||||
|
||||
/**
|
||||
* 通过验证码登录
|
||||
*
|
||||
* @param appId
|
||||
* @param ticket
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
@Headers({"Content-type:application/json;charset=UTF-8"})
|
||||
@POST("/l4r-vehicle/api/tnt/driver/auth/v2/resetPwd")
|
||||
Observable<BaseData> gotoresetPwd(@Header("appId") String appId
|
||||
, @Header("ticket") String ticket, @Body RestPwdReqBean data);
|
||||
|
||||
/**
|
||||
* 通过验证码登录
|
||||
*
|
||||
* @param appId
|
||||
* @param ticket
|
||||
* @param data
|
||||
* @return
|
||||
*/
|
||||
@Headers({"Content-type:application/json;charset=UTF-8"})
|
||||
@POST("/l4r-vehicle/api/tnt/driver/auth/v2/login")
|
||||
Observable<BaseData> gotoLogByf2aCode(@Header("appId") String appId
|
||||
, @Header("ticket") String ticket, @Body LoginF2aReqBean data);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@ package com.mogo.och.biz.login.presenter
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import com.mogo.commons.mvp.Presenter
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
|
||||
import com.mogo.och.biz.login.model.LoginModel
|
||||
import com.mogo.och.biz.login.ui.LoginPassengerFragment
|
||||
import com.mogo.och.common.module.manager.loop.BizLoopManager
|
||||
import com.mogo.och.common.module.manager.loop.LoopInfo
|
||||
@@ -15,7 +13,7 @@ import com.mogo.och.common.module.manager.loop.LoopInfo
|
||||
*
|
||||
* 描述
|
||||
*/
|
||||
class LoginPassengerPresenter(view: LoginPassengerFragment?) : Presenter<LoginPassengerFragment?>(view), ITaxiLoginCallback {
|
||||
class LoginPassengerPresenter(view: LoginPassengerFragment?) : Presenter<LoginPassengerFragment?>(view) {
|
||||
|
||||
private val TAG = LoginPassengerPresenter::class.java.simpleName
|
||||
|
||||
@@ -25,7 +23,6 @@ class LoginPassengerPresenter(view: LoginPassengerFragment?) : Presenter<LoginPa
|
||||
}
|
||||
|
||||
private fun initListeners() {
|
||||
LoginModel.setiTaxiLoginCallback(this)
|
||||
BizLoopManager.setLoopFunction(TAG, LoopInfo(2,::showStatus))
|
||||
}
|
||||
|
||||
|
||||
@@ -6,14 +6,10 @@ 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.Companion.M_OCHCOMMON
|
||||
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.biz.login.model.SwitchLoginModel
|
||||
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 io.reactivex.disposables.Disposable
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -21,22 +17,17 @@ import java.util.concurrent.atomic.AtomicBoolean
|
||||
*
|
||||
* 描述
|
||||
*/
|
||||
class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), ITaxiLoginCallback,
|
||||
class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view),
|
||||
ILoginCallback {
|
||||
|
||||
private var countDownDisposable: Disposable? = null
|
||||
|
||||
private val TAG = M_OCHCOMMON+LoginPresenter::class.java.simpleName
|
||||
|
||||
private var autoLoginDisposable: Disposable? = null
|
||||
private var isAutoLoginMode = AtomicBoolean(false) // 标记是否处于自动登录模式
|
||||
init {
|
||||
initListeners()
|
||||
CallerLogger.d(TAG, "登录-Init")
|
||||
}
|
||||
|
||||
private fun initListeners() {
|
||||
LoginModel.setiTaxiLoginCallback(this)
|
||||
LoginStatusManager.addListener(TAG,this)
|
||||
}
|
||||
|
||||
@@ -53,33 +44,10 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(view), IT
|
||||
CallerLogger.d(TAG, "登录-初始化")
|
||||
}
|
||||
|
||||
|
||||
|
||||
override fun onDestroy(owner: LifecycleOwner) {
|
||||
super.onDestroy(owner)
|
||||
LoginModel.release()
|
||||
countDownDisposable?.let {
|
||||
if (!it.isDisposed) {
|
||||
it.dispose()
|
||||
}
|
||||
}
|
||||
stopAutoLogin()
|
||||
SwitchLoginModel.release()
|
||||
|
||||
}
|
||||
|
||||
override fun stopAutoLogin() {
|
||||
isAutoLoginMode.set(false)
|
||||
autoLoginDisposable?.let {
|
||||
if (!it.isDisposed) {
|
||||
it.dispose()
|
||||
}
|
||||
}
|
||||
autoLoginDisposable = null
|
||||
OchChainLogManager.writeChainLog(TAG, "登录成功,停止自动登录循环")
|
||||
}
|
||||
|
||||
override fun netErrorCallback() {
|
||||
if (!isAutoLoginMode.get()) {
|
||||
mView?.showLoginOffLineModel()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,9 +33,6 @@ import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.LoginConst
|
||||
import com.mogo.och.biz.login.callback.ILoginViewCallback
|
||||
import com.mogo.och.biz.login.presenter.LoginPresenter
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.wigets.dialog.CommonDialogStatus
|
||||
import com.mogo.skin.utils.SkinResources
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
|
||||
@@ -206,14 +203,6 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
|
||||
biz_login_svp?.setBackgroundResource(R.drawable.biz_login_bg_bus_end)
|
||||
}
|
||||
}
|
||||
// if (AppIdentityModeUtils.getCockpitType() == CockpitType.UNMANNED) {
|
||||
// cl_welcome_info?.visibility = View.VISIBLE
|
||||
// UiThreadHandler.postDelayed({
|
||||
// mPresenter?.autoLogin()
|
||||
// }, 2_000, UiThreadHandler.MODE.QUEUE)
|
||||
// } else {
|
||||
// cl_login_info?.visibility = View.VISIBLE
|
||||
// }
|
||||
login_view_info?.visibility = View.VISIBLE
|
||||
}else{
|
||||
viewColdStart.setColdStartResultListener(object: ColdStartView.ColdStartResultListener{
|
||||
@@ -302,26 +291,4 @@ class LoginFragment : MvpFragment<LoginFragment?, LoginPresenter?>(), ILoginView
|
||||
viewColdStart.setColdStartResultListener(null)
|
||||
}
|
||||
|
||||
fun showLoginOffLineModel() {
|
||||
context?.let {
|
||||
val builder = CommonDialogStatus.Builder()
|
||||
val closeLineConfirmDialog = builder
|
||||
.title(ResourcesUtils.getString(R.string.biz_login_net_error_title))
|
||||
.tips(ResourcesUtils.getString(R.string.biz_login_net_error_tip))
|
||||
.confirmStr(ResourcesUtils.getString(R.string.biz_login_offline_login))
|
||||
.status(CommonDialogStatus.Status.neterror)
|
||||
.build(it)
|
||||
closeLineConfirmDialog.setClickListener(object : CommonDialogStatus.ClickListener {
|
||||
override fun confirm() {
|
||||
|
||||
login_view_info?.gotoLogin4Fragment(LoginConst.OFFLINEPHONE, LoginConst.OFFLINECODE)
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
closeLineConfirmDialog.dismiss()
|
||||
}
|
||||
})
|
||||
closeLineConfirmDialog.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,11 +13,14 @@ import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.LoginConst
|
||||
import com.mogo.och.biz.login.ui.LoginFragment
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.wigets.dialog.CommonDialogStatus
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_acbtn_login
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_acet_phone_code_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_ace_login_phone_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_acet_phone_code_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_actv_login_get_code
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_actv_welcome_login_title
|
||||
|
||||
@@ -107,10 +110,6 @@ class LoginView : ConstraintLayout, LoginViewModel.IErrorInfoViewCallback {
|
||||
}
|
||||
}
|
||||
|
||||
fun gotoLogin4Fragment(phone: String, code: String){
|
||||
viewModel?.gotoLogin(phone, code)
|
||||
}
|
||||
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
@@ -128,10 +127,6 @@ class LoginView : ConstraintLayout, LoginViewModel.IErrorInfoViewCallback {
|
||||
|
||||
}
|
||||
|
||||
fun getBottomInfo(){
|
||||
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
initView()
|
||||
@@ -170,4 +165,26 @@ class LoginView : ConstraintLayout, LoginViewModel.IErrorInfoViewCallback {
|
||||
}
|
||||
}
|
||||
|
||||
override fun showLoginOffLineModel() {
|
||||
context?.let {
|
||||
val builder = CommonDialogStatus.Builder()
|
||||
val closeLineConfirmDialog = builder
|
||||
.title(ResourcesUtils.getString(R.string.biz_login_net_error_title))
|
||||
.tips(ResourcesUtils.getString(R.string.biz_login_net_error_tip))
|
||||
.confirmStr(ResourcesUtils.getString(R.string.biz_login_offline_login))
|
||||
.status(CommonDialogStatus.Status.neterror)
|
||||
.build(it)
|
||||
closeLineConfirmDialog.setClickListener(object : CommonDialogStatus.ClickListener {
|
||||
override fun confirm() {
|
||||
viewModel?.gotoLogin(LoginConst.OFFLINEPHONE, LoginConst.OFFLINECODE)
|
||||
}
|
||||
|
||||
override fun cancel() {
|
||||
closeLineConfirmDialog.dismiss()
|
||||
}
|
||||
})
|
||||
closeLineConfirmDialog.show()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,11 +27,6 @@ class LoginViewModel : ViewModel(), ITaxiLoginCallback, ILoginCallback {
|
||||
|
||||
private var countDownDisposable: Disposable? = null
|
||||
|
||||
|
||||
init {
|
||||
|
||||
}
|
||||
|
||||
fun setDistanceCallback(viewCallback: IErrorInfoViewCallback) {
|
||||
this.viewCallback = viewCallback
|
||||
initListeners()
|
||||
@@ -69,7 +64,7 @@ class LoginViewModel : ViewModel(), ITaxiLoginCallback, ILoginCallback {
|
||||
gotoOfflineMode()
|
||||
return
|
||||
}
|
||||
LoginModel.gotoLogin(phone, code, false)
|
||||
LoginModel.gotoLogin(phone, code)
|
||||
viewCallback?.closeSoftInput()
|
||||
}
|
||||
|
||||
@@ -112,10 +107,16 @@ class LoginViewModel : ViewModel(), ITaxiLoginCallback, ILoginCallback {
|
||||
LoginModel.gotoOfflineMode()
|
||||
}
|
||||
|
||||
override fun netErrorCallback() {
|
||||
super.netErrorCallback()
|
||||
viewCallback?.showLoginOffLineModel()
|
||||
}
|
||||
|
||||
interface IErrorInfoViewCallback {
|
||||
fun inputPhoneError()
|
||||
fun closeSoftInput()
|
||||
fun setCountDownText(text: String, enable: Boolean)
|
||||
fun showLoginOffLineModel()
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.mogo.och.biz.login.ui.loginf2a
|
||||
|
||||
import android.content.Context
|
||||
import android.os.SystemClock
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
@@ -11,15 +13,35 @@ import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.findViewTreeViewModelStoreOwner
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ImageUtils
|
||||
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.ui.LoginFragment
|
||||
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_acbtn_login
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_acet_phone_code_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_ace_login_phone_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_actv_login_get_code
|
||||
import kotlinx.android.synthetic.main.biz_login_view_old.view.biz_actv_welcome_login_title
|
||||
import com.mogo.och.common.module.utils.createQRCode
|
||||
import com.mogo.och.common.module.utils.createQRCodeWithPicture
|
||||
import com.mogo.skin.utils.SkinResources
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_f2a_code
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_input_number_1
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_input_number_2
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_input_number_3
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_input_number_4
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_input_number_5
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.acet_input_number_6
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.aciv_get_f2a_code
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_acbtn_f2a_login_first
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_acbtn_f2a_login_normal
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_acbtn_login
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_acbtn_reset_passwrod
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_ace_login_phone_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_acet_phone_pwd_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_actv_welcome_login_title
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_reset_password_first_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.biz_reset_password_secode_value
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.group_bind_sec_code
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.group_f2a_login
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.group_password_login
|
||||
import kotlinx.android.synthetic.main.biz_login_view_f2a.view.group_reset_password
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
|
||||
class LoginF2aView : ConstraintLayout, LoginF2aViewModel.IErrorInfoViewCallback {
|
||||
@@ -52,20 +74,24 @@ class LoginF2aView : ConstraintLayout, LoginF2aViewModel.IErrorInfoViewCallback
|
||||
private fun initListener(){
|
||||
biz_acbtn_login.onClick {
|
||||
val phone = biz_ace_login_phone_value.text.toString()
|
||||
val code = biz_acet_phone_code_value.text.toString()
|
||||
viewModel?.gotoLogin(phone, code)
|
||||
val pwd = biz_acet_phone_pwd_value.text.toString()
|
||||
viewModel?.gotoLogin(phone, pwd)
|
||||
}
|
||||
|
||||
biz_acbtn_reset_passwrod.onClick {
|
||||
val pwd = biz_reset_password_first_value.text.toString()
|
||||
val pwdSecod = biz_reset_password_secode_value.text.toString()
|
||||
viewModel?.gotoRestPwd(pwd,pwdSecod)
|
||||
}
|
||||
|
||||
biz_acbtn_f2a_login_first.onClick {
|
||||
val f2aCode = acet_f2a_code.text.toString()
|
||||
viewModel?.gotoLogin4F2a(f2aCode)
|
||||
}
|
||||
|
||||
biz_actv_welcome_login_title.setOnClickListener {
|
||||
continuousClick()
|
||||
}
|
||||
biz_actv_login_get_code.setOnClickListener {
|
||||
OchChainLogManager.writeChainLog("登录页面","点击获取验证码")
|
||||
if(viewModel==null){
|
||||
OchChainLogManager.writeChainLog("司机登录页面","mPresenter=${viewModel}")
|
||||
}else{
|
||||
viewModel?.getPhoneCode(biz_ace_login_phone_value.text.toString())
|
||||
}
|
||||
}
|
||||
|
||||
biz_ace_login_phone_value.addTextChangedListener {
|
||||
it?.let { itEditable ->
|
||||
@@ -74,6 +100,43 @@ class LoginF2aView : ConstraintLayout, LoginF2aViewModel.IErrorInfoViewCallback
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val etList = listOf(acet_input_number_1, acet_input_number_2, acet_input_number_3, acet_input_number_4, acet_input_number_5, acet_input_number_6)
|
||||
|
||||
etList.forEachIndexed { index, editText ->
|
||||
editText.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
|
||||
|
||||
override fun afterTextChanged(s: Editable?) {
|
||||
if (!s.isNullOrEmpty()) {
|
||||
// 输入了内容,跳到下一格
|
||||
if (index < etList.size - 1) {
|
||||
etList[index + 1].requestFocus()
|
||||
} else {
|
||||
// 最后一格,收集验证码
|
||||
val code = etList.joinToString("") { it.text.toString() }
|
||||
}
|
||||
} else {
|
||||
// 删除了内容,跳到上一格
|
||||
if (index > 0) {
|
||||
etList[index - 1].requestFocus()
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
biz_acbtn_f2a_login_normal.onClick {
|
||||
val stringBuilder = StringBuilder()
|
||||
etList.forEach {
|
||||
stringBuilder.append(it.text)
|
||||
}
|
||||
if(stringBuilder.length==6){
|
||||
viewModel?.gotoLogin4F2a(stringBuilder.toString())
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
@@ -91,7 +154,7 @@ class LoginF2aView : ConstraintLayout, LoginF2aViewModel.IErrorInfoViewCallback
|
||||
mHits[mHits.size - 1] = SystemClock.uptimeMillis()
|
||||
if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
|
||||
mHits = LongArray(COUNTS) //重新初始化数组
|
||||
viewModel?.gotoLogin("13288888888", "8888")
|
||||
viewModel?.gotoLogin4Code("13288888888", "8888")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,6 +185,11 @@ class LoginF2aView : ConstraintLayout, LoginF2aViewModel.IErrorInfoViewCallback
|
||||
viewModel?.setDistanceCallback(this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
|
||||
}
|
||||
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
@@ -160,14 +228,42 @@ class LoginF2aView : ConstraintLayout, LoginF2aViewModel.IErrorInfoViewCallback
|
||||
KeyboardUtils.hideSoftInput(ActivityUtils.getTopActivity())
|
||||
}
|
||||
|
||||
override fun setCountDownText(text: String, enable: Boolean) {
|
||||
if (enable) {
|
||||
biz_actv_login_get_code.setText(R.string.biz_login_get_code)
|
||||
biz_actv_login_get_code.isEnabled = true
|
||||
} else {
|
||||
biz_actv_login_get_code.text = text
|
||||
biz_actv_login_get_code.isEnabled = false
|
||||
override fun showLoginView() {
|
||||
group_password_login.visibility = VISIBLE
|
||||
group_reset_password.visibility = GONE
|
||||
group_bind_sec_code.visibility = GONE
|
||||
group_f2a_login.visibility = GONE
|
||||
}
|
||||
|
||||
override fun showRestPassword() {
|
||||
group_password_login.visibility = GONE
|
||||
group_reset_password.visibility = VISIBLE
|
||||
group_bind_sec_code.visibility = GONE
|
||||
group_f2a_login.visibility = GONE
|
||||
}
|
||||
|
||||
override fun showF2aLoginViewSecod() {
|
||||
group_password_login.visibility = GONE
|
||||
group_reset_password.visibility = GONE
|
||||
group_bind_sec_code.visibility = GONE
|
||||
group_f2a_login.visibility = VISIBLE
|
||||
}
|
||||
|
||||
override fun showQrLoginView(otpAuthUrl: String?) {
|
||||
group_password_login.visibility = GONE
|
||||
group_reset_password.visibility = GONE
|
||||
group_bind_sec_code.visibility = VISIBLE
|
||||
group_f2a_login.visibility = GONE
|
||||
otpAuthUrl?.let {
|
||||
val qrCenterLogoDrawable =
|
||||
SkinResources.getInstance().getDrawable(R.drawable.icon_qr_center_logo)
|
||||
val qrCenterLogoBitmap = ImageUtils.drawable2Bitmap(qrCenterLogoDrawable)
|
||||
val bmQr = createQRCodeWithPicture(qrCenterLogoBitmap,otpAuthUrl, AutoSizeUtils.dp2px(context, 360f),
|
||||
AutoSizeUtils.dp2px(context, 360f), true
|
||||
)
|
||||
aciv_get_f2a_code.setImageBitmap(bmQr)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,32 +1,31 @@
|
||||
package com.mogo.och.biz.login.ui.loginf2a
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.util.Md5Util
|
||||
import com.mogo.eagle.core.utilcode.util.RegexUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.biz.R
|
||||
import com.mogo.och.biz.login.LoginConst
|
||||
import com.mogo.och.biz.login.bean.f2a.LoginRespBean
|
||||
import com.mogo.och.biz.login.bean.f2a.RestPwdRespBean
|
||||
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
|
||||
import com.mogo.och.biz.login.model.F2aLoginModel
|
||||
import com.mogo.och.biz.login.model.LoginModel
|
||||
import com.mogo.och.biz.login.ui.debugview.BusinessViewModel
|
||||
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.utils.CallerLoggerUtils
|
||||
import com.mogo.och.common.module.utils.ResourcesUtils
|
||||
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
|
||||
import io.reactivex.Observable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class LoginF2aViewModel : ViewModel(), ITaxiLoginCallback, ILoginCallback {
|
||||
|
||||
private val TAG = BusinessViewModel::class.java.simpleName
|
||||
private val TAG = LoginF2aViewModel::class.java.simpleName
|
||||
|
||||
private var viewCallback: IErrorInfoViewCallback? = null
|
||||
|
||||
private var countDownDisposable: Disposable? = null
|
||||
|
||||
private var loginRespBean: LoginRespBean.Result?=null;
|
||||
private var oldPwd: String?=null;
|
||||
|
||||
init {
|
||||
|
||||
@@ -39,21 +38,44 @@ class LoginF2aViewModel : ViewModel(), ITaxiLoginCallback, ILoginCallback {
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
CallerLogger.d(TAG,"LoginF2aViewModel:onCleared")
|
||||
this.viewCallback = null
|
||||
countDownDisposable?.let {
|
||||
if (!it.isDisposed) {
|
||||
it.dispose()
|
||||
}
|
||||
}
|
||||
F2aLoginModel.setiTaxiLoginCallback(null)
|
||||
LoginStatusManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
private fun initListeners() {
|
||||
LoginModel.setiTaxiLoginCallback(this)
|
||||
CallerLogger.d(TAG,"LoginF2aViewModel:initListeners")
|
||||
F2aLoginModel.setiTaxiLoginCallback(this)
|
||||
LoginStatusManager.addListener(TAG,this)
|
||||
}
|
||||
|
||||
fun gotoLogin(phone: String, code: String) {
|
||||
if(!LoginModel.hasInit()){
|
||||
fun gotoRestPwd(pwd: String, pwdSecod: String) {
|
||||
if(!F2aLoginModel.hasInit()){
|
||||
initListeners()
|
||||
}
|
||||
if(pwd!=pwdSecod){
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_reset_passwrod_different)
|
||||
return
|
||||
}
|
||||
if(pwd.isBlank()){
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_reset_passwrod_non_input)
|
||||
return
|
||||
}
|
||||
if(pwd.length<14||pwd.length>20){
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_reset_passwrod_non_compliant)
|
||||
return
|
||||
}
|
||||
loginRespBean?.let {
|
||||
oldPwd?.let { old->
|
||||
val mD5Result = Md5Util.getMD5Result(pwd)
|
||||
F2aLoginModel.gotoRestPwd(it.driverId,mD5Result,old)
|
||||
}
|
||||
}
|
||||
viewCallback?.closeSoftInput()
|
||||
}
|
||||
fun gotoLogin(phone: String, pwd: String) {
|
||||
if(!F2aLoginModel.hasInit()){
|
||||
initListeners()
|
||||
}
|
||||
if (!RegexUtils.isMobileExact(phone)) {
|
||||
@@ -61,61 +83,77 @@ class LoginF2aViewModel : ViewModel(), ITaxiLoginCallback, ILoginCallback {
|
||||
viewCallback?.inputPhoneError()
|
||||
return
|
||||
}
|
||||
if(code.isBlank()||code.length<4){
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_code_error)
|
||||
if(pwd.isBlank()){
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_pwd_error)
|
||||
return
|
||||
}
|
||||
if(phone== LoginConst.OFFLINEPHONE&&code== LoginConst.OFFLINECODE){
|
||||
if(phone== LoginConst.OFFLINEPHONE&&pwd== LoginConst.OFFLINECODE){
|
||||
gotoOfflineMode()
|
||||
return
|
||||
}
|
||||
LoginModel.gotoLogin(phone, code, false)
|
||||
val mD5Result = Md5Util.getMD5Result(pwd)
|
||||
F2aLoginModel.gotoLogin(phone,mD5Result)
|
||||
viewCallback?.closeSoftInput()
|
||||
}
|
||||
|
||||
fun getPhoneCode(phone: String) {
|
||||
OchChainLogManager.writeChainLog("登录页面","获取验证码${phone}")
|
||||
if(!LoginModel.hasInit()){
|
||||
OchChainLogManager.writeChainLog("登录页面","LoginModel没有初始化去初始化")
|
||||
initListeners()
|
||||
}
|
||||
if (!RegexUtils.isMobileExact(phone)) {
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_phone_error)
|
||||
viewCallback?.inputPhoneError()
|
||||
OchChainLogManager.writeChainLog("登录页面","获取验证码 手机号输入错误")
|
||||
fun gotoLogin4F2a(f2aCode: String) {
|
||||
if(f2aCode.length!=6){
|
||||
ToastCharterUtils.showToastShort(R.string.biz_login_code_error)
|
||||
return
|
||||
}
|
||||
LoginModel.getPhoneCode(phone)
|
||||
loginRespBean?.let {
|
||||
F2aLoginModel.gotoLoginByF2aCode(it.phone,f2aCode)
|
||||
}
|
||||
|
||||
override fun getPhoneCodeSuccess() {
|
||||
super.getPhoneCodeSuccess()
|
||||
val countDownSeconds = 60L;
|
||||
countDownDisposable = Observable.intervalRange(0, countDownSeconds, 0, 1, TimeUnit.SECONDS)
|
||||
.map { aLong -> countDownSeconds - aLong }
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
viewCallback?.setCountDownText("${it}s",false)
|
||||
CallerLogger.d(TAG, "倒计时:$it")
|
||||
}, {
|
||||
CallerLogger.d(TAG, "倒计时onError:${it}")
|
||||
it.printStackTrace()
|
||||
viewCallback?.setCountDownText(AbsMogoApplication.getApp().getString(R.string.biz_login_get_code),true)
|
||||
}, {
|
||||
CallerLogger.d(TAG, "倒计时onComplete")
|
||||
viewCallback?.setCountDownText(AbsMogoApplication.getApp().getString(R.string.biz_login_get_code),true)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
override fun loginfirstSuccess(data: LoginRespBean.Result?,oldPwd:String) {
|
||||
data?.let {
|
||||
loginRespBean = it
|
||||
this.oldPwd = oldPwd
|
||||
if (it.needInitPassword) {
|
||||
// 修改密码去
|
||||
viewCallback?.showRestPassword()
|
||||
}else{
|
||||
if(it.isPasswordExpired){// 已经超过365天了
|
||||
// 修改密码去
|
||||
viewCallback?.showRestPassword()
|
||||
return
|
||||
}
|
||||
if(it.isPasswordExpiringSoon){// 还有特定日期就超过365天
|
||||
ToastUtils.showShort(ResourcesUtils.getString(R.string.biz_login_password_will_out_day))
|
||||
}
|
||||
if(it.isFirstLogin){
|
||||
viewCallback?.showQrLoginView(it.otpAuthUrl)
|
||||
}else{
|
||||
viewCallback?.showF2aLoginViewSecod()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun restPwdSuccess() {
|
||||
loginRespBean = null
|
||||
oldPwd = null
|
||||
viewCallback?.showLoginView()
|
||||
}
|
||||
|
||||
private fun gotoOfflineMode() {
|
||||
LoginModel.gotoOfflineMode()
|
||||
F2aLoginModel.gotoOfflineMode()
|
||||
}
|
||||
|
||||
fun gotoLogin4Code(phone: String, code: String) {
|
||||
LoginModel.gotoLogin(phone,code)
|
||||
}
|
||||
|
||||
interface IErrorInfoViewCallback {
|
||||
fun inputPhoneError()
|
||||
fun closeSoftInput()
|
||||
fun setCountDownText(text: String, enable: Boolean)
|
||||
fun showRestPassword()
|
||||
fun showF2aLoginViewSecod()
|
||||
fun showQrLoginView(otpAuthUrl: String?)
|
||||
fun showLoginView()
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.mogo.och.biz.login.ui.loginswitch
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import com.mogo.och.biz.login.ui.login.LoginView
|
||||
import com.mogo.och.biz.login.ui.loginf2a.LoginF2aView
|
||||
import com.mogo.och.common.module.manager.EnvManager
|
||||
import com.mogo.och.common.module.manager.transform.OchTransform
|
||||
import com.mogo.och.common.module.manager.transform.OchTransformDispatch
|
||||
|
||||
|
||||
class LoginSwitchView : FrameLayout, OchTransformDispatch {
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
|
||||
|
||||
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
|
||||
context,
|
||||
attributeSet,
|
||||
defStyleAttr
|
||||
)
|
||||
|
||||
constructor(
|
||||
context: Context,
|
||||
attributeSet: AttributeSet,
|
||||
defStyleAttr: Int,
|
||||
defStyleRes: Int
|
||||
) : super(context, attributeSet, defStyleAttr, defStyleRes)
|
||||
|
||||
companion object {
|
||||
val TAG = LoginSwitchView::class.java.simpleName
|
||||
}
|
||||
|
||||
private var loginView:LoginView?=null
|
||||
private var loginF2aView:LoginF2aView?=null
|
||||
|
||||
override fun onLoginModeChange() {
|
||||
super.onLoginModeChange()
|
||||
loadView()
|
||||
}
|
||||
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
OchTransform.addListener(TAG,this)
|
||||
super.onAttachedToWindow()
|
||||
loadView()
|
||||
}
|
||||
|
||||
private fun loadView(){
|
||||
if (EnvManager.isPhoneCodeMode()) {
|
||||
handleLoginView(LoginView::class.java, ::loginView){
|
||||
this.loginView = it
|
||||
}
|
||||
} else {
|
||||
handleLoginView(LoginF2aView::class.java, ::loginF2aView){
|
||||
loginF2aView = it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 统一处理
|
||||
private fun <T : View> handleLoginView(
|
||||
viewClass: Class<T>,
|
||||
getView: () -> T?,
|
||||
setView: (T) -> Unit
|
||||
) {
|
||||
val child = getChildAt(0)
|
||||
if (child != null && viewClass.isInstance(child)) return
|
||||
|
||||
removeAllViews()
|
||||
|
||||
val view = getView() ?: run {
|
||||
// 关键修复:两个 View 都统一强转为泛型 T
|
||||
val newView: T = if (viewClass == LoginView::class.java) {
|
||||
LoginView(context) as T
|
||||
} else {
|
||||
LoginF2aView(context) as T
|
||||
}
|
||||
setView(newView)
|
||||
newView
|
||||
}
|
||||
|
||||
addViewSafely(view)
|
||||
}
|
||||
|
||||
// 安全添加,必加!防止崩溃
|
||||
private fun addViewSafely(view: View) {
|
||||
(view.parent as? ViewGroup)?.removeView(view)
|
||||
addView(view)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
OchTransform.removeListener(TAG)
|
||||
}
|
||||
|
||||
|
||||
override fun onVisibilityAggregated(isVisible: Boolean) {
|
||||
super.onVisibilityAggregated(isVisible)
|
||||
|
||||
}
|
||||
|
||||
init {
|
||||
try {
|
||||
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,7 +15,7 @@
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<com.mogo.och.biz.login.ui.login.LoginView
|
||||
<com.mogo.och.biz.login.ui.loginswitch.LoginSwitchView
|
||||
android:id="@+id/login_view_info"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
@@ -38,8 +38,8 @@
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/group_password_login"
|
||||
android:visibility="gone"
|
||||
app:constraint_referenced_ids="biz_actv_welcome_login_title,actv_login_phone_title,biz_ace_login_phone_value,actv_phone_code_title,v_phone_code_bg,biz_acet_phone_code_value,biz_acbtn_login"
|
||||
android:visibility="visible"
|
||||
app:constraint_referenced_ids="biz_actv_welcome_login_title,actv_login_phone_title,biz_ace_login_phone_value,actv_phone_code_title,v_phone_code_bg,biz_acet_phone_pwd_value,biz_acbtn_login"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/group_f2a_login"
|
||||
android:visibility="visible"
|
||||
android:visibility="gone"
|
||||
app:constraint_referenced_ids="biz_actv_f2a_login_title_big,biz_actv_f2a_login_title,biz_actv_f2a_login_title_samll,acet_input_number_1,acet_input_number_2,acet_input_number_3,acet_input_number_4,acet_input_number_5,acet_input_number_6,biz_acbtn_f2a_login_normal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
@@ -128,23 +128,22 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/actv_phone_code_title" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/biz_acet_phone_code_value"
|
||||
android:id="@+id/biz_acet_phone_pwd_value"
|
||||
android:layout_width="@dimen/dp_760"
|
||||
android:layout_height="136dp"
|
||||
android:background="@null"
|
||||
android:gravity="center_vertical"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="textPassword"
|
||||
android:maxLength="4"
|
||||
android:maxLines="1"
|
||||
android:hint="@string/biz_login_pwd_hint_text"
|
||||
android:paddingStart="30dp"
|
||||
android:textColor="@color/white"
|
||||
android:textColorHint="@color/white"
|
||||
android:textSize="@dimen/dp_40"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/v_phone_code_bg"
|
||||
app:layout_constraintStart_toStartOf="@+id/v_phone_code_bg"
|
||||
app:layout_constraintTop_toTopOf="@+id/v_phone_code_bg"
|
||||
tools:text="1881" />
|
||||
app:layout_constraintTop_toTopOf="@+id/v_phone_code_bg" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatButton
|
||||
android:id="@+id/biz_acbtn_login"
|
||||
@@ -195,8 +194,8 @@
|
||||
android:background="@drawable/biz_login_phone_normal"
|
||||
android:gravity="center_vertical"
|
||||
android:hint="@string/biz_login_reset_password_first_text_hide"
|
||||
android:inputType="numberSigned"
|
||||
android:maxLength="11"
|
||||
android:inputType="text"
|
||||
android:maxLength="20"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="30dp"
|
||||
android:textColor="@color/white"
|
||||
@@ -224,8 +223,8 @@
|
||||
android:background="@drawable/biz_login_phone_normal"
|
||||
android:gravity="center_vertical"
|
||||
android:hint="@string/biz_login_reset_password_first_text_hide"
|
||||
android:inputType="numberSigned"
|
||||
android:maxLength="11"
|
||||
android:inputType="text"
|
||||
android:maxLength="20"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="30dp"
|
||||
android:textColor="@color/white"
|
||||
@@ -271,8 +270,9 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:background="@color/white"
|
||||
android:layout_marginTop="@dimen/dp_30"
|
||||
android:padding="@dimen/dp_10"
|
||||
android:layout_width="@dimen/dp_369"
|
||||
android:layout_height="@dimen/dp_360"/>
|
||||
android:layout_height="@dimen/dp_369"/>
|
||||
|
||||
|
||||
<View
|
||||
@@ -293,7 +293,7 @@
|
||||
android:gravity="center_vertical"
|
||||
android:imeOptions="actionDone"
|
||||
android:inputType="numberSigned"
|
||||
android:maxLength="4"
|
||||
android:maxLength="6"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="30dp"
|
||||
android:textColor="@color/white"
|
||||
@@ -375,6 +375,9 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/biz_actv_f2a_login_title_samll"
|
||||
app:layout_constraintEnd_toStartOf="@+id/acet_input_number_2"
|
||||
app:layout_constraintHorizontal_chainStyle="packed"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/dp_40"
|
||||
android:textColor="@color/white"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_width="@dimen/dp_110"
|
||||
@@ -387,6 +390,9 @@
|
||||
app:layout_constraintEnd_toStartOf="@+id/acet_input_number_3"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/dp_40"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toBottomOf="@+id/biz_actv_f2a_login_title_samll"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_width="@dimen/dp_110"
|
||||
@@ -399,11 +405,13 @@
|
||||
app:layout_constraintEnd_toStartOf="@+id/acet_input_number_4"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/dp_40"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toBottomOf="@+id/biz_actv_f2a_login_title_samll"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_width="@dimen/dp_110"
|
||||
android:layout_height="@dimen/dp_135"/>
|
||||
|
||||
<androidx.appcompat.widget.AppCompatEditText
|
||||
android:id="@+id/acet_input_number_4"
|
||||
android:background="@drawable/biz_login_phone_normal"
|
||||
@@ -411,6 +419,9 @@
|
||||
app:layout_constraintEnd_toStartOf="@+id/acet_input_number_5"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/dp_40"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toBottomOf="@+id/biz_actv_f2a_login_title_samll"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_width="@dimen/dp_110"
|
||||
@@ -423,6 +434,9 @@
|
||||
app:layout_constraintEnd_toStartOf="@+id/acet_input_number_6"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:layout_marginEnd="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/dp_40"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toBottomOf="@+id/biz_actv_f2a_login_title_samll"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_width="@dimen/dp_110"
|
||||
@@ -434,6 +448,9 @@
|
||||
app:layout_constraintStart_toEndOf="@+id/acet_input_number_5"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:gravity="center"
|
||||
android:textSize="@dimen/dp_40"
|
||||
android:textColor="@color/white"
|
||||
app:layout_constraintTop_toBottomOf="@+id/biz_actv_f2a_login_title_samll"
|
||||
android:layout_marginTop="@dimen/dp_39"
|
||||
android:layout_width="@dimen/dp_110"
|
||||
|
||||
@@ -10,15 +10,21 @@
|
||||
<string name="biz_login_login_success">Login successful</string>
|
||||
<string name="biz_login_phone_error">Please enter a correct phone number</string>
|
||||
<string name="biz_login_code_error">Please enter a correct verification code</string>
|
||||
<string name="biz_login_pwd_error">Please enter a correct verification password</string>
|
||||
<string name="biz_login_phone_hint_text">Please enter phone number</string>
|
||||
<string name="biz_login_get_phone_title">Please enter phone number</string>
|
||||
<string name="biz_login_pwd_hint_text">Please enter password</string>
|
||||
|
||||
|
||||
<string name="biz_login_reset_password_title_big">Set a new password</string>
|
||||
<string name="biz_login_reset_password_title">Please set a new password</string>
|
||||
<string name="biz_login_reset_password_first_text_hide">Positions 14-20, containing numbers and English letters (upper and lower case)</string>
|
||||
<string name="biz_login_reset_password_second_title">请确认新密码</string>
|
||||
<string name="biz_login_reset_password_next">Next step</string>
|
||||
|
||||
<string name="biz_login_password_will_out_day">The password is about to expire, and it needs to be changed</string>
|
||||
<string name="biz_login_reset_passwrod_different">The passwords entered twice do not match. Please re-enter</string>
|
||||
<string name="biz_login_reset_passwrod_non_compliant">The password does not meet the requirements. Please re-enter</string>
|
||||
<string name="biz_login_reset_passwrod_non_input">Please enter a new password</string>
|
||||
|
||||
<string name="biz_login_f2a_title_big">Welcome to sign in</string>
|
||||
<string name="biz_login_f2a_title">Please open the MFA authenticator and enter the 6-digit verification code. If you are unable to obtain the verification code, please contact the administrator</string>
|
||||
|
||||
@@ -10,14 +10,20 @@
|
||||
<string name="biz_login_login_success">登录成功</string>
|
||||
<string name="biz_login_phone_error">请输入正确的手机号</string>
|
||||
<string name="biz_login_code_error">请输入正确的验证码</string>
|
||||
<string name="biz_login_pwd_error">请输入正确的密码</string>
|
||||
<string name="biz_login_phone_hint_text">请输入手机号</string>
|
||||
<string name="biz_login_get_phone_title">请输入手机号</string>
|
||||
<string name="biz_login_pwd_hint_text">请输入密码</string>
|
||||
|
||||
<string name="biz_login_reset_password_title_big">设置新密码</string>
|
||||
<string name="biz_login_reset_password_title">请设置新密码</string>
|
||||
<string name="biz_login_reset_password_first_text_hide">14-20位,包含数字、英文大小写</string>
|
||||
<string name="biz_login_reset_password_second_title">请确认新密码</string>
|
||||
<string name="biz_login_reset_password_next">下一步</string>
|
||||
<string name="biz_login_password_will_out_day">密码即将到期,需更改密码</string>
|
||||
<string name="biz_login_reset_passwrod_different">两次输入的密码不一致,请重新输入</string>
|
||||
<string name="biz_login_reset_passwrod_non_compliant">密码不符合要求,请重新输入</string>
|
||||
<string name="biz_login_reset_passwrod_non_input">请输入新密码</string>
|
||||
|
||||
|
||||
<string name="biz_login_f2a_title_big">欢迎登录</string>
|
||||
|
||||
@@ -54,6 +54,10 @@ object EnvManager {
|
||||
return isT1T2() && AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)
|
||||
}
|
||||
|
||||
fun isPhoneCodeMode():Boolean{
|
||||
return FunctionBuildConfig.loginMode==0
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -30,4 +30,10 @@ object OchTransform : CallerBase<OchTransformDispatch>(), IOchBizFunctionCall4Ea
|
||||
it.value.setVideoView(target)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLoginStateChange() {
|
||||
M_LISTENERS.forEach{
|
||||
it.value.onLoginModeChange()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,4 +6,5 @@ interface OchTransformDispatch {
|
||||
|
||||
fun logout(){}
|
||||
fun setVideoView(target: View?){}
|
||||
fun onLoginModeChange(){}
|
||||
}
|
||||
@@ -90,6 +90,11 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
|
||||
public void logout() {
|
||||
TaxiTaskModel.INSTANCE.logout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoginModeChange() {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
//导航去订单目的地
|
||||
|
||||
@@ -6,6 +6,7 @@ project.android.productFlavors {
|
||||
dimension "project"
|
||||
buildConfigField 'boolean', 'secure', "true"
|
||||
buildConfigField 'int', 'ttsLanguage', "1" // 仅中文
|
||||
buildConfigField 'int', 'loginMode', "0" // 手机号验证码登录
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("mogo").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("mogo").replace("\"", "\\\"")}\""
|
||||
}
|
||||
@@ -13,6 +14,7 @@ project.android.productFlavors {
|
||||
dimension "project"
|
||||
buildConfigField 'boolean', 'secure', "false"
|
||||
buildConfigField 'int', 'ttsLanguage', "1 << 1" // 中英韩
|
||||
buildConfigField 'int', 'loginMode', "0" // 手机号验证码登录
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("yantai").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("yantai").replace("\"", "\\\"")}\""
|
||||
}
|
||||
@@ -21,6 +23,7 @@ project.android.productFlavors {
|
||||
dimension "project"
|
||||
buildConfigField 'boolean', 'secure', "true"
|
||||
buildConfigField 'int', 'ttsLanguage', "1" // 仅中文
|
||||
buildConfigField 'int', 'loginMode', "0" // 手机号验证码登录
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("dali").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("dali").replace("\"", "\\\"")}\""
|
||||
}
|
||||
@@ -28,6 +31,7 @@ project.android.productFlavors {
|
||||
dimension "project"
|
||||
buildConfigField 'boolean', 'secure', "true"
|
||||
buildConfigField 'int', 'ttsLanguage', "1" // 仅中文
|
||||
buildConfigField 'int', 'loginMode', "1" // 手机号验证码登录
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("saas").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("saas").replace("\"", "\\\"")}\""
|
||||
}
|
||||
@@ -35,6 +39,7 @@ project.android.productFlavors {
|
||||
dimension "project"
|
||||
buildConfigField 'boolean', 'secure', "true"
|
||||
buildConfigField 'int', 'ttsLanguage', "1" // 仅中文
|
||||
buildConfigField 'int', 'loginMode', "1" // 手机号验证码登录
|
||||
buildConfigField 'String', 'URLs', "\"${readFileToJson("singapore").replace("\"", "\\\"")}\""
|
||||
buildConfigField 'String', 'mediaUrlConfig', "\"${readMediaUrlConfigFromJsonFile("singapore").replace("\"", "\\\"")}\""
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ object ConfigStartUp {
|
||||
// 演示模式,上一次勾选的数据
|
||||
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE
|
||||
FunctionBuildConfig.ttsLanguage = BuildConfig.ttsLanguage
|
||||
FunctionBuildConfig.loginMode = BuildConfig.loginMode
|
||||
// 各个module需要的url
|
||||
FunctionBuildConfig.urlJson = GsonUtils.fromJson(BuildConfig.URLs, UrlConfig::class.java)
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ import com.mogo.eagle.core.data.constants.MoGoConfig
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BAG_RECORD
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BEAUTY_MODE
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LOGIN_MODE
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_FULL_LOG
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE
|
||||
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_WARNING_UPLOAD
|
||||
@@ -97,6 +98,7 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuApiManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuConnectListenerManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuInfoListenerManager
|
||||
import com.mogo.eagle.core.function.call.och.CallerEagleBaseFunctionCall4OchManager
|
||||
import com.mogo.eagle.core.function.call.och.CallerOchBizFunctionCall4EagleManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMapShowNameManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager
|
||||
@@ -263,6 +265,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.tbLanguage
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLogCatch
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLogcatCenter
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLoginLogout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLoginMode
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbNetLog
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbObuController
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbObuLog
|
||||
@@ -1152,6 +1155,18 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tbLoginMode.isChecked = FunctionBuildConfig.loginMode == 0
|
||||
tbLoginMode.setOnCheckedChangeListener { compoundButton, isChecked ->
|
||||
if (!compoundButton.isPressed) {
|
||||
return@setOnCheckedChangeListener
|
||||
}
|
||||
CallerOchBizFunctionCall4EagleManager.onLoginStateChange()
|
||||
}
|
||||
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
|
||||
tbLoginMode.visibility = View.GONE
|
||||
}
|
||||
|
||||
// 雨天模式,上一次勾选的数据
|
||||
tbIsRainMode.isChecked = FunctionBuildConfig.isRainMode
|
||||
//雨天模式
|
||||
@@ -2453,6 +2468,12 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
tbIsRainMode?.text = "开启雨天模式"
|
||||
}
|
||||
|
||||
if(FunctionBuildConfig.loginMode==0){
|
||||
tbLoginMode?.text = "手机号验证码登录"
|
||||
}else{
|
||||
tbLoginMode?.text = "二次验证登录"
|
||||
}
|
||||
|
||||
obuConnectStatusTv.text = Html.fromHtml(
|
||||
"OBU连接状态:${
|
||||
if (AppConfigInfo.isConnectObu) {
|
||||
@@ -2545,6 +2566,19 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
tbIsDemoMode.setPadding(left, top, right, bottom)
|
||||
}
|
||||
|
||||
BIZ_LOGIN_MODE -> {
|
||||
tbLoginMode.isClickable = !lock
|
||||
val (left, top, right, bottom) = tbLoginMode.currentPadding()
|
||||
if (lock) {
|
||||
tbLoginMode.background =
|
||||
resources.getDrawable(R.drawable.radio_button_lock_background)
|
||||
} else {
|
||||
tbLoginMode.background =
|
||||
resources.getDrawable(R.drawable.radio_button_normal_background_right)
|
||||
}
|
||||
tbLoginMode.setPadding(left, top, right, bottom)
|
||||
}
|
||||
|
||||
BIZ_RAIN_MODE -> {
|
||||
tbIsRainMode.isClickable = !lock
|
||||
val (left, top, right, bottom) = tbIsRainMode.currentPadding()
|
||||
@@ -2897,6 +2931,10 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
tbIsRainMode.isChecked = status
|
||||
}
|
||||
|
||||
override fun onLoginModeClickEvent(status: Boolean) {
|
||||
tbLoginMode.isChecked = status
|
||||
}
|
||||
|
||||
/**
|
||||
* 点云模式
|
||||
*/
|
||||
|
||||
@@ -331,6 +331,18 @@
|
||||
android:textOn="关闭美化模式"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/tbLoginMode"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/dp_10"
|
||||
android:background="@drawable/radio_button_normal_background_right"
|
||||
android:textColor="#000"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:textOff="二次验证登录"
|
||||
android:textOn="手机号验证码登录"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/tbIsRainMode"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -161,6 +161,11 @@ object FunctionBuildConfig {
|
||||
@JvmField
|
||||
var ttsLanguage = 1
|
||||
|
||||
@Volatile
|
||||
@JvmField
|
||||
var loginMode = 0
|
||||
|
||||
|
||||
/**
|
||||
* 各车型宣传视频本地配置
|
||||
* 广告json
|
||||
|
||||
@@ -32,6 +32,7 @@ class FuncBizConfig {
|
||||
const val BIZ_DNPW = "BIZ_DNPW" // 逆向超车预警
|
||||
// Foundation
|
||||
const val BIZ_BEAUTY_MODE = "BIZ_BEAUTY_MODE" // 美化模式
|
||||
const val BIZ_LOGIN_MODE = "BIZ_LOGIN_MODE" // 登录模式
|
||||
const val BIZ_RAIN_MODE = "BIZ_RAIN_MODE" // 雨天模式
|
||||
const val BIZ_FULL_LOG = "BIZ_FULL_LOG" // 全量日志
|
||||
const val BIZ_TRACE_LOG = "BIZ_TRACE_LOG" // 链路日志 todo 暂未有场景,未实现
|
||||
|
||||
@@ -14,4 +14,6 @@ interface IOchBizFunctionCall4Eagle {
|
||||
fun isLogin(): Boolean
|
||||
|
||||
fun setVideoView(target: View?)
|
||||
|
||||
fun onLoginStateChange()
|
||||
}
|
||||
@@ -10,6 +10,12 @@ interface ISopSettingListener {
|
||||
*/
|
||||
fun onDemoModeClickEvent(status: Boolean){}
|
||||
|
||||
/**
|
||||
* 美化模式
|
||||
*/
|
||||
fun onLoginModeClickEvent(status: Boolean){}
|
||||
|
||||
|
||||
/**
|
||||
* 雨天模式
|
||||
*/
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.mogo.eagle.core.function.call.och
|
||||
|
||||
import android.view.View
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.och.IOchBizFunctionCall4Eagle
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager
|
||||
|
||||
/**
|
||||
* 实现提供给 鹰眼底层 调用的接口
|
||||
@@ -33,4 +35,13 @@ object CallerOchBizFunctionCall4EagleManager : IOchBizFunctionCall4Eagle {
|
||||
override fun setVideoView(target: View?) {
|
||||
ochBizFunctionCall4EagleInstance?.setVideoView(target)
|
||||
}
|
||||
|
||||
override fun onLoginStateChange() {
|
||||
if(FunctionBuildConfig.loginMode==0){
|
||||
FunctionBuildConfig.loginMode = 1
|
||||
}else{
|
||||
FunctionBuildConfig.loginMode = 0
|
||||
}
|
||||
ochBizFunctionCall4EagleInstance?.onLoginStateChange()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user