|
|
@@ -1,11 +1,13 @@
|
|
|
package com.zhongshu.card.server.core.service.projectAbout;
|
|
|
|
|
|
+import com.github.microservice.auth.client.model.UserFaceConfidenceModel;
|
|
|
import com.github.microservice.auth.client.model.UserFaceUploadModel;
|
|
|
import com.github.microservice.auth.client.service.UserFaceService;
|
|
|
import com.github.microservice.net.ResultContent;
|
|
|
import com.google.common.collect.Lists;
|
|
|
import com.zhongshu.card.client.model.projectAbout.OrgUserFaceModel;
|
|
|
import com.zhongshu.card.client.model.projectAbout.OrgUserFaceParam;
|
|
|
+import com.zhongshu.card.client.model.projectAbout.projectCommon.ProjectCommonConfigModel;
|
|
|
import com.zhongshu.card.server.core.dao.org.UserCountDao;
|
|
|
import com.zhongshu.card.server.core.dao.projectAbout.OrgUserFaceDao;
|
|
|
import com.zhongshu.card.server.core.domain.org.UserAccount;
|
|
|
@@ -22,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.context.ApplicationContext;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
@@ -58,6 +61,9 @@ public class OrgUserFaceService extends SuperService {
|
|
|
@Autowired
|
|
|
private CommonService commonService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProjectCommonConfigService projectCommonConfigService;
|
|
|
+
|
|
|
/**
|
|
|
* 保存用户人脸信息
|
|
|
*
|
|
|
@@ -113,8 +119,7 @@ public class OrgUserFaceService extends SuperService {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
map.put("groupId", groupId);
|
|
|
// 通知人脸信息发送变化
|
|
|
- devicePermissEventService.sendUserInfoChangeEvent(
|
|
|
- orgUserFace.getUserId(), orgUserFace.getProjectOid(), map);
|
|
|
+ devicePermissEventService.sendUserInfoChangeEvent(orgUserFace.getUserId(), orgUserFace.getProjectOid(), map);
|
|
|
return ResultContent.buildSuccess();
|
|
|
}
|
|
|
|
|
|
@@ -164,6 +169,56 @@ public class OrgUserFaceService extends SuperService {
|
|
|
return Lists.newArrayList();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 判断人脸可信度
|
|
|
+ *
|
|
|
+ * @param url
|
|
|
+ * @param projectOid
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent conformFace(String url, String projectOid) {
|
|
|
+ if (StringUtils.isEmpty(projectOid)) {
|
|
|
+ projectOid = getCurrentProjectOid();
|
|
|
+ }
|
|
|
+ if (StringUtils.isEmpty(projectOid)) {
|
|
|
+ return ResultContent.buildFail("项目oid信息为空");
|
|
|
+ }
|
|
|
+ ProjectCommonConfigModel projectCommonConfig = projectCommonConfigService.getInfoByOid(projectOid);
|
|
|
+ if (ObjectUtils.isEmpty(projectCommonConfig)) {
|
|
|
+ return ResultContent.buildFail("项目为配置人脸可信度");
|
|
|
+ }
|
|
|
+ return conformFace(url, projectCommonConfig);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 判断人脸识别度是否符合要求
|
|
|
+ *
|
|
|
+ * @param url
|
|
|
+ * @param configModel
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ResultContent conformFace(String url, ProjectCommonConfigModel configModel) {
|
|
|
+ if (StringUtils.isEmpty(url)) {
|
|
|
+ return ResultContent.buildFail("图片为空");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(configModel) || configModel.getSimilarity() == null) {
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ }
|
|
|
+ String imageBase64 = commonService.getUrlFileBase64(url);
|
|
|
+ UserFaceConfidenceModel faceConfidenceModel = new UserFaceConfidenceModel();
|
|
|
+ faceConfidenceModel.setFile(imageBase64);
|
|
|
+ com.github.microservice.auth.client.content.ResultContent<Double> content = userFaceService.confidence(faceConfidenceModel);
|
|
|
+ if (content.isFailed()) {
|
|
|
+ return ResultContent.buildFail(content.getMsg());
|
|
|
+ }
|
|
|
+ Double confidence = content.getContent() * 100;
|
|
|
+ if (BigDecimal.valueOf(confidence).compareTo(BigDecimal.valueOf(configModel.getSimilarity())) >= 0) {
|
|
|
+ return ResultContent.buildSuccess();
|
|
|
+ } else {
|
|
|
+ return ResultContent.buildFail(String.format("未检测到人脸: %d", confidence.intValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public OrgUserFaceModel toModel(OrgUserFace entity) {
|
|
|
OrgUserFaceModel model = null;
|
|
|
if (ObjectUtils.isNotEmpty(entity)) {
|