diff --git a/miniprogram/app.js b/miniprogram/app.js index b903ce7b..7d3ab6c9 100644 --- a/miniprogram/app.js +++ b/miniprogram/app.js @@ -8,8 +8,8 @@ const { parseScene } = require('./utils/scene.js') App({ globalData: { // API基础地址 - 连接真实后端 - // baseUrl: 'https://soulapi.quwanzhi.com', - baseUrl: 'https://souldev.quwanzhi.com', + baseUrl: 'https://soulapi.quwanzhi.com', + // baseUrl: 'https://souldev.quwanzhi.com', // baseUrl: 'http://localhost:3006', // baseUrl: 'http://localhost:8080', diff --git a/miniprogram/pages/read/read.js b/miniprogram/pages/read/read.js index eb7f1485..971dbb8c 100644 --- a/miniprogram/pages/read/read.js +++ b/miniprogram/pages/read/read.js @@ -227,7 +227,7 @@ Page({ section.price = sectionPrice } this.setData({ section }) - + let res = prefetched if (!res) { res = mid @@ -250,6 +250,16 @@ Page({ if (accessManager.canAccessFullContent(accessState)) { app.markSectionAsRead(id) } + // 0元即免费:接口返回 price 为 0 或 isFree 为 true 时,不展示付费墙 + const isFreeByPrice = res.price === 0 || res.price === '0' || Number(res.price) === 0 + const isFreeByFlag = res.isFree === true + if (isFreeByPrice || isFreeByFlag) { + const section = this.data.section || {} + if (res.price !== undefined && res.price !== null) section.price = Number(res.price) + if (res.isFree !== undefined) section.isFree = !!res.isFree + this.setData({ section, showPaywall: false, canAccess: true, accessState: 'free' }) + app.markSectionAsRead(id) + } setTimeout(() => this.drawShareCard(), 600) } } catch (e) { diff --git a/soul-api/internal/handler/admin_withdrawals.go b/soul-api/internal/handler/admin_withdrawals.go index af4c089a..1b6daae7 100644 --- a/soul-api/internal/handler/admin_withdrawals.go +++ b/soul-api/internal/handler/admin_withdrawals.go @@ -156,6 +156,17 @@ func AdminWithdrawalsAction(c *gin.Context) { return } + // 批准前二次校验可提现金额,与申请时口径一致,防止退款/冲正后超额打款 + available, _, _, _, _ := computeAvailableWithdraw(db, w.UserID) + if w.Amount > available { + c.JSON(http.StatusOK, gin.H{ + "success": false, + "error": "用户当前可提现不足,无法批准", + "message": fmt.Sprintf("用户当前可提现 ¥%.2f,本笔申请 ¥%.2f,可能因退款/冲正导致。请核对后再批或联系用户。", available, w.Amount), + }) + return + } + // 调用微信转账接口:按提现手续费扣除后打款,例如申请100元、手续费5%则实际打款95元 remark := "提现" if w.Remark != nil && *w.Remark != "" { diff --git a/soul-api/soul-api b/soul-api/soul-api index 40d2af45..ed62f924 100644 Binary files a/soul-api/soul-api and b/soul-api/soul-api differ