基于gbc&mygo框架的毅行后端代码,分成用户端,扫码端,数据大盘三个部分。
项目基于 Go、Gin、GORM Gen 和 mygo 构建,当前代码结构已经按业务域拆分为 admin、user、dashboard 三组接口,并使用 repo + cache + lock 的方式处理数据访问、缓存和并发写入。
- 手机号与密码登录
- 学生 / 教职工 / 校友注册
- 用户信息查询与修改
- 创建、加入、随机匹配和查看队伍
- 调整、提交、撤销提交和解散队伍
- 管理员登录
- 绑定队伍签到码
- 队伍点位打卡
- 查询队伍当前状态
- 查询用户信息 / 扫码查人
- 更改人员状态
- 标记队伍违规
- 确认到达终点
- 重组队伍
- 总览统计
- 单路线统计
- 点位详情
- 路段人数统计
- 队伍筛选
- 队伍详情
- 队伍失联状态设置
- 权限查询
- Go
- Gin
- GORM / GORM Gen
- MySQL
- Redis
- mygo
.
├── api
│ ├── admin # 管理员接口
│ ├── dashboard # Dashboard 接口
│ └── user # 用户接口
├── comm # 错误码、枚举、锁与公共方法
├── conf # 配置文件
├── dao
│ ├── cache # Redis 缓存
│ ├── model # gorm/gen 生成的 model
│ ├── query # gorm/gen 生成的类型安全查询
│ └── repo # 数据访问层
├── deploy/sql # 数据库建表脚本
├── middleware # 登录态、权限等中间件
├── register # Boot、路由和命令注册
└── cmd/gen # GORM Gen 生成入口
- Go 1.24+
- MySQL 8.x
- Redis
配置模板见 conf/config.example.yaml。
最少需要确认以下配置:
app:
env: "dev"
http_server:
addr: ":8888"
db:
host: "127.0.0.1"
port: 3306
username: "jh_user"
password: "jh_pass"
database: "jh_db"
redis:
addrs:
- "127.0.0.1:6379"
db: 0
password: "jh_pass"
lock:
redis: "redis"
session:
driver: "memory"
name: "session"
secret: "secert"
redis: ""说明:
db用于 MySQL 连接redis用于缓存与分布式锁lock.redis指定锁依赖的 Redis 实例名session.driver可以用memory或redisbiz中包含活动阶段、每日及总提交名额、队伍人数上限等业务配置
复制配置文件:
cp conf/config.example.yaml conf/config.yaml启动服务:
go run .项目入口见 [main.go],启动后会拉起 HTTP 服务。
GOCACHE=/tmp/gocache go build ./...项目使用 gorm.io/gen 维护 dao/model 和 dao/query。
生成入口:
- [generate.go]
执行命令:
go run cmd/gen/generate.go当表结构变更后,建议重新生成。