Skip to content

Repository files navigation

Agent-app-backend

代码结构

代码在go-backend文件夹下
其中,cmd下的main.go是程序入口
config是配置文件
pkg是公共包,包含了工具类(初始化时因为没有文件可能不会上传该目录)
scripts是一些脚本,主要用于压测
internal是内部包,包含了核心逻辑,里面含

  • handler负责处理请求,调用service层的逻辑,并返回结果,类似Spring Boot中Controller层的业务部分
  • service负责处理业务逻辑,相当于Spring Boot的Service层
  • repository负责处理数据访问,相当于Spring Boot的Repository层
  • model负责定义数据模型,相当于Spring Boot的Entity/PO
  • infra 负责处理基础设施相关的逻辑,主要是MySQL和Redis相关
  • router负责路由, 相当于Spring Boot中的Controller层的路由部分(不过在Go中,我们通常把路由和处理请求的逻辑分开,所以放在了不同的包中)\
  • config负责读取配置文件
  • dto负责定义数据传输对象
  • vo负责定义视图对象
  • middleware负责定义中间件
  • tests负责定义测试
  • testutils负责定义测试工具类
  • utils负责定义工具类
  • response负责定义统一的响应格式

需要配置的

请根据./config/config.yaml.example文件的内容,创建一个config.yaml文件,并根据需要修改其中的内容
你需要下载go语言的基本依赖来运行该项目,推荐官网下载
你需要安装go的依赖,运行以下命令来安装依赖

go get -u github.com/gin-gonic/gin
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
go get -u github.com/go-redis/redis/v8
go get -u github.com/spf13/viper
go get github.com/golang-jwt/jwt/v5 golang.org/x/crypto/bcrypt
go get github.com/gin-contrib/cors

在开发流程中,依赖可能会有更新,重新运行上述命令或者运行你没运行过的命令后,运行以下命令更新依赖

go mod tidy

你需要准备好两个MySQL数据库,一个主库一个从库,并在config.yaml中配置好相关信息,如果不需要主从复制,也可以使用一个数据库
然后你还需要下载或者在服务器上运行redis,并在config.yaml中配置好相关信息 在config.yaml中,你还需要配置好JWT的密钥,可以使用一个随机字符串,长度至少16位,建议使用更长的字符串以提高安全性,但注意保持统一 同时,还需要配置好oss相关的信息,本项目主要使用的华为云的OBS服务

运行方式

在根目录下运行以下命令来运行项目

go run cmd/main.go

测试方式

在根目录下运行以下命令来运行测试

go test ./internal/tests/... -v

打包成可执行文件

在根目录下运行以下命令来打包成可执行文件
注意,打包生成的可执行文件必须与config目录(是指目录而非config.yaml)同级,否则程序无法找到配置文件(只要求config,不要求其他代码文件)

#最基本的打包命令
go build -o backend cmd/main.go
#去除调试信息,减小文件体积
go build -ldflags="-s -w" -o backend cmd/main.go
#打包成Linux的可执行文件
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o backend_linux cmd/main.go
#打包成Windows的可执行文件
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o backend.exe cmd/main.go

About

途灵-基于Multi-Agent的旅行规划助手 南京大学 软件学院 2026年春 软件工程与计算III 课程大作业(后端)

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages