English | 简体中文
github地址: https://github.com/88act/go-cms
项目特点:
- 自动生成 gozero 项目需要的 gorm v2版本 model数据库操作层, proto文件, api文件,
- 自动生成 管理后台的go代码 ,和vue 代码
- 超过 500 star,将更新配套的 uniapp 前端版本 和 缓存版本。 欢迎star来鼓励。。。。
本项目 目录介绍
- /gozero/ 的 gorm v2 版本的微服务项目,作为项目的前端api
- /uniapp/ 前端的uniapp项目,发布小程序或h5
- /server/的gin gorm v2 管理后台项目
- /web/ 是gin gorm v2管理后台项目配套的vue的项目
- /gokit/ gokit微服务器测试项目
在线预览
http://120.24.150.47/admin
测试用户名:test123
测试密码:test123
本项目是 gozero 的 gorm v2 版本 ,欢迎 Star
-
使用 gormv2 版本操作数据库 ,可能更合适熟悉了gorm v2不想换sqlx,又想享受高效率的的gozero微服务框架的朋友
-
项目背景:居于互联网PC和小程序的活动项目,包括活动发布,活动报名,活动下单/支付等功能
-
本项目特点,能根据数据库表:
-
1、自动生成 gozero 项目需要的 gorm v2版本 model数据库操作层代码
-
2、自动生成 gozero 项目需要的 proto文件, api文件, 进一步解放生产力
-
3、自动生成 管理后台的go代码, vue,js 前端代码
正在更新的内容
-
4、api和 model 双层redis缓存设计,根据业务需求灵活设置缓存时长和键值, 减少r层调用的时间.(开发中....)
-
5、增加mqtt 物联网 与kafka 消息队列,rpc层的配套使用demo
-
6、增加websocket/tcp 调用 rpc 层功能
-
6、增加dtm 结合gormv2 完成 分布式事务功能demo
-
没有gozero原来的缓存设计, 本项目后继将增加居于 api层的缓存和rpc层缓存的双层缓存设计,减少调用rpc的耗时, 根据api接口和参数, 作为缓存的key ,根据具体业务需要,灵活设计缓存的时间
-
超过 500 star,将更新配套的 uniapp 前端版本 和 缓存版本。 欢迎star来鼓励。。。。
-
1、 克隆本项目 git clone https://github.com/88act/go-cms.git
-
2、 还原数据库,到本机的mysql 数据库, 数据库文件在文件夹 go-cms/doc/sql/ ,五个模块的表放在同一个数据库,方便测试,实际部署时,可以为五个独立数据库
-
微服务器项目包括五个模块:
-
usercenter 用户中心 ,act 活动模块 ,order 订单模块, pay 支付模块 , basic模块(基础服务"如:邮件发送,短信发送,文件服务,等等)
-
对应的 数据库前缀分别是 :
-
mem_ , act_ , order_, pay_ ,basic_
-
修改app目录的五个模块etc文件夹的 DB配置项, 使之正常连接数据库 , 比如 act.yaml 文件 ,修改自己的数据库配置 ,比如 :
-
DataSource: root:123456@tcp(mysql:53306)/go-cms?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai
-
-
3、 启动五个模块api和rpc,本项目使用 modd 启动和管理 , 关于modd更多用法可以去这里了解 : https://github.com/cortesi/modd
cd gozero
./modd
-
4、 正常可以看到5个 api 和 rpc 项目已经正常运行
-
5、 测试 ,启动 postman, 运行下面post, 终端可以观察到gorm sql语句的执行情况
post http://127.0.0.1:1004/usercenter/v1/user/register
参数选body json 格式 : {"mobile":"13088886666","password":"123456"}
post http://127.0.0.1:1004/usercenter/v1/user/login
参数选body json 格式 : {"mobile":"13088886666","password":"123456"}
post http://127.0.0.1:1001/order/v1/order/addOrder
参数选body json 格式 : {"orderType":2,"objId":3,"title":"3","price":1100,"priceSrc":1210,"couponId":121,"remark":"remar3333"}
- 6、 完成测试
- 1、 先启动 docker , 然后
cd /go-cms/gozero/
$ docker network create go-zero-looklook_looklook_net
$ docker-compose -f docker-compose-env.yml up -d
-
2、 然后,按照上面的最简单的方式步骤,一一启动
-
3、 由于是本机代码直接访问docker 里面的服务,需要在host文件做一个映射
-
host 文件增加以下映射
127.0.0.1 jaeger 127.0.0.1 redis 127.0.0.1 mysql 127.0.0.1 Prometheus 127.0.0.1 metrics 127.0.0.1 jaeger 127.0.0.1 kafka
-
4、 进入容器kafka 创建5个topic
docker exec -it kafka /bin/sh
cd /opt/kafka/bin/
./kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 -partitions 1 --topic looklook-log
./kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 -partitions 1 --topic payment-update-paystatus-topic
./kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 -partitions 1 --topic send-sms-topic
./kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 1 -partitions 1 --topic send-email-topic
- 5、 访问 http://127.0.0.1:16686/search 可以查看链路追踪的情况,
详细可以参考 https://github.com/Mikaelemmmm/go-zero-looklook 项目里面
####
#### =============================================================================================================================================
### 1.1 gin gorm v2 管理后台项目,配套gozero前端框架,管理数据后台
> go-cms, golang的cms内容管理系统, 管理后台web-admin居于 vue3 element-plus ,客户端居于uniapp,后端居于 golang gin 后端集成jwt鉴权,动态路由,动态菜单,casbin鉴权功能.
- 后端api接口,使用的是gin框架的单体服务模式,使用代码生成器,基本能生成全功能代码,兼顾开发效率
,后端单体服务api也可以部署到k8s容器,实现负载动态扩展。
- 集成强大的前后端代码生成器,可以生成前后端所有代码,包括 api vue js 。可以完成复杂的查询,排序,增删改操作
- 集成文件库功能,统一管理图片/视频/文件等附件,自动对比文件哈希码,避免相同的文件多次上传
- 集成tinyEditor 富媒体编辑器
- 集成居于celly的数据采集,网络爬虫系统
- 集成腾讯IM消息记录定时下载功能
- 集成k8s容器管理器(进行中...)
[在线预览](http://120.24.150.47/admin)
http://120.24.150.47/admin
测试用户名:test123
测试密码:test123
### 2.1 server项目
使用 `Goland`或 vscode 编辑工具,打开server目录
```bash
# 克隆项目
git clone https://github.com/88act/go-cms.git
# 进入server文件夹
cd server
# 使用 go mod 并安装go依赖包
go mod tidy
# 编译
go build -o server main.go (windows编译命令为go build -o server.exe main.go )
# 运行二进制
./server (windows运行命令为 server.exe)
# 进入web文件夹
cd web
# 安装依赖
cnpm install || npm install
# 启动web项目
npm run serve
go get -u github.com/swaggo/swag/cmd/swag
- 前端:用基于vue3 element-plus构建基础页面。
- 后端:golang gin gormv2 也使用了部分其他开源项目模块,如 gofarme gav celly
- 数据库: MySql`(8.0)
- 缓存: Redis`
- API文档:使用
Swagger
构建自动化文档。
QQ 群 |
---|
集成媒体库管理 ,集中管理上传文件 ,文件分模块管理,文件上传自动对比哈希值,避免重复 | |
go-zero 微服务: https://github.com/zeromicro/go-zero
go-zero-looklook https://github.com/Mikaelemmmm/go-zero-looklook
dtm分布式事务:https://github.com/dtm-labs/dtm