You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.8 KiB
5.8 KiB
礼品卡二维码核销功能实现说明
功能概述
将礼品卡的"立即使用"功能改为生成二维码,供门店工作人员扫码核销,提升用户体验和核销效率。
核心功能
1. 用户端功能
- 生成核销二维码:点击"立即使用"按钮生成包含核销信息的二维码
- 显示核销码:同时显示6位数字核销码,支持手动输入
- 复制功能:支持复制核销码和兑换码
- 刷新功能:可重新生成新的核销码
2. 门店端功能
- 扫码核销:使用摄像头扫描用户的二维码
- 手动输入:支持手动输入核销码进行验证
- 信息验证:显示礼品卡详细信息供确认
- 完成核销:确认后完成核销操作
技术实现
1. 组件结构
GiftCardQRCode 组件
interface GiftCardQRCodeProps {
visible: boolean
onClose: () => void
giftCard: {
id: number
name?: string
goodsName?: string
code?: string
faceValue?: string
type?: number
status?: number
expireTime?: string
contactInfo?: string
}
}
主要功能:
- 生成核销二维码
- 显示礼品卡信息
- 提供复制和分享功能
StoreVerification 页面
主要功能:
- 扫码识别二维码
- 手动输入核销码
- 验证礼品卡信息
- 完成核销操作
2. 数据流程
二维码数据结构
{
"type": "gift_card_verification",
"giftId": 123,
"giftCode": "SB2024001234567890",
"verificationCode": "123456",
"faceValue": "100",
"timestamp": 1692123456789,
"expireTime": "2024-12-31 23:59:59",
"codeExpireTime": "2024-08-16 15:30:00"
}
核销流程
-
生成核销码
POST /shop/shop-gift/generate-verification-code Body: { giftId: number } Response: { verificationCode: string, expireTime: string }
-
验证核销码
POST /shop/shop-gift/verify Body: { verificationCode?: string, giftCode?: string } Response: ShopGift
-
完成核销
POST /shop/shop-gift/complete-verification Body: { giftId: number, verificationCode: string, storeId?: number, storeName?: string, operatorId?: number, operatorName?: string }
3. 安全机制
核销码安全
- 时效性:核销码有效期15分钟
- 一次性:每次生成新的核销码
- 随机性:6位随机数字,防止猜测
验证机制
- 双重验证:支持二维码和手动输入
- 信息确认:显示完整礼品卡信息供确认
- 状态检查:验证礼品卡状态和有效期
文件结构
新增文件
src/
├── components/
│ └── GiftCardQRCode.tsx # 二维码核销弹窗组件
├── pages/
│ └── store/
│ └── verification.tsx # 门店核销页面
├── user/gift/
│ ├── qrcode-demo.tsx # 二维码功能演示页面
│ └── qrcode-verification-implementation.md
└── api/shop/shopGift/
└── index.ts # 新增核销相关API
修改文件
src/
└── components/
└── GiftCard.tsx # 修改"立即使用"按钮功能
用户体验优化
1. 界面设计
- 清晰的二维码显示:大尺寸二维码,易于扫描
- 信息完整展示:显示礼品卡所有关键信息
- 操作便捷:一键复制、刷新等快捷操作
2. 交互优化
- 即时反馈:生成、验证过程有明确的加载状态
- 错误处理:友好的错误提示和重试机制
- 状态管理:清晰的状态流转和视觉反馈
3. 兼容性考虑
- 多种核销方式:支持扫码和手动输入
- 设备适配:适配不同尺寸的移动设备
- 网络容错:网络异常时的降级处理
业务流程
用户使用流程
- 用户在礼品卡列表点击"立即使用"
- 系统生成核销二维码和核销码
- 用户向门店工作人员出示二维码
- 工作人员扫码或输入核销码
- 系统验证信息并显示礼品卡详情
- 工作人员确认后完成核销
- 礼品卡状态更新为已使用
门店操作流程
- 打开门店核销页面
- 扫描用户二维码或手动输入核销码
- 系统验证并显示礼品卡信息
- 确认信息无误后点击"确认核销"
- 完成核销,用户礼品卡状态更新
测试验证
1. 功能测试
- 二维码生成:验证二维码正确生成和显示
- 核销码生成:验证6位数字核销码的随机性
- 扫码识别:验证二维码能被正确解析
- 手动输入:验证手动输入核销码的准确性
- 核销完成:验证核销后状态正确更新
2. 安全测试
- 时效性测试:验证核销码过期机制
- 重复使用测试:验证核销码不能重复使用
- 状态验证:验证只有未使用的礼品卡能生成核销码
3. 用户体验测试
- 界面响应:验证各种操作的响应速度
- 错误处理:验证各种异常情况的处理
- 设备兼容:验证在不同设备上的显示效果
部署注意事项
1. 后端API
- 确保核销相关API已部署
- 配置核销码有效期(建议15分钟)
- 设置适当的并发限制
2. 权限配置
- 门店核销页面需要相应权限
- 核销操作需要记录操作人信息
3. 监控告警
- 监控核销成功率
- 监控异常核销请求
- 设置核销量异常告警
后续优化建议
- 批量核销:支持一次核销多张礼品卡
- 核销统计:提供核销数据统计和报表
- 离线核销:支持网络异常时的离线核销
- 核销记录:详细的核销历史记录查询
- 多门店支持:支持多门店的核销管理