Categorygithub.com/aoyirobot/framework-gorm
modulepackage
2.0.8+incompatible
Repository: https://github.com/aoyirobot/framework-gorm.git
Documentation: pkg.go.dev

# README

framework-gorm

项目介绍

此项目为奥义智能开发的go语言后端项目时用于快速构建开发目录的脚手架,使用gin+gorm框架。只针对于windows系统或linux系统,推荐go版本为1.20。

项目源码

https://github.com/aoyirobot/framework-gorm

命令列表

1.版本校验

$ framework-gorm -v

2.生成目录结构

$ framework-gorm -g

3.更新配置文件

$ framework-gorm -u

4.生成store

$ framework-gorm -f

5.生成service

$ framework-gorm -s

6.生成redis

$ framework-gorm -r

7.生成model

$ framework-gorm -m

项目使用

  1. 下载工具

下载工具,确定好GOBIN环境变量已配置

$ go install github.com/aoyirobot/framework-gorm@latest

下载完成后可运行版本校验命令检测是否安装成功

$ framework-gorm -v
  1. 创建项目文件夹,myProject
  2. 通过编译工具(goland)进入项目,构建配置文件

使用json文件构建配置文件,具体可参考此项目内config.json文件,可自行添加其他配置,注意json语法,例如:

{
  "api_admin" : {
    "api_port" : "9090",
    "api_secret": "actual_secret"
  },
  "mysql" : {
    "driver": "mysql",
    "user": "root",
    "pass_word": "password",
    "host": "127.0.0.1",
    "port": "3306",
    "db_name": "test",
    "charset": "utf8mb4",
    "show_sql": "true",
    "parseTime": "true",
    "loc": "Asia/Shanghai"
  },
  "redis" :  {
    "addr":  "127.0.0.1:6379",
    "password" :  "",
    "db" : 1
  }
}

注意: 配置文件的名称必须为config.json

  1. 构建go.mod文件,如下:
module myProject

go 1.20

require (
	github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3
	github.com/jessevdk/go-flags v1.6.1
)

require golang.org/x/sys v0.21.0 // indirect

注意: module名需与文件夹名相同。

  1. 在之前创建的文件夹下,编译器命令行执行命令构建目录
$ framework-gorm -g

4.命令执行过程

(1).初始化go.mod,生成相关目录

初始化go.mod,下载相关依赖 生成目录结构成功 生成配置文件成功 生成数据库目录成功

(2).构建所需系统的目录结构

系统名称只能包含字母、'-'、'_'

请输入开发系统数量:
2
请输入开发系统名称:
api_admin
请输入开发系统运行端口号:
8088
请输入开发系统名称:
api_wx
请输入开发系统运行端口号:
8087
  1. 生成store和service

(1). 生成store

项目根目录运行下面命令

$ framework-gorm -f

看到提示后输入需要生成store的名称,只能包含字母和下划线

请输入store名称:
code

(2). 生成service

在需要生成的service目录下执行下面命令

$ framework-gorm -s

看到提示后输入需要生成service的名称,只能包含字母和下划线

请输入service名称:
code
  1. 生成redis
$ framework-gorm -r
  1. 生成model

将mysql建表脚本语句放在目录./database下,运行下述命令即可在/internal/model目录下生成model文件

$ framework-gorm -m

项目目录介绍

1.目录结构

├── database
│   ├── your.sql
├── api
│   ├── dokcer
│   │   └── api_admin
│   │       └── Dockerfile
│   └── swagger
│       └── api_admin
│           └── doc
│              └── doc.go 
├── cmd
│   └── api_admin
│       └── main.go
└── internal
│   ├── api
│   │   ├── api_admin
│   │   │   ├──auth
│   │   │   │  └──auth.go
│   │   │   ├──controller 
│   │   │   ├──service
│   │   │   │  └──service.go
│   │   │   └──route.go
│   │   └── store
│   │   |   ├──store.go
│   │   |   └──factory.go
│   │   └── cache
│   │       └──cache.go
│   ├── config
│   │   ├──config.go
│   │   └──config_init.go
│   ├── crontab
│   ├── model
│   └── pkg
│       └──middle
│          └──middle.go
└──config_update.exe

2.目录作用

  • /api/docker: 根据系统存放系统的Dockerfile文件,可用于cicd部署或者生成容器
  • /api/swagger: swagger接口文档存放地址
  • database:存放待生成model的建表脚本语句
  • /cmd: main文件存放地址
  • /internal/api: 项目代码存放目录
  • /internal/api/api_admin: 根据输入的系统名称所生成的目录用于区分不同系统的代码
  • /internal/api/api_admin/auth/auth.go: 接口权限访问拦截器,根据session、token等自行编写
  • /internal/api/api_admin/controller: 控制层代码目录
  • /internal/api/api_admin/service: 服务层代码目录
  • /internal/api/api_admin/route.go: 路由
  • /internal/store/store.go: 数据层dao生产代码
  • /internal/store/factory.go: 数据层dao工厂代码
  • /internal/store/cache.go: redis的初始化代码
  • /internal/config/config.go: 根据config.json文件生成的配置结构体
  • /internal/config/config_init.go: 初始化配置结构体
  • /internal/crontab: 定时任务
  • /internal/model: 数据库表结构对应结构体存放目录
  • /internal/pkg: 项目内部公共方法,可自行根据功能扩展,已包含异常处理、跨域和jwt
  • /config.json: 配置文件

项目示例

其他

1.关于配置文件在开发过程中的修改

在开发过程中config.json文件的格式可能会出现变动,此时不需要修改生成的config.go文件只需要运行下面的命令即可更新配置文件结构体

$ framework-gorm -u

2.通过系统变量,选择不同的配置文件

设置环境变量STAGE,则初始化config.go结构体时,会根据环境变量来选择config_${STAGE}.json文件来初始化结构体,详情见/internal/config/config_init.go

3.项目运行端口

项目运行端口可调整为配置文件控制,只需要将cmd中main方法的port字段改为配置结构体控制即可,主要配置文件的运行端口要与docker,swagger文件一致,否则上线或测试会出现端口号不一致的问题

4.go.mod文件报错

可能原因未设置编译器启动go.mod, goland调整方法File->Settings->Go->Go modules->勾中Enable Go modules integration即可

# Packages

No description provided by the author