7.1 KiB
7.1 KiB
获取贩卖机信息精简列表(根据用户绑定过滤)API 文档
接口信息
- 接口路径:
GET /product/device/list-simple-by-user - 接口描述:获得贩卖机信息精简列表(根据用户绑定过滤,超级管理员返回全部)
- 权限要求:
product:device:query - 认证方式:Bearer Token(需要在请求头中携带
Authorization: Bearer {token})
请求说明
请求方法
GET
请求路径
/product/device/list-simple-by-user
请求头
Authorization: Bearer {token}
Content-Type: application/json
请求参数
无请求参数(此接口不需要任何查询参数或请求体)
响应说明
响应格式
所有接口都遵循统一的响应格式:
interface CommonResult<T> {
code: number; // 响应码,0 表示成功
data: T; // 响应数据
msg: string; // 响应消息(成功时通常为空字符串)
}
响应数据结构
成功响应(code = 0):
interface DeviceSimpleRespVO {
id: number; // 设备编号(主键)
name: string; // 设备名称
deviceId: string; // 设备IMEI(设备唯一标识)
}
// 完整响应结构
CommonResult<DeviceSimpleRespVO[]>
响应示例
成功响应:
{
"code": 0,
"data": [
{
"id": 1,
"name": "贩卖机001",
"deviceId": "123456789012345"
},
{
"id": 2,
"name": "贩卖机002",
"deviceId": "123456789012346"
}
],
"msg": ""
}
用户未绑定设备时:
{
"code": 0,
"data": [],
"msg": ""
}
权限不足时:
{
"code": 403,
"data": null,
"msg": "权限不足"
}
业务逻辑说明
权限过滤逻辑
-
超级管理员(super_admin 角色)
- 返回系统中所有设备的列表
- 按设备编号(id)降序排列
-
普通用户
- 只返回当前登录用户绑定的设备列表
- 如果用户未绑定任何设备,返回空数组
[] - 按设备编号(id)降序排列
-
未登录用户
- 返回空数组
[]
- 返回空数组
数据来源
- 设备数据来自
product_device表 - 用户设备绑定关系通过
admin_user表的device_id字段或关联表维护 - 超级管理员判断通过用户角色
super_admin进行判断
使用场景
典型使用场景
-
设备下拉选择框
- 前端需要展示用户可操作的设备列表
- 超级管理员看到所有设备,普通用户只看到自己绑定的设备
-
设备筛选
- 在商品管理、货道管理等页面,需要根据用户权限过滤设备
-
权限控制
- 确保用户只能操作自己绑定的设备
前端调用示例
JavaScript / TypeScript
// 使用 fetch
async function getDeviceSimpleListByUser() {
const response = await fetch('/product/device/list-simple-by-user', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
const result: CommonResult<DeviceSimpleRespVO[]> = await response.json();
if (result.code === 0) {
console.log('设备列表:', result.data);
return result.data;
} else {
console.error('获取失败:', result.msg);
throw new Error(result.msg);
}
}
Axios
import axios from 'axios';
interface DeviceSimpleRespVO {
id: number;
name: string;
deviceId: string;
}
interface CommonResult<T> {
code: number;
data: T;
msg: string;
}
async function getDeviceSimpleListByUser(): Promise<DeviceSimpleRespVO[]> {
const response = await axios.get<CommonResult<DeviceSimpleRespVO[]>>(
'/product/device/list-simple-by-user',
{
headers: {
'Authorization': `Bearer ${token}`
}
}
);
if (response.data.code === 0) {
return response.data.data;
} else {
throw new Error(response.data.msg);
}
}
Vue 3 Composition API
import { ref, onMounted } from 'vue';
import axios from 'axios';
interface DeviceSimpleRespVO {
id: number;
name: string;
deviceId: string;
}
export function useDeviceList() {
const deviceList = ref<DeviceSimpleRespVO[]>([]);
const loading = ref(false);
const fetchDeviceList = async () => {
loading.value = true;
try {
const response = await axios.get<CommonResult<DeviceSimpleRespVO[]>>(
'/product/device/list-simple-by-user'
);
if (response.data.code === 0) {
deviceList.value = response.data.data;
} else {
console.error('获取设备列表失败:', response.data.msg);
}
} catch (error) {
console.error('请求失败:', error);
} finally {
loading.value = false;
}
};
onMounted(() => {
fetchDeviceList();
});
return {
deviceList,
loading,
fetchDeviceList
};
}
React Hooks
import { useState, useEffect } from 'react';
import axios from 'axios';
interface DeviceSimpleRespVO {
id: number;
name: string;
deviceId: string;
}
export function useDeviceList() {
const [deviceList, setDeviceList] = useState<DeviceSimpleRespVO[]>([]);
const [loading, setLoading] = useState(false);
useEffect(() => {
const fetchDeviceList = async () => {
setLoading(true);
try {
const response = await axios.get<CommonResult<DeviceSimpleRespVO[]>>(
'/product/device/list-simple-by-user'
);
if (response.data.code === 0) {
setDeviceList(response.data.data);
} else {
console.error('获取设备列表失败:', response.data.msg);
}
} catch (error) {
console.error('请求失败:', error);
} finally {
setLoading(false);
}
};
fetchDeviceList();
}, []);
return { deviceList, loading };
}
错误码说明
| 错误码 | 说明 | 解决方案 |
|---|---|---|
| 0 | 成功 | - |
| 401 | 未授权(未登录或 token 过期) | 重新登录获取 token |
| 403 | 权限不足 | 检查用户是否有 product:device:query 权限 |
| 500 | 服务器内部错误 | 联系后端开发人员 |
注意事项
-
权限要求
- 调用此接口需要用户已登录
- 需要
product:device:query权限
-
数据过滤
- 超级管理员会看到所有设备
- 普通用户只能看到自己绑定的设备
- 如果用户未绑定设备,返回空数组(不会报错)
-
排序规则
- 返回的设备列表按
id降序排列(最新的设备在前)
- 返回的设备列表按
-
性能考虑
- 此接口返回的是精简数据(只有 id、name、deviceId),适合下拉选择等场景
- 如果需要完整设备信息,请使用其他接口
相关接口
- 获取设备完整列表:
GET /product/device/list-simple(返回所有设备,不过滤用户绑定) - 获取设备详情:
GET /product/device/get?id={id} - 分页查询设备:
GET /product/device/page
文档版本:v1.0
最后更新:2025-01-27