整理代码

This commit is contained in:
renhaoting 2025-12-02 16:33:14 +08:00
parent 16efb504e3
commit 9d8fc70c10
6 changed files with 139 additions and 21 deletions

View File

@ -99,9 +99,9 @@
"target_action": "用户累计观看短视频", "target_action": "用户累计观看短视频",
"reward_type": "金币", "reward_type": "金币",
"reward_details": [ "reward_details": [
{"target_count": 10, "value": 100}, {"target_count": 2, "value": 100},
{"target_count": 20, "value": 150}, {"target_count": 3, "value": 150},
{"target_count": 30, "value": 200} {"target_count": 4, "value": 200}
], ],
"reward_stackable": true, "reward_stackable": true,
"is_one_time": false, "is_one_time": false,
@ -115,8 +115,8 @@
"reward_type": "金币", "reward_type": "金币",
"reward_details": [ "reward_details": [
{"target_count": 1, "value": 100}, {"target_count": 1, "value": 100},
{"target_count": 5, "value": 150}, {"target_count": 3, "value": 150},
{"target_count": 10, "value": 200} {"target_count": 5, "value": 200}
], ],
"daily_limit": 10, "daily_limit": 10,
"reward_stackable": true, "reward_stackable": true,

View File

@ -0,0 +1,130 @@
{
"task_module_config": {
"basic_info": {
"module_name": "任务中心",
"page_path": "底部第二个页签",
"layout_style": "上下滑动长页面",
"currency_display": ["金币账户", "巴西雷亚尔现金账户"]
},
"task_categories": [
{
"category_id": "newbie_task",
"category_name": "新手任务Missão Para Iniciantes",
"valid_period": "注册后7天内",
"display_priority": 1,
"tasks": [
{
"task_id": "newbie_first_withdraw",
"task_name": "完成第一次提现",
"task_desc": "完成首次提现操作0.1 BRL门槛即可获得100金币奖励",
"target_action": "用户完成首次提现流程含绑定Pix账户、观看广告",
"reward_type": "金币",
"reward_value": 100,
"is_one_time": true,
"status": "active"
},
{
"task_id": "newbie_push_notify",
"task_name": "开启消息推送",
"task_desc": "启用APP消息推送权限实时获取任务更新与奖励通知",
"target_action": "用户授权APP系统推送通知",
"reward_type": "金币",
"reward_value": 300,
"is_one_time": true,
"status": "active"
},
{
"task_id": "newbie_join_discord",
"task_name": "加入Discord社区",
"task_desc": "通过APP内链接加入官方Discord社区获取专属活动与客服支持",
"target_action": "用户通过指定链接成功加入Discord社区",
"reward_type": "金币",
"reward_value": 200,
"is_one_time": true,
"status": "active"
},
{
"task_id": "newbie_7day_checkin",
"task_name": "7日连续签到",
"task_desc": "连续7天完成签到奖励逐级递增第7天最高可得800金币",
"target_action": "用户每日完成签到操作(支持广告补签)",
"reward_type": "金币",
"reward_details": [
{"day": 1, "value": 100},
{"day": 2, "value": 300},
{"day": 3, "value": 300},
{"day": 4, "value": 500},
{"day": 5, "value": 300},
{"day": 6, "value": 300},
{"day": 7, "value": 800}
],
"support_makeup": true,
"makeup_method": "观看15-30秒激励视频",
"is_one_time": true,
"status": "active"
}
]
},
{
"category_id": "daily_task",
"category_name": "日常任务Missão Diária",
"valid_period": "每日凌晨00:00重置",
"display_priority": 2,
"tasks": [
{
"task_id": "daily_checkin",
"task_name": "每日签到",
"task_desc": "每日签到可获金币7天为一周期奖励循环递增支持双倍广告奖励",
"target_action": "用户当日完成签到操作",
"reward_type": "金币",
"reward_details": [
{"day": 1, "value": 100},
{"day": 2, "value": 300},
{"day": 3, "value": 300},
{"day": 4, "value": 500},
{"day": 5, "value": 300},
{"day": 6, "value": 300},
{"day": 7, "value": 500}
],
"double_reward_method": "观看15-30秒激励视频",
"support_makeup": true,
"makeup_method": "观看15-30秒激励视频",
"is_one_time": false,
"status": "active"
},
{
"task_id": "daily_video_ladder",
"task_name": "阶梯观看视频",
"task_desc": "累计观看指定数量短视频分3档领取奖励与基础观看收益叠加",
"target_action": "用户累计观看短视频",
"reward_type": "金币",
"reward_details": [
{"target_count": 10, "value": 100},
{"target_count": 20, "value": 150},
{"target_count": 30, "value": 200}
],
"reward_stackable": true,
"is_one_time": false,
"status": "active"
},
{
"task_id": "daily_ad_ladder",
"task_name": "阶梯观看激励视频",
"task_desc": "累计观看指定数量激励视频分3档领取奖励每日上限10次",
"target_action": "用户累计观看激励视频",
"reward_type": "金币",
"reward_details": [
{"target_count": 1, "value": 100},
{"target_count": 5, "value": 150},
{"target_count": 10, "value": 200}
],
"daily_limit": 10,
"reward_stackable": true,
"is_one_time": false,
"status": "active"
}
]
}
]
}
}

View File

@ -103,10 +103,10 @@ class MainTabsAdapter(
} }
} }
private fun ViewBinding.onTabClickAgainHandle(index: Int) { private fun ViewBinding.onTabClickAgainHandle(index: Int) {
val currentFragment = mainFragmentStateAdapter.getFragmentByIndex(index) val currentFragment = mainFragmentStateAdapter.getFragmentByIndex(index)
if (currentFragment is OnTabClickRefreshListener) { if (currentFragment is OnTabClickRefreshListener) {
// 刷新 - 展示Loading
currentFragment.onTabClickRefresh(object : OnTabClickRefreshFinishListener { currentFragment.onTabClickRefresh(object : OnTabClickRefreshFinishListener {
override fun onTabClickRefreshFinish() { override fun onTabClickRefreshFinish() {
setTabStyle(1) setTabStyle(1)

View File

@ -122,4 +122,5 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
binding.viewPager2.setCurrentItem(itemIndex, false) binding.viewPager2.setCurrentItem(itemIndex, false)
} }
} }

View File

@ -23,7 +23,6 @@ import com.gamedog.vididin.main.interfaces.OnSwitchTabListener
import com.gamedog.vididin.main.interfaces.OnTabStyleListener import com.gamedog.vididin.main.interfaces.OnTabStyleListener
import com.gamedog.vididin.youtubestatistic.RewardConst import com.gamedog.vididin.youtubestatistic.RewardConst
import com.gamedog.vididin.youtubestatistic.RewardConst.Companion.Check_Interval_MS import com.gamedog.vididin.youtubestatistic.RewardConst.Companion.Check_Interval_MS
import com.gamedog.vididin.youtubestatistic.TickerTimer
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.getValue import kotlin.getValue
@ -115,7 +114,6 @@ class HomeFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnSwit
override fun ViewBinding.onUiStateCollect(uiState: UiState) { override fun ViewBinding.onUiStateCollect(uiState: UiState) {
mViewPagerAdapter.submitList(uiState.playLists) mViewPagerAdapter.submitList(uiState.playLists)
//viewPager2.setDataOrAdapter(uiState.playLists, 1) { mViewPagerAdapter }
} }
override fun onResume() { override fun onResume() {

View File

@ -41,12 +41,9 @@ fun MagicIndicator.bindViewPager2(
override fun onPageSelected(position: Int) { override fun onPageSelected(position: Int) {
super.onPageSelected(position) super.onPageSelected(position)
if (!useFragmentContainerHelper) { if (!useFragmentContainerHelper) {
// 用ViewPagerHelper的处理
this@bindViewPager2.onPageSelected(position) this@bindViewPager2.onPageSelected(position)
// -兼容ViewPager2.setCurrentItem(index, false)不快速切换时没有ViewPager那样触发onPageScrolled。
this@bindViewPager2.onPageScrolled(position, 0f, 0) this@bindViewPager2.onPageScrolled(position, 0f, 0)
} else { } else {
// 用FragmentContainerHelper的处理
fragmentContainerHelper?.handlePageSelected(position) fragmentContainerHelper?.handlePageSelected(position)
} }
} }
@ -54,17 +51,13 @@ fun MagicIndicator.bindViewPager2(
override fun onPageScrollStateChanged(state: Int) { override fun onPageScrollStateChanged(state: Int) {
super.onPageScrollStateChanged(state) super.onPageScrollStateChanged(state)
if (!useFragmentContainerHelper) { if (!useFragmentContainerHelper) {
// 用ViewPagerHelper的处理
this@bindViewPager2.onPageScrollStateChanged(state) this@bindViewPager2.onPageScrollStateChanged(state)
} }
} }
}) })
} }
/**
* 设置CommonNavigator用于给MagicIndicator设置特定的CommonNavigator如果设置默认的可以直接使用[setDataOrAdapter]
* [commonNavigatorInit]用于初始化CommonNavigator
*/
fun MagicIndicator.setCommonNavigator( fun MagicIndicator.setCommonNavigator(
commonNavigatorInit: (CommonNavigator.() -> Unit)? = null, commonNavigatorInit: (CommonNavigator.() -> Unit)? = null,
) = ) =
@ -73,11 +66,7 @@ fun MagicIndicator.setCommonNavigator(
setNavigator(this) setNavigator(this)
} }
/**
* 设置[list]数据[createNavigatorAdapter]创建的Adapter
* 说明MagicIndicator内部没实现因为配置变更而导致的页面销毁后的还原操作但是通过和ViewPager2的绑定则也能间接性的进行还原操作
* 此实现仿ViewPager2可以统一调用
*/
fun <T> MagicIndicator.setDataOrAdapter( fun <T> MagicIndicator.setDataOrAdapter(
list: List<T>?, list: List<T>?,
createNavigatorAdapter: () -> AppNavigatorAdapter<T>, createNavigatorAdapter: () -> AppNavigatorAdapter<T>,