2026-03-17 13:17:02 +08:00

205 lines
9.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from drf_yasg import openapi
# 设备类型相关Schema
device_type_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'id': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备类型ID'),
'name': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型名称'),
'code': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型代码'),
'description': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型描述'),
'created_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='创建时间'),
'updated_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='更新时间')
},
required=['name', 'code']
)
# 设备批次相关Schema
device_batch_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'id': openapi.Schema(type=openapi.TYPE_INTEGER, description='批次ID'),
'device_type': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备类型ID'),
'device_type_name': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型名称'),
'batch_number': openapi.Schema(type=openapi.TYPE_STRING, description='批次号'),
'production_date': openapi.Schema(type=openapi.TYPE_STRING, format='date', description='生产日期'),
'quantity': openapi.Schema(type=openapi.TYPE_INTEGER, description='批次数量'),
'description': openapi.Schema(type=openapi.TYPE_STRING, description='批次描述'),
'created_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='创建时间'),
'updated_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='更新时间')
},
required=['device_type', 'batch_number', 'production_date', 'quantity']
)
# 设备相关Schema
device_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'id': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备ID'),
'device_type': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备类型ID'),
'device_type_name': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型名称'),
'batch': openapi.Schema(type=openapi.TYPE_INTEGER, description='批次ID'),
'batch_number': openapi.Schema(type=openapi.TYPE_STRING, description='批次号'),
'serial_number': openapi.Schema(type=openapi.TYPE_STRING, description='序列号'),
'device_code': openapi.Schema(type=openapi.TYPE_STRING, description='设备码'),
'mac_address': openapi.Schema(type=openapi.TYPE_STRING, description='MAC地址'),
'is_active': openapi.Schema(type=openapi.TYPE_BOOLEAN, description='是否激活'),
'activated_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='激活时间'),
'created_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='创建时间'),
'updated_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='更新时间')
},
required=['device_type', 'batch', 'serial_number', 'mac_address']
)
# 设备创建Schema
device_create_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'device_type': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备类型ID'),
'batch': openapi.Schema(type=openapi.TYPE_INTEGER, description='批次ID'),
'serial_number': openapi.Schema(type=openapi.TYPE_STRING, description='序列号'),
'mac_address': openapi.Schema(type=openapi.TYPE_STRING, description='MAC地址')
},
required=['device_type', 'batch', 'serial_number', 'mac_address']
)
# 设备批量创建Schema
device_batch_create_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'device_type': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备类型ID'),
'batch': openapi.Schema(type=openapi.TYPE_INTEGER, description='批次ID'),
'start_serial': openapi.Schema(type=openapi.TYPE_STRING, description='起始序列号'),
'count': openapi.Schema(type=openapi.TYPE_INTEGER, description='创建数量'),
'mac_prefix': openapi.Schema(type=openapi.TYPE_STRING, description='MAC地址前缀可选', default='00:11:22')
},
required=['device_type', 'batch', 'start_serial', 'count']
)
# 用户设备相关Schema
user_device_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'id': openapi.Schema(type=openapi.TYPE_INTEGER, description='用户设备关联ID'),
'user': openapi.Schema(type=openapi.TYPE_INTEGER, description='用户ID'),
'device': openapi.Schema(type=openapi.TYPE_INTEGER, description='设备ID'),
'device_code': openapi.Schema(type=openapi.TYPE_STRING, description='设备码'),
'device_type': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型名称'),
'nickname': openapi.Schema(type=openapi.TYPE_STRING, description='设备昵称'),
'is_primary': openapi.Schema(type=openapi.TYPE_BOOLEAN, description='是否为主要设备'),
'bound_at': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', description='绑定时间')
},
required=['device']
)
# 设备绑定Schema
device_bind_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'mac_address': openapi.Schema(type=openapi.TYPE_STRING, description='设备MAC地址'),
'nickname': openapi.Schema(type=openapi.TYPE_STRING, description='设备昵称(可选)'),
'is_primary': openapi.Schema(type=openapi.TYPE_BOOLEAN, description='是否为主要设备(可选)', default=False)
},
required=['mac_address']
)
# Token相关Schema
token_generate_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'expire_time': openapi.Schema(type=openapi.TYPE_INTEGER, description='Token过期时间')
}
)
token_response_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'status': openapi.Schema(type=openapi.TYPE_STRING, description='操作状态'),
'message': openapi.Schema(type=openapi.TYPE_STRING, description='操作结果信息'),
'data': openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'token': openapi.Schema(type=openapi.TYPE_STRING, description='生成的Token'),
'room_id': openapi.Schema(type=openapi.TYPE_STRING, description='生成的房间ID'),
'user_id': openapi.Schema(type=openapi.TYPE_STRING, description='用户ID'),
'app_id': openapi.Schema(type=openapi.TYPE_STRING, description='火山引擎应用ID'),
'expire_time': openapi.Schema(type=openapi.TYPE_INTEGER, description='Token有效期'),
'task_id': openapi.Schema(type=openapi.TYPE_STRING, description='任务ID'),
'device_code': openapi.Schema(type=openapi.TYPE_STRING, description='设备码'),
'device_type': openapi.Schema(type=openapi.TYPE_STRING, description='设备类型')
}
)
}
)
# 消息相关Schema
message_send_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'type': openapi.Schema(
type=openapi.TYPE_STRING,
description='消息类型',
enum=['text', 'weather', 'sing', 'dance']
),
'message': openapi.Schema(
type=openapi.TYPE_OBJECT,
description='消息内容根据type不同有不同的格式'
)
},
required=['message']
)
# 通用响应Schema
success_response_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'status': openapi.Schema(type=openapi.TYPE_STRING, description='操作状态', default='success'),
'message': openapi.Schema(type=openapi.TYPE_STRING, description='操作结果信息'),
'data': openapi.Schema(type=openapi.TYPE_OBJECT, description='返回的数据')
}
)
error_response_schema = openapi.Schema(
type=openapi.TYPE_OBJECT,
properties={
'status': openapi.Schema(type=openapi.TYPE_STRING, description='操作状态', default='error'),
'message': openapi.Schema(type=openapi.TYPE_STRING, description='错误信息')
}
)
# 接口参数描述
device_type_param = openapi.Parameter(
name='id', in_=openapi.IN_PATH,
description='设备类型ID',
type=openapi.TYPE_INTEGER, required=True
)
device_batch_param = openapi.Parameter(
name='id', in_=openapi.IN_PATH,
description='设备批次ID',
type=openapi.TYPE_INTEGER, required=True
)
device_param = openapi.Parameter(
name='id', in_=openapi.IN_PATH,
description='设备ID',
type=openapi.TYPE_INTEGER, required=True
)
user_device_param = openapi.Parameter(
name='id', in_=openapi.IN_PATH,
description='用户设备关联ID',
type=openapi.TYPE_INTEGER, required=True
)
mac_address_param = openapi.Parameter(
name='mac_address', in_=openapi.IN_QUERY,
description='设备MAC地址',
type=openapi.TYPE_STRING, required=True
)
expire_time_param = openapi.Parameter(
name='expire_time', in_=openapi.IN_QUERY,
description='Token过期时间',
type=openapi.TYPE_INTEGER, required=False
)