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 7914bcf599..a52028d2b1 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 @@ -1,10 +1,10 @@ package com.mogo.module.authorize.authprovider.biz +import com.google.gson.Gson 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.Agreement -import com.mogo.module.authorize.model.bean.AgreementData +import com.mogo.module.authorize.model.bean.* import com.mogo.module.authorize.net.request import com.mogo.module.authorize.util.DateUtil.parseDateToTime import com.mogo.module.authorize.util.SharedPreferenceUtil.getAuthorizeVersion @@ -31,7 +31,7 @@ open class IMogoAuthorizeController { } }, { msg: String -> onError.invoke(msg) - }) + }, true) } fun invokeAuthorizeContent(tag: String, agreementType: Int) { @@ -62,12 +62,12 @@ open class IMogoAuthorizeController { }) } - private fun realInvokeAuthorizeContent(agreementType: Int, onStart: (() -> Unit), onSuccess: ((BaseResponse) -> Unit), onError: ((String) -> Unit)) { + private fun realInvokeAuthorizeContent(agreementType: Int, onStart: (() -> Unit), onSuccess: ((BaseResponse) -> Unit), onError: ((String) -> Unit), needContent: Boolean = false) { onStart.invoke() try { request> { loader { - authorizeModel.invokeAuthorizeContent(agreementType) + authorizeModel.invokeAuthorizeContent(agreementType, needContent) } onSuccess { onSuccess.invoke(it) @@ -116,4 +116,25 @@ open class IMogoAuthorizeController { val oldVersion = getAuthorizeVersion() return currentTime > oldVersion } + + fun checkIfNeedAuthorize(agreementType: Int) { + request> { + loader { + authorizeModel.invokeIfNeedAuthorize(agreementType) + } + onSuccess { + Logger.d(TAG,"result : ${it.result}") + val result = it.result + when (result.agreementStatus) { + AGREEMENT_EFFECT -> setAuthorizeStatus(agreementType, true) + AGREEMENT_NOT_EFFECT -> setAuthorizeStatus(agreementType, false) + else -> Logger.d(TAG, "agreementStatus is not match any case") + } + } + onError { + Logger.d(TAG, it.message ?: "checkIfNeedAuthorize onError, message is null") + setAuthorizeStatus(agreementType, true) + } + } + } } \ No newline at end of file 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 3246b53116..a5e97c2cda 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 @@ -6,6 +6,7 @@ import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListen import com.mogo.module.authorize.model.proxy.AuthorizeProxy import com.mogo.module.authorize.model.proxy.toAuthorizeType import com.mogo.module.authorize.util.SharedPreferenceUtil.needAuthorization +import com.mogo.module.authorize.util.SharedPreferenceUtil.setAuthorizeStatus import com.mogo.module.authorize.util.isDeviceOfD import com.mogo.utils.logger.Logger @@ -19,14 +20,18 @@ open abstract class MogoAuthorizeManagerImpl : IMogoAuthorizeInvoke { override fun needAuthorize(tag: String): Boolean { return if (isDeviceOfD()) { - Logger.d(TAG, "needAuthorize update agreement in background") - baseController.updateAgreementVersion(tag.toAuthorizeType()) + Logger.d(TAG, "===== needAuthorize update agreement in background") + baseController.checkIfNeedAuthorize(tag.toAuthorizeType()) needAuthorization(tag.toAuthorizeType()) } else { false } } + override fun updateAuthorizeStatus(tag: String) { + baseController.checkIfNeedAuthorize(tag.toAuthorizeType()) + } + override fun invokeAuthorizeContent(tag: String) { //todo 后面动态代理统一处理校验问题 Logger.d(TAG, "tag:$tag") diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt index 7a85dc2355..4627cf25e8 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/biz/MogoAuthorizeProvider.kt @@ -67,6 +67,8 @@ class MogoAuthorizeProvider : IMogoModuleProvider { if (isDeviceOfD() && hasGuide() && mogoAuthShow.needAuthorize(AUTHORIZE_TYPE_LAUNCHER_MAIN)) { mogoAuthShow.invokeAuthorizeForShow() } else { + //首次进入Launcher同步一下授权状态,防止由于用户清除数据造成首次加载还会出现授权状态不同步问题 + mogoAuthShow.updateAuthorizeStatus(AUTHORIZE_TYPE_LAUNCHER_MAIN) Logger.d(TAG, "not do match self startUp condition ,wait for someone invoke") } } diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt index 7cdfc6af18..c84550a0b7 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/authprovider/invoke/IMogoAuthorizeInvoke.kt @@ -15,4 +15,12 @@ interface IMogoAuthorizeInvoke : IMogoAuthorizeRegister { * tag:模块ID */ fun invokeAuthorizeContent(tag: String) + + /** + * 更新授权状态 + * tag:模块ID + */ + fun updateAuthorizeStatus(tag:String){ + + } } \ No newline at end of file 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 5747d89775..0b79f7c692 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 @@ -2,9 +2,9 @@ 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.Agreement import com.mogo.module.authorize.model.bean.AgreementData +import com.mogo.module.authorize.model.bean.AgreementStatus +import com.mogo.module.authorize.model.bean.RequestUserAgreement open class IMogoAuthorizeModel : BaseRepository() { @@ -12,9 +12,15 @@ open class IMogoAuthorizeModel : BaseRepository() { const val TAG = "IMogoAuthorizeModel" } - suspend fun invokeAuthorizeContent(agreementType: Int): BaseResponse { - val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType)) + suspend fun invokeAuthorizeContent(agreementType: Int, needContent: Boolean = false): BaseResponse { + val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType, needContent)) val map = mapOf("sn" to getSn(), "data" to requestUserAgreement) return apiCall { getNetWorkApi().getAuthorizeContent(map) } } + + suspend fun invokeIfNeedAuthorize(agreementType: Int): BaseResponse { + val requestUserAgreement = Gson().toJson(RequestUserAgreement(agreementType)) + val map = mapOf("sn" to getSn(), "data" to requestUserAgreement) + return apiCall { getNetWorkApi().checkIfNeedAuthorize(map) } + } } \ No newline at end of file diff --git a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt index d530e2741f..bec8a198d5 100644 --- a/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt +++ b/modules/mogo-module-authorize/src/main/java/com/mogo/module/authorize/model/bean/Agreement.kt @@ -3,7 +3,21 @@ 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{ + var agreementType:Int + var want:Boolean = false + + constructor(agreementType:Int){ + this.agreementType = agreementType + } + + constructor(agreementType: Int, want: Boolean) { + this.agreementType = agreementType + this.want = want + } +} + +data class AgreementStatus(val agreementStatus:Int) data class AgreementData(val agreement: Agreement) 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 ea6538d5f5..71163940dd 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,8 +1,8 @@ package com.mogo.module.authorize.net import com.mogo.module.authorize.model.BaseResponse -import com.mogo.module.authorize.model.bean.Agreement import com.mogo.module.authorize.model.bean.AgreementData +import com.mogo.module.authorize.model.bean.AgreementStatus import retrofit2.http.FieldMap import retrofit2.http.FormUrlEncoded import retrofit2.http.POST @@ -19,4 +19,9 @@ interface AuthorizeApi { @POST("yycp-channelManager/agreement/updateStatus") suspend fun updateAuthorize(@FieldMap updateStatus: Map): BaseResponse + //查询是否要授权 + @FormUrlEncoded + @POST("yycp-channelManager/agreement/queryUserAuthorizeStatusByType") + suspend fun checkIfNeedAuthorize(@FieldMap needAuthorize: Map): BaseResponse + } \ No newline at end of file