Files
niumalll/docs/API接口文档.md

37 KiB
Raw Blame History

活牛采购智能数字化系统 - API接口文档

版本历史

版本 日期 作者 变更说明
v1.0 2024-12-20 API架构师 初版API接口文档

1. API概览

1.1 基础信息

  • Base URL: http://localhost:4330/v1 (本地开发环境即测试环境)
  • 协议: HTTPS/HTTP
  • 数据格式: JSON
  • 字符编码: UTF-8
  • API版本: v1

1.2 认证方式

JWT Token认证

Authorization: Bearer <access_token>

认证流程

  1. 用户登录获取access_token和refresh_token
  2. 请求头携带access_token
  3. token过期时使用refresh_token刷新
  4. refresh_token过期需重新登录

1.3 通用响应格式

成功响应

{
  "code": 200,
  "message": "success",
  "data": {
    // 具体数据
  },
  "timestamp": "2024-12-20T10:30:00Z",
  "request_id": "req_1234567890"
}

错误响应

{
  "code": 400,
  "message": "参数错误",
  "error": {
    "type": "VALIDATION_ERROR",
    "details": [
      {
        "field": "phone",
        "message": "手机号格式不正确"
      }
    ]
  },
  "timestamp": "2024-12-20T10:30:00Z",
  "request_id": "req_1234567890"
}

1.4 状态码说明

状态码 说明 描述
200 OK 请求成功
201 Created 资源创建成功
400 Bad Request 请求参数错误
401 Unauthorized 未授权,需要登录
403 Forbidden 禁止访问,权限不足
404 Not Found 资源不存在
409 Conflict 资源冲突
422 Unprocessable Entity 请求格式正确,但语义错误
429 Too Many Requests 请求过于频繁
500 Internal Server Error 服务器内部错误

2. 用户认证模块

2.1 用户注册

接口信息

  • URL: /auth/register
  • Method: POST
  • 描述: 用户注册接口

请求参数

{
  "phone": "13800138000",
  "password": "password123",
  "name": "张三",
  "role": "client",
  "verification_code": "123456"
}

参数说明

参数 类型 必填 说明
phone string 手机号11位数字
password string 密码6-20位字符
name string 姓名2-50个字符
role string 用户角色client/supplier/driver/trader
verification_code string 短信验证码

响应示例

{
  "code": 201,
  "message": "注册成功",
  "data": {
    "user_id": 12345,
    "phone": "13800138000",
    "name": "张三",
    "role": "client",
    "status": "active"
  }
}

2.2 用户登录

接口信息

  • URL: /auth/login
  • Method: POST
  • 描述: 用户登录接口

请求参数

{
  "phone": "13800138000",
  "password": "password123",
  "device_info": {
    "device_id": "device_123",
    "device_type": "mobile",
    "app_version": "1.0.0"
  }
}

响应示例

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expires_in": 7200,
    "user": {
      "id": 12345,
      "phone": "13800138000",
      "name": "张三",
      "role": "client",
      "avatar": "https://cdn.niumall.com/avatars/12345.jpg"
    }
  }
}

2.3 刷新Token

接口信息

  • URL: /auth/refresh
  • Method: POST
  • 描述: 刷新访问令牌

请求参数

{
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

响应示例

{
  "code": 200,
  "message": "Token刷新成功",
  "data": {
    "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expires_in": 7200
  }
}

2.4 发送验证码

接口信息

  • URL: /auth/send-code
  • Method: POST
  • 描述: 发送短信验证码

请求参数

{
  "phone": "13800138000",
  "type": "register"
}

参数说明

参数 类型 必填 说明
phone string 手机号
type string 验证码类型register/login/reset_password

响应示例

{
  "code": 200,
  "message": "验证码发送成功",
  "data": {
    "expires_in": 300
  }
}

3. 用户管理模块

3.1 获取用户信息

接口信息

  • URL: /users/profile
  • Method: GET
  • 描述: 获取当前用户详细信息
  • 认证: 需要

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 12345,
    "phone": "13800138000",
    "name": "张三",
    "role": "client",
    "status": "active",
    "avatar": "https://cdn.niumall.com/avatars/12345.jpg",
    "profile": {
      "company_name": "北京牛肉贸易有限公司",
      "business_license": "https://cdn.niumall.com/licenses/12345.jpg",
      "license_number": "91110000123456789X",
      "legal_person": "张三",
      "contact_address": "北京市朝阳区xxx街道xxx号",
      "bank_account": "6222021234567890",
      "bank_name": "中国工商银行北京分行"
    },
    "created_at": "2024-01-01T00:00:00Z",
    "last_login_at": "2024-12-20T10:00:00Z"
  }
}

3.2 更新用户信息

接口信息

  • URL: /users/profile
  • Method: PUT
  • 描述: 更新用户信息
  • 认证: 需要

请求参数

{
  "name": "张三丰",
  "avatar": "https://cdn.niumall.com/avatars/new_12345.jpg",
  "profile": {
    "company_name": "北京优质牛肉贸易有限公司",
    "contact_address": "北京市朝阳区新地址xxx号",
    "emergency_contact": "李四",
    "emergency_phone": "13900139000"
  }
}

响应示例

{
  "code": 200,
  "message": "更新成功",
  "data": {
    "updated_fields": ["name", "avatar", "profile.company_name", "profile.contact_address"]
  }
}

3.3 修改密码

接口信息

  • URL: /users/change-password
  • Method: POST
  • 描述: 修改用户密码
  • 认证: 需要

请求参数

{
  "old_password": "old_password123",
  "new_password": "new_password456",
  "confirm_password": "new_password456"
}

响应示例

{
  "code": 200,
  "message": "密码修改成功",
  "data": {}
}

4. 订单管理模块

4.1 创建订单

接口信息

  • URL: /orders
  • Method: POST
  • 描述: 创建新订单
  • 认证: 需要
  • 权限: client, trader

请求参数

{
  "cattle_type": "西门塔尔牛",
  "quantity": 50,
  "weight_range": "400-500kg",
  "unit_price": 28.50,
  "price_type": "per_kg",
  "delivery_address": "河北省石家庄市xxx屠宰场",
  "delivery_time": "2024-12-25T08:00:00Z",
  "special_requirements": "要求健康证明齐全,无疫病",
  "quality_standards": {
    "min_weight": 400,
    "max_weight": 500,
    "health_certificate": true,
    "quarantine_certificate": true
  }
}

参数说明

参数 类型 必填 说明
cattle_type string 牛只品种
quantity integer 数量(头)
weight_range string 重量范围
unit_price decimal 单价(元/kg或元/头)
price_type string 计价方式per_kg/per_head
delivery_address string 交货地址
delivery_time datetime 要求交货时间
special_requirements string 特殊要求
quality_standards object 质量标准

响应示例

{
  "code": 201,
  "message": "订单创建成功",
  "data": {
    "id": 67890,
    "order_no": "ORD202412200001",
    "status": "draft",
    "cattle_type": "西门塔尔牛",
    "quantity": 50,
    "unit_price": 28.50,
    "total_amount": 712500.00,
    "delivery_time": "2024-12-25T08:00:00Z",
    "created_at": "2024-12-20T10:30:00Z"
  }
}

4.2 获取订单列表

接口信息

  • URL: /orders
  • Method: GET
  • 描述: 获取订单列表
  • 认证: 需要

查询参数

参数 类型 必填 说明
page integer 页码默认1
limit integer 每页数量默认20最大100
status string 订单状态筛选
cattle_type string 牛只品种筛选
start_date date 开始日期
end_date date 结束日期
keyword string 关键词搜索(订单号、供应商名称等)

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "orders": [
      {
        "id": 67890,
        "order_no": "ORD202412200001",
        "status": "confirmed",
        "cattle_type": "西门塔尔牛",
        "quantity": 50,
        "unit_price": 28.50,
        "total_amount": 712500.00,
        "client": {
          "id": 12345,
          "name": "张三",
          "company_name": "北京牛肉贸易有限公司"
        },
        "supplier": {
          "id": 54321,
          "name": "李四",
          "company_name": "内蒙古优质牧场"
        },
        "delivery_time": "2024-12-25T08:00:00Z",
        "created_at": "2024-12-20T10:30:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 156,
      "pages": 8
    }
  }
}

4.3 获取订单详情

接口信息

  • URL: /orders/{order_id}
  • Method: GET
  • 描述: 获取订单详细信息
  • 认证: 需要

路径参数

参数 类型 必填 说明
order_id integer 订单ID

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 67890,
    "order_no": "ORD202412200001",
    "status": "transporting",
    "cattle_type": "西门塔尔牛",
    "quantity": 50,
    "weight_range": "400-500kg",
    "estimated_weight": 22500.00,
    "actual_weight": 22800.00,
    "unit_price": 28.50,
    "price_type": "per_kg",
    "total_amount": 712500.00,
    "final_amount": 649800.00,
    "client": {
      "id": 12345,
      "name": "张三",
      "phone": "138****8000",
      "company_name": "北京牛肉贸易有限公司"
    },
    "supplier": {
      "id": 54321,
      "name": "李四",
      "phone": "139****9000",
      "company_name": "内蒙古优质牧场"
    },
    "trader": {
      "id": 11111,
      "name": "王五",
      "phone": "137****7000",
      "company_name": "中原牛肉贸易公司"
    },
    "pickup_address": "内蒙古呼和浩特市xxx牧场",
    "delivery_address": "河北省石家庄市xxx屠宰场",
    "pickup_time": "2024-12-23T06:00:00Z",
    "delivery_time": "2024-12-25T08:00:00Z",
    "actual_delivery_time": null,
    "special_requirements": "要求健康证明齐全,无疫病",
    "quality_standards": {
      "min_weight": 400,
      "max_weight": 500,
      "health_certificate": true,
      "quarantine_certificate": true
    },
    "transport_task": {
      "id": 98765,
      "task_no": "TRK202412200001",
      "status": "transporting",
      "driver": {
        "id": 33333,
        "name": "赵六",
        "phone": "136****6000"
      },
      "vehicle_no": "京A12345",
      "current_location": {
        "latitude": 39.9042,
        "longitude": 116.4074,
        "address": "北京市朝阳区xxx路段",
        "updated_at": "2024-12-20T10:25:00Z"
      }
    },
    "attachments": [
      {
        "id": 1001,
        "file_name": "合同.pdf",
        "file_url": "https://cdn.niumall.com/contracts/1001.pdf",
        "attachment_type": "contract",
        "created_at": "2024-12-20T10:35:00Z"
      }
    ],
    "status_logs": [
      {
        "from_status": "draft",
        "to_status": "pending",
        "operator": "张三",
        "remark": "提交订单",
        "created_at": "2024-12-20T10:30:00Z"
      },
      {
        "from_status": "pending",
        "to_status": "confirmed",
        "operator": "李四",
        "remark": "确认接单",
        "created_at": "2024-12-20T11:00:00Z"
      }
    ],
    "created_at": "2024-12-20T10:30:00Z",
    "updated_at": "2024-12-20T11:00:00Z"
  }
}

4.4 更新订单状态

接口信息

  • URL: /orders/{order_id}/status
  • Method: PUT
  • 描述: 更新订单状态
  • 认证: 需要

请求参数

{
  "status": "confirmed",
  "remark": "确认接单预计3天内发货"
}

响应示例

{
  "code": 200,
  "message": "订单状态更新成功",
  "data": {
    "order_id": 67890,
    "old_status": "pending",
    "new_status": "confirmed",
    "updated_at": "2024-12-20T11:00:00Z"
  }
}

4.5 取消订单

接口信息

  • URL: /orders/{order_id}/cancel
  • Method: POST
  • 描述: 取消订单
  • 认证: 需要

请求参数

{
  "cancel_reason": "客户需求变更,暂时不需要采购"
}

响应示例

{
  "code": 200,
  "message": "订单取消成功",
  "data": {
    "order_id": 67890,
    "status": "cancelled",
    "cancel_reason": "客户需求变更,暂时不需要采购",
    "cancelled_at": "2024-12-20T11:30:00Z"
  }
}

5. 运输管理模块

5.1 创建运输任务

接口信息

  • URL: /transport/tasks
  • Method: POST
  • 描述: 创建运输任务
  • 认证: 需要
  • 权限: supplier, trader, admin

请求参数

{
  "order_id": 67890,
  "driver_id": 33333,
  "vehicle_no": "京A12345",
  "vehicle_type": "厢式货车",
  "vehicle_capacity": 25.0,
  "planned_start_time": "2024-12-23T06:00:00Z",
  "planned_end_time": "2024-12-25T08:00:00Z",
  "transport_fee": 8000.00,
  "notes": "注意保持车厢通风,定时检查牛只状态"
}

响应示例

{
  "code": 201,
  "message": "运输任务创建成功",
  "data": {
    "id": 98765,
    "task_no": "TRK202412200001",
    "order_id": 67890,
    "status": "assigned",
    "driver": {
      "id": 33333,
      "name": "赵六",
      "phone": "136****6000"
    },
    "vehicle_no": "京A12345",
    "planned_start_time": "2024-12-23T06:00:00Z",
    "planned_end_time": "2024-12-25T08:00:00Z",
    "transport_fee": 8000.00,
    "created_at": "2024-12-20T11:45:00Z"
  }
}

5.2 获取运输任务列表

接口信息

  • URL: /transport/tasks
  • Method: GET
  • 描述: 获取运输任务列表
  • 认证: 需要

查询参数

参数 类型 必填 说明
page integer 页码默认1
limit integer 每页数量默认20
status string 任务状态筛选
driver_id integer 司机ID筛选
start_date date 开始日期
end_date date 结束日期

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "tasks": [
      {
        "id": 98765,
        "task_no": "TRK202412200001",
        "order_no": "ORD202412200001",
        "status": "transporting",
        "driver": {
          "id": 33333,
          "name": "赵六",
          "phone": "136****6000"
        },
        "vehicle_no": "京A12345",
        "start_location": "内蒙古呼和浩特市xxx牧场",
        "end_location": "河北省石家庄市xxx屠宰场",
        "planned_start_time": "2024-12-23T06:00:00Z",
        "actual_start_time": "2024-12-23T06:15:00Z",
        "estimated_arrival_time": "2024-12-25T07:30:00Z",
        "progress": 65.5,
        "current_location": {
          "latitude": 39.9042,
          "longitude": 116.4074,
          "address": "北京市朝阳区xxx路段"
        }
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 45,
      "pages": 3
    }
  }
}

5.3 获取运输任务详情

接口信息

  • URL: /transport/tasks/{task_id}
  • Method: GET
  • 描述: 获取运输任务详细信息
  • 认证: 需要

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 98765,
    "task_no": "TRK202412200001",
    "order": {
      "id": 67890,
      "order_no": "ORD202412200001",
      "cattle_type": "西门塔尔牛",
      "quantity": 50
    },
    "status": "transporting",
    "driver": {
      "id": 33333,
      "name": "赵六",
      "phone": "136****6000",
      "driver_license": "1101051234567890"
    },
    "vehicle_no": "京A12345",
    "vehicle_type": "厢式货车",
    "vehicle_capacity": 25.0,
    "start_location": "内蒙古呼和浩特市xxx牧场",
    "end_location": "河北省石家庄市xxx屠宰场",
    "start_coordinates": {
      "latitude": 40.8414,
      "longitude": 111.7519
    },
    "end_coordinates": {
      "latitude": 38.0428,
      "longitude": 114.5149
    },
    "planned_distance": 580.5,
    "actual_distance": 592.3,
    "planned_start_time": "2024-12-23T06:00:00Z",
    "actual_start_time": "2024-12-23T06:15:00Z",
    "planned_end_time": "2024-12-25T08:00:00Z",
    "estimated_arrival_time": "2024-12-25T07:30:00Z",
    "transport_fee": 8000.00,
    "fuel_cost": 1200.00,
    "toll_cost": 350.00,
    "current_location": {
      "latitude": 39.9042,
      "longitude": 116.4074,
      "address": "北京市朝阳区xxx路段",
      "speed": 65.5,
      "direction": 135.2,
      "updated_at": "2024-12-20T10:25:00Z"
    },
    "cattle_status": {
      "normal_count": 49,
      "stressed_count": 1,
      "sick_count": 0,
      "dead_count": 0,
      "temperature": 18.5,
      "humidity": 65.2
    },
    "route_progress": 65.5,
    "events": [
      {
        "id": 2001,
        "event_type": "departure",
        "event_title": "车辆出发",
        "event_description": "装车完成,开始运输",
        "occurred_at": "2024-12-23T06:15:00Z",
        "location": {
          "latitude": 40.8414,
          "longitude": 111.7519,
          "address": "内蒙古呼和浩特市xxx牧场"
        }
      },
      {
        "id": 2002,
        "event_type": "rest_stop",
        "event_title": "休息停车",
        "event_description": "司机休息,检查牛只状态",
        "occurred_at": "2024-12-23T12:30:00Z",
        "location": {
          "latitude": 40.1436,
          "longitude": 113.9854,
          "address": "山西省大同市服务区"
        }
      }
    ],
    "created_at": "2024-12-20T11:45:00Z",
    "updated_at": "2024-12-20T10:25:00Z"
  }
}

5.4 更新位置信息

接口信息

  • URL: /transport/tasks/{task_id}/location
  • Method: POST
  • 描述: 更新运输任务位置信息
  • 认证: 需要
  • 权限: driver

请求参数

{
  "latitude": 39.9042,
  "longitude": 116.4074,
  "altitude": 45.2,
  "accuracy": 5.0,
  "speed": 65.5,
  "direction": 135.2,
  "cattle_status": "normal",
  "temperature": 18.5,
  "humidity": 65.2,
  "recorded_at": "2024-12-20T10:25:00Z"
}

响应示例

{
  "code": 200,
  "message": "位置信息更新成功",
  "data": {
    "task_id": 98765,
    "location": {
      "latitude": 39.9042,
      "longitude": 116.4074,
      "address": "北京市朝阳区xxx路段",
      "updated_at": "2024-12-20T10:25:00Z"
    },
    "progress": 65.5,
    "estimated_arrival_time": "2024-12-25T07:30:00Z"
  }
}

5.5 上报运输事件

接口信息

  • URL: /transport/tasks/{task_id}/events
  • Method: POST
  • 描述: 上报运输过程中的事件
  • 认证: 需要

请求参数

{
  "event_type": "emergency",
  "event_title": "牛只异常",
  "event_description": "发现一头牛只出现应激反应,已进行处理",
  "severity": "medium",
  "latitude": 39.9042,
  "longitude": 116.4074,
  "photos": [
    "https://cdn.niumall.com/events/photo1.jpg",
    "https://cdn.niumall.com/events/photo2.jpg"
  ],
  "occurred_at": "2024-12-20T10:30:00Z"
}

响应示例

{
  "code": 201,
  "message": "事件上报成功",
  "data": {
    "id": 2003,
    "task_id": 98765,
    "event_type": "emergency",
    "event_title": "牛只异常",
    "severity": "medium",
    "is_resolved": false,
    "occurred_at": "2024-12-20T10:30:00Z",
    "created_at": "2024-12-20T10:32:00Z"
  }
}

6. 质量管理模块

6.1 创建质量检验记录

接口信息

  • URL: /quality/inspections
  • Method: POST
  • 描述: 创建质量检验记录
  • 认证: 需要
  • 权限: client, supplier, admin

请求参数

{
  "order_id": 67890,
  "inspection_type": "post_delivery",
  "total_count": 50,
  "qualified_count": 48,
  "unqualified_count": 2,
  "dead_count": 0,
  "sick_count": 1,
  "total_weight": 22800.00,
  "average_weight": 456.0,
  "overall_grade": "B",
  "quality_score": 85.5,
  "health_score": 90.0,
  "appearance_score": 82.0,
  "inspection_items": {
    "weight_check": {
      "passed": true,
      "notes": "重量符合要求"
    },
    "health_check": {
      "passed": true,
      "notes": "整体健康状况良好1头轻微应激"
    },
    "appearance_check": {
      "passed": true,
      "notes": "外观良好,毛色正常"
    }
  },
  "defect_details": [
    {
      "cattle_no": "C001",
      "defect_type": "应激反应",
      "description": "轻微应激,建议休息观察"
    }
  ],
  "photos": [
    "https://cdn.niumall.com/inspections/photo1.jpg",
    "https://cdn.niumall.com/inspections/photo2.jpg"
  ],
  "is_passed": true,
  "recommendations": "整体质量良好,建议加强运输过程中的应激管理",
  "inspection_date": "2024-12-25T09:00:00Z"
}

响应示例

{
  "code": 201,
  "message": "质量检验记录创建成功",
  "data": {
    "id": 5001,
    "order_id": 67890,
    "inspection_type": "post_delivery",
    "overall_grade": "B",
    "quality_score": 85.5,
    "is_passed": true,
    "inspector": {
      "id": 12345,
      "name": "张三"
    },
    "inspection_date": "2024-12-25T09:00:00Z",
    "created_at": "2024-12-25T09:30:00Z"
  }
}

6.2 获取质量检验记录

接口信息

  • URL: /quality/inspections
  • Method: GET
  • 描述: 获取质量检验记录列表
  • 认证: 需要

查询参数

参数 类型 必填 说明
order_id integer 订单ID筛选
inspection_type string 检验类型筛选
is_passed boolean 是否通过筛选
start_date date 开始日期
end_date date 结束日期

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "inspections": [
      {
        "id": 5001,
        "order": {
          "id": 67890,
          "order_no": "ORD202412200001",
          "cattle_type": "西门塔尔牛"
        },
        "inspection_type": "post_delivery",
        "total_count": 50,
        "qualified_count": 48,
        "overall_grade": "B",
        "quality_score": 85.5,
        "is_passed": true,
        "inspector": {
          "id": 12345,
          "name": "张三"
        },
        "inspection_date": "2024-12-25T09:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 25,
      "pages": 2
    }
  }
}

7. 财务管理模块

7.1 创建财务结算

接口信息

  • URL: /finance/settlements
  • Method: POST
  • 描述: 创建财务结算单
  • 认证: 需要
  • 权限: client, trader, admin

请求参数

{
  "order_id": 67890,
  "order_amount": 649800.00,
  "prepaid_amount": 100000.00,
  "transport_fee": 8000.00,
  "insurance_fee": 2000.00,
  "service_fee": 5000.00,
  "penalty_amount": 0.00,
  "discount_amount": 10000.00,
  "tax_amount": 32490.00,
  "settlement_type": "full_payment",
  "payment_terms": "货到付款验收合格后3日内付清",
  "settlement_date": "2024-12-25",
  "due_date": "2024-12-28"
}

响应示例

{
  "code": 201,
  "message": "财务结算单创建成功",
  "data": {
    "id": 8001,
    "settlement_no": "STL202412250001",
    "order_id": 67890,
    "final_amount": 687290.00,
    "status": "draft",
    "settlement_date": "2024-12-25",
    "due_date": "2024-12-28",
    "created_at": "2024-12-25T10:00:00Z"
  }
}

7.2 创建支付记录

接口信息

  • URL: /finance/payments
  • Method: POST
  • 描述: 创建支付记录
  • 认证: 需要

请求参数

{
  "settlement_id": 8001,
  "order_id": 67890,
  "payee_id": 54321,
  "payment_amount": 687290.00,
  "payment_method": "bank_transfer",
  "payer_bank_account": "6222021234567890",
  "payer_bank_name": "中国工商银行北京分行",
  "payee_bank_account": "6228481234567890",
  "payee_bank_name": "中国农业银行呼和浩特分行",
  "notes": "订单ORD202412200001货款结算",
  "receipt_url": "https://cdn.niumall.com/receipts/receipt_8001.jpg"
}

响应示例

{
  "code": 201,
  "message": "支付记录创建成功",
  "data": {
    "id": 9001,
    "payment_no": "PAY202412250001",
    "settlement_id": 8001,
    "payment_amount": 687290.00,
    "payment_method": "bank_transfer",
    "status": "pending",
    "created_at": "2024-12-25T11:00:00Z"
  }
}

7.3 获取财务统计

接口信息

  • URL: /finance/statistics
  • Method: GET
  • 描述: 获取财务统计数据
  • 认证: 需要

查询参数

参数 类型 必填 说明
start_date date 开始日期
end_date date 结束日期
type string 统计类型daily/monthly/yearly

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "summary": {
      "total_orders": 156,
      "total_amount": 12580000.00,
      "paid_amount": 10250000.00,
      "pending_amount": 2330000.00,
      "average_order_amount": 80641.03
    },
    "by_status": {
      "completed": {
        "count": 120,
        "amount": 10250000.00
      },
      "pending": {
        "count": 25,
        "amount": 2100000.00
      },
      "cancelled": {
        "count": 11,
        "amount": 230000.00
      }
    },
    "by_cattle_type": {
      "西门塔尔牛": {
        "count": 85,
        "amount": 7200000.00
      },
      "安格斯牛": {
        "count": 45,
        "amount": 3800000.00
      },
      "夏洛莱牛": {
        "count": 26,
        "amount": 1580000.00
      }
    },
    "monthly_trend": [
      {
        "month": "2024-10",
        "orders": 45,
        "amount": 3800000.00
      },
      {
        "month": "2024-11",
        "orders": 52,
        "amount": 4200000.00
      },
      {
        "month": "2024-12",
        "orders": 59,
        "amount": 4580000.00
      }
    ]
  }
}

8. 文件上传模块

8.1 获取上传凭证

接口信息

  • URL: /upload/token
  • Method: POST
  • 描述: 获取文件上传凭证
  • 认证: 需要

请求参数

{
  "file_name": "contract.pdf",
  "file_type": "application/pdf",
  "file_size": 2048576,
  "upload_type": "contract"
}

参数说明

参数 类型 必填 说明
file_name string 文件名
file_type string 文件MIME类型
file_size integer 文件大小(字节)
upload_type string 上传类型avatar/contract/certificate/photo/video

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "upload_url": "https://upload.niumall.com/upload",
    "file_url": "https://cdn.niumall.com/contracts/20241225/contract_12345.pdf",
    "upload_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "expires_in": 3600,
    "max_file_size": 10485760,
    "allowed_types": ["application/pdf", "image/jpeg", "image/png"]
  }
}

8.2 确认上传完成

接口信息

  • URL: /upload/confirm
  • Method: POST
  • 描述: 确认文件上传完成
  • 认证: 需要

请求参数

{
  "file_url": "https://cdn.niumall.com/contracts/20241225/contract_12345.pdf",
  "file_name": "contract.pdf",
  "file_size": 2048576,
  "upload_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

响应示例

{
  "code": 200,
  "message": "文件上传确认成功",
  "data": {
    "file_id": "file_12345",
    "file_url": "https://cdn.niumall.com/contracts/20241225/contract_12345.pdf",
    "status": "uploaded"
  }
}

9. 消息通知模块

9.1 获取通知列表

接口信息

  • URL: /notifications
  • Method: GET
  • 描述: 获取用户通知列表
  • 认证: 需要

查询参数

参数 类型 必填 说明
page integer 页码默认1
limit integer 每页数量默认20
is_read boolean 是否已读筛选
notification_type string 通知类型筛选

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "notifications": [
      {
        "id": 10001,
        "title": "订单状态更新",
        "content": "您的订单ORD202412200001已确认供应商正在准备货物",
        "notification_type": "order",
        "priority": "medium",
        "is_read": false,
        "related_type": "order",
        "related_id": 67890,
        "created_at": "2024-12-20T11:00:00Z"
      },
      {
        "id": 10002,
        "title": "运输状态更新",
        "content": "您的货物已开始运输预计2024-12-25 07:30到达",
        "notification_type": "transport",
        "priority": "high",
        "is_read": false,
        "related_type": "transport_task",
        "related_id": 98765,
        "created_at": "2024-12-23T06:15:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 45,
      "pages": 3
    },
    "unread_count": 12
  }
}

9.2 标记通知已读

接口信息

  • URL: /notifications/{notification_id}/read
  • Method: PUT
  • 描述: 标记通知为已读
  • 认证: 需要

响应示例

{
  "code": 200,
  "message": "通知已标记为已读",
  "data": {
    "notification_id": 10001,
    "is_read": true,
    "read_at": "2024-12-20T12:00:00Z"
  }
}

9.3 批量标记已读

接口信息

  • URL: /notifications/read-all
  • Method: PUT
  • 描述: 批量标记通知为已读
  • 认证: 需要

请求参数

{
  "notification_ids": [10001, 10002, 10003]
}

响应示例

{
  "code": 200,
  "message": "批量标记成功",
  "data": {
    "updated_count": 3,
    "updated_at": "2024-12-20T12:00:00Z"
  }
}

10. 系统管理模块

10.1 获取系统配置

接口信息

  • URL: /system/configs
  • Method: GET
  • 描述: 获取系统配置信息
  • 认证: 需要

查询参数

参数 类型 必填 说明
category string 配置分类筛选
is_public boolean 是否公开配置

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "configs": {
      "app": {
        "app_name": "活牛采购智能数字化系统",
        "app_version": "1.0.0",
        "api_version": "v1"
      },
      "business": {
        "max_order_quantity": 1000,
        "min_order_amount": 10000,
        "default_transport_fee_rate": 0.05,
        "quality_grade_standards": {
          "A": "优质",
          "B": "良好",
          "C": "一般",
          "D": "较差"
        }
      },
      "payment": {
        "supported_methods": ["bank_transfer", "alipay", "wechat_pay"],
        "max_payment_amount": 10000000,
        "payment_timeout": 1800
      }
    }
  }
}

10.2 获取操作日志

接口信息

  • URL: /system/logs
  • Method: GET
  • 描述: 获取系统操作日志
  • 认证: 需要
  • 权限: admin

查询参数

参数 类型 必填 说明
page integer 页码默认1
limit integer 每页数量默认50
user_id integer 用户ID筛选
operation_type string 操作类型筛选
start_date date 开始日期
end_date date 结束日期

响应示例

{
  "code": 200,
  "message": "success",
  "data": {
    "logs": [
      {
        "id": 50001,
        "user": {
          "id": 12345,
          "name": "张三",
          "role": "client"
        },
        "operation_type": "CREATE_ORDER",
        "operation_module": "order",
        "operation_description": "创建订单ORD202412200001",
        "request_method": "POST",
        "request_url": "/api/v1/orders",
        "response_status": 201,
        "ip_address": "192.168.1.100",
        "execution_time": 245,
        "created_at": "2024-12-20T10:30:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 2580,
      "pages": 52
    }
  }
}

11. 错误码说明

11.1 通用错误码

错误码 错误类型 说明
10001 INVALID_PARAMETER 参数错误
10002 MISSING_PARAMETER 缺少必需参数
10003 INVALID_FORMAT 参数格式错误
10004 PARAMETER_OUT_OF_RANGE 参数超出范围

11.2 认证相关错误码

错误码 错误类型 说明
20001 INVALID_TOKEN Token无效
20002 TOKEN_EXPIRED Token已过期
20003 INSUFFICIENT_PERMISSIONS 权限不足
20004 ACCOUNT_LOCKED 账户被锁定
20005 INVALID_CREDENTIALS 用户名或密码错误

11.3 业务相关错误码

错误码 错误类型 说明
30001 ORDER_NOT_FOUND 订单不存在
30002 ORDER_STATUS_INVALID 订单状态无效
30003 INSUFFICIENT_INVENTORY 库存不足
30004 PAYMENT_FAILED 支付失败
30005 TRANSPORT_TASK_NOT_FOUND 运输任务不存在

11.4 系统相关错误码

错误码 错误类型 说明
50001 DATABASE_ERROR 数据库错误
50002 EXTERNAL_SERVICE_ERROR 外部服务错误
50003 FILE_UPLOAD_FAILED 文件上传失败
50004 RATE_LIMIT_EXCEEDED 请求频率超限

12. SDK和示例代码

12.1 JavaScript SDK示例

// 初始化SDK
const NiumallAPI = require('@niumall/api-sdk');
const client = new NiumallAPI({
  baseURL: 'https://api.niumall.com/v1',
  accessToken: 'your_access_token'
});

// 创建订单
async function createOrder() {
  try {
    const order = await client.orders.create({
      cattle_type: '西门塔尔牛',
      quantity: 50,
      unit_price: 28.50,
      price_type: 'per_kg',
      delivery_address: '河北省石家庄市xxx屠宰场',
      delivery_time: '2024-12-25T08:00:00Z'
    });
    console.log('订单创建成功:', order);
  } catch (error) {
    console.error('创建订单失败:', error);
  }
}

// 获取订单列表
async function getOrders() {
  try {
    const orders = await client.orders.list({
      page: 1,
      limit: 20,
      status: 'confirmed'
    });
    console.log('订单列表:', orders);
  } catch (error) {
    console.error('获取订单失败:', error);
  }
}

12.2 Python SDK示例

from niumall_api import NiumallClient
from datetime import datetime

# 初始化客户端
client = NiumallClient(
    base_url='https://api.niumall.com/v1',
    access_token='your_access_token'
)

# 创建订单
def create_order():
    try:
        order = client.orders.create({
            'cattle_type': '西门塔尔牛',
            'quantity': 50,
            'unit_price': 28.50,
            'price_type': 'per_kg',
            'delivery_address': '河北省石家庄市xxx屠宰场',
            'delivery_time': '2024-12-25T08:00:00Z'
        })
        print(f'订单创建成功: {order}')
    except Exception as e:
        print(f'创建订单失败: {e}')

# 获取运输任务详情
def get_transport_task(task_id):
    try:
        task = client.transport.get_task(task_id)
        print(f'运输任务详情: {task}')
        return task
    except Exception as e:
        print(f'获取运输任务失败: {e}')
        return None

13. 环境配置

13.1 环境信息

  • 本地开发环境: http://localhost:4330/v1
  • 生产环境: https://wapi.yunniushi.cn/v1

13.2 测试账号

  • 采购人: test_client / 123456
  • 供应商: test_supplier / 123456
  • 司机: test_driver / 123456
  • 管理员: test_admin / 123456

13.3 环境切换配置

// 环境配置示例
const environments = {
  development: {
    baseURL: 'http://localhost:4330/v1',
    apiVersion: 'v1'
  },
  production: {
    baseURL: 'https://wapi.yunniushi.cn/v1',
    apiVersion: 'v1'
  }
};

// 根据环境变量切换配置
const currentEnv = process.env.NODE_ENV || 'development';
const config = environments[currentEnv];

13.4 Postman集合

我们提供了完整的Postman集合包含所有API接口的测试用例

13.5 API测试工具

推荐使用以下工具进行API测试

  1. Postman: 图形化接口测试工具
  2. curl: 命令行工具
  3. Insomnia: 轻量级REST客户端
  4. Swagger UI: 在线API文档和测试

文档维护本文档由API团队负责维护接口变更时及时更新。

技术支持:如有疑问,请联系技术支持团队 tech-support@niumall.com

最后更新时间2024年12月20日