feat(api): GET /v1/user/balance 查询用户余额

users 表新增 credits_used(累计消耗积分):扣费累加、失败退款回减(refundIfNeeded / 维护清扫改走 RefundCredits),充值/CDK/签到发放不计入。接口返回 {object,balance,used,total},Bearer API Key 鉴权,与其他 v1 接口同一 CORS 与错误格式。站内接口文档与 README 补充端点说明。
This commit is contained in:
GlossSeaDress
2026-08-10 14:59:48 +08:00
parent 2c47344ed9
commit f94a7ace5f
9 changed files with 79 additions and 6 deletions
+16
View File
@@ -41,6 +41,22 @@ func (h *V1Handler) Models(c *gin.Context) {
})
}
// UserBalance — GET /v1/user/balance. 返回 API Key 所属用户的账户级余额
// (剩余 / 累计已用),与具体令牌无关。
func (h *V1Handler) UserBalance(c *gin.Context) {
principal, err := h.v1.Authenticate(c.Request.Context(), c.GetHeader("Authorization"))
if err != nil {
h.writeAuthError(c, err)
return
}
resp, err := h.v1.UserBalance(c.Request.Context(), principal)
if err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"detail": "failed to load balance"})
return
}
c.JSON(http.StatusOK, resp)
}
// ImageGenerations — OpenAI POST /v1/images/generations (text-to-image only).
// Accepts exactly OpenAI's fields; size→aspect ratio and quality→resolution tier
// are mapped server-side. Returns {created, data:[{b64_json}]}.