Files
huangguo_server/app/api/walletctrl/wallectctrl.go
T
rootandClaude Opus 5 8679200f41 Initial commit
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 13:57:10 +08:00

49 lines
1.5 KiB
Go

package walletctrl
import (
"91porn-server/app/service/ai_undress_server"
"91porn-server/app/service/aiser"
"91porn-server/common"
"91porn-server/common/log"
"91porn-server/common/stderr"
"91porn-server/models/v/walletmod"
"github.com/gin-gonic/gin"
)
// GetWalletAmount doc
// @Summary 获取钱包信息
// @Description 获取钱包信息
// @Tags 钱包
// @Accept mpfd,json
// @Produce json,html
// @Success 200 {object} walletmod.Wallet "{"msg": "操作成功"}"
// @Failure 400 {string} json "{"msg": "操作失败"}"
// @Router /mine/wallet [get]
func GetWalletAmount(ctx *gin.Context) {
uid, err := common.GetUID(ctx)
if err != nil {
common.ServeJSON(ctx, stderr.ErrNoToken, err.Error())
return
}
// 从AI女友页面返回后,钱包查询会先尝试把第三方剩余余额下分回主钱包。
// 下分失败只记录告警,钱包接口仍返回当前本地余额。
if err = aiser.TrySettleDown(ctx.Request.Context(), uid); err != nil {
log.Warn("wallet AI girlfriend settlement failed", log.Any("uid", uid), log.E(err))
}
w, err := walletmod.GetWallet(uid)
if err != nil {
common.ServeJSON(ctx, stderr.ErrServerUnavailable, err.Error())
return
}
resp := &walletmod.WalletResp{}
// 当日剩余ai免费脱衣次数
if w != nil {
resp.Wallet = *w
resp.TodayAiFreeTimes = ai_undress_server.GetTodayRemainingAiFreeUndressTimes(*w)
}
common.ServeJSON(ctx, stderr.Success, resp)
}