diff --git a/.idea/misc.xml b/.idea/misc.xml index 2dc54c489f..707ee6e613 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/nwd/AndroidManifest.xml b/app/src/nwd/AndroidManifest.xml index c3083e9cdb..ba50fd7bec 100644 --- a/app/src/nwd/AndroidManifest.xml +++ b/app/src/nwd/AndroidManifest.xml @@ -4,8 +4,6 @@ package="com.mogo.launcher" android:sharedUserId="android.uid.system"> - - + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index 5388f39431..3ded6f7f50 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. apply from: "config.gradle" apply from: "javadoc.gradle" + buildscript { ext.kotlin_version = '1.3.41' @@ -23,6 +24,7 @@ buildscript { classpath 'com.android.tools.build:gradle:3.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "com.alibaba:arouter-register:1.0.2" + classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/config.gradle b/config.gradle index 58336a0e3e..42749665e5 100644 --- a/config.gradle +++ b/config.gradle @@ -133,5 +133,6 @@ ext { coroutinescore : "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1", coroutinesandroid : "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1", + aspectj : "org.aspectj:aspectjrt:1.8.9", ] } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/aspectj/VoiceForbiddenTrackPoint.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/aspectj/VoiceForbiddenTrackPoint.kt new file mode 100644 index 0000000000..4517f18e9c --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/aspectj/VoiceForbiddenTrackPoint.kt @@ -0,0 +1,4 @@ +package com.mogo.module.authorize.aspectj + +class VoiceForbiddenTrackPoint { +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt index 4e8142a38d..3f0c24f96b 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/IMogoAuthorizeController.kt @@ -3,14 +3,14 @@ package com.mogo.module.authorize.authprovider.biz import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListener import com.mogo.module.authorize.model.BaseResponse import com.mogo.module.authorize.model.IMogoAuthorizeModel -import com.mogo.module.authorize.model.bean.UserAgreement +import com.mogo.module.authorize.model.bean.AgreementData import com.mogo.module.authorize.net.request import com.mogo.utils.logger.Logger open class IMogoAuthorizeController { companion object { - const val TAG = "IMogoAuthorizeController" + const val TAG = "AuthorizeController" } private val authorizeModel: IMogoAuthorizeModel by lazy { IMogoAuthorizeModel() } @@ -24,15 +24,14 @@ open class IMogoAuthorizeController { }) } try { - request> { + request> { loader { - authorizeModel.invokeAuthorizeContent(1) + authorizeModel.invokeAuthorizeContent(agreementType) } onSuccess { - Logger.d(TAG, "invokeAuthorizeContent onSuccess data: ${it.result}") getAuthorizeContentListener(tag, { listener -> - if (it.result != null) { - listener.requestContentSuccess(it.result) + if (it.result != null && it.result.agreement.agreementContent != null) { + listener.requestContentSuccess(it.result.agreement) } else { listener.requestContentFailed("request authorize content success ,but result data is :${it.result}") } @@ -49,7 +48,7 @@ open class IMogoAuthorizeController { }) } } - }catch (e:Exception){ + } catch (e: Exception) { e.printStackTrace() } } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt index 4e4a08930b..9f331bc92f 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeManagerImpl.kt @@ -12,6 +12,7 @@ open abstract class MogoAuthorizeManagerImpl : IMogoAuthorizeInvoke { private val baseController: IMogoAuthorizeController by lazy { IMogoAuthorizeController() } override fun needAuthorize(): Boolean { + return needAuthorization() } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeInvokerConstant.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeInvokerConstant.kt index c98a4b995d..af3930f91b 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeInvokerConstant.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/AuthorizeInvokerConstant.kt @@ -6,6 +6,7 @@ class AuthorizeInvokerConstant { const val AUTHORIZE_TYPE_LAUNCHER_MAIN = "AUTHORIZE_TYPE_LAUNCHER_MAIN" //launcher const val AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY = "AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY" //launcher 新鲜事分享 const val AUTHORIZE_TYPE_LAUNCHER_SHARE_MUSIC = "AUTHORIZE_TYPE_LAUNCHER_SHARE_MUSIC" //launcher 音乐分享 + const val AUTHORIZE_TYPE_LAUNCHER_SHARE = "AUTHORIZE_TYPE_LAUNCHER_SHARE" //launcher 我要分享 const val AUTHORIZE_TYPE_TAN_LU = "AUTHORIZE_TYPE_TAN_LU" //探路 const val AUTHORIZE_TYPE_CALL_CHAT = "AUTHORIZE_TYPE_CALL_CHAT" //车聊聊 const val AUTHORIZE_TYPE_NOVELTY = "AUTHORIZE_TYPE_NOVELTY" //新鲜事 diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeContentListener.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeContentListener.kt index 75b0200ee3..06a999aa3e 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeContentListener.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeContentListener.kt @@ -1,13 +1,13 @@ package com.mogo.module.authorize.authprovider.invoke -import com.mogo.module.authorize.model.bean.UserAgreement +import com.mogo.module.authorize.model.bean.Agreement /** * 获取授权信息回调 */ interface IMogoAuthorizeContentListener { - fun requestContentSuccess(userAgreement: UserAgreement) + fun requestContentSuccess(userAgreement: Agreement) fun requestContentFailed(errorMsg: String) } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IAuthorizeMainInvoke.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IAuthorizeMainInvoke.kt index 4fa6005c28..af945e03c7 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IAuthorizeMainInvoke.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IAuthorizeMainInvoke.kt @@ -9,11 +9,16 @@ interface IAuthorizeMainInvoke : IMogoAuthorizeInvoke { * 同意授权 * tag:透传模块ID */ - fun agreeAuthorize(tag: String, agrId: Long) + fun agreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) /** * 不同意授权 * tag:透传模块ID */ - fun disAgreeAuthorize(tag: String, agrId: Long) + fun disAgreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) + + /** + * 是否已经注册回调 + */ + fun hasRegister(tag: String): Boolean } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt index 2519d6cbed..810997e582 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/IMogoAuthorizeMainManager.kt @@ -9,6 +9,10 @@ import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListen @Route(path = AuthorizeConstant.PROVIDER_LAUNCHER) class IMogoAuthorizeMainManager : IMogoAuthorizeMainProvider { + override fun hasRegister(tag: String): Boolean { + return mogoAuthShow.hasRegister(tag) + } + override fun needAuthorize(): Boolean { return mogoAuthShow.needAuthorize() } @@ -17,12 +21,12 @@ class IMogoAuthorizeMainManager : IMogoAuthorizeMainProvider { mogoAuthShow.invokeAuthorizeContent(tag) } - override fun agreeAuthorize(tag: String, agrId: Long) { - mogoAuthShow.agreeAuthorize(tag, agrId) + override fun agreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) { + mogoAuthShow.agreeAuthorize(tag, agrId, onSuccess, onError) } - override fun disAgreeAuthorize(tag: String, agrId: Long) { - mogoAuthShow.disAgreeAuthorize(tag, agrId) + override fun disAgreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) { + mogoAuthShow.disAgreeAuthorize(tag, agrId, onSuccess, onError) } override fun registerAuthorizeListener(tag: String, listener: IMogoAcquireAuthorizeListener) { diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt index fba421396c..976f98d086 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoAuthorizeMainController.kt @@ -13,25 +13,31 @@ object MogoAuthorizeMainController : IMogoAuthorizeController() { private val authorizeShowModel: MogoAuthorizeMainModel by lazy { MogoAuthorizeMainModel() } @Synchronized - fun agreeAuthorize(tag: String, agrId: Long) { + fun agreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) { val acquireAuthListener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag) updateAuthorize(agrId, AGREEMENT_EFFECT, { if (acquireAuthListener != null) { + onSuccess.invoke() acquireAuthListener.authorizeSuccess() } else { Logger.d(TAG, "agreeAuthorize --- can not find listener by this tag :$tag ") } }, { - authorizeFailed(tag, it ?: "agreeAuthorize failed,please check network") + val errorMsg = it ?: "agreeAuthorize failed,please check network" + onError.invoke(errorMsg) + authorizeFailed(tag, errorMsg) }) } @Synchronized - fun disAgreeAuthorize(tag: String, agrId: Long) { + fun disAgreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) { updateAuthorize(agrId, AGREEMENT_NOT_EFFECT, { + onSuccess.invoke() authorizeFailed(tag, "UserDisAgree authorize") }, { - authorizeFailed(tag, it ?: "disAgreeAuthorize failed,please check network") + val errorMsg = it ?: "disAgreeAuthorize failed,please check network" + onError.invoke(errorMsg) + authorizeFailed(tag, errorMsg) }) } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt index 33fdb9e8dc..af33c45ed5 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/launcher/MogoMainAuthorize.kt @@ -26,12 +26,18 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog @Volatile private var showAuthorizeView: Boolean = false - override fun agreeAuthorize(tag: String, agrId: Long) { - MogoAuthorizeMainController.agreeAuthorize(tag, agrId) + override fun hasRegister(tag: String): Boolean { + if (tag.isNullOrBlank()) return false + val listener = MogoAuthorizeRegisterHandler.getAuthorizeContentListener(tag) + return listener != null } - override fun disAgreeAuthorize(tag: String, agrId: Long) { - MogoAuthorizeMainController.disAgreeAuthorize(tag, agrId) + override fun agreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) { + MogoAuthorizeMainController.agreeAuthorize(tag, agrId, onSuccess, onError) + } + + override fun disAgreeAuthorize(tag: String, agrId: Long, onSuccess: (() -> Unit), onError: ((String) -> Unit)) { + MogoAuthorizeMainController.disAgreeAuthorize(tag, agrId, onSuccess, onError) } fun invokeAuthorizeForShow() { @@ -94,20 +100,4 @@ class MogoMainAuthorize private constructor() : MogoAuthorizeManagerImpl(), IMog pop.invoke() } - fun authorizeSuccess(tag: String) { - val listener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag) - if (listener == null) { - Logger.d(TAG, "authorizeSuccess,but listener is null ") - } - listener!!.authorizeSuccess() - } - - fun authorizeFailed(tag: String, errorMsg: String) { - val listener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag) - if (listener == null) { - Logger.d(TAG, "authorizeFailed,but listener is null ") - } - listener!!.authorizeFailed(errorMsg) - } - } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt index 1f6faddb97..e7fb2c8327 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/module/MogoModuleAuthorize.kt @@ -19,6 +19,7 @@ class MogoModuleAuthorize private constructor() : MogoAuthorizeManagerImpl(), IM override fun invokeAuthorization(tag: String) { mogoAuthShow.showAuthorizeView(tag, { //todo SP存储状态 + }, { errorMsg -> val listener = MogoAuthorizeRegisterHandler.getAuthorizeListener(tag) listener?.authorizeFailed(errorMsg) diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeContract.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeContract.kt index 193f7e9146..91c4683926 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeContract.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeContract.kt @@ -13,10 +13,11 @@ class AuthorizeContract { } interface Biz { - fun invokeAuthorize(invokeTag: String) + fun invokeAuthorizationContent(invokeTag: String) fun agreeAuthorize(tag: String, agreementId: Long) fun disAgreeAuthorize(tag: String, agreementId: Long) + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt index 4be93d917b..7d2dcb8258 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizeFragment.kt @@ -4,10 +4,16 @@ import android.text.Html import android.view.View import com.mogo.commons.mvp.MvpFragment import com.mogo.module.authorize.R +import com.mogo.module.authorize.util.AnalyticsUtil +import com.mogo.module.authorize.util.AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_CLICK +import com.mogo.module.authorize.util.AnalyticsUtil.INVOKE_TRACK_AUTHORIZE_SHOW +import com.mogo.module.authorize.voice.IVoiceCommandListener +import com.mogo.module.authorize.voice.IVoiceIntentListener +import com.mogo.module.authorize.voice.VoiceUtil import com.mogo.utils.logger.Logger import kotlinx.android.synthetic.main.module_authorize_fragment.* -class AuthorizeFragment(private val invokeTag: String) : MvpFragment(), AuthorizeContract.View, View.OnClickListener { +class AuthorizeFragment(private val invokeTag: String) : MvpFragment(), AuthorizeContract.View, View.OnClickListener, IVoiceCommandListener, IVoiceIntentListener { companion object { const val TAG = "AuthorizeFragment" @@ -20,11 +26,13 @@ class AuthorizeFragment(private val invokeTag: String) : MvpFragment { + AnalyticsUtil.track(INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 1, "operation_result" to 1)) mPresenter.agreeAuthorize(invokeTag, agreementId) } R.id.btnAuthorizeDisAgree -> { + AnalyticsUtil.track(INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 1, "operation_result" to 2)) mPresenter.disAgreeAuthorize(invokeTag, agreementId) } R.id.clLoadingErrorContainer, R.id.btnAuthorizeLoadingError -> { - mPresenter.invokeAuthorize(invokeTag) + mPresenter.invokeAuthorizationContent(invokeTag) } } } + override fun onVoiceCmdAgree() { + AnalyticsUtil.track(INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 2, "operation_result" to 1)) + mPresenter.agreeAuthorize(invokeTag, agreementId) + } + + override fun onVoiceCmdDisAgree() { + AnalyticsUtil.track(INVOKE_TRACK_AUTHORIZE_CLICK, hashMapOf("operation_type" to 2, "operation_result" to 2)) + mPresenter.disAgreeAuthorize(invokeTag, agreementId) + } + + override fun onDestroy() { + super.onDestroy() + VoiceUtil.unregisterAll(context!!, this) + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizePresenter.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizePresenter.kt index 96d96c6f08..010df3f4e8 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizePresenter.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/fragment/AuthorizePresenter.kt @@ -4,12 +4,10 @@ import androidx.lifecycle.LifecycleOwner import com.mogo.commons.mvp.Presenter import com.mogo.module.authorize.authprovider.invoke.IMogoAuthorizeContentListener import com.mogo.module.authorize.authprovider.launcher.MogoMainAuthorize.Companion.mogoAuthShow -import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener -import com.mogo.module.authorize.model.bean.UserAgreement -import com.mogo.module.authorize.model.proxy.AuthorizeProxy +import com.mogo.module.authorize.model.bean.Agreement import com.mogo.utils.logger.Logger -class AuthorizePresenter : Presenter, AuthorizeContract.Biz, IMogoAuthorizeContentListener, IMogoAcquireAuthorizeListener { +class AuthorizePresenter : Presenter, AuthorizeContract.Biz, IMogoAuthorizeContentListener { companion object { const val TAG = "AuthorizePresenter" @@ -24,51 +22,54 @@ class AuthorizePresenter : Presenter, AuthorizeContract. override fun onCreate(owner: LifecycleOwner) { super.onCreate(owner) Logger.d(TAG, "onCreate invokeTag:$invokeTag") - invokeAuthorize(invokeTag!!) + invokeAuthorizationContent(invokeTag!!) } - override fun invokeAuthorize(invokeTag: String) { + override fun invokeAuthorizationContent(invokeTag: String) { mView.readyToAuthorize() this.invokeTag = invokeTag - mogoAuthShow.registerInvokeAuthorizeContentListener(invokeTag, this) - mogoAuthShow.registerAuthorizeListener(invokeTag, this) + if (!mogoAuthShow.hasRegister(invokeTag)) { + mogoAuthShow.registerInvokeAuthorizeContentListener(invokeTag, this) + } mogoAuthShow.invokeAuthorizeContent(invokeTag) } - override fun requestContentSuccess(userAgreement: UserAgreement) { - val id = userAgreement.agreementEntity.id - val content = userAgreement.agreementContent[0] - val title = userAgreement.agreementEntity.title - val bottomContent = userAgreement.agreementEntity.agreementButtonFirst - val lastContent = userAgreement.agreementEntity.agreementButtonSecond - mView.showAuthorizationAgreementContent(id, content, title, bottomContent, lastContent) + override fun requestContentSuccess(userAgreement: Agreement) { + Logger.d(TAG, "requestContentSuccess userAgreement:$userAgreement") + if (userAgreement?.agreementContent != null && userAgreement?.agreementContent.isNotEmpty()) { + val id = userAgreement.tUserAgreementEntity.id + val content = userAgreement.agreementContent[0] + val title = userAgreement.tUserAgreementEntity.title + val bottomContent = userAgreement.tUserAgreementEntity.agreementButtonFirst + val lastContent = userAgreement.tUserAgreementEntity.agreementButtonSecond + mView.showAuthorizationAgreementContent(id, content, title, bottomContent, lastContent) + } else { + mView.showAuthorizationError() + } } override fun requestContentFailed(errorMsg: String) { Logger.d(TAG, "requestContentFailed errorMsg:$errorMsg") +// mView.showAuthorizationAgreementContent(0, "123", "123456", "34234", "3543535") mView.showAuthorizationError() } override fun agreeAuthorize(tag: String, agreementId: Long) { - mogoAuthShow.agreeAuthorize(tag, agreementId) + mogoAuthShow.agreeAuthorize(tag, agreementId, { + Logger.d(TAG, "agreeAuthorize success") + closeAuthorizeView() + }, { s: String -> + Logger.d(TAG, "agreeAuthorize failed") + closeAuthorizeView() + }) } override fun disAgreeAuthorize(tag: String, agreementId: Long) { - mogoAuthShow.disAgreeAuthorize(tag, agreementId) - } - - override fun authorizeSuccess() { - mogoAuthShow.authorizeSuccess(invokeTag!!) - closeAuthorizeView() - } - - override fun authorizeFailed(errorMsg: String) { - mogoAuthShow.authorizeFailed(invokeTag!!, errorMsg) - closeAuthorizeView() - } - - override fun forbiddenVoiceWhenAuthorize(cmd: String) { - //do nothing + mogoAuthShow.disAgreeAuthorize(tag, agreementId, { + closeAuthorizeView() + }, { s: String -> + closeAuthorizeView() + }) } private fun closeAuthorizeView() { diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/BaseResponse.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/BaseResponse.kt index d5790a7d87..963747434a 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/BaseResponse.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/BaseResponse.kt @@ -1,6 +1,6 @@ package com.mogo.module.authorize.model -class BaseResponse(val code: Int, val msg: String, val result: T) { +class BaseResponse(val code: Int, val msg: String, val detailMsg: String, val result: T) { } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/IMogoAuthorizeModel.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/IMogoAuthorizeModel.kt index 92b5fe261d..5747d89775 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/IMogoAuthorizeModel.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/IMogoAuthorizeModel.kt @@ -3,7 +3,8 @@ package com.mogo.module.authorize.model import com.google.gson.Gson import com.mogo.commons.network.Utils.getSn import com.mogo.module.authorize.model.bean.RequestUserAgreement -import com.mogo.module.authorize.model.bean.UserAgreement +import com.mogo.module.authorize.model.bean.Agreement +import com.mogo.module.authorize.model.bean.AgreementData open class IMogoAuthorizeModel : BaseRepository() { @@ -11,7 +12,7 @@ open class IMogoAuthorizeModel : BaseRepository() { const val TAG = "IMogoAuthorizeModel" } - suspend fun invokeAuthorizeContent(agreementType: Int): BaseResponse { + suspend fun invokeAuthorizeContent(agreementType: Int): BaseResponse { val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType)) val map = mapOf("sn" to getSn(), "data" to requestUserAgreement) return apiCall { getNetWorkApi().getAuthorizeContent(map) } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/UserAgreement.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt similarity index 73% rename from modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/UserAgreement.kt rename to modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt index 9e11630fc2..d530e2741f 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/UserAgreement.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt @@ -3,9 +3,11 @@ package com.mogo.module.authorize.model.bean const val AGREEMENT_EFFECT = 1 //用户协议生效 const val AGREEMENT_NOT_EFFECT = 2 //用户协议不生效 -class RequestUserAgreement(val agreementType:Int) +class RequestUserAgreement(val agreementType: Int) -data class UserAgreement(var agreementEntity: TUserAgreementEntity, var agreementContent: List) +data class AgreementData(val agreement: Agreement) + +data class Agreement(var tUserAgreementEntity: TUserAgreementEntity, var agreementContent: List) data class TUserAgreementEntity( val id: Long, //协议ID @@ -18,4 +20,4 @@ data class TUserAgreementEntity( val agreementUserType: String, //协议适用用户 val agreementStatus: Int, //协议状态 1:生效 2:未生效 val createTime: String, //协议创建时间 - val updateTime: String) //协议更新时间 \ No newline at end of file + val updateTime: String) //协议更新时间 diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt index 65ad9ea34d..799259266a 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/proxy/AuthorizeProxy.kt @@ -3,6 +3,7 @@ package com.mogo.module.authorize.model.proxy import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_AUXILIARY_DRIVING import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_CALL_CHAT import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_MAIN +import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_SHARE import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_SHARE_MUSIC import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant.Companion.AUTHORIZE_TYPE_NOVELTY @@ -21,7 +22,8 @@ class AuthorizeProxy { return when (authorizeName) { AUTHORIZE_TYPE_LAUNCHER_MAIN, AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY, - AUTHORIZE_TYPE_LAUNCHER_SHARE_MUSIC -> 0 + AUTHORIZE_TYPE_LAUNCHER_SHARE_MUSIC, + AUTHORIZE_TYPE_LAUNCHER_SHARE -> 0 AUTHORIZE_TYPE_TAN_LU -> 1 AUTHORIZE_TYPE_CALL_CHAT -> 2 AUTHORIZE_TYPE_NOVELTY -> 3 @@ -35,6 +37,7 @@ class AuthorizeProxy { LAUNCHER_MAIN(0, AUTHORIZE_TYPE_LAUNCHER_MAIN), LAUNCHER_SHARE_NOVELTY(0, AUTHORIZE_TYPE_LAUNCHER_SHARE_NOVELTY), LAUNCHER_SHARE_MUSIC(0, AUTHORIZE_TYPE_LAUNCHER_SHARE_MUSIC), + LAUNCHER_SHARE(0, AUTHORIZE_TYPE_LAUNCHER_SHARE), CALL_CHAT(1, AUTHORIZE_TYPE_TAN_LU), TANLU(2, AUTHORIZE_TYPE_CALL_CHAT), NOVELTY(3, AUTHORIZE_TYPE_NOVELTY), diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt index c2b25d961a..ea6538d5f5 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/AuthorizeApi.kt @@ -1,7 +1,8 @@ package com.mogo.module.authorize.net import com.mogo.module.authorize.model.BaseResponse -import com.mogo.module.authorize.model.bean.UserAgreement +import com.mogo.module.authorize.model.bean.Agreement +import com.mogo.module.authorize.model.bean.AgreementData import retrofit2.http.FieldMap import retrofit2.http.FormUrlEncoded import retrofit2.http.POST @@ -10,12 +11,12 @@ interface AuthorizeApi { //获取授权内容· @FormUrlEncoded - @POST("yycp-channelManager/user/agreement/findUserAgreement") - suspend fun getAuthorizeContent(@FieldMap authorizeContent: Map): BaseResponse + @POST("yycp-channelManager/agreement/findUserAgreement") + suspend fun getAuthorizeContent(@FieldMap authorizeContent: Map): BaseResponse //更新授权状态 @FormUrlEncoded - @POST("yycp-channelManager/user/agreement/updateStatus") + @POST("yycp-channelManager/agreement/updateStatus") suspend fun updateAuthorize(@FieldMap updateStatus: Map): BaseResponse } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/CoroutineDSL.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/CoroutineDSL.kt index c415974178..f9d611409a 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/CoroutineDSL.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/net/CoroutineDSL.kt @@ -5,7 +5,6 @@ import com.mogo.module.authorize.exception.ApiException.Companion.NULL_REQUEST_D import com.mogo.module.authorize.exception.CommonException.Companion.NETWORK_EXCEPTION import com.mogo.module.authorize.exception.CommonException.Companion.NULL_EXCEPTION import com.mogo.module.authorize.model.BaseResponse -import com.mogo.utils.logger.Logger import kotlinx.coroutines.* import java.net.SocketTimeoutException import java.net.UnknownHostException @@ -63,7 +62,7 @@ class Request { } } catch (e: Exception) { e.printStackTrace() - if(e == null){ + if (e == null) { onError?.invoke(NULL_EXCEPTION) return@launch } @@ -71,7 +70,7 @@ class Request { is UnknownHostException -> onError?.invoke(NETWORK_EXCEPTION) is TimeoutException -> onError?.invoke(NETWORK_EXCEPTION) is SocketTimeoutException -> onError?.invoke(NETWORK_EXCEPTION) - else -> onError?.invoke(java.lang.Exception(e.message?:"")) + else -> onError?.invoke(java.lang.Exception(e.message ?: "")) } } finally { onComplete?.invoke() diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/AnalyticsUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/AnalyticsUtil.kt new file mode 100644 index 0000000000..bb08c3350f --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/AnalyticsUtil.kt @@ -0,0 +1,24 @@ +package com.mogo.module.authorize.util + +import com.alibaba.android.arouter.launcher.ARouter +import com.mogo.service.IMogoServiceApis +import com.mogo.service.MogoServicePaths +import com.mogo.service.analytics.IMogoAnalytics + +object AnalyticsUtil { + + const val INVOKE_TRACK_AUTHORIZE_SHOW = "Launcher_Privacy_protocol_Show" + const val INVOKE_TRACK_AUTHORIZE_CLICK = "Launcher_Privacy_protocol_click" + + private var trackRouter: IMogoAnalytics? = null + + fun track(eventType: String, data: MutableMap? = hashMapOf()) { + if (trackRouter == null) { + val arouter = ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation() + if (arouter is IMogoServiceApis) { + trackRouter = arouter.analyticsApi + } + } + trackRouter!!.track(eventType, data) + } +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt index 1817218390..68dc8a288d 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/util/SharedPreferenceUtil.kt @@ -7,7 +7,7 @@ object SharedPreferenceUtil { private const val HAS_AUTH = "HAS_AUTH" - fun needAuthorization():Boolean{ + fun needAuthorization(): Boolean { return !hasAuth() } @@ -15,4 +15,7 @@ object SharedPreferenceUtil { return SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).getBoolean(HAS_AUTH, false) } + fun setAuthorizeStatus() { + SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()).putBoolean(HAS_AUTH, true) + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceBusinessListener.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceBusinessListener.kt new file mode 100644 index 0000000000..b9792d1126 --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceBusinessListener.kt @@ -0,0 +1,8 @@ +package com.mogo.module.authorize.voice + +interface IVoiceBusinessListener { + + fun onVoiceCmdAgree() + + fun onVoiceCmdDisAgree() +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceCommandListener.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceCommandListener.kt new file mode 100644 index 0000000000..bf50a36ae6 --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceCommandListener.kt @@ -0,0 +1,35 @@ +package com.mogo.module.authorize.voice + +import com.mogo.commons.voice.IMogoVoiceCmdCallBack +import com.mogo.utils.logger.Logger + +private const val IVoiceCommandTAG = "IVoiceCommandTAG" + +interface IVoiceCommandListener : IMogoVoiceCmdCallBack, IVoiceBusinessListener { + + override fun onCmdSelected(cmd: String?) { + Logger.i( + IVoiceCommandTAG, "onCmdSelected cmd:${cmd ?: "cmd is null"}" + ) + cmd?.let { + VoiceManager.handleOnCmdSelected(cmd, this) + } + } + + override fun onCmdAction(speakText: String?) { + + } + + override fun onCmdCancel(speakText: String?) { + + } + + override fun onSpeakSelectTimeOut(speakText: String?) { + + } + + override fun onSpeakEnd(speakText: String?) { + Logger.i(IVoiceCommandTAG, "onSpeakEnd --- speakText : $speakText") + } + +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceIntentListener.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceIntentListener.kt new file mode 100644 index 0000000000..f4b3d233d6 --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/IVoiceIntentListener.kt @@ -0,0 +1,18 @@ +package com.mogo.module.authorize.voice + +import android.content.Intent +import com.mogo.service.intent.IMogoIntentListener +import com.mogo.utils.logger.Logger + +private const val IVoiceIntentTAG = "IVoiceIntentListener" + +interface IVoiceIntentListener : IMogoIntentListener, IVoiceBusinessListener { + + override fun onIntentReceived(cmd: String?, intent: Intent?) { + Logger.i(IVoiceIntentTAG, "cmd -> $cmd") + if (intent != null && cmd != null) { + VoiceManager.handleOnIntentCmd(cmd, intent, this) + } + } + +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceManager.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceManager.kt new file mode 100644 index 0000000000..d29e9d6a82 --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceManager.kt @@ -0,0 +1,40 @@ +package com.mogo.module.authorize.voice + +import android.content.Intent +import com.mogo.module.authorize.voice.VoiceUtil.VOICE_REGISTER_AUTHORIZE_AGREE +import com.mogo.module.authorize.voice.VoiceUtil.VOICE_REGISTER_AUTHORIZE_DISAGREE +import com.mogo.utils.logger.Logger + +object VoiceManager { + + private const val TAG = "VoiceManager" + + fun handleOnCmdSelected(cmd: String, listener: IVoiceCommandListener) { + Logger.i(TAG, "handleOnCmdSelected: cmd ---> $cmd") + when (cmd) { + VOICE_REGISTER_AUTHORIZE_AGREE -> { + Logger.i(TAG, "语音免唤醒 同意") + listener.onVoiceCmdAgree() + } + VOICE_REGISTER_AUTHORIZE_DISAGREE -> { + Logger.i(TAG, "语音免唤醒 不同意") + listener.onVoiceCmdDisAgree() + } + } + } + + fun handleOnIntentCmd(cmd: String, intent: Intent, listener: IVoiceIntentListener) { + Logger.i(TAG, "handleOnIntentCmd: cmd -> $cmd") + when (cmd) { + VOICE_REGISTER_AUTHORIZE_AGREE -> { + Logger.i(TAG, "语音唤醒 同意") + listener.onVoiceCmdAgree() + } + VOICE_REGISTER_AUTHORIZE_DISAGREE -> { + Logger.i(TAG, "语音免唤醒 不同意") + listener.onVoiceCmdDisAgree() + } + } + } + +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt new file mode 100644 index 0000000000..b393c41670 --- /dev/null +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/voice/VoiceUtil.kt @@ -0,0 +1,93 @@ +package com.mogo.module.authorize.voice + +import android.content.Context +import com.alibaba.android.arouter.launcher.ARouter +import com.mogo.commons.voice.AIAssist +import com.mogo.service.IMogoServiceApis +import com.mogo.service.MogoServicePaths +import com.mogo.service.intent.IMogoIntentManager +import com.mogo.utils.logger.Logger + +object VoiceUtil { + + private const val TAG = "VoiceUtil" + private var intentRegister: IMogoIntentManager? = null + + init { + Logger.i(TAG, "init") + val register = + ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation() + if (register is IMogoServiceApis) { + intentRegister = register.intentManagerApi + } + } + + //WakeUp Command (Intent) + const val VOICE_INTENT_AGREE = "system.application.operation" //同意 + const val VOICE_INTENT_DISAGREE = "system.application.operation" //不同意 + + //unWakeUp Command + const val VOICE_REGISTER_AUTHORIZE_AGREE = "CMD_AUTHORIZATION_AGREE" + private val agreeArray: Array = arrayOf("同意", "调整", "好的") + const val VOICE_REGISTER_AUTHORIZE_DISAGREE = "CMD_AUTHORIZATION_DISAGREE" + private val disAgreeArray: Array = arrayOf("不同意", "不调整") + + private var hasRegister = false + + fun speak(content: String, context: Context, listener: IVoiceCommandListener) { + AIAssist.getInstance(context).speakTTSVoice(content, listener) + } + + fun registerAll( + context: Context, + voiceCommand: IVoiceCommandListener, + intentCommand: IVoiceIntentListener + ) { + if (!hasRegister) { + hasRegister = true + registerAgree(context, voiceCommand, intentCommand) + registerDisAgree(context, voiceCommand, intentCommand) + } + } + + private fun registerAgree( + context: Context, + voiceCommand: IVoiceCommandListener, + intentCommand: IVoiceIntentListener + ) { + Logger.i(TAG, "registerAgree") + AIAssist.getInstance(context) + .registerUnWakeupCommand( + VOICE_REGISTER_AUTHORIZE_AGREE, + agreeArray, voiceCommand + ) +// intentRegister?.registerIntentListener(VOICE_INTENT_AGREE, intentCommand) + } + + private fun registerDisAgree( + context: Context, + voiceCommand: IVoiceCommandListener, + intentCommand: IVoiceIntentListener + ) { + Logger.i(TAG, "registerDisAgree") + AIAssist.getInstance(context) + .registerUnWakeupCommand( + VOICE_REGISTER_AUTHORIZE_DISAGREE, + disAgreeArray, voiceCommand + ) +// intentRegister?.registerIntentListener(VOICE_INTENT_DISAGREE, intentCommand) + } + + fun unregisterAll(context: Context, listener: IVoiceIntentListener) { + Logger.i(TAG, "unregister All") + AIAssist.getInstance(context).unregisterUnWakeupCommand(VOICE_REGISTER_AUTHORIZE_AGREE) + AIAssist.getInstance(context).unregisterUnWakeupCommand(VOICE_REGISTER_AUTHORIZE_DISAGREE) + hasRegister = false + + Logger.i(TAG, "unregister IntentVoiceCommand --- intentRegister:$intentRegister") + intentRegister?.let { + it.unregisterIntentListener(VOICE_INTENT_AGREE, listener) + it.unregisterIntentListener(VOICE_INTENT_DISAGREE, listener) + } + } +} \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml b/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml index 7e09e1a855..68244747c6 100644 --- a/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml +++ b/modules/mogo-module-authorize/src/main/res/layout/module_authorize_fragment.xml @@ -50,11 +50,25 @@ android:layout_marginRight="@dimen/dp_330" android:layout_marginBottom="@dimen/dp_90" android:background="@drawable/module_authorize_selector_dark_corner" + android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - android:visibility="gone" app:layout_constraintTop_toTopOf="parent"> +