Blizzard
|
586875f8c5
|
feat: 身份卡改上下两张卡(正面/背面) + 手机号硬门槛
- canvas 重画成上下两张:正面(暖黄,头像/名字性别/性别品种毛色年龄/性格
彩色标签/介绍/物ID+一起生活天数)、背面(蓝色照护信息条 + 主人/电话/疫苗/
备注/发证机构/有效期 + 走失联系框&小程序码)
- 生成前查手机号:没有则唤起 getPhoneNumber 组件,验证成功才生成;
拒绝则提示「无法生成」不出卡
- IDCard 增 age/days;ic-canvas 高度改 1480 否则导出被裁
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-07-31 17:48:39 +08:00 |
|
Blizzard
|
ef172f4e4a
|
feat: 宠物加性格/过敏/备注字段 + 身份卡照护信息 + 微信取手机号
- Pet 增 personality/allergy/notes;建档表单加「性格标签(多选)/过敏/备注」
- IDCard 增 color/personality/owner/phone(脱敏)/allergy/notes/疫苗驱虫状态/发证机构
- 微信取手机号:POST /api/user/phone 用 getPhoneNumber 的 code 换手机号存库
(BindPhoneByCode 走 getuserphonenumber,复用 access_token)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-07-31 17:12:56 +08:00 |
|
Blizzard
|
bb7db78763
|
feat(fe+be): 身份卡头像不再压扁 + 内容丰富
- 头像用九参数 drawImage 居中裁剪(cover),竖图/横图都不变形,加白边圈
- 后端 IDCard 增 zodiac(按生日算星座) + weight,卡面加「星座/体重」行
- 加淡淡的肉垫水印 + 旋转的「肉垫计划·官方认证」印章
- 画布加高容纳新增内容
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-07-31 11:50:04 +08:00 |
|
Blizzard
|
cbfcaada55
|
feat: 宠物身份卡(canvas 绘制 + 小程序码 + 存相册/分享)
竞品那张「居民身份卡」,完整做了。
## 后端
service/wxacode.go —— 小程序码。两步:先拿 access_token(2h 有效,进程内缓存、
提前 5 分钟过期),再调 getwxacodeunlimit 换一张 PNG 存到 MinIO 返回 URL。
同一只宠物的码 object 名按 pet id 定死,存在就直接返回不重新生成 ——
微信侧有日调用配额,不能每次点都烧一次。
⚠️ getwxacodeunlimit 要求 page 在**已发布**的小程序版本里。开发/未发布时返回
errcode 41030,实测确认。这时身份卡照常出、只是没码(qr_ready=false),
发布后自动就有,不用改代码。best-effort,取不到不算错。
service/idcard.go —— 组装卡片内容。身份 ID 用「宠物雪花 id 的数字 + 生日」
拼成 18 位、每 4 位空一下,纯装饰不入库不校验,同一只每次都一样。
介绍按物种给默认(汪星人/喵星人来地球啦~)。有效期用生日起算。
GET /api/pets/:id/id-card
storage 加了 Exists(StatObject),生成前先查。
## 前端 pages/idcard
离屏 canvas 2d 画卡,导出成图展示 + 存相册 + 分享(open-type=share,
imageUrl 用画好的卡当封面)。
两张远程图(头像 + 小程序码)都用 node.createImage() 异步加载,
**Promise.all 等两张都就绪再开画** —— 否则小程序码会画不上或画一半
(规划里专门点过名的坑)。任一张加载失败 resolve(null),缺图也照画:
头像缺→画物种 emoji,码缺→画「小程序码 待发布」占位框。
存相册的权限被拒过一次后 wx.authorize 不再弹,走 openSetting 引导(同海报那套)。
绘制复用了 bottom-sheet 里 poster 的 canvas 模式(dpr 放大、roundRect、
canvasToTempFilePath),但 poster 只画文字不画远程图,这里的双图加载是新写的。
入口:「我的」→ 身份卡,用当前选中的宠物。
## 验证(预生产库实跑)
id-card 接口返回:姓名/性别/品种/生日/介绍/身份ID/有效期 全对
身份 ID = 3410 4333 1420 2503 17(宠物id数字+生日,稳定)
qr_ready = false,日志确认 41030 invalid page(小程序未发布,预期)
canvas 版式用 HTML 复刻确认过:未发布=占位、发布后=真码
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-07-30 16:48:16 +08:00 |
|