Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iwall

前言

开始开发前,请确保已经安装了 go 的开发环境,并且已经安装了 protobuf 工具

本项目采用 go-micro 框架 v4 版本进行开发,所以需要使用 go install 安装以下工具包

  1. protoc-gen-go 用于生成 go proto 代码
  2. protoc-gen-go-grpc 用于生成 go gprc proto 代码
  3. protoc-gen-micro 用于生成 go-micro proto 代码

目录结构

.
├── README.md
├── bin
├── cmd
│   ├── command
│   │   ├── generate.go
│   │   └── root.go
│   └── main.go
├── config.yaml.example
├── cron
│   ├── main.go
│   └── task
│       └── example_task.go
├── go.mod
├── go.sum
├── scripts
│   ├── build.sh
│   ├── build_linux.sh
│   └── start.sh
└── src
    ├── common
    │   ├── config
    │   │   ├── config.go
    │   ├── constant
    │   │   ├── guard.go
    │   │   ├── http.go
    │   │   └── status.go
    │   ├── dao
    │   │   ├── dao_user.go
    │   │   └── query
    │   │       ├── gen.go
    │   ├── model
    │   │   ├── user.gen.go
    │   ├── pkg
    │   │   ├── pkg_cron
    │   │   ├── pkg_es
    │   │   ├── pkg_gorm
    │   │   ├── pkg_grpc
    │   │   ├── pkg_logrus
    │   │   ├── pkg_mongo
    │   │   ├── pkg_otel
    │   │   └── pkg_redis
    │   └── utils
    │       ├── utils_array.go
    │       ├── utils_cron.go
    │       └── utils_redis.go
    ├── gateway
    │   ├── app
    │   │   ├── admin
    │   │   └── api
    │   ├── middleware
    │   │   ├── auth.go
    │   │   ├── cors.go
    │   │   └── tracing.go
    │   └── utils
    │       ├── jwt
    │       │   └── jwt.go
    │       └── response
    │           └── response.go
    ├── global
    │   └── global.go
    ├── proto
    │   ├── order
    │   │   └── order.proto
    │   └── user
    │       └── user.proto
    ├── service
    │   ├── order
    │   │   ├── README
    │   │   ├── handler
    │   │   │   └── handler.go
    │   │   └── main.go
    │   ├── user
    │   │   ├── README
    │   │   ├── handler
    │   │   │   └── handler.go
    │   │   ├── logic
    │   │   │   └── guest.go
    │   │   └── main.go
    └── test
        ├── config.yaml
        ├── gorm_test.go
        ├── jwt_test.go
        ├── logger_test.go
        └── redis_test.go

config.yaml.example 文件

config.yaml.example 是项目的配置文件示例

bin 目录

存放打包后的项目文件

cmd 目录

cmd 目录为命令行项目,用 github.com/spf13/cobra 实现命令功能

cmd/command 目录存放所有命令操作文件

cron 目录

cron 目录为定时任务项目,用 github.com/robfig/cron/v3 实现定时任务功能

cron/task 目录存放所有定时任务文件

scripts 目录

scripts 目录存放所有的脚本执行文件,根据实际情况进行修改

build.sh 执行项目打包脚本

build_linux.sh 执行项目打包脚本

start.sh 本地开发启动所有服务脚本

src 目录

src 目录存放项目核心代码

common 目录

common 目录下存放所有公共代码

config 目录包含所有配置文件信息

constant 目录包含所有常量

dao 目录为数据操作层,存放所有数据库操作代码

dao/query 目录存放通过 gorm.io/gen 生成的数据库操作代码,不可修改

model 目录存放通过 gorm.io/gen 生成的数据表模型,不可修改

pkg 目录存放所有的公共包,所有的初始化和二次封装都存放在此处

utils 目录存放所有的工具类操作文件

gateway 目录

gateway 目录包含对外的 http 请求项目

app 目录存放所有的 http 项目,可通过不同项目进行划分

middleware 目录存放所有的中间件

utils 目录存放所有的工具类操作文件

global 目录

global.go 是所有全局的服务,包括但不限于 gorm redis logger 的服务,统一通过这里调用这些服务进行操作

proto 目录

proto 目录存放所有的 proto 文件,用于生成 grpc 代码

service 目录

service 目录存放所有微服务项目

test 目录

test 目录存放所有测试用例,编写测试用例请复制一份 config.yml 配置文件到当前目录,与根目录下的配置文件一致

开始

项目命令操作都需要在根目录下,不需要 cd 切换到子目录

配置项目

  1. 复制文件,然后根据情况修改配置文件

cp config.yaml.example config.yaml

如果需要使用测试用例,请单独复制一份配置文件到 src/test 目录下,再根据情况修改配置文件

cp config.yaml src/test/config.yaml

  1. 安装依赖

go mod tidy

  1. 生成模型文件

执行 gen 命令生成 dao 和 model 文件,生成后的文件不可手动进行修改,因为每次执行都会重新覆盖

初始化所有模型

go run cmd/main.go gen all

go run cmd/cmd gen 后可带多个参数,参数为表名,如果表名为 all 则会初始化所有表

go run cmd/cmd gen {table} {table} {table}

后续表结构有变动,如 user 表变动,那么只需要执行 go run cmd/cmd gen user 即可

生成后的文件存放于

src/common/dao/query 目录为数据操作层

src/common/model 目录为 model 文件

需要自行封装 dao 操作层,参考 src/common/dao/dao_user.go

  1. 启动项目

执行脚本启动项目,该脚本仅供开发模式下使用

scripts/start.sh

执行该脚本会启动 gatewayservice 的所有服务,包含了编译 proto 文件的操作

所以当项目有增减需要自行修改启动脚本

About

go-micro v4

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages