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) }