奇妙魔法照片产品系统

我要开发同款
RickyTsang2026年09月12日
6阅读

技术信息

语言技术
JavaVueNode.jsElementUIuniapp
系统类型
小程序轻应用
行业分类
社交

作品详情

行业场景

香港迪士尼这类主题乐园的游客,园内拍的照片都存在乐园官方的照片账号里:官方端只能一张张长按保存,一次出行动辄几百张;照片卡还有有效期,过期就取不回来;同行的家人朋友想要照片,只能共用同一个账号各自登录。另一侧,乐园玩偶周边的收藏与代购人群,长期靠微信群加手工表格记录「有哪些系列、我入了哪些、这一单要带几件」,信息分散、容易漏单。
本项目把这两类需求做进同一个面向 C 端的乐园小程序:出行前查实时客流和项目排队,游玩后批量取回照片并分享给同行,回家后逛商品图鉴、记录娃柜、拉代购清单。用户以个人游客和收藏爱好者为主,天然带社交分享属性,因此下载、分享、海报、清单几条链路都按「一个人操作、多个人使用」来设计。

功能介绍

一、乐园实时首页:免登录查看实时客流、舒适度、项目排队时长与演出时间表;服务端定时刷新上游数据写入 Redis,用户请求只读缓存,单个数据源变慢不阻塞整页。
二、照片相册:绑定乐园拍照账号,扫码或手动绑卡,按拍摄日期拆分相册,分页浏览与大图查看。
三、批量下载:整卡下载或勾选下载,任务支持进度跟踪、暂停、继续、失败项重试、单张重试和断点恢复,下载完成后逐张保存进系统相册。
四、卡片分享:生成分享链接或二维码并附 6 位提取码,可选 1 天/7 天/30 天/永久有效期;访客免登录浏览和批量保存,支持撤销分享、提取码连续错误锁定与访问计数。
五、娃图鉴:3000+ 商品资料,按园区、系列、角色、分类筛选搜索,商品详情、入柜记录、愿望单、娃柜统计与收藏海报。
六、选购单:管理员按白名单开通建单权限,选品建单、数量与金额统计、生成清单海报,只做清单记账,不涉及支付。
七、我的与后台:问题反馈闭环、用户协议、隐私政策、注销说明;后台管理端覆盖账号、卡片、照片、下载任务、本地相册、图鉴同步与人工上下架、图片编辑与水印标记、反馈处理和授权管理。

项目实现

独立全栈开发与部署运维,库表、接口、双端页面到上线全部本人完成。
技术栈:Spring Boot + Spring Security + MyBatis + Redis + JWT(基于 RuoYi 二次开发)+ MySQL 8;用户端 uni-app + Vue3 一套代码编译小程序与 H5;管理端 Vue3 + Vite + Element Plus;Docker Compose 单机部署。
亮点与难点:
1. 手机端批量存相册:H5 的 navigator.share 有三条硬约束——必须在用户手势同步栈内触发、一次手势只能调一次、iOS 单批超约 9 张整批静默失败,遂设计成「后台预取 → 每 9 张成批 → 点一次存一批」的状态机,内存只驻留当前批和下一批;小程序端走 downloadFile + saveImageToPhotosAlbum,进度节流落本地可续传。
2. 下载编排:多任务并发叠加任务内图片并发,信号量控盘,进度增量上报,网络错误退避重试;整卡预取用 Redis 进度加进程内 in-flight 去重,同一张卡全局只跑一个同步任务。
3. 资源调优:生产 2 核 2G 单机,按实测 RSS 给三个容器划死内存上限(后端 580M、MySQL 560M、Redis 150M),避免 OOM Killer 随机杀库;照片表大字段 raw_json 拆出主表并补索引。
4. 数据坑:照片唯一键最初只用卡号,同卡不同拍摄日期互相覆盖,改为「登录名 + 卡号 + 拍摄日期 + 源照片号」。
5. 水印识别:2963 张图实测否掉「近白像素占比」判据,改为固定条带 + 近白掩膜 + Tesseract 中文 OCR 模糊匹配,无 GPU 单机可跑。
6. 微信 wx.login 静默登录建身份,乐园账号降级为可选绑定,收藏类功能零门槛。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论