205 lines
9.4 KiB
Python
205 lines
9.4 KiB
Python
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
|
||
) |