houxiao
2017-03-15 eb7979921b7c5033cebc031365c56267fce60155
VisitFace/document/erdb api½Ó¿ÚÃèÊö.txt
@@ -44,17 +44,17 @@
enum ImageTypeID
{
   Face1 = 1,  // æ­£é¢ç…§ç‰‡1
   Face2 = 2,  // æ­£é¢ç…§ç‰‡2
   FaceLSide = 2,  // ï¼ˆä¸»ä½“观察,<=45度)左侧脸照片
   FaceRSide = 3,  // ï¼ˆä¸»ä½“观察,<=45度)右侧脸照片
   FaceTSide = 4,  // ï¼ˆä¸»ä½“观察,<=45度)顶侧脸照片
   FaceBSide = 5,  // ï¼ˆä¸»ä½“观察,<=45度)底侧脸照片
   FaceUploaded = 2, // ä¸Šä¼ ç…§ç‰‡
   Icon, // å›¾æ ‡
   IdentificationCard, // èº«ä»½è¯ç…§ç‰‡
   BusinessCard, // åç‰‡ç…§ç‰‡
   OtherCard,
   Face1 = 1,  // æ­£é¢ç…§ç‰‡1(存放到EmployeeFace/VisitFace表)
   Face2 = 2,  // æ­£é¢ç…§ç‰‡2(存放到EmployeeFace/VisitFace表)
   FaceLSide,  // ï¼ˆä¸»ä½“观察,<=45度)左侧脸照片(存放到EmployeeFace/VisitFace表)
   FaceRSide,  // ï¼ˆä¸»ä½“观察,<=45度)右侧脸照片(存放到EmployeeFace/VisitFace表)
   FaceTSide,  // ï¼ˆä¸»ä½“观察,<=45度)顶侧脸照片(存放到EmployeeFace/VisitFace表)
   FaceBSide,  // ï¼ˆä¸»ä½“观察,<=45度)底侧脸照片(存放到EmployeeFace/VisitFace表)
   FaceUploaded, // ä¸Šä¼ ç…§ç‰‡ï¼ˆå­˜æ”¾åˆ°EmployeeFace/VisitFace表)
   Icon, // å›¾æ ‡ï¼ˆå­˜æ”¾åˆ°Image表)
   IdentificationCard, // èº«ä»½è¯ç…§ç‰‡ï¼ˆå­˜æ”¾åˆ°Image表)
   BusinessCard, // åç‰‡ç…§ç‰‡ï¼ˆå­˜æ”¾åˆ°Image表)
   OtherCard, // å…¶ä»–证件(存放到Image表)
}
1.2. StatusID
@@ -83,7 +83,7 @@
Request:
{
   registerCompanyID : 123, // è‹¥ä¸º-1则只搜索VisitFaceDB
   imgs : [ "image base64" ] // å¯¹åº”多个人的人脸图像
   imgs : [ "image base64" ] // å¯¹åº”多个人的人脸图像 # ä½¿ç”¨http form post
}
Response:
[
@@ -91,16 +91,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 * from VisitFace where faceid="$faceid";
   // select * from Person where
  }
  else if (dbid != 0 && faceid != 0)
  { // å‘˜å·¥
     // select * from EmployeeFace where RegisterCompanyID="$dbid" and faceid="$faceid";
   // select * from Person where
  }
1.4. äººè„¸æ€»ä½“信息查询
通过faceID获得Person简要信息
@@ -157,6 +174,48 @@
   }
]
参考a)b)c)d)
e) å¯¹äºŽå•个人脸结果:
   // "$person.id"
   select CompanyID from Place where placeID="$placeID"
   isChecking = select * CheckingCompany where CompanyID = "$CompanyID" and PersonID="$PersonID"
   if (visitStatusID == ç­¾åˆ°) // å…¥å£æ‘„像头
   {
    if (isChecking)
      checking(PersonID, placeID);
      return person current status
    else
       return person status not changed;
   }
   else if (visitStatusID == ç­¾é€€/签离) // å‡ºå£æ‘„像头
   {
    if (isChecking)
      unchecking(PersonID, placeID);
      return person current status
    else
       unvisit(PersonID, placeID);
   }
   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. æŸ¥è¯¢äººå‘˜æ¥è®¿/签到状态
需要支持批量查询
Request:
@@ -182,7 +241,6 @@
   name : "",
   companyName : "",
   // ...
   imgIdentity : "image base64"
}
Response:
{
@@ -190,24 +248,35 @@
   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")
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)保存imgIdentity/Icon等到文件存储,并插入Image表;保存人脸图到VisitFace,VisitFace.imagePath = ä¿å­˜imgs到文件存储
d)调用人脸识别服务[faceids]=(registerCompanyID, dbid=0, 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
}
@@ -215,10 +284,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. èŽ·å¾—è¢«è®¿äººå‘˜åˆ—è¡¨
返回按姓名缩写升序的结果
@@ -284,6 +362,8 @@
Response:
成功/错误结果
insert or update VisitStat
3.5. èŽ·å¾—æ‹œè®¿äº‹ç”±é€‰é¡¹åˆ—è¡¨
Request:
{