xuxiuxi
2017-04-01 d9e4437efa13fa133668a1606caefd6a570e782f
VisitFace/document/erdb api½Ó¿ÚÃèÊö.txt
@@ -29,27 +29,70 @@
   }
]
enum StatusID
{
普通访客
黑名单
教师
学生
领导干部
}
select ID, distinct label from VisitorType where RegisterCompanyID = 0 or RegisterCompanyID = "$companyID"
1.2. ImageTypeID
Request:
{
}
Response:
[
   {
      ID : "label"
   }
]
enum ImageTypeID
{
   Face = 1,  // ç…§ç‰‡
   FaceUploaded = 2, // ä¸Šä¼ ç…§ç‰‡
   Icon, // å›¾æ ‡
   Face1 = 1,  // æ­£é¢ç…§ç‰‡1(交给人脸识别服务)
   Face2 = 2,  // æ­£é¢ç…§ç‰‡2(存放到FaceImage表)
   FaceLSide,  // ï¼ˆä¸»ä½“视角,<=45度)左侧脸照片(存放到FaceImage表)
   FaceRSide,  // ï¼ˆä¸»ä½“视角,<=45度)右侧脸照片(存放到FaceImage表)
   FaceTSide,  // ï¼ˆä¸»ä½“视角,<=45度)顶侧脸照片(存放到FaceImage表)
   FaceBSide,  // ï¼ˆä¸»ä½“视角,<=45度)底侧脸照片(存放到FaceImage表)
   FaceUploaded, // ä¸Šä¼ ç…§ç‰‡ï¼ˆå­˜æ”¾åˆ°FaceImage表)
   Icon, // å›¾æ ‡ï¼ˆå­˜æ”¾åˆ°Image表)
   IdentificationCard, // èº«ä»½è¯ç…§ç‰‡ï¼ˆå­˜æ”¾åˆ°Image表)
   BusinessCard, // åç‰‡ç…§ç‰‡ï¼ˆå­˜æ”¾åˆ°Image表)
   OtherCard, // å…¶ä»–证件(存放到Image表)
}
1.2. StatusID
Request:
{
}
Response:
[
   {
      ID : "label"
   }
]
enum StatusID
{
未注册
已注册(访客)
来访登记(访客)
签离(访客)
签到(员工)
签退(员工)
}
1.3. äººè„¸è¯†åˆ«
通过图像获得faceID
Request:
{
   registerCompanyID : 123, // è‹¥ä¸º-1则只搜索VisitFaceDB
   imgs : [ "image base64" ] // å¯¹åº”多个人的人脸图像
   imgs : [ "image base64" ] // å¯¹åº”多个人的人脸图像 # ä½¿ç”¨http form post
}
Response:
[
@@ -57,16 +100,33 @@
      registerCompanyID : 123, //找不到返回VisitDBFaceID,此项为-1
      faceID : 1,
      isVisitDBFaceID : false, // <dbid=-1, faceid!=-1> : true, <dbid!=-1, faceid!=-1> : false
      srcImgIdx : 1,
      srcImgPosX : 123,
      srcImgPosY : 456,
      srcImgPosW : 123,
      srcImgPosH : 456
      imgUrl : "",
      imgType : ""
   },
   {
      faceID : -1, // æœç´¢æ— ç»“æžœ <dbid=-1, faceid=-1>
   }
]
a)接收imgs二进制数据
b)转发到人脸识别服务(registerCompanyID, imgs)
c)接收识别结果:<dbid, faceid>,其中<(<0),0>表示未找到结果,<(<0),N>表示在访客数据库中找到人脸,<N,M>表示在N公司中匹配人脸M
d) å¯¹äºŽå•个人脸结果:
  if <0,0>
  {
   // æœç´¢æ— ç»“æžœ
  }
  else if (dbid < 0 && faceid != 0)
  { // è®¿å®¢
   // select PersonID from FaceImage where RegisterCompanyID="$dbid" and faceid="$faceid";
   // select * from Person where PersonID="$PersonID"
  }
  else if (dbid > 0 && faceid != 0)
  { // å‘˜å·¥
     // select * from FaceImage where RegisterCompanyID="$dbid" and faceid="$faceid";
   // select * from Person where PersonID="$PersonID"
  }
1.4. äººè„¸æ€»ä½“信息查询
通过faceID获得Person简要信息
@@ -106,7 +166,7 @@
Request:
{
   placeID : 123, // è‹¥ä¸º-1则只搜索VisitFaceDB
   visitStatusID : 1 // ç­¾åˆ°ã€ç­¾é€€/签离
   enterOrExit : 1 // ç­¾åˆ°ã€ç­¾é€€/签离
   imgs : [ "image base64" ] // å¯¹åº”多个人的人脸图像
}
Response:
@@ -122,6 +182,49 @@
      //业务错误: 9.1. é€šç”¨æˆåŠŸ/错误结果
   }
]
参考1.3. a)b)c)d)
e) å¯¹äºŽå•个人脸结果:
   // "$person.id"
   select CompanyID from Place where placeID="$placeID"
   isChecking = select * CheckingCompany where CompanyID = "$CompanyID" and PersonID="$PersonID"
   if (enterOrExit == ç­¾åˆ°) // å…¥å£æ‘„像头
   {
    if (isChecking)
      checking(PersonID, placeID);
      return person current status
    else
       return person status not changed;
   }
   else if (enterOrExit == ç­¾é€€/签离) // å‡ºå£æ‘„像头
   {
    if (isChecking)
      unchecking(PersonID, placeID);
      return person current status
    else
       unvisit(PersonID, placeID);
      return person current status
   }
   checking:
   noNeedInsertNewRecord = select * from Checking where StatusID = "$NewStatusID" and statusDt + 5second > now() and PersonID = "$PersonID" and PlaceID="$PlaceID"
   if (!noNeedInsertNewRecord)
   {
   insert into Checking(...);
   }
   unvisit
   noNeedInsertNewRecord = ...
   if (!noNeedInsertNewRecord)
   {
    // get last visit event
    select * from Visit where VisitorPersonID="$PersonID" and CompanyID="$CompanyID" order by startTime desc limit 1
    insert into Visiting
   update Visit LastStatusID, lastTime
   }
1.7. æŸ¥è¯¢äººå‘˜æ¥è®¿/签到状态
需要支持批量查询
@@ -148,7 +251,6 @@
   name : "",
   companyName : "",
   // ...
   imgIdentity : "image base64"
}
Response:
{
@@ -156,24 +258,37 @@
   personID : 123
}
2.4. æ³¨å†Œäººè„¸
a) find by name, (IdentityTypeID, identity), phone ... from Person
b) if Person exists return error
c) else insert into Person
d) companyID = (select * from or insert Company where name = "$companyName")
e) department_id , Post_id
f)
2.4. æ³¨å†Œè®¿å®¢äººè„¸(visit face register)
Request:
{
   registerCompanyID : 123,
   personID : 123,
   imgs : [ "image base64" ] // å¯¹åº”一个人的若干个人脸图像
   imgs : { ImageTypeID : "image base64" } // å¯¹åº”一个人的若干个人脸图像
}
Response:
{
   faceIDs : [ 123 ]
}
a)select exists(*) from person where id="$personID"
b)if not exists return error
c)根据image type保存图片
d)调用人脸识别服务[faceids]=(registerCompanyID, dbid=-1, img)
e)对于每一个faceid,insert into VisitFace ("$FaceID", $PersonID, "$VisitFace.imagePath")
3. æ¥è®¿ç™»è®°
3.1. èŽ·å¾—æ¥è®¿äººå‘˜åˆ—è¡¨
返回按姓名缩写升序的结果
Request:
{
   companyID : 123, // è®¾å¤‡æ‰€åœ¨å­¦æ ¡ID
   companyID : 123, // è®¾å¤‡æ‰€åœ¨å­¦æ ¡ID,0表示所有公司,仅供管理接口使用
   beginPage : 0,
   endPage : 0
}
@@ -181,10 +296,19 @@
[
   {
      personID : 123,
      RegisterCompanyID : 123,
      name : "aaa",
      img : "image url" // éžå­—符串表示使用默认图标
   }
]
set @companyID =1;
select vs.person_id, vs.register_company_id, pe.name, img.image_type, img.image_path
  from visit_stat vs join person pe
  on (@companyID=0 or vs.register_company_id = @companyID) and (vs.person_id = pe.id)
  left outer join Image img
  on (pe.id = img.person_id and img.image_type=8) -- icon
  limit ...
3.2. èŽ·å¾—è¢«è®¿äººå‘˜åˆ—è¡¨
返回按姓名缩写升序的结果
@@ -204,6 +328,9 @@
   }
]
set @companyID =1;
select * from person pe where pe.company_id = @companyID
3.2. æœç´¢
(3. 4. 5. 6.)
来访人员,如果没有给出搜索字段时,显示本校曾经来访人员列表VisitStat;如果给出关键字,则搜索全部人员
@@ -221,6 +348,15 @@
}
#todo è¢«è®¿è€ƒè™‘和人员列表合并
if isVisitor
   select *
     from visit_stat vs left outer join person pe
     on vs.person_id = person.id
     where vs.register_company_id = "$registerCompanyID" and pe.name_spell like "$nameSpell%"
else
   select * from  person
   where CompanyID = "$registerCompanyID" and name_spell like "$nameSpell%"
3.3. èŽ·å¾—æ¥è®¿/被访人员详细信息(visitor/visitee)
Request:
@@ -250,6 +386,8 @@
Response:
成功/错误结果
insert or update VisitStat
3.5. èŽ·å¾—æ‹œè®¿äº‹ç”±é€‰é¡¹åˆ—è¡¨
Request:
{