
Golang 实现的基础服务
这是我在闲暇时间写的一些基础服务, 基本上大多数后端服务都需要用到的。
它用来帮助我快速开始一个项目,而不是重头开始写,浪费大量时间和精力。
想到哪里写哪里, 我会不断的完善它。
为什么不写成微服务形式,模块分离? 项目体量没有达到。
技术栈
- Web 框架 Gin
- 数据库 Postgres
- 缓存 Redis
- 身份认证机制 JWT/oAuth2
- 数据库操作 GORM
- 消息队列 nsq
- RBAC 的鉴权模型
- Docker 一键启动应用
包含哪些模块?
| 模块 |
说明 |
| 验证模块 |
包含注册/登陆/账号激活/忘记密码/双重身份认证等 |
| 用户模块 |
包含用户信息的模块, 用户资料/登陆密码/交易密码/用户邀请等 |
| 授权模块 |
oAuth 授权登陆, 目前只支持 Google 账号登陆, 未来可能包括 微信/QQ/Github登陆 |
| 钱包模块 |
包含钱包的相关操作,钱包转账/结算等 |
| 财务模块 |
所有涉及到钱的的操作都会被记录在此, 例如转账记录/消费记录等 |
| 横幅模块 |
对于网站相关 Banner 的操作,可根据不同的平台设置不同的横幅,例如 PC 端大屏的与 APP 不相同 |
| 新闻模块 |
新闻公告类的相关操作, CMS 内容 |
| 系统通知 |
系统通知的相关模块,主要用于管理员发送给全员的通知 |
| 消息模块 |
用户的个人消息模块, 主要用于管理员发送给某个用户的通知 |
| 地址模块 |
用户设置相关的地址模块,例如收货地址等 |
| 上传模块 |
包含用户上传文件/图片的相关操作, 包含 hash 去重/图片压缩/生成缩略图等 |
| 下载模块 |
包含用户下载文件/图片的相关操作 |
| 邮件模块 |
关于邮件的相关操作,例如发送邮件, 用于发送验证码之类 |
| 静态文件模块 |
用户访问服务器的静态文件, 放置与 /public 目录下的文件 |
| 反馈模块 |
用户反馈模块,用户建议反馈/BUG反馈等 |
| 页面菜单模块 |
定义后台页面菜单/页面权限等 |
| 日志模块 |
系统日志/登陆日志/操作日志/异常日志等 |
提供了哪些接口?
如何运行?
首选确保你安装有:
再根据以下命令运行
> go get -v github.com/axetroy/go-server # 拉取项目
> cd $GOPATH/github/axetroy/go-server # 切换到项目目录
> docker-compose -f docker-compose.mq.yml up # 启动消息队列
> docker-compose up # 启动数据库和HTTP服务
> go run ./cmd/message_queue/main.go # 启动消息队列
> go run ./cmd/user/main.go # 运行用户端的接口服务
> go run ./cmd/admin/main.go # 运行管理员端的接口服务
可以通过 .env 文件进行配置
如何构建?
make build
在生成的 bin 目录下查找对应平台的可执行文件运行即可
> cd $GOPATH/github/axetroy/go-server
> tree ./bin
文件说明:
./bin
├── admin_linux_x64 # 管理员端的启动文件
├── admin_linux_x86
├── admin_osx_64
├── admin_osx_x86
├── admin_win_x64.exe
├── admin_win_x86.exe
├── message_queue_linux_x64 # 消息队列启动文件
├── message_queue_linux_x86
├── message_queue_osx_64
├── message_queue_osx_x86
├── message_queue_win_x64.exe
├── message_queue_win_x86.exe
├── user_linux_x64 # 用户端的启动文件
├── user_linux_x86
├── user_osx_64
├── user_osx_x86
├── user_win_x64.exe
└── user_win_x86.exe
如何测试?
make test
License
The MIT License