取现 http 接口定义

This commit is contained in:
renhaoting 2025-12-10 16:30:44 +08:00
parent c669384d3c
commit cea438caa8
6 changed files with 110 additions and 40 deletions

View File

@ -1,28 +0,0 @@
package com.gamedog.vididin.feature.home.api
import com.gamedog.vididin.VidiConst
import com.gamedog.vididin.beans.req.PayInitReq
import com.gamedog.vididin.beans.req.PayoutCheckReq
import com.gamedog.vididin.beans.req.PayoutReq
import com.gamedog.vididin.beans.resp.PayInit
import com.gamedog.vididin.beans.resp.PayoutCheckData
import com.gamedog.vididin.beans.resp.PayoutData
import retrofit2.http.Body
import retrofit2.http.POST
interface WithDrawApi {
@POST(VidiConst.URL_WITHDRAW + "/eonline4/pay/init")
suspend fun withdrawInit(@Body param: PayInitReq): PayInit
@POST(VidiConst.URL_WITHDRAW + "/eonline4/payoutBrazil")
suspend fun withdrawPayout(@Body param: PayoutReq): PayoutData
@POST(VidiConst.URL_WITHDRAW + "/eonline4/payout/check")
suspend fun withdrawCheck(@Body param: PayoutCheckReq): PayoutCheckData
}

View File

@ -4,32 +4,36 @@ import android.app.Activity
import android.content.Intent
import android.view.LayoutInflater
import androidx.activity.viewModels
import com.ama.core.architecture.appBase.AppViewsActivity
import com.ama.core.architecture.appBase.AppViewsEmptyViewModelActivity
import com.ama.core.architecture.util.setOnClickBatch
import com.vididin.real.money.game.R
import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.features.withdraw.widget.WithDrawItemView
import com.gamedog.vididin.features.zero.ZeroBuyViewModel
import com.gamedog.vididin.main.interfaces.OnTabStyleListener
import com.gamedog.vididin.router.Router
import dagger.hilt.android.AndroidEntryPoint
import kotlin.getValue
import com.vididin.real.money.game.databinding.ActivityWithdrawBinding as ViewBinding
import com.gamedog.vididin.main.MainUiState as UiState
import com.gamedog.vididin.main.MainViewModel as ViewModel
@AndroidEntryPoint
class WithDrawActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabStyleListener {
override val mViewModel: ViewModel by viewModels()
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
class WithDrawActivity : AppViewsEmptyViewModelActivity<ViewBinding>(), OnTabStyleListener {
private val viewModel: ZeroBuyViewModel by viewModels()
private val mItemViewList: MutableList<WithDrawItemView> = mutableListOf()
private var mCurSelectedIndex: Int = 0
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
override fun ViewBinding.initWindowInsets() {
setImmerseRootView(contentRoot)
}
@ -124,10 +128,6 @@ class WithDrawActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), On
//TODO("Not yet implemented")
}
override fun ViewBinding.onUiStateCollect(uiState: UiState) {
//TODO("Not yet implemented")
}
override fun onTabIsDarkFont(isDarkFont: Boolean) {
//TODO("Not yet implemented")
}

View File

@ -0,0 +1,58 @@
package com.gamedog.vididin.features.withdraw
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.gamedog.vididin.beans.req.PayInitReq
import com.gamedog.vididin.beans.req.PayoutCheckReq
import com.gamedog.vididin.beans.req.PayoutReq
import com.gamedog.vididin.beans.resp.PayInit
import com.gamedog.vididin.beans.resp.PayoutCheckData
import com.gamedog.vididin.beans.resp.PayoutData
import com.gamedog.vididin.netbase.NetworkUtil
import com.gamedog.vididin.netbase.Result
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.launch
class WithdrawViewModel : ViewModel() {
private val _InitData = MutableStateFlow<Result<PayInit>>(Result.Loading)
val InitData: StateFlow<Result<PayInit>> = _InitData.asStateFlow()
private val _PayoutResult = MutableStateFlow<Result<PayoutData?>>(Result.Loading)
val PayoutResult: StateFlow<Result<PayoutData?>> = _PayoutResult.asStateFlow()
private val _CheckResult = MutableStateFlow<Result<PayoutCheckData?>>(Result.Loading)
val CheckResult: StateFlow<Result<PayoutCheckData?>> = _CheckResult.asStateFlow()
fun withdrawInit() {
viewModelScope.launch {
_InitData.value = Result.Loading
_InitData.value = NetworkUtil.callApi {
NetworkUtil.apiservice().withdrawInit(PayInitReq())
}
}
}
fun withdrawPayout() {
viewModelScope.launch {
_PayoutResult.value = Result.Loading
_PayoutResult.value = NetworkUtil.callApi {
NetworkUtil.apiservice().withdrawPayout(PayoutReq())
}
}
}
fun withdrawCheck() {
viewModelScope.launch {
_CheckResult.value = Result.Loading
_CheckResult.value = NetworkUtil.callApi {
NetworkUtil.apiservice().withdrawCheck(PayoutCheckReq())
}
}
}
}

View File

@ -1,5 +1,12 @@
package com.gamedog.vididin.netbase
import com.gamedog.vididin.VidiConst
import com.gamedog.vididin.beans.req.PayInitReq
import com.gamedog.vididin.beans.req.PayoutCheckReq
import com.gamedog.vididin.beans.req.PayoutReq
import com.gamedog.vididin.beans.resp.PayInit
import com.gamedog.vididin.beans.resp.PayoutCheckData
import com.gamedog.vididin.beans.resp.PayoutData
import okhttp3.ResponseBody
import retrofit2.http.Body
import retrofit2.http.Field
@ -35,4 +42,18 @@ interface ApiService {
@HeaderMap headers: Map<String, String> = emptyMap(),
@Body body: Any
): ResponseBody
@POST(VidiConst.URL_WITHDRAW + "/eonline4/pay/init")
suspend fun withdrawInit(@Body param: PayInitReq): PayInit
@POST(VidiConst.URL_WITHDRAW + "/eonline4/payoutBrazil")
suspend fun withdrawPayout(@Body param: PayoutReq): PayoutData
@POST(VidiConst.URL_WITHDRAW + "/eonline4/payout/check")
suspend fun withdrawCheck(@Body param: PayoutCheckReq): PayoutCheckData
}

View File

@ -1,6 +1,7 @@
package com.gamedog.vididin.netbase
import okhttp3.ResponseBody
import retrofit2.HttpException
import java.io.IOException
object NetworkUtil {
@ -9,6 +10,9 @@ object NetworkUtil {
RetrofitUtil.getRetrofitInstance().create(ApiService::class.java)
}
fun apiservice(): ApiService {
return apiService
}
suspend fun get(
url: String,
@ -43,15 +47,31 @@ object NetworkUtil {
}
}
suspend fun <T> callApi(apiCall: suspend () -> T): Result<T> {
return try {
Result.Success(apiCall())
} catch (e: IOException) {
Result.Error(e, "网络连接失败,请检查网络设置")
} catch (e: HttpException) {
Result.Error(e, "服务器错误: ${e.code()}")
} catch (e: Exception) {
Result.Error(e, "未知错误: ${e.message}")
}
}
private suspend fun <T> executeRequest(requestBlock: suspend () -> T): Result<T> {
return try {
Result.Success(requestBlock())
} catch (e: IOException) {
Result.Error(e, "网络连接失败,请检查网络设置")
} catch (e: HttpException) {
Result.Error(e, "服务器错误: ${e.code()}")
} catch (e: Exception) {
Result.Error(e, "未知错误: ${e.message}")
}
}
}

View File

@ -34,7 +34,6 @@ object RetrofitUtil {
// TODO - only enable in debug mode
addInterceptor(GlobalInterceptor2())
connectTimeout(30, TimeUnit.SECONDS)
readTimeout(30, TimeUnit.SECONDS)
writeTimeout(30, TimeUnit.SECONDS)