feat(抽奖活动页): 对接转账和兑换金币接口

This commit is contained in:
hzj 2025-10-24 16:30:13 +08:00
parent 62f9d8f6db
commit 4715bfa089

View File

@ -289,7 +289,7 @@
v-for="coin in coinOptions" v-for="coin in coinOptions"
:key="coin.id" :key="coin.id"
@click="selectCoin(coin)" @click="selectCoin(coin)"
:class="['coin-item', { selected: selectedCoin.id === coin.id }]" :class="['coin-item', { selected: selectedCoin?.id === coin.id }]"
> >
<img src="/src/assets/icon/dollar.png" alt="" style="width: 40%" /> <img src="/src/assets/icon/dollar.png" alt="" style="width: 40%" />
<div style="font-weight: 500; color: #131111">${{ coin.price }}</div> <div style="font-weight: 500; color: #131111">${{ coin.price }}</div>
@ -310,7 +310,7 @@
font-weight: 590; font-weight: 590;
" "
@click="transfer" @click="transfer"
:disabled="!selectedCoin || !selectedPayee.value.id" :disabled="!selectedCoin || !selectedPayee.value?.id"
> >
Transfer Transfer
</div> </div>
@ -349,7 +349,7 @@
v-for="coin in coinOptions" v-for="coin in coinOptions"
:key="coin.id" :key="coin.id"
@click="selectCoin(coin)" @click="selectCoin(coin)"
:class="['coin-item', { selected: selectedCoin.id == coin.id }]" :class="['coin-item', { selected: selectedCoin?.id == coin.id }]"
> >
<img src="/src/assets/icon/coin.png" alt="" style="width: 40%" /> <img src="/src/assets/icon/coin.png" alt="" style="width: 40%" />
<div style="font-size: 0.7em">{{ coin.amount }} coins x1</div> <div style="font-size: 0.7em">{{ coin.amount }} coins x1</div>
@ -370,7 +370,8 @@
background: linear-gradient(135deg, #bb92ff 2.82%, #8b45ff 99.15%); background: linear-gradient(135deg, #bb92ff 2.82%, #8b45ff 99.15%);
font-weight: 590; font-weight: 590;
" "
:disabled="!selectedCoin.id || !selectedPayee.value?.id" :disabled="!selectedCoin || !selectedPayee.value?.id"
@click="exchangeCoinBt"
> >
Exchange Exchange
</div> </div>
@ -988,7 +989,7 @@ const coinOptions = ref([
// //
const selectCoin = (coin) => { const selectCoin = (coin) => {
// //
if (selectedCoin.value.id === coin.id) { if (selectedCoin.value?.id == coin.id) {
selectedCoin.value = null selectedCoin.value = null
} else { } else {
selectedCoin.value = coin selectedCoin.value = coin
@ -1011,37 +1012,55 @@ const transfer = async () => {
const transferData = { const transferData = {
amount: selectedCoin.value.price, amount: selectedCoin.value.price,
acceptUserId: selectedPayee.value?.id, acceptUserId: selectedPayee.value?.id,
acceptMethod: 'BANK_TRANSFER',
// password: password
} }
try { try {
// //
const response = await userBankTransfer(transferData) const response = await transferActivityDollar(transferData)
if (response.status) { if (response.status) {
showSuccess( showSuccess(
`Successfully transferred $${selectedCoinData.price} to ${selectedPayee.value?.name}` `Successfully transferred $${selectedCoin.value.price} to ${selectedPayee.value?.name}`
) )
} else { } else {
showError(`Failed to transfer $${selectedCoinData.price}`) showError(`Failed to transfer $${selectedCoin.value.price}`)
} }
// //
selectedCoin.value = null selectedCoin.value = null
// getDrawableAmount() //
await fetchBankBalance()
} catch (error) { } catch (error) {
// showError(error.errorMsg)
console.error('Transfer failed:', error) }
}
if (error.errorCode === 5000) { //
showError('Insufficient balance') const exchangeCoinBt = async () => {
} else if (error.errorCode === 5010 || error.errorCode === 5009) { if (!selectedCoin.value) {
showError('Payment password error') showError('Please select an amount first')
return
}
//
const transferData = {
amount: selectedCoin.value.price,
}
try {
//
const response = await exchangeCoin(transferData)
if (response.status) {
showSuccess(`Successfully exchange $${selectedCoin.value.amount} coins`)
} else { } else {
showError('Transfer failed, please try again later') showError(`Failed to exchange $${selectedCoin.value.amount} coins`)
} }
//
selectedCoin.value = null
getDrawableAmount() //
} catch (error) {
showError(error.errorMsg)
} }
} }