# 串码管理系统-GO语言 **Repository Path**: mingsays/code-manager ## Basic Information - **Project Name**: 串码管理系统-GO语言 - **Description**: go语言串码管理系统 - **Primary Language**: Go - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-27 - **Last Updated**: 2026-03-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 产品串码生成管理查询系统 - Go 重构版本 > 原项目: [serial-code-system](../serial-code-system/) (ThinkPHP 8 + Vue.js 3) 一个基于 **Gin + GORM + MySQL 8 + Redis** 的产品串码生成管理查询系统,从原 PHP 项目重构为 Go 语言版本。 ## 技术栈 | 技术 | 组件 | 版本 | |------|------|------| | 后端语言 | Go | >= 1.19 | | Web框架 | Gin | latest | | ORM | GORM | latest | | 数据库 | MySQL | 8.0+ | | 缓存去重 | Redis | latest | | JWT认证 | golang-jwt/jwt/v5 | latest | | 配置管理 | viper | latest | | 前端 | 保持原有Vue.js 3项目不变 | - | ## 项目结构 ``` serial-code-system-go/ ├── cmd/ │ └── server/ │ └── main.go # 主入口 ├── internal/ │ ├── config/ │ │ └── config.go # 配置加载 │ ├── model/ │ │ ├── user.go # 用户模型 │ │ ├── permission.go # 权限模型 │ │ ├── check_code_tracking.go # 校验码追踪(核心) │ │ ├── serial_code.go # 串码模型 │ │ ├── code_batch.go # 批次模型 │ │ ├── export_record.go # 导出记录模型 │ │ ├── code_usage.go # 使用记录模型 │ │ ├── operation_log.go # 操作日志模型 │ │ └── utils.go # 工具函数 │ ├── repository/ # 数据访问层 │ │ ├── user.go │ │ ├── check_code_tracking.go │ │ ├── serial_code.go │ │ ├── code_batch.go │ │ └── operation_log.go │ ├── service/ # 业务逻辑层 │ │ ├── auth.go # 认证服务 │ │ └── serial_code.go # 串码生成服务(核心) │ ├── handler/ # HTTP 处理器 │ │ ├── response.go # 统一响应 │ │ ├── auth.go # 认证 │ │ ├── serial_code.go # 串码管理 │ │ ├── batch.go # 批次管理 │ │ ├── user.go # 用户管理 │ │ └── operation_log.go # 操作日志 │ └── middleware/ │ ├── auth.go # JWT认证中间件 │ └── cors.go # CORS中间件 ├── pkg/ │ └── logger/ # 日志(可扩展) ├── database/ │ └── init.sql # 数据库初始化脚本 ├── scripts/ # 部署脚本 ├── .env.example # 环境配置示例 ├── .env # 本地环境配置(已配置MySQL账号密码) └── go.mod # Go 模块依赖 ``` ## 串码规则 | 部分 | 长度 | 说明 | |------|------|------| | 标识位 | 1 | 大写字母 A-Z | | 年份 | 2 | 年份后两位 | | 校验码 | 1 | 每10万个切换一次,顺序 0-9 → A-Z → a-z | | 月份 | 2 | 01-12 | | 随机数 | 10 | 字母数字混合,区分大小写 | | **总长度** | **16** | - | ## 功能特性 ✅ **核心功能** - [x] 批量生成串码(每10条一小批次) - [x] 双重去重机制(Redis + 数据库唯一索引) - [x] 串码查询、状态管理(未使用/已使用/已作废) - [x] 批次管理 - [x] 用户权限管理(三级权限:管理员/操作员/普通用户) - [x] 操作日志记录 - [x] RESTful API 接口 🔐 **权限设计** | 角色 | 权限 | |------|------| | **管理员 (1)** | 用户管理、生成、查询、导出、作废、批次管理、查看日志(全部权限) | | **操作员 (2)** | 生成、查询、导出、作废、批次管理 | | **普通用户 (3)** | 仅查询 | ## 快速开始 ### 1. 环境要求 - Go >= 1.19 - MySQL >= 8.0 - Redis >= 6.0 ### 2. 克隆项目并安装依赖 ```bash cd serial-code-system-go go mod tidy ``` ### 3. 导入数据库 ```bash mysql -u root -p < database/init.sql ``` 默认管理员账号: - 用户名: `admin` - 密码: `admin123` ### 4. 配置 配置文件 `.env` 已经配置好你的 MySQL 信息: ```env # MySQL Configuration (你的配置) MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_DATABASE=serial_code_system MYSQL_USERNAME=root MYSQL_PASSWORD=root123 MYSQL_CHARSET=utf8mb4 ``` 修改 Redis 配置如果需要。 ### 5. 运行 ```bash go run cmd/server/main.go ``` 服务启动在 `http://localhost:8080` ### 6. 编译 ```bash go build -o bin/server cmd/server/main.go ./bin/server ``` ## API 接口 | 接口 | 方法 | 认证 | 说明 | |------|------|------|------| | `/api/auth/login` | POST | 否 | 用户登录 | | `/api/auth/info` | GET | 是 | 获取当前用户信息 | | `/api/code/generate` | POST | 是 | 批量生成串码 | | `/api/code/query/:code` | GET | 否 | 查询串码(公开查询) | | `/api/code/void/:id` | POST | 是 | 作废串码 | | `/api/code/use/:id` | POST | 是 | 使用串码 | | `/api/batch/list` | GET | 是 | 获取批次列表 | | `/api/batch/detail/:id` | GET | 是 | 获取批次详情 | | `/api/batch/delete/:id` | DELETE | 是 | 删除批次 | | `/api/user/list` | GET | 是 (admin) | 获取用户列表 | | `/api/user/create` | POST | 是 (admin) | 创建用户 | | `/api/user/update/:id` | PUT | 是 (admin) | 更新用户 | | `/api/user/delete/:id` | DELETE | 是 (admin) | 删除用户 | | `/api/log/list` | GET | 是 (admin) | 获取操作日志 | | `/health` | GET | 否 | 健康检查 | ## 前端对接 前端仍然使用原项目的两个 Vue 项目: - `frontend-admin` - 后台管理界面 (Vue 3 + Element Plus) - `frontend-user` - 前台移动端查询界面 (Vue 3 + Vant) 只需要修改前端 API 基础地址指向新的 Go 后端地址即可。 ## 默认账号 | 用户名 | 密码 | 角色 | |--------|------|------| | admin | admin123 | 管理员 | ## 许可证 MIT