更新记录
1,0,0(2026-10-08) 下载此版本
开发框架:uni-app(Vue3 Composition API),编译微信小程序,跨端代码可复用 后端:uniCloud 云函数 + 云数据库(Serverless),前端不直连数据库,全部读写经云函数 数据层:5 个云数据库集合(users /persons/records /daily_records/market_prices),含联合索引设计与软删除方案 登录鉴权:微信一键登录,基于 openid 实现用户数据隔离;云函数统一归属校验,防越权读写 核心算法:① 自然语言批量解析引擎(文本切分 → 姓名 / 金额 / 场合抽取 → 同名去重);② 回礼建议规则引擎(历史锚点 + 场合系数折算 + 行情兜底 + 净额判断,12 条规则输出可解释区间) 前端组件:uni-ui 组件库、uCharts 图表(统计页柱状图 / 饼图)、picker 日期选择 工程规范:云函数统一 {code, message, data} 返回格式与错误码;40+ 条功能 / 边界 / 安全验收用例闭环 商业化:微信流量主广告变现(Banner + 激励视频),主流程零广告
平台兼容性
uni-app(5.24)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | √ | - | - | - | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| - | - | - | - | - | - | - | - | - | - | - | - |
四、快速开始
1. 导入项目
- HBuilderX → 文件 → 导入 → 从本地导入 → 选择项目根目录
- 若 uniCloud 节点未出现,按上方提示重命名目录为
uniCloud-aliyun
2. 关联 uniCloud 服务空间
- 点击 HBuilderX 左侧 uniCloud 节点
- 右键 → 关联云服务空间或项目 → 新建或选择一个阿里云服务空间
- 等待关联完成
3. 部署云函数与数据库
- 右键
uniCloud-aliyun/cloudfunctions→ 上传部署所有云函数 - 右键
uniCloud-aliyun/database→ 初始化云数据库(自动创建 5 张表及索引)
4. 配置登录凭证 (重要)
打开 cloudfunctions/login/config.json,把 5 个 TODO_REPLACE_WITH_* 占位符替换为你自己的凭证:
| 字段 | 获取方式 |
|---|---|
wxAppId |
微信公众平台 → 开发管理 → 开发设置 → AppID |
wxAppSecret |
微信公众平台 → 开发管理 → 开发设置 → AppSecret |
alipayAppId |
支付宝开放平台 → 我的小程序 → 应用详情 → AppID |
alipayPrivateKey |
用支付宝开放平台密钥工具生成 RSA2 密钥对,应用私钥(纯 base64 串,无需 PEM 头尾) |
alipayPublicKey |
上传应用公钥后,开放平台返回的支付宝公钥 |
替换后重新上传部署 login 云函数(右键 cloudfunctions/login → 上传部署,确保 config.json 一并上传)。
安全提示:
config.json切勿提交到 Git,建议加入.gitignore。
5. 修改小程序 AppID
打开 manifest.json:
mp-weixin.appid→ 改成你自己的微信小程序 AppIDmp-alipay.appid→ 改成你自己的支付宝小程序 AppID
6. 运行
- 微信:运行 → 运行到小程序模拟器 → 微信开发者工具
- 支付宝:运行 → 运行到小程序模拟器 → 支付宝小程序开发者工具
五、配置说明
5.2 微信合法域名
若使用云端云函数 URL 调用方式,需在小程序后台 → 开发管理 → 服务器域名 → request 合法域名中添加 uniCloud 阿里云的 API 域名(一般 api.next.bspapp.com)。使用 uni.callFunction 直连方式则无需配置。
5.3 支付宝密钥模式
本模板采用公钥模式(非证书模式)。如需切换为证书模式,需自行扩展 login/index.js 中的 alipayGateway 函数,改用 alipayCertSN + alipayCertContent 字段。
六、数据库表结构
users(用户)
| 字段 | 类型 | 说明 |
|---|---|---|
| _id | string | 记录ID |
| openid | string | wx: / alipay: 前缀 + openid |
| nickname | string | 昵称 |
| created_at | number | 创建时间戳 |
persons(往来对象)
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | string | 归属用户 openid |
| name | string | 姓名 |
| group | string | 关系分组(亲属/朋友/同事…) |
| status | int | 1=正常,0=软删 |
| created_at | number |
records(随礼记录)
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | string | |
| person_id | string | 关联 persons._id |
| person_name | string | 冗余姓名 |
| direction | string | expense=送出 / income=收到 |
| amount | number | 金额(元) |
| event_type | string | 场合枚举 |
| event_date | string | YYYY-MM-DD |
| note | string | 备注 |
| created_at | number |
daily_records(日常记录)
| 字段 | 类型 | 说明 |
|---|---|---|
| user_id | string | |
| direction | string | expense / income |
| amount | number | |
| category | string | 分类枚举 |
| record_date | string | YYYY-MM-DD |
| note | string | |
| created_at | number |
market_prices(行情参考)
内置随礼行情参考价目表,预置数据。
七、云函数列表
| 云函数 | 作用 |
|---|---|
| login | 双端登录,换取 openid |
| createRecord | 创建随礼记录 |
| batchCreateRecords | 粘贴文本批量解析录入 |
| updateDailyRecord | 更新日常记录 |
| deleteDailyRecord | 删除日常记录(软删) |
| listDailyRecords | 日常记录列表(按月) |
| getDailyStats | 日常统计(scope: all/year/month) |
| listPersons | 对象列表 |
| updatePerson | 对象重命名 / 合并 / 软删 |
| deletePerson | 对象软删 |
| getRelation | 对象详情 + 往来明细 |
| getOverview | 首页概览(双账本卡 + 双最近列表) |
| getStats | 随礼统计(all/year) |
| suggestionEngine | 回礼建议 |
| parseRecords | 粘贴文本解析 |
| getMarketTable | 行情参考 |
所有云函数统一返回体:{ code, message, data },通过 common/ledger-common 的 wrap 包装。
九、常见问题
Q1:导入后 HBuilderX 没有 uniCloud 节点?
A:目录名不规范,把 uniCloud-alipay 重命名为 uniCloud-aliyun,重新打开项目。
Q2:登录报「验签出错」?
A:检查 login/config.json 的 alipayPrivateKey 对应的应用公钥是否已上传到支付宝开放平台「接口加签方式」,且模式为公钥模式(非证书模式)。用密钥工具由私钥反推公钥比对。
Q3:首页最近往来列表不更新?
A:确认 getOverview 云函数已重新部署(接口字段已从混合 recent 拆为 recentRelation / recentDaily)。
Q4:统计页日常统计为空?
A:确认 getDailyStats 云函数已部署,且该月份有日常记录。
Q5:删除对象后数据还在?
A:本模板软删(status=0),首页与统计已通过 activePersonIds 过滤;若仍显示,检查对应云函数是否部署最新版本。
Q6:图标显示不出来?
A:本模板使用 base64 SVG data URI,无需图片资源。如自定义图标,参考 common/icons.js 的格式(必须是 base64 编码,微信不支持 URL-encoded SVG)。

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 1
赞赏 0
下载 12657945
赞赏 1955
赞赏
京公网安备:11010802035340号