去年参与某动物保护组织的技术志愿工作时,发现他们还在用Excel表格管理上百只流浪动物的信息。兽医预约、领养申请、物资调配全混在一个文件里,志愿者交接时经常出现信息遗漏。这个微信小程序就是要解决这些痛点——把纸质流程数字化,让救助站运营更规范透明。
微信生态的优势很明显:不用额外安装APP,志愿者和潜在领养人扫码就能用。我们调研了国内12家中小型救助站,发现83%的日常沟通都在微信完成。这个小程序包含三大核心模块:动物档案管理、领养流程跟踪、志愿者调度,后面会详细拆解每个模块的技术实现。
选择微信小程序而非原生APP主要考虑三点:首先,救助站预算有限,小程序无需iOS/Android双端开发;其次,微信开放了扫码、位置、相册等关键API,完全满足业务需求;最后,云开发模式省去了服务器运维成本。实测数据显示,同样功能的小程序开发成本比APP低60%。
技术栈采用微信原生框架+云开发,数据库用云开发的JSON数据库。没有选用第三方框架是考虑到长期维护性——救助站的志愿者技术能力有限,原生方案文档最全,社区问题也最容易解决。
动物档案的核心字段包括:
json复制{
"id": "A20230001",
"name": "小白",
"type": "dog",
"healthStatus": {
"vaccinated": true,
"sterilized": false
},
"images": ["cloud://xxx.jpg"],
"location": {
"latitude": 39.9042,
"longitude": 116.4074
}
}
特别注意了字段的扩展性,比如healthStatus采用嵌套结构,方便后期添加体检报告等新属性。所有图片存储在云存储,用CDN加速访问。
开发中遇到的最大挑战是离线处理。救助站常位于郊区,网络不稳定。我们利用小程序缓存机制,在onLoad时先读取本地缓存,同时发起网络请求,用如下代码实现双保险:
javascript复制Page({
onLoad() {
const cacheData = wx.getStorageSync('animalList')
if (cacheData) {
this.setData({ list: cacheData })
}
wx.cloud.callFunction({
name: 'getAnimals',
complete: res => {
wx.setStorageSync('animalList', res.result)
}
})
}
})
领养审批流程配置在云函数里,包含状态机控制:
javascript复制const statusFlow = {
'pending': ['approved', 'rejected'],
'approved': ['completed', 'canceled'],
'rejected': ['archived']
}
每个状态变更都会触发模板消息通知申请者,并记录操作日志。测试阶段发现审批有时重复触发,最后通过云函数事务解决了这个问题。
初期加载动物列表要6秒以上,通过三招优化到1.2秒:
db.collection('animals').createIndex({ type: 1, status: 1 })遇到过恶意刷领养申请的情况,解决方案是:
上线三个月后数据:
下一步准备增加:
有个细节值得分享:最初用颜色区分动物状态,后来发现色盲志愿者操作困难,改成了图标+文字双重标识。这类无障碍设计往往容易被忽略,但对实际使用体验影响很大。