更新记录

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. 导入项目

  1. HBuilderX → 文件 → 导入 → 从本地导入 → 选择项目根目录
  2. 若 uniCloud 节点未出现,按上方提示重命名目录为 uniCloud-aliyun

2. 关联 uniCloud 服务空间

  1. 点击 HBuilderX 左侧 uniCloud 节点
  2. 右键 → 关联云服务空间或项目 → 新建或选择一个阿里云服务空间
  3. 等待关联完成

3. 部署云函数与数据库

  1. 右键 uniCloud-aliyun/cloudfunctions → 上传部署所有云函数
  2. 右键 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 → 改成你自己的微信小程序 AppID
  • mp-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)。


隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

本小程序采集的数据及用途如下:1. 微信授权登录信息(openid、昵称),用于账号登录与身份识别;2. 用户主动录入的记账数据(人情往来、日常收支记录),发送至本小程序使用的 uniCloud 云服务空间服务器存储(由 DCloud/uniCloud 提供,部署于腾讯云基础设施),仅用于用户本人账本的保存、统计与回礼建议计算,不对第三方传输或共享。本小程序不采集位置、通讯录、相册、麦克风、剪贴板等任何其他敏感信息。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

包含广告。广告形式与频率如下:1. 首页底部 Banner 横幅广告,常驻展示于页面底部,不遮挡主要操作区域;2. 行情参考页激励视频广告,仅当用户主动切换到第 2 个及以上地区档位时触发一次,用于解锁更多地区行情,用户可随时关闭或拒绝,不会自动弹出。两处广告均由微信官方流量主广告组件(ad-unit)提供,未接入任何第三方广告 SDK;记账、关系详情、回礼建议等核心功能页面不展示任何广告。

许可协议

MIT协议

暂无用户评论。