更新小程序二维码生成逻辑,改为调用后端接口生成小程序码并保存为本地文件;同时在 devlop 脚本中统一 SSH 端口配置,提升代码可维护性。

This commit is contained in:
乘风
2026-02-04 16:19:58 +08:00
parent 722185da78
commit 6eb748a902
2 changed files with 53 additions and 16 deletions

View File

@@ -266,15 +266,50 @@ Page({
this.setData({ showPosterModal: true, isGeneratingPoster: true })
try {
// Next.js 的实现:只生成一个二维码图片(不做画布海报)
const { referralCode, userInfo } = this.data
const referralLink = `https://soul.quwanzhi.com/?ref=${referralCode}`
const qrUrl = `https://api.qrserver.com/v1/create-qr-code/?size=320x320&data=${encodeURIComponent(referralLink)}`
const nickname = userInfo?.nickname || '用户'
const scene = `ref=${referralCode}`
console.log('[Poster] 请求小程序码, scene:', scene)
// 调用后端接口生成「小程序码」(官方 getwxacodeunlimit不再使用 H5 二维码
const res = await app.request('/api/miniprogram/qrcode', {
method: 'POST',
data: {
scene, // ref=XXXX
page: 'pages/index/index',
width: 280,
},
})
if (!res || !res.success || !res.image) {
console.error('[Poster] 生成小程序码失败:', res)
throw new Error(res?.error || '生成小程序码失败')
}
// 后端返回的是 data:image/png;base64,... 需要先写入本地临时文件,再作为 <image> 的 src
const base64Data = String(res.image).replace(/^data:image\/\w+;base64,/, '')
const fs = wx.getFileSystemManager()
const filePath = `${wx.env.USER_DATA_PATH}/poster_qrcode_${Date.now()}.png`
await new Promise((resolve, reject) => {
fs.writeFile({
filePath,
data: base64Data,
encoding: 'base64',
success: () => resolve(true),
fail: (err) => {
console.error('[Poster] 小程序码写入本地失败:', err)
reject(err)
},
})
})
console.log('[Poster] 小程序码已保存到本地:', filePath)
this.setData({
posterQrSrc: qrUrl,
posterReferralLink: referralLink,
posterQrSrc: filePath,
posterReferralLink: '', // 小程序版本不再使用 H5 链接
posterNickname: nickname,
posterNicknameInitial: (nickname || '用').charAt(0),
isGeneratingPoster: false