feat(users): merge promotion into revenue center

This commit is contained in:
kate522 committed 2026-08-03 15:38:17 +08:00
1 parent 156060d2ec
commit 49c12b761f
20 files changed
+369 -413

No files matched your search

+103 -101
View File
@@ -1,114 +1,116 @@
/**
* Creator revenue / withdraw form.
* AKSRT Revenue Center Frontend
*
* @package AKSRT
*/
(function () {
"use strict";
'use strict';
var page = document.querySelector("[data-aksrt-revenue-page]");
if (!page || !window.aksrtData) return;
var page = document.querySelector('[data-aksrt-revenue-page]');
var data = window.aksrtData || {};
if (!page || !data) return;
function restBase() {
return ((aksrtData.siteUrl || "").replace(/\/$/, "")) + "/wp-json/aksrt/v1";
}
var rest = data.restUrl || data.apiUrl || ((data.siteUrl || '').replace(/\/$/, '') + '/wp-json/aksrt/v1');
if (!rest) return;
if (window.location.protocol === 'https:' && rest.substring(0, 5) === 'http:') {
rest = 'https:' + rest.substring(5);
}
rest = rest.replace(/\/?$/, '');
function rest(path, method, body) {
var opts = {
method: method || "GET",
credentials: "same-origin",
headers: { "X-WP-Nonce": aksrtData.restNonce || "" },
};
if (body !== undefined) {
opts.headers["Content-Type"] = "application/json";
opts.body = JSON.stringify(body);
}
return fetch(restBase() + path, opts).then(function (r) {
return r.json();
});
}
var form = page.querySelector('[data-aksrt-withdraw-form]');
var message = page.querySelector('[data-aksrt-withdraw-msg]');
var balance = page.querySelector('[data-aksrt-revenue-balance]');
var list = page.querySelector('[data-aksrt-withdraw-list]');
if (!form) return;
var form = page.querySelector("[data-aksrt-withdraw-form]");
var msg = page.querySelector("[data-aksrt-withdraw-msg]");
var balanceEl = page.querySelector("[data-aksrt-revenue-balance]");
var list = page.querySelector("[data-aksrt-withdraw-list]");
function setMessage(text, error) {
if (!message) return;
message.hidden = false;
message.textContent = text;
message.classList.toggle('is-error', !!error);
}
if (!form) return;
function request(payload) {
return fetch(rest + '/pay/balance/withdraw', {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': data.restNonce || data.nonce || ''
},
body: JSON.stringify(payload)
}).then(function (response) {
return response.json().catch(function () {
return { message: '服务器返回了非 JSON 响应' };
}).then(function (json) {
return { ok: response.ok, json: json };
});
});
}
form.addEventListener("submit", function (e) {
e.preventDefault();
var fd = new FormData(form);
var amount = Number(fd.get("amount") || 0);
var method = String(fd.get("method") || "alipay");
var account = String(fd.get("account_info") || "").trim();
var min = Number(page.getAttribute("data-min-amount") || 50);
if (amount < min) {
if (msg) {
msg.hidden = false;
msg.textContent = "最低提现金额为 " + min;
}
return;
}
if (!account) {
if (msg) {
msg.hidden = false;
msg.textContent = "请填写收款账户信息";
}
return;
}
form.addEventListener('submit', function (event) {
event.preventDefault();
var values = new FormData(form);
var amount = Number(values.get('amount') || 0);
var method = String(values.get('method') || 'alipay');
var account = String(values.get('account_info') || '').trim();
var minimum = Number(page.getAttribute('data-min-amount') || 50);
if (amount < minimum) {
setMessage('最低提现金额为 ' + minimum, true);
return;
}
if (!account) {
setMessage('请填写收款账户信息', true);
return;
}
var btn = form.querySelector('button[type="submit"]');
if (btn) {
btn.disabled = true;
btn.textContent = "提交中...";
}
rest("/shop/frontend/revenue/withdraw", "POST", {
amount: amount,
method: method,
account_info: account,
})
.then(function (result) {
if (btn) {
btn.disabled = false;
btn.textContent = "提交提现申请";
}
if (!result || !result.success) {
if (msg) {
msg.hidden = false;
msg.textContent = (result && result.message) || "提现失败";
}
return;
}
if (msg) {
msg.hidden = false;
msg.textContent = result.message || "提现申请已提交";
}
if (balanceEl && result.data && typeof result.data.balance !== "undefined") {
balanceEl.textContent = "¥" + Number(result.data.balance).toFixed(2);
}
if (list && result.data) {
var item = document.createElement("div");
item.className = "aksrt-revenue-page__item";
item.innerHTML =
"<div><strong>¥" +
Number(result.data.amount || amount).toFixed(2) +
"</strong><span>" +
method +
"</span></div><div><span>pending</span><time>just now</time></div>";
list.insertBefore(item, list.firstChild);
}
form.reset();
})
.catch(function () {
if (btn) {
btn.disabled = false;
btn.textContent = "提交提现申请";
}
if (msg) {
msg.hidden = false;
msg.textContent = "网络错误";
}
});
});
var button = form.querySelector('button[type="submit"]');
if (button) {
button.disabled = true;
button.textContent = '提交中…';
}
request({ amount: amount, method: method, account_info: account }).then(function (result) {
if (button) {
button.disabled = false;
button.textContent = '提交提现申请';
}
if (!result.ok || !result.json || !result.json.success) {
setMessage((result.json && result.json.message) || '提现失败,请稍后重试。', true);
return;
}
var response = result.json.data || {};
setMessage(response.message || '提现申请已提交。', false);
if (balance && typeof response.wallet_balance !== 'undefined') {
balance.textContent = '¥' + Number(response.wallet_balance).toFixed(2);
}
if (list) {
var item = document.createElement('div');
item.className = 'aksrt-revenue-page__item';
var main = document.createElement('div');
var amountEl = document.createElement('strong');
amountEl.textContent = '¥' + Number(response.amount || amount).toFixed(2);
var methodEl = document.createElement('span');
methodEl.textContent = method;
main.appendChild(amountEl);
main.appendChild(methodEl);
var state = document.createElement('div');
var pending = document.createElement('span');
pending.textContent = 'pending';
var time = document.createElement('time');
time.textContent = 'just now';
state.appendChild(pending);
state.appendChild(time);
item.appendChild(main);
item.appendChild(state);
list.insertBefore(item, list.firstChild);
}
form.reset();
}).catch(function () {
if (button) {
button.disabled = false;
button.textContent = '提交提现申请';
}
setMessage('网络错误,请稍后重试。', true);
});
});
})();