1
0

renlianModel.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. class txcloud_renlianClassModel extends txcloudModel
  3. {
  4. public function inittxCloud()
  5. {
  6. $this->settable('wxtx_renlian');
  7. $this->groupid = $this->option->getval('txcloud_rlroupid');
  8. }
  9. /**
  10. * 人脸检测
  11. */
  12. public function DetectFace($url)
  13. {
  14. $chul = $this->DetectFaceInit($url);
  15. $barr = $this->send('DetectFace', $chul[0], $chul[1]);
  16. return $barr;
  17. }
  18. private function DetectFaceInit($url)
  19. {
  20. $chul = $chul1 = array();
  21. if(substr($url,0,4)=='http'){
  22. $chul['Url'] = $url;
  23. }else{
  24. $chul['Image'] = base64_encode(file_get_contents($url));
  25. $chul1['Image'] = $chul['Image'];
  26. }
  27. return array($chul, $chul1);
  28. }
  29. /**
  30. * 获取
  31. */
  32. public function GetPersonList()
  33. {
  34. $barr = $this->send('GetPersonList', array(
  35. 'GroupId' => $this->groupid,
  36. 'Limit' => 1000
  37. ));
  38. if($barr['success']){
  39. $data = $barr['data'];
  40. $PersonInfos = $data['PersonInfos'];
  41. $ids = '0';
  42. $ren = 0;
  43. foreach($PersonInfos as $k=>$rs){
  44. $ren++;
  45. $PersonId = $rs['PersonId'];
  46. $where = "`personid`='$PersonId'";
  47. $id1 = (int)$this->getmou('id', $where);
  48. if($id1==0)$where='';
  49. $this->record(array(
  50. 'personid' => $PersonId,
  51. 'personname' => $rs['PersonName'],
  52. 'gender' => $rs['Gender'],
  53. 'faceids' => join(',', $rs['FaceIds'])
  54. ), $where);
  55. if($id1==0)$id1 = $this->db->insert_id();
  56. $ids .= ','.$id1.'';
  57. }
  58. $this->delete("`id` not in($ids)");
  59. return returnsuccess('共获取到'.$ren.'人');
  60. }
  61. return $barr;
  62. }
  63. public function GetGroupList()
  64. {
  65. $barr = $this->send('GetGroupList');
  66. return $barr;
  67. }
  68. /**
  69. * 删除人脸用户
  70. */
  71. public function deleteRenlian($id)
  72. {
  73. $rs = $this->getone("`id`='$id'");
  74. if(!$rs)return returnerror('不存在');
  75. $barr = $this->send('DeletePerson', array(
  76. 'PersonId' => $rs['personid']
  77. ));
  78. if($barr['success']){
  79. $this->delete($id);
  80. }
  81. return $barr;
  82. }
  83. /**
  84. * 创建人脸用户
  85. */
  86. public function createUser($arr)
  87. {
  88. $id = $arr['id'];
  89. $uid = $arr['uid'];
  90. $personname = $arr['personname'];
  91. $imgurl = $arr['imgurl'];
  92. if($this->rows("`uid`='$uid' and `id`<>'$id'")>0)return returnerror('该用户已经创建过了');
  93. $urs = m('admin')->getone("`id`='$uid' and `status`=1");
  94. if(!$urs)return returnerror('该用户不存在/停用了,请到用户管理查看');
  95. if($id==0 && isempt($imgurl))return returnerror('请选择人脸图片地址');
  96. if(!isempt($imgurl) && substr($imgurl,0,4)!='http'){
  97. if(!file_exists($imgurl))return returnerror('人脸图片不存在');
  98. list($width, $height) = getimagesize($imgurl);
  99. if($width< 60 || $height<60)return returnerror('人脸图片像素至少60x60,当前:'.$width.'x'.$height.'');
  100. $size = filesize($imgurl);
  101. if($size>1*1024*1024)return returnerror('人脸图片不能大于1M');
  102. }
  103. //检测人脸是否可以
  104. $barr = $this->DetectFace($imgurl);
  105. if(!$barr['success'])return $barr;
  106. if($id==0){
  107. $can = $this->DetectFaceInit($imgurl);
  108. $params = $can[0];
  109. $params['GroupId'] = $this->groupid;
  110. $params['PersonName'] = $personname;//姓名
  111. $params['PersonId'] = 'xinhu'.$urs['user'].'';
  112. $params['Gender'] = $urs['sex']=='男' ? '1': '2';
  113. //接口创建
  114. $barr = $this->send('CreatePerson',$params, $can[1]);
  115. if(!$barr)return $barr;
  116. $id = $this->insert(array(
  117. 'personname'=> $personname,
  118. 'personid' => $params['PersonId'],
  119. 'gender' => $params['Gender'],
  120. 'uid' => $uid,
  121. 'imgurl' => $imgurl,
  122. 'faceids' => $barr['data']['FaceId'],
  123. ));
  124. }else{
  125. }
  126. return returnsuccess();
  127. }
  128. /**
  129. * 人脸搜索,用刷脸登录
  130. */
  131. public function SearchFaces()
  132. {
  133. $can = $this->DetectFaceInit('images/wo.png');
  134. $params = $can[0];
  135. $params['GroupIds.0'] = $this->groupid;
  136. $barr = $this->send('SearchFaces', $params, $can[1]);
  137. return $barr;
  138. }
  139. }
粤ICP备19079148号