# -*- coding:utf-8 -*- """ @File : meian_model @Author : xuxingchen @Version : 1.0 @Contact : xuxingchen@sinochem.com @Desc : Data Entity """ from pydantic import BaseModel # 错误码 error_code = { 0: "成功", -1: "图片下载超时", -2: "图片下载失败", -3: "用户ID不存在", -4: "参数无效", -5: "注册失败", -6: "用户ID已存在", -7: "无效人脸", -8: "内部错误", -9: "图片解码失败,图像尺寸宽高像素应为540*960", -10: "添加人脸失败", -11: "人脸图像无特征", -12: "查询离线通行记录失败", -13: "设备忙", -14: "rf_id_not_exist", -15: "rf_id_existed", -16: "add_rf_id_failed or rm_rf_id_failed", -17: "get_rf_id_reader_mode_failed", -18: "set_rf_id_reader_mode_failed", -19: "添加人脸操作不支持", } class BaseInfo(BaseModel): data_type: str = None def check(self): for attr in self.__dict__.keys(): # if property can be null, default value should not be set to None if self.__dict__[attr] is None: raise ValueError(f"{attr} not allowed to be set to None") class BaseRequest(BaseInfo): device_id: str = None token: str = None class BaseResponse(BaseInfo): factory_id: str = None error_code: int = None token: str = None class HeartBeat(BaseInfo): device_id: str = None factory_id: str = None class PushRtAccessRecord(HeartBeat): time: str = None user_id: str = None access_mode: str = None class Register(BaseRequest): factory_id: str = None # 厂商唯一标识 device_type: int = None # 0:面板机,1:梯控机 device_position_code: str = None device_position_desc: str = None class FaceInfo(BaseModel): dataType: str deviceId: str token: str userId: str faceUrl: str floor: int class QrCodeInfo(BaseModel): dataType: str deviceId: str token: str userId: str qrCode: str floor: int class DeleteUser(BaseModel): dataType: str deviceId: str token: str userId: str