diff --git a/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt index e2686413b1..cbf92b1fdd 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SubjectEntity.kt @@ -122,7 +122,9 @@ data class SubjectEntity( @SerializedName("column_type") private val _columnType: String? = null, @SerializedName("size") - private val _size: Size? = null + private val _size: Size? = null, + @SerializedName("onlyFee") + private val _onlyFee: Boolean? = false, ) : Parcelable { @IgnoredOnParcel @@ -161,6 +163,9 @@ data class SubjectEntity( val size: Size get() = _size ?: Size() + val onlyFee: Boolean + get() = _onlyFee ?: false + var isDspSubject: Boolean = false companion object { @@ -173,9 +178,13 @@ data class SubjectEntity( @Parcelize data class Size( @SerializedName("index") - private val _index: Int? = null + private val _index: Int? = null, + @SerializedName("limit") + private val _limit: Int? = null, ) : Parcelable { val index: Int get() = _index ?: 0 + val limit: Int + get() = _limit ?: -1 } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageViewModel.kt index 3a94124f9d..c24f847914 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/CustomPageViewModel.kt @@ -411,7 +411,7 @@ class CustomPageViewModel(application: Application) : AndroidViewModel(applicati if (gameList != null) {// 直接读取缓存数据 notifyWGameCPMABatchChanged(gameList, subjectId, page) } else { - repository.loadChangeSubjectWGameCPM(page) + repository.loadChangeSubjectWGameCPM(page, subjectEntity.size.limit, subjectEntity.onlyFee) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : Response>() { diff --git a/app/src/main/java/com/gh/gamecenter/home/custom/model/CustomPageRepository.kt b/app/src/main/java/com/gh/gamecenter/home/custom/model/CustomPageRepository.kt index 70adae3eaf..5856027df3 100644 --- a/app/src/main/java/com/gh/gamecenter/home/custom/model/CustomPageRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/home/custom/model/CustomPageRepository.kt @@ -367,7 +367,7 @@ class CustomPageRepository private constructor( pageInfo.componentPosition ) ) - wGameSubjectCPMListUseCase.getWechatMiniGameCPMList(subject.id) + wGameSubjectCPMListUseCase.getWechatMiniGameCPMList(subject.id, subject.size.limit, subject.onlyFee) pageInfo.positionIncrement() pageInfo.componentPositionIncrement() } @@ -903,8 +903,8 @@ class CustomPageRepository private constructor( .map(RegionSettingHelper.filterGame) .map(ApkActiveUtils.filterMapperList) - fun loadChangeSubjectWGameCPM(page: Int): Observable> = - wGameSubjectCPMRemoteDataSource.getEditorRecommendCPMList(page, 10)// 微信小游戏CPM专题的“换一批”接口 + fun loadChangeSubjectWGameCPM(page: Int, minimumSize: Int, onlyFee: Boolean): Observable> = + wGameSubjectCPMRemoteDataSource.getEditorRecommendCPMList(page = page, minimumSize = minimumSize, onlyFee = onlyFee)// 微信小游戏CPM专题的“换一批”接口 .toObservable() .map(RegionSettingHelper.filterGame) .map(ApkActiveUtils.filterMapperList) diff --git a/app/src/main/java/com/gh/gamecenter/minigame/qq/QGameSubjectListRepository.kt b/app/src/main/java/com/gh/gamecenter/minigame/qq/QGameSubjectListRepository.kt index fed8d33538..9d83ecf6be 100644 --- a/app/src/main/java/com/gh/gamecenter/minigame/qq/QGameSubjectListRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/minigame/qq/QGameSubjectListRepository.kt @@ -9,15 +9,19 @@ import io.reactivex.Observable import io.reactivex.Single class QGameSubjectListRepository( - private val api: ApiService = RetrofitManager.getInstance().newApi + private val api: ApiService = RetrofitManager.getInstance().newApi, ) : ISubjectListRepository { - override fun getColumn(column_id: String?, - page: Int, - sort: String?, - order: String?, - ad: String?, - columnCollectionId: String?): Single> { + override fun getColumn( + column_id: String?, + page: Int, + sort: String?, + order: String?, + ad: String?, + columnCollectionId: String?, + minimumSize: Int, + onlyFee: Boolean, + ): Single> { return api.getQGameColumn(column_id, order, page, 20) } diff --git a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListRepository.kt b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListRepository.kt index 1ea3bf990b..a7125a2269 100644 --- a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListRepository.kt @@ -10,13 +10,17 @@ class WGameSubjectCPMListRepository( private val dataSource: WGameSubjectCPMRemoteDataSource = WGameSubjectCPMRemoteDataSource() ) : ISubjectListRepository { - override fun getColumn(column_id: String?, - page: Int, - sort: String?, - order: String?, - ad: String?, - columnCollectionId: String?): Single> { - return dataSource.getEditorRecommendCPMList(page) + override fun getColumn( + column_id: String?, + page: Int, + sort: String?, + order: String?, + ad: String?, + columnCollectionId: String?, + minimumSize: Int, + onlyFee: Boolean + ): Single> { + return dataSource.getEditorRecommendCPMList(page = page, minimumSize = minimumSize, onlyFee = onlyFee) } override fun getColumnSettings(column_id: String?): Observable { diff --git a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListUseCase.kt b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListUseCase.kt index 2658e80296..9a314bc570 100644 --- a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListUseCase.kt +++ b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMListUseCase.kt @@ -27,13 +27,13 @@ class WGameSubjectCPMListUseCase( val wechatMiniGameCPMListLiveData: LiveData>> = _wechatMiniGameCPMListLiveData @SuppressLint("CheckResult") - fun getWechatMiniGameCPMList(subjectId: String?) { + fun getWechatMiniGameCPMList(subjectId: String?, minimumSize: Int, onlyFee: Boolean) { if (subjectId.isNullOrEmpty() || requestKeyList.contains(subjectId)) { return } requestKeyList.add(subjectId) - repository.getColumn(null, 1, null, null, null, null) + repository.getColumn(null, 1, null, null, null, null, minimumSize, onlyFee) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(object : BiResponse>() { diff --git a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMRemoteDataSource.kt b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMRemoteDataSource.kt index 104ebc0a80..db0f482d31 100644 --- a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMRemoteDataSource.kt +++ b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectCPMRemoteDataSource.kt @@ -14,7 +14,12 @@ class WGameSubjectCPMRemoteDataSource( private val api: WGameCPMApiService = RetrofitManager.getInstance().wGameCPMApi ) { - fun getEditorRecommendCPMList(page: Int, pageSize: Int = 10): Single> { + fun getEditorRecommendCPMList( + page: Int, + pageSize: Int = 10, + minimumSize: Int, + onlyFee: Boolean + ): Single> { val meta = MetaUtil.getMeta() val request = mapOf( "head" to mapOf( @@ -28,38 +33,44 @@ class WGameSubjectCPMRemoteDataSource( "body" to mapOf( "page" to page - 1, "pageSize" to pageSize, + "onlyFee" to if (onlyFee) 1 else 0, ) ) return api.getEditorRecommendList(request.toRequestBody()) .map { if (it.ret == 0) { - it.appInfoList.map { info -> - GameEntity( - mName = info.appName, - mIcon = info.logo, - mBrief = info.briefIntro, - miniGameUid = info.appID, - miniGameAppId = info.userName, - miniGameCategory = Constants.WECHAT_MINI_GAME, - profit = Constants.WECHAT_MINI_GAME_PROFIT_CPM, - miniGameAppStatus = 2, - miniGameAppPath = info.wechatAppPath, - miniGameExtData = info.extData, - miniGameRecommendId = info.recommendID, - mTagStyle = arrayListOf( - TagStyleEntity( - name = info.categoryName, - color = TAG_COLOR, - background = TAG_BACKGROUND - ), - TagStyleEntity( - name = info.subcategoryName, - color = TAG_COLOR, - background = TAG_BACKGROUND + // 数量不满足最小值时直接返回空 + if (onlyFee && minimumSize > 0 && it.appInfoList.size < minimumSize) { + mutableListOf() + } else { + it.appInfoList.map { info -> + GameEntity( + mName = info.appName, + mIcon = info.logo, + mBrief = info.briefIntro, + miniGameUid = info.appID, + miniGameAppId = info.userName, + miniGameCategory = Constants.WECHAT_MINI_GAME, + profit = Constants.WECHAT_MINI_GAME_PROFIT_CPM, + miniGameAppStatus = 2, + miniGameAppPath = info.wechatAppPath, + miniGameExtData = info.extData, + miniGameRecommendId = info.recommendID, + mTagStyle = arrayListOf( + TagStyleEntity( + name = info.categoryName, + color = TAG_COLOR, + background = TAG_BACKGROUND + ), + TagStyleEntity( + name = info.subcategoryName, + color = TAG_COLOR, + background = TAG_BACKGROUND + ) ) ) - ) - }.toMutableList() + }.toMutableList() + } } else { mutableListOf() } diff --git a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectListRepository.kt b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectListRepository.kt index 9a8b22724e..46bc1246a0 100644 --- a/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectListRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/minigame/wechat/WGameSubjectListRepository.kt @@ -9,15 +9,19 @@ import io.reactivex.Observable import io.reactivex.Single class WGameSubjectListRepository( - private val api: ApiService = RetrofitManager.getInstance().newApi + private val api: ApiService = RetrofitManager.getInstance().newApi, ) : ISubjectListRepository { - override fun getColumn(column_id: String?, - page: Int, - sort: String?, - order: String?, - ad: String?, - columnCollectionId: String?): Single> { + override fun getColumn( + column_id: String?, + page: Int, + sort: String?, + order: String?, + ad: String?, + columnCollectionId: String?, + minimumSize: Int, + onlyFee: Boolean, + ): Single> { return api.getWGameColumn(column_id, order, page, 20) } diff --git a/app/src/main/java/com/gh/gamecenter/subject/ISubjectListRepository.kt b/app/src/main/java/com/gh/gamecenter/subject/ISubjectListRepository.kt index 81b5b7767c..f864089d3f 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/ISubjectListRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/ISubjectListRepository.kt @@ -13,7 +13,9 @@ interface ISubjectListRepository { sort: String?, order: String?, ad: String?, - columnCollectionId: String? + columnCollectionId: String?, + minimumSize: Int, + onlyFee: Boolean ): Single> fun getColumnSettings(column_id: String?): Observable diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListRepository.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListRepository.kt index 30a1acf95f..63e369ebf2 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListRepository.kt @@ -8,10 +8,19 @@ import io.reactivex.Observable import io.reactivex.Single class SubjectListRepository( - private val api: ApiService = RetrofitManager.getInstance().api + private val api: ApiService = RetrofitManager.getInstance().api, ) : ISubjectListRepository { - override fun getColumn(column_id: String?, page: Int, sort: String?, order: String?, ad: String?, columnCollectionId: String?): Single> { + override fun getColumn( + column_id: String?, + page: Int, + sort: String?, + order: String?, + ad: String?, + columnCollectionId: String?, + minimumSize: Int, + onlyFee: Boolean, + ): Single> { return api.getColumn(column_id, sort, order, ad, columnCollectionId, page) } diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt index a7459ee67e..e93e942ab8 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListViewModel.kt @@ -49,7 +49,9 @@ open class SubjectListViewModel( subjectData.sort, subjectData.filter.ifEmpty { "type:全部" }, AdHelper.getIdfaString(), - columnCollectionId + columnCollectionId, + -1, + false ) }