# baopingan **Repository Path**: zhangyudada/baopingan ## Basic Information - **Project Name**: baopingan - **Description**: baopingan - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 打卡报平安微信小程序 一个简单易用的打卡报平安微信小程序,帮助用户向家人快速报平安,解决家人间安全顾虑。 ## 项目结构 ``` baopingan/ ├── miniprogram/ # uni-app 前端项目 │ ├── pages/ # 页面文件 │ ├── components/ # 组件 │ ├── utils/ # 工具函数 │ ├── api/ # API 接口 │ └── static/ # 静态资源 ├── server/ # Node.js 后端服务 │ ├── routes/ # 路由 │ ├── controllers/ # 控制器 │ ├── models/ # 数据模型 │ ├── middleware/ # 中间件 │ └── utils/ # 工具函数 └── database/ # 数据库相关 └── init.sql # 数据库初始化脚本 ``` ## 功能模块 1. **用户登录模块** - 微信一键授权登录 2. **家人管理模块** - 添加、编辑、删除家人关系 3. **核心打卡模块** - 一键打卡报平安 4. **提醒通知模块** - 定时提醒和推送通知 5. **打卡记录模块** - 查看历史记录和导出 6. **紧急求助模块** - 一键求助功能 ## 技术栈 - **前端**: uni-app (支持微信小程序、H5、App多端) - **后端**: Node.js + Express - **数据库**: MySQL - **认证**: JWT + 微信登录 ## 快速开始 ### 1. 安装依赖 ```bash npm install ``` ### 2. 配置数据库 修改 `server/config/database.js` 中的数据库配置,然后执行: ```bash mysql -u root -p < database/init.sql ``` ### 3. 配置环境变量 创建 `server/.env` 文件: ``` DB_HOST=localhost DB_USER=root DB_PASSWORD=your_password DB_NAME=baopingan JWT_SECRET=your_jwt_secret WECHAT_APPID=your_wechat_appid WECHAT_SECRET=your_wechat_secret # 打卡通知订阅消息模板ID(必填,否则家人收不到通知) WECHAT_TEMPLATE_CHECKIN=你的模板ID # 可选:求助通知模板ID WECHAT_TEMPLATE_HELP= ``` ### 4. 启动后端服务 ```bash npm run dev ``` ### 5. 运行前端 使用 HBuilderX 打开 `miniprogram` 目录,或使用 uni-app CLI: ```bash cd miniprogram npm install npm run dev:mp-weixin ``` ## 为什么点击「一键平安」后朋友收不到通知? 打卡后通知家人依赖**微信订阅消息**,需同时满足下面条件,朋友才会收到: 1. **后端已配置打卡通知模板 ID** 在 `server/.env` 中设置 `WECHAT_TEMPLATE_CHECKIN=模板ID`。 模板在 [微信公众平台](https://mp.weixin.qq.com) → 功能 → 订阅消息 中申请,选择「打卡/报平安」类模板,模板需包含:事项(thing1)、时间(time2)、状态(thing3)。 未配置时服务端会跳过发送,控制台会打印:`未配置订阅消息模板ID,跳过发送消息`。 2. **朋友端已授权订阅** 对方必须曾在小程序里**授权过该模板**(例如在「提醒」页点击「授权订阅消息」,且模板 ID 与后端 `WECHAT_TEMPLATE_CHECKIN` 一致)。未授权时微信会拒绝下发(错误码 43101)。 3. **未开测试模式且请求到真实后端** 若小程序在设置里开了「测试模式」,请求不会发到真实后端,不会发订阅消息。请关闭测试模式并确保后端服务已启动。 4. **已添加为家人且关系已确认** 双方需在「家人」中互相添加,且状态为「已确认」。对方也需曾用微信登录过本小程序(这样才有 openid),否则服务端会跳过该家人。 **排查建议**:看后端日志。若出现「准备向 N 位家人发送订阅消息」但朋友仍收不到,多半是模板未配置或对方未授权该模板;若出现「未配置订阅消息模板ID」或「没有已确认的家人关系」,则按上面 1、4 检查。 ## 开发说明 - 前端使用 uni-app 框架,支持多端编译 - 后端使用 Express 框架,提供 RESTful API - 数据库使用 MySQL,支持关系型数据存储 - 使用 JWT 进行用户认证 - 集成微信登录和订阅消息功能