「时光账记」API —— 每一笔账单,都是生活的旁白。
Momento API 是微信小程序“时光账记”的后端服务,基于 go-zero 微服务框架构建。这是一款专注于个人财务管理与生活记录的应用,旨在帮助用户通过简洁的方式记录收支、管理周期性账单以及关注重要节日。
- 前端小程序端源码:Momento MiniApp 或者 Momento MiniApp (Gitee)
- 后端 API 接口源码:Momento API 或者 Momento API (Gitee)
可以直接使用微信扫描下方小程序二维码进行体验:
微信小程序需要完成微信认证后,账号才可获得“被搜索”和“被分享”能力,我没有进行微信认证,因此,暂时无法通过小程序名称搜索此小程序,只能通过扫描小程序码进行体验。
- 📝 记账管理: 快速记录日常收入与支出,支持多维度筛选与统计。
- 🔄 周期记账: 支持设置周期性(如每月、每周)的固定收支,自动生成账单,省去重复操作。
- 🏷️ 标签管理: 自定义账单标签,支持系统预设与用户自定义,方便分类统计。
- 🎉 节日提醒: 内置节日管理功能,记录重要日期,不再错过每一个值得纪念的时刻。
- 👤 用户体系: 基于微信生态的无感登录与用户信息管理,支持个性化设置(如背景图、预算设置)。
本项目采用现代化的 Go 语言微服务架构:
- 核心框架: go-zero v1.9.4 (高性能微服务框架)
- 编程语言: Go 1.25.5+
- 数据库: MySQL 5.7
- 缓存: Redis
- 代码生成: goctl v1.9.2 (极大提升开发效率)
- 身份认证: JWT (JSON Web Token)
- 工具库: Squirrel (SQL 构建)、Cast (类型转换)、govalidator (参数校验)等
遵循 go-zero 标准目录结构,清晰分层:
momento-api/
├── dsl/ # API 定义文件 (.api, goctl DSL)
│ ├── user/ # 用户模块定义
│ ├── tag/ # 标签模块定义
│ ├── festival/ # 节日模块定义
│ ├── transaction/ # 交易模块定义
│ └── miniapp.api # 主 API 入口
├── internal/
│ ├── config/ # 配置加载
│ ├── handler/ # HTTP 处理器 (自动生成)
│ ├── logic/ # 业务逻辑层 (核心代码)
│ ├── svc/ # 服务上下文 (依赖注入)
│ ├── model/ # 数据库模型 (DAO)
│ ├── middleware/ # 中间件 (Auth 等)
│ └── types/ # 请求/响应结构体
├── coreKit/ # 共享工具库 (错误处理, 响应封装, JWT 等)
├── etc/ # 配置文件
├── sql/ # 数据库 SQL 脚本
└── local_run.sh # 开发辅助脚本- 克隆项目
# Github
git clone https://github.com/pudongping/momento-api.git
# 或者使用 Gitee
git clone https://gitee.com/pudongping/momento-api.git
cd momento-api- 配置环境
复制并修改配置文件:
cp etc/momentoapi.yaml.local etc/momentoapi.yaml
# 编辑 etc/momentoapi.yaml 配置 MySQL 和 Redis 连接信息- 初始化数据库
导入 sql/ 目录下的 SQL 脚本到 MySQL 数据库。
- 安装依赖并运行
go mod tidy
go run momentoapi.go -f etc/momentoapi.yaml服务将默认启动在 8888 端口 (或配置文件指定的端口)。
至此,服务已经启动完毕!
项目提供了 local_run.sh 脚本简化 goctl 操作:
强烈建议:根据自身情况调整一下
local_run.sh脚本中的变量值。
# 生成 API 代码
./local_run.sh genapi
# 生成数据库模型代码
./local_run.sh model <table_name>- 根据项目实际情况,在每个项目下都指定确切的 Go 版本
# GOROOT 设置 go 的版本
go env -w GOROOT='~/go/sdk/go1.25.5'- 设置 GOPATH
# GOPATH 设置项目的工作目录
go env -w GOPATH='~/go/momento-api'- 设置 GOPROXY
# GOPROXY 设置 go 模块代理,推荐使用国内镜像
go env -w GOPROXY=https://goproxy.cn,direct# 两种方式都可以进行安装
# 1. 直接安装
go install github.com/zeromicro/go-zero/tools/goctl@latest
# 2. 直接使用 docker 进行安装
docker pull kevinwan/goctl:1.9.2
# 验证
docker run --rm -it -v `pwd`:/app kevinwan/goctl:1.9.2 --help创建一个名称为 miniapp 的 API Rest 服务
goctl api new miniapp --style goZero
# 或者
docker run --rm -it -v `pwd`:/app kevinwan/goctl:1.9.2 api new miniapp --style goZero也可以先生成 *.api 文件,然后根据文件自动生成 go 文件
# 在项目根目录下执行
goctl api -o ./dsl/miniapp.api
# 或者
docker run --rm -it -v `pwd`:/app kevinwan/goctl:1.9.2 api -o ./dsl/miniapp.api然后执行命令去自动生成 go 文件
# 在项目根目录下执行
goctl api go -api ./dsl/*.api -dir . --style=goZero
# 或者
docker run --rm -it -v `pwd`:/app kevinwan/goctl:1.9.2 api go -api ./dsl/*.api -dir . --style=goZero# 好像只能一个文件一个文件的格式化
docker run --rm -it -v `pwd`:/app kevinwan/goctl:1.9.2 api format --dir ./dsl/miniapp.api欢迎提交 Issue 和 PR。





