Convert billing to 1-to-100 credits
This commit is contained in:
@@ -2,6 +2,7 @@ const {
|
||||
requireAuth,
|
||||
requireEnterpriseAdmin,
|
||||
distributeCredits,
|
||||
creditsToCreditUnits,
|
||||
getEnterpriseFinancials,
|
||||
getEnterpriseName,
|
||||
pool,
|
||||
@@ -302,25 +303,33 @@ function registerEnterpriseRoutes(router) {
|
||||
});
|
||||
|
||||
router.post("/enterprise/distribute", requireAuth, requireEnterpriseAdmin, async (req, res) => {
|
||||
const { userId, amountCents, distributions } = req.body;
|
||||
const { userId, amountCredits, amountCents, distributions } = req.body;
|
||||
|
||||
try {
|
||||
if (distributions && Array.isArray(distributions)) {
|
||||
for (const d of distributions) {
|
||||
if (!d.userId || !d.amountCents || d.amountCents <= 0) {
|
||||
const creditUnits =
|
||||
d.amountCredits !== undefined && d.amountCredits !== null && d.amountCredits !== ""
|
||||
? creditsToCreditUnits(d.amountCredits)
|
||||
: Number(d.amountCents);
|
||||
if (!d.userId || !creditUnits || creditUnits <= 0) {
|
||||
return res
|
||||
.status(400)
|
||||
.json({ error: "每条分发记录必须包含有效的 userId 和 amountCents" });
|
||||
.json({ error: "每条分发记录必须包含有效的 userId 和 amountCredits" });
|
||||
}
|
||||
await distributeCredits(req.user.enterpriseId, d.userId, d.amountCents, req.user.id);
|
||||
await distributeCredits(req.user.enterpriseId, d.userId, creditUnits, req.user.id);
|
||||
}
|
||||
res.json({ success: true, count: distributions.length });
|
||||
} else if (userId && amountCents) {
|
||||
if (amountCents <= 0) return res.status(400).json({ error: "分发积分必须大于0" });
|
||||
} else if (userId && (amountCredits || amountCents)) {
|
||||
const creditUnits =
|
||||
amountCredits !== undefined && amountCredits !== null && amountCredits !== ""
|
||||
? creditsToCreditUnits(amountCredits)
|
||||
: Number(amountCents);
|
||||
if (!creditUnits || creditUnits <= 0) return res.status(400).json({ error: "分发积分必须大于0" });
|
||||
const result = await distributeCredits(
|
||||
req.user.enterpriseId,
|
||||
userId,
|
||||
amountCents,
|
||||
creditUnits,
|
||||
req.user.id,
|
||||
);
|
||||
res.json({ success: true, ...result });
|
||||
@@ -349,7 +358,7 @@ function registerEnterpriseRoutes(router) {
|
||||
u.username,
|
||||
u.balance_cents AS current_balance_cents,
|
||||
COUNT(acl.id) AS total_calls,
|
||||
COALESCE(SUM(CASE WHEN acl.cost_estimate IS NOT NULL THEN CAST(ROUND((acl.cost_estimate * 100)::numeric) AS INTEGER) ELSE 0 END), 0) AS total_cost_cents,
|
||||
COALESCE(SUM(CASE WHEN acl.cost_estimate IS NOT NULL THEN CAST(ROUND((acl.cost_estimate * 10000)::numeric) AS INTEGER) ELSE 0 END), 0) AS total_cost_cents,
|
||||
MAX(acl.created_at) AS last_active
|
||||
FROM users u
|
||||
LEFT JOIN api_call_logs acl ON acl.user_id = u.id AND acl.status = 'success'
|
||||
|
||||
Reference in New Issue
Block a user