食品溯源系统
这次提供的是基于fabric2.4.9开发的食品溯源系统,使用Go + Gin + Vue3,样式精美,代码简单,适合初学者学习
1. 系统概述
1.1 项目背景
食品溯源系统是一个基于区块链技术的食品安全追溯平台,旨在实现从生产、物流、零售到消费的全链路食品安全信息透明化。通过Hyperledger Fabric区块链技术,确保数据的不可篡改性和可追溯性。
1.2 系统特点
- 去中心化:基于区块链的分布式架构
- 数据不可篡改:利用区块链技术保证数据完整性
- 全链路追溯:覆盖生产、物流、零售、销售全过程
- 多角色协作:支持生产者、物流商、零售商、消费者等多角色参与
- 实时监控:实时记录温度、湿度等关键环境数据
1.3 技术栈
- 区块链平台:Hyperledger Fabric
- 后端语言:Go (Golang)
- 前端语言:JavaScript
- Web框架:Gin
- 前端框架:Vue3
- 数据库:SQLite
- 认证机制:JWT (JSON Web Token)
- 加密算法:bcrypt密码哈希
2. 系统架构
2.1 整体架构
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 前端应用 │ │ 移动端应用 │ │ 第三方系统 │
└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘
│ │ │
└──────────────────────┼──────────────────────┘
│
┌─────────────┴─────────────┐
│ API Gateway │
│ (Go + Gin + JWT) │
└─────────────┬─────────────┘
│
┌─────────────┴─────────────┐
│ Hyperledger Fabric │
│ 区块链网络 │
└─────────────┬─────────────┘
│
┌─────────────┴─────────────┐
│ FoodTrace ChainCode │
│ 智能合约 │
└───────────────────────────┘
2.2 组件说明
- API Gateway:RESTful API服务,负责处理HTTP请求和响应
- 用户认证模块:基于JWT的用户认证和授权
- 区块链网络:Hyperledger Fabric网络,存储和处理业务数据
- 智能合约:链码实现业务逻辑和数据验证
- 数据库:SQLite存储用户信息和会话数据
3. 核心数据模型
3.1 产品模型 (Product)
go
type Product struct {
ID string `json:"id"` // 产品唯一标识
Name string `json:"name"` // 产品名称
Description string `json:"description"` // 产品描述
ProducerID string `json:"producerId"` // 生产者ID
ProductionDate string `json:"productionDate"` // 生产日期
ExpirationDate string `json:"expirationDate"` // 过期日期
BatchNumber string `json:"batchNumber"` // 批次号
Status string `json:"status"` // 产品状态
ProductionData Production `json:"productionData"` // 生产数据
LogisticsData []Logistics `json:"logisticsData"` // 物流数据数组
RetailData Retail `json:"retailData"` // 零售数据
CreatedTxID string `json:"createdTxId"` // 创建交易ID
}
3.2 生产数据模型 (Production)
go
type Production struct {
Location string `json:"location"` // 生产地点
Temperature float64 `json:"temperature"` // 生产环境温度
Humidity float64 `json:"humidity"` // 生产环境湿度
RawMaterials []string `json:"rawMaterials"` // 原材料列表
Certifications []string `json:"certifications"` // 认证信息
AdditionalInfo string `json:"additionalInfo"` // 额外信息
TxID string `json:"txId"` // 交易ID
Timestamp string `json:"timestamp"` // 时间戳
}
3.3 物流数据模型 (Logistics)
go
type Logistics struct {
LogisticsID string `json:"logisticsId"` // 物流服务商ID
FromLocation string `json:"fromLocation"` // 起始地点
ToLocation string `json:"toLocation"` // 目的地点
DepartureTime string `json:"departureTime"` // 出发时间
ArrivalTime string `json:"arrivalTime"` // 到达时间
Temperature float64 `json:"temperature"` // 运输环境温度
Humidity float64 `json:"humidity"` // 运输环境湿度
TransportType string `json:"transportType"` // 运输方式
AdditionalInfo string `json:"additionalInfo"` // 额外信息
TxID string `json:"txId"` // 交易ID
Timestamp string `json:"timestamp"` // 时间戳
}
3.4 零售数据模型 (Retail)
go
type Retail struct {
RetailerID string `json:"retailerId"` // 零售商ID
StoreLocation string `json:"storeLocation"` // 商店位置
ReceiveDate string `json:"receiveDate"` // 接收日期
SaleDate string `json:"saleDate"` // 销售日期
Price float64 `json:"price"` // 销售价格
QualityCheck bool `json:"qualityCheck"` // 质量检查结果
AdditionalInfo string `json:"additionalInfo"` // 额外信息
TxID string `json:"txId"` // 交易ID
Timestamp string `json:"timestamp"` // 时间戳
}
4. 数据库模型
4.1 用户表 (users)
sql
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 用户ID
username TEXT NOT NULL UNIQUE, -- 用户名
password TEXT NOT NULL, -- 密码哈希
role TEXT NOT NULL, -- 用户角色
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 创建时间
);
4.2 产品状态枚举
go
const (
StatusProduced = "PRODUCED" // 已生产
StatusShipping = "SHIPPING" // 运输中
StatusReceived = "RECEIVED" // 已接收
StatusSold = "SOLD" // 已销售
)
5. 系统角色
5.1 角色定义
go
const (
RoleProducer = "PRODUCER" // 生产者
RoleLogistics = "LOGISTICS" // 物流商
RoleRetailer = "RETAILER" // 零售商
RoleConsumer = "CONSUMER" // 消费者
)
5.2 角色权限
角色 | 权限 | 可执行操作 |
---|---|---|
生产者 (PRODUCER) | 创建产品、添加生产数据 | POST /api/producer/product POST /api/producer/product/:id/production |
物流商 (LOGISTICS) | 添加物流数据 | POST /api/logistics/product/:id/logistics |
零售商 (RETAILER) | 接收产品、质量检查、销售产品 | POST /api/retailer/product/:id/receive POST /api/retailer/product/:id/quality POST /api/retailer/product/:id/sell |
消费者 (CONSUMER) | 查询产品信息 | 所有查询接口 |
6. 核心业务流程
6.1 产品生命周期
创建产品 → 添加生产数据 → 物流运输 → 零售商接收 → 质量检查 → 销售给消费者
↓ ↓ ↓ ↓ ↓ ↓
PRODUCED → PRODUCED → SHIPPING → RECEIVED → RECEIVED → SOLD
6.2 详细业务流程
6.2.1 产品创建流程
- 生产者注册并登录系统
- 创建新产品 :调用
CreateProduct
链码方法 - 添加生产数据:记录生产环境、原材料等信息
- 产品状态 :设置为
PRODUCED
6.2.2 物流运输流程
- 物流商接收产品
- 添加物流数据:记录运输路线、环境条件等
- 产品状态 :更新为
SHIPPING
- 支持多段物流:可添加多个物流记录
6.2.3 零售销售流程
- 零售商接收产品 :产品状态从
SHIPPING
更新为RECEIVED
- 质量检查:进行质量检验,记录检查结果
- 销售产品:只有通过质量检查的产品才能销售
- 产品状态 :最终更新为
SOLD
6.3 状态转换规则
PRODUCED
→SHIPPING
:添加物流数据时SHIPPING
→RECEIVED
:零售商接收产品时RECEIVED
→SOLD
:零售商销售产品时(需先通过质量检查)
7. 项目展示
系统首页

登录页面

注册页面

生产者页面

创建产品

我的产品

添加生产数据

生产信息查询

交易详情

物流服务商页面

运输管理

添加物流信息


物流信息详情

交易详情

零售商页面

接收产品
质量检查
销售管理

销售产品
零售信息

交易详情

消费者页面

产品查询

