# API 接口文档

## 概述

本文档详细描述了智能柜管理系统前端项目的所有 API 接口，按业务模块分类。

## 通用接口

### 登录认证

#### 1. 获取配置信息
- **接口**: `GET /api/common/login/config`
- **描述**: 获取系统配置信息
- **返回**:
```typescript
{
  serverHost: string
  // 其他配置信息
}
```

#### 2. 密码登录
- **接口**: `POST /api/common/login/password`
- **描述**: 使用用户名密码登录
- **参数**:
```typescript
{
  username: string
  password: string
}
```
- **返回**:
```typescript
{
  token: string
  userInfo: User
}
```

#### 3. 企业微信登录
- **接口**: `POST /api/common/login/wechat`
- **描述**: 企业微信扫码登录
- **参数**:
```typescript
{
  corpid: string
  code: string
  state?: string
}
```

## 智能柜管理模块

### 智能柜设备管理

#### 1. 获取智能柜列表
- **接口**: `GET /api/cabinet/smart-cabinet/list`
- **描述**: 获取智能柜设备列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  keyword?: string
  status?: string
}
```
- **返回**:
```typescript
{
  list: SmartCabinet[]
  total: number
}
```

#### 2. 创建智能柜
- **接口**: `POST /api/cabinet/smart-cabinet`
- **描述**: 创建新的智能柜设备
- **参数**: `SmartCabinet`
- **返回**: `SmartCabinet`

#### 3. 更新智能柜
- **接口**: `PUT /api/cabinet/smart-cabinet/{id}`
- **描述**: 更新智能柜信息
- **参数**: `Partial<SmartCabinet>`
- **返回**: `SmartCabinet`

#### 4. 删除智能柜
- **接口**: `DELETE /api/cabinet/smart-cabinet/{id}`
- **描述**: 删除智能柜设备

### 柜体格口管理

#### 1. 获取格口列表
- **接口**: `GET /api/cabinet/cabinet-cell/list`
- **描述**: 获取柜体格口列表
- **参数**:
```typescript
{
  cabinetId?: number
  page?: number
  size?: number
  status?: string
}
```
- **返回**:
```typescript
{
  list: CabinetCell[]
  total: number
}
```

#### 2. 格口操作
- **接口**: `POST /api/cabinet/cell-operation/{operation}`
- **描述**: 执行格口操作（开门、关门等）
- **参数**:
```typescript
{
  cellId: number
  operation: 'open' | 'close' | 'reset'
}
```

### MQTT 服务器管理

#### 1. 获取 MQTT 服务器列表
- **接口**: `GET /api/cabinet/mqtt-server/list`
- **描述**: 获取 MQTT 服务器配置列表
- **返回**: `MqttServer[]`

#### 2. 测试 MQTT 连接
- **接口**: `POST /api/cabinet/mqtt-server/test`
- **描述**: 测试 MQTT 服务器连接
- **参数**: `MqttServer`

## 店铺管理模块

### 店铺管理

#### 1. 获取店铺列表
- **接口**: `GET /api/shop/shop/list`
- **描述**: 获取店铺列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  keyword?: string
}
```
- **返回**:
```typescript
{
  list: Shop[]
  total: number
}
```

#### 2. 创建店铺
- **接口**: `POST /api/shop/shop`
- **描述**: 创建新店铺
- **参数**: `Shop`
- **返回**: `Shop`

#### 3. 更新店铺
- **接口**: `PUT /api/shop/shop/{id}`
- **描述**: 更新店铺信息
- **参数**: `Partial<Shop>`
- **返回**: `Shop`

#### 4. 删除店铺
- **接口**: `DELETE /api/shop/shop/{id}`
- **描述**: 删除店铺

### 商品管理

#### 1. 获取商品列表
- **接口**: `GET /api/shop/goods/list`
- **描述**: 获取商品列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  keyword?: string
  categoryId?: number
  status?: string
}
```
- **返回**:
```typescript
{
  list: Goods[]
  total: number
}
```

#### 2. 获取商品详情
- **接口**: `GET /api/shop/goods/{id}`
- **描述**: 获取商品详细信息
- **返回**: `Goods`

#### 3. 创建商品
- **接口**: `POST /api/shop/goods`
- **描述**: 创建新商品
- **参数**: `Goods`
- **返回**: `Goods`

#### 4. 更新商品
- **接口**: `PUT /api/shop/goods/{id}`
- **描述**: 更新商品信息
- **参数**: `Partial<Goods>`
- **返回**: `Goods`

#### 5. 删除商品
- **接口**: `DELETE /api/shop/goods/{id}`
- **描述**: 删除商品

### 分类管理

#### 1. 获取分类列表
- **接口**: `GET /api/shop/category/list`
- **描述**: 获取商品分类列表
- **返回**: `Category[]`

#### 2. 创建分类
- **接口**: `POST /api/shop/category`
- **描述**: 创建新分类
- **参数**: `Category`
- **返回**: `Category`

#### 3. 更新分类
- **接口**: `PUT /api/shop/category/{id}`
- **描述**: 更新分类信息
- **参数**: `Partial<Category>`
- **返回**: `Category`

#### 4. 删除分类
- **接口**: `DELETE /api/shop/category/{id}`
- **描述**: 删除分类

### 订单管理

#### 1. 获取订单列表
- **接口**: `GET /api/shop/order/list`
- **描述**: 获取订单列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  keyword?: string
  status?: string
  startTime?: string
  endTime?: string
}
```
- **返回**:
```typescript
{
  list: Order[]
  total: number
}
```

#### 2. 获取订单详情
- **接口**: `GET /api/shop/order/{id}`
- **描述**: 获取订单详细信息
- **返回**: `Order`

#### 3. 创建订单
- **接口**: `POST /api/shop/order`
- **描述**: 创建新订单
- **参数**: `Order`
- **返回**: `Order`

#### 4. 更新订单状态
- **接口**: `PUT /api/shop/order/{id}/status`
- **描述**: 更新订单状态
- **参数**:
```typescript
{
  status: string
}
```

### 审批管理

#### 1. 获取审批列表
- **接口**: `GET /api/shop/approval/list`
- **描述**: 获取审批列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  type?: string
  status?: string
}
```
- **返回**:
```typescript
{
  list: Approval[]
  total: number
}
```

#### 2. 审批操作
- **接口**: `POST /api/shop/approval/{id}/action`
- **描述**: 执行审批操作
- **参数**:
```typescript
{
  action: 'approve' | 'reject'
  remark?: string
}
```

### 数据统计

#### 1. 获取统计数据
- **接口**: `GET /api/shop/stats`
- **描述**: 获取系统统计数据
- **参数**:
```typescript
{
  corpid: string
}
```
- **返回**:
```typescript
{
  shopCount: number
  goodsCount: number
  orderCount: number
  goodsTotalAmount: number
  unReturnedGoodsCount: number
  unReturnedOrderCount: number
  unReturnedAmount: number
  cabinetCount: number
  cellCount: number
  linkedCellCount: number
  unmanagedCellCount: number
  gatewayCount: number
  topGoods: TopGoodsDTO[]
  todayLatestOrderGoods: TodayLatestOrderGoodsDTO[]
}
```

## 企业管理模块

### 企业用户管理

#### 1. 获取企业用户列表
- **接口**: `GET /api/qy/qy-user/list`
- **描述**: 获取企业用户列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  keyword?: string
}
```
- **返回**:
```typescript
{
  list: QyUser[]
  total: number
}
```

#### 2. 获取企业用户详情
- **接口**: `GET /api/qy/qy-user/{id}`
- **描述**: 获取企业用户详细信息
- **返回**: `QyUser`

#### 3. 更新企业用户
- **接口**: `PUT /api/qy/qy-user/{id}`
- **描述**: 更新企业用户信息
- **参数**: `Partial<QyUser>`
- **返回**: `QyUser`

#### 4. 绑定汇邦云账号
- **接口**: `POST /api/ab98/user/bind`
- **描述**: 绑定汇邦云会员账号
- **参数**:
```typescript
{
  qyUserId: number
  name: string
  idNum: string
}
```

## 系统管理模块

### 用户管理

#### 1. 获取用户列表
- **接口**: `GET /api/system/user/list`
- **描述**: 获取系统用户列表
- **参数**:
```typescript
{
  page?: number
  size?: number
  keyword?: string
}
```
- **返回**:
```typescript
{
  list: SystemUser[]
  total: number
}
```

#### 2. 创建用户
- **接口**: `POST /api/system/user`
- **描述**: 创建新用户
- **参数**: `SystemUser`
- **返回**: `SystemUser`

#### 3. 更新用户
- **接口**: `PUT /api/system/user/{id}`
- **描述**: 更新用户信息
- **参数**: `Partial<SystemUser>`
- **返回**: `SystemUser`

#### 4. 删除用户
- **接口**: `DELETE /api/system/user/{id}`
- **描述**: 删除用户

## 数据类型定义

### 通用类型

```typescript
// 分页响应
type PaginationResponse<T> = {
  list: T[]
  total: number
}

// 基础实体
interface BaseEntity {
  id: number
  createTime: string
  updateTime: string
}
```

### 智能柜相关

```typescript
interface SmartCabinet extends BaseEntity {
  name: string
  code: string
  status: 'online' | 'offline' | 'maintenance'
  location: string
  ipAddress: string
  mqttServerId: number
}

interface CabinetCell extends BaseEntity {
  cabinetId: number
  cellNo: string
  status: 'empty' | 'occupied' | 'fault'
  goodsId?: number
}

interface MqttServer extends BaseEntity {
  name: string
  host: string
  port: number
  username?: string
  password?: string
}
```

### 店铺相关

```typescript
interface Shop extends BaseEntity {
  name: string
  code: string
  address: string
  contact: string
  phone: string
  status: 'active' | 'inactive'
}

interface Goods extends BaseEntity {
  name: string
  code: string
  categoryId: number
  price: number
  stock: number
  coverImg: string
  description?: string
  status: 'available' | 'sold_out' | 'disabled'
}

interface Category extends BaseEntity {
  name: string
  parentId?: number
  sort: number
}

interface Order extends BaseEntity {
  orderNo: string
  userId: number
  totalAmount: number
  status: 'pending' | 'processing' | 'completed' | 'cancelled'
  goodsList: OrderGoods[]
}

interface OrderGoods extends BaseEntity {
  orderId: number
  goodsId: number
  quantity: number
  price: number
  totalAmount: number
}

interface Approval extends BaseEntity {
  type: string
  applicantId: number
  targetId: number
  status: 'pending' | 'approved' | 'rejected'
  remark?: string
}
```

### 统计相关

```typescript
interface TopGoodsDTO {
  goodsId: number
  goodsName: string
  coverImg: string
  occurrenceCount: number
}

interface TodayLatestOrderGoodsDTO {
  orderGoodsId: number
  goodsName: string
  coverImg: string
  quantity: number
  totalAmount: number
  buyerName: string
  createTimeStr: string
}
```

### 企业用户相关

```typescript
interface QyUser extends BaseEntity {
  name: string
  userId: string
  department?: string
  position?: string
  mobile?: string
  email?: string
  avatar?: string
  ab98UserId?: number
}
```

## 错误码说明

| 错误码 | 说明 | 处理建议 |
|--------|------|----------|
| 401 | 未授权 | 检查 token 是否有效 |
| 403 | 禁止访问 | 检查用户权限 |
| 404 | 资源不存在 | 检查请求路径 |
| 500 | 服务器内部错误 | 联系系统管理员 |

## 注意事项

1. 所有接口都需要在请求头中携带 token
2. 分页参数 page 从 1 开始
3. 时间参数使用 ISO 8601 格式
4. 文件上传使用 multipart/form-data
5. 接口返回统一使用 JSON 格式

---

**文档版本**: 1.0
**最后更新**: 2025-10-15