315 lines
14 KiB
Java
315 lines
14 KiB
Java
package com.zhgd.xmgl.util;
|
||
|
||
import cn.hutool.core.bean.BeanUtil;
|
||
import cn.hutool.http.HttpGlobalConfig;
|
||
import cn.hutool.http.HttpRequest;
|
||
import com.alibaba.fastjson.JSONArray;
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.zhgd.jeecg.common.execption.OpenAlertException;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.apache.commons.lang3.StringUtils;
|
||
|
||
import java.util.ArrayList;
|
||
import java.util.HashMap;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* @program: wisdomSite
|
||
* @description: 杭州宇泛智能人脸设备WO平台
|
||
* @author: Mr.Peng
|
||
* @create: 2020-09-22 16:24
|
||
**/
|
||
@Slf4j
|
||
public class UniUbiUtil {
|
||
private static String ufaceUrl ="http://wo-api.uni-ubi.com/";
|
||
|
||
/**
|
||
* 获取token
|
||
* @param appId
|
||
* @param appKey
|
||
* @param appSecret
|
||
* @return
|
||
*/
|
||
public static String getToken(String appId,String appKey,String appSecret){
|
||
String token=null;
|
||
Map<String, String> map=new HashMap<String, String>();
|
||
//map.put("appId", appId);
|
||
map.put("appKey", appKey);
|
||
String timestamp=Long.toString(System.currentTimeMillis());
|
||
map.put("timestamp", timestamp);
|
||
map.put("sign", MD5.GetMD5Code(appKey+timestamp+appSecret));
|
||
log.info(appKey+timestamp+appSecret);
|
||
log.info(MD5.GetMD5Code(appKey+appKey+appSecret));
|
||
String json= get(ufaceUrl+"/v1/"+appId+"/auth", null,map);
|
||
log.info(json);
|
||
if(json!=null&&json.length()>0){
|
||
JSONObject obj=JSONObject.parseObject(json);
|
||
if("WO_SUS1000".equals(obj.get("code").toString())){
|
||
token=(String) obj.get("data");
|
||
}else{
|
||
throw new OpenAlertException((String) obj.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
return token;
|
||
}
|
||
|
||
//设备录入
|
||
public static boolean regDevice(String appId,String appKey,String appSecret,String deviceKey){
|
||
String token=getToken(appId,appKey,appSecret);
|
||
Map<String, String> headerMap = new HashMap<>();
|
||
headerMap.put("token", token);
|
||
JSONObject map = new JSONObject();
|
||
map.put("name", deviceKey);
|
||
String resJson = post(ufaceUrl + "/v1/" + appId + "/device/"+deviceKey+"/recType/1", map.toJSONString(),headerMap);
|
||
log.info("---------添加宇泛设备返回结果-----------"+deviceKey+"-----"+resJson);
|
||
if(resJson!=null&&resJson.length()>0){
|
||
JSONObject obj=JSONObject.parseObject(resJson);
|
||
if("WO_SUS1000".equals(obj.get("code").toString())){
|
||
return true;
|
||
}else{
|
||
throw new OpenAlertException((String) obj.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
}
|
||
|
||
//删除设备
|
||
public static boolean deleteDevice(String appId,String appKey,String appSecret,String deviceKey){
|
||
String token=getToken(appId,appKey,appSecret);
|
||
Map<String, String> headerMap = new HashMap<>();
|
||
headerMap.put("token", token);
|
||
log.info("删除设备"+deviceKey);
|
||
String json = delete(ufaceUrl + "/v1/" + appId + "/device/" + deviceKey, null,headerMap);
|
||
log.info("-------------删除宇泛设备返回结果---------"+deviceKey+"--------"+json);
|
||
if(json!=null&&json.length()>0){
|
||
JSONObject object=JSONObject.parseObject(json);
|
||
if("WO_SUS1000".equals(object.get("code").toString())){
|
||
return true;
|
||
}else{
|
||
throw new OpenAlertException((String) object.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 添加人员
|
||
* @param appId
|
||
* @param appKey
|
||
* @param appSecret
|
||
* @param name
|
||
* @param idNo
|
||
* @param idcardNo
|
||
* @param imageUrl
|
||
* @param deviceKeys
|
||
* @return
|
||
*/
|
||
public static boolean addPerson(String appId,String appKey,String appSecret,String name,String idNo,String idcardNo,String imageUrl,String deviceKeys){
|
||
boolean flag=false;
|
||
String token=getToken(appId,appKey,appSecret);
|
||
if(StringUtils.isNotEmpty(idcardNo)){
|
||
delPerson(token,appId,appKey,appSecret,idcardNo);
|
||
}
|
||
if(token!=null){
|
||
Map<String, String> headerMap = new HashMap<>();
|
||
headerMap.put("token", token);
|
||
JSONObject param = new JSONObject();
|
||
param.put("cardNo", idNo);
|
||
param.put("name", name);
|
||
param.put("idCardNo", idcardNo);
|
||
String json=post(ufaceUrl+"/v1/"+appId+"/person", param.toJSONString(), headerMap);
|
||
log.info("-------------宇泛添加人员返回结果--------name-"+name+"----idcardNo-"+idcardNo+"----"+json);
|
||
if(json!=null&&json.length()>0){
|
||
JSONObject object=JSONObject.parseObject(json);
|
||
if("WO_SUS1000".equals(object.get("code").toString())){
|
||
JSONObject object2=(JSONObject) object.get("data");
|
||
String guid=String.valueOf(object2.get("guid").toString());
|
||
log.info(guid);
|
||
JSONObject param2=new JSONObject();
|
||
param2.put("personGuid", guid);
|
||
param2.put("base64", Base64Util.getFileToBase64(imageUrl));
|
||
String json2=post(ufaceUrl+"/v1/"+appId+"/face", param2.toJSONString(), headerMap);
|
||
log.info("宇泛添加人员照片"+json2);
|
||
log.info("------宇泛添加人员照片返回结果--------name-"+name+"----idcardNo-"+idcardNo+"----"+json2);
|
||
if(json2!=null&&json2.length()>0){
|
||
JSONObject obj=JSONObject.parseObject(json2);
|
||
if("WO_SUS1000".equals(obj.get("code").toString())){
|
||
for(String dev:deviceKeys.split(",")){
|
||
String json3=put(ufaceUrl+"/v1/"+appId+"/device/"+dev+"/person/"+guid+"/type/1", headerMap);
|
||
log.info("------宇泛人员授权返回结果--------name-"+name+"----idcardNo-"+idcardNo+"----"+json3);
|
||
if(json3!=null&&json3.length()>0){
|
||
JSONObject obj2=JSONObject.parseObject(json3);
|
||
if("WO_SUS1000".equals(obj2.get("code").toString())){
|
||
flag=true;
|
||
}else{
|
||
throw new OpenAlertException((String) obj2.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
}
|
||
}else{
|
||
throw new OpenAlertException((String) obj.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException((String) object.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
return flag;
|
||
}
|
||
|
||
/**
|
||
* 删除人员
|
||
* @param token
|
||
* @param appId
|
||
* @param appKey
|
||
* @param appSecret
|
||
* @param idcardNo
|
||
* @return
|
||
*/
|
||
public static boolean delPerson(String token,String appId, String appKey, String appSecret, String idcardNo) {
|
||
Map<String, String> result = new HashMap<>();
|
||
|
||
if(StringUtils.isEmpty(token)){
|
||
token = getToken(appId, appKey, appSecret);
|
||
}
|
||
Map<String, String> headerMap = new HashMap<>();
|
||
headerMap.put("token", token);
|
||
Map<String, Object> map = new HashMap<>();
|
||
map.put("idCardNo", idcardNo);
|
||
String resJson = get(ufaceUrl + "/v1/" + appId + "/person", map, headerMap);
|
||
log.info(resJson);
|
||
if(resJson!=null&&resJson.length()>0){
|
||
JSONObject obj=JSONObject.parseObject(resJson);
|
||
if("WO_SUS1000".equals(obj.get("code").toString())){
|
||
JSONArray arry= JSONArray.parseArray(JSONObject.parseObject(obj.getString("data")).getString("content"));
|
||
if(arry!=null) {
|
||
if (arry.size() > 0) {
|
||
JSONObject json = (JSONObject) arry.get(0);
|
||
Map<String, Object> parm = new HashMap<>();
|
||
parm.put("personGuids", json.getString("guid"));
|
||
String resJson2 = delete(ufaceUrl + "/v1/" + appId + "/person", parm, headerMap);
|
||
log.info(resJson2);
|
||
log.info("-------------宇泛设备删除人员返回结果--------idcardNo---"+idcardNo+"--------"+resJson2);
|
||
JSONObject json2 = JSONObject.parseObject(resJson2);
|
||
if (!StringUtils.isEmpty(json2.get("code").toString()) && "WO_SUS1000".equals(json2.getString("code"))) {
|
||
return true;
|
||
} else {
|
||
throw new OpenAlertException((String) json2.get("msg"));
|
||
}
|
||
} else {
|
||
return true;
|
||
}
|
||
}else{
|
||
return true;
|
||
}
|
||
}else{
|
||
throw new OpenAlertException((String) obj.get("msg"));
|
||
}
|
||
}else{
|
||
throw new OpenAlertException(MessageUtil.get("failErr"));
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* 设备在线离线情况
|
||
* {
|
||
* "deviceKey": "84E0F420883802FA",// 设备序列号
|
||
* "onlineState": true// 在线情况 true:在线 false:离线
|
||
* }
|
||
* @param appId
|
||
* @param appKey
|
||
* @param appSecret
|
||
* @return
|
||
*/
|
||
public static List<Map<String,Object>> getDevonlineState(String appId,String appKey,String appSecret){
|
||
List<Map<String,Object>> list=new ArrayList<>();
|
||
String token=getToken(appId,appKey,appSecret);
|
||
Map<String, String> headerMap = new HashMap<>();
|
||
headerMap.put("token", token);
|
||
Map<String, Object> map = new HashMap<>();
|
||
String resJson = get(ufaceUrl + "/v1/" + appId + "/device/onlineState", map, headerMap);
|
||
log.info(resJson);
|
||
if(resJson!=null&&resJson.length()>0){
|
||
JSONObject obj=JSONObject.parseObject(resJson);
|
||
if("WO_SUS1000".equals(obj.get("code").toString())){
|
||
Map<String,Object> dtat= BeanUtil.beanToMap(obj.getString("data"));
|
||
list= (List<Map<String, Object>>) dtat.get("content");
|
||
}
|
||
}
|
||
return list;
|
||
}
|
||
|
||
//识别记录重传
|
||
public static void retryAttendance(String appId,String appKey,String appSecret,List<String> deviceList,String startTime,String endTime,String personGuid){
|
||
try {
|
||
String token=getToken(appId,appKey,appSecret);
|
||
Map<String, String> headerMap = new HashMap<>();
|
||
headerMap.put("token", token);
|
||
startTime=startTime+"T00:00:00+0000";
|
||
endTime=endTime+"T23:59:59+0000";
|
||
if(deviceList!=null&&deviceList.size()>0){
|
||
for(String deviceKey:deviceList){
|
||
JSONObject map = new JSONObject();
|
||
map.put("deviceKey", deviceKey);
|
||
map.put("recognitionType", 1);
|
||
if(StringUtils.isNotEmpty(personGuid)){
|
||
map.put("personGuid", personGuid);
|
||
}
|
||
map.put("startTime", startTime);
|
||
map.put("endTime", endTime);
|
||
String json = post(ufaceUrl + "/v1/" + appId + "/recognition/retry", map.toJSONString(),headerMap);
|
||
log.info("宇泛WO识别记录重传:"+json);
|
||
}
|
||
}
|
||
|
||
} catch (Exception e) {
|
||
log.error("error:", e);
|
||
}
|
||
}
|
||
|
||
public static String post(String urlString,String body,Map<String, String> headerMap) {
|
||
return HttpRequest.post(urlString).addHeaders(headerMap).body(body).timeout(HttpGlobalConfig.getTimeout()).execute().body();
|
||
}
|
||
public static String get(String urlString,Map<String, Object> paramMap,Map<String, String> headerMap) {
|
||
return HttpRequest.get(urlString).addHeaders(headerMap).form(paramMap).timeout(HttpGlobalConfig.getTimeout()).execute().body();
|
||
}
|
||
public static String put(String urlString,Map<String, String> headerMap) {
|
||
return HttpRequest.put(urlString).addHeaders(headerMap).timeout(HttpGlobalConfig.getTimeout()).execute().body();
|
||
}
|
||
public static String delete(String urlString, Map<String, Object> paramMap,Map<String, String> headerMap) {
|
||
return HttpRequest.delete(urlString).addHeaders(headerMap).form(paramMap).timeout(HttpGlobalConfig.getTimeout()).execute().body();
|
||
}
|
||
|
||
public static void main(String[] args) {
|
||
//String token=getToken("C32A612DB50E41CEA877373E8A25F735","BC6ADC048174459389A23A209875824F","42002457B01D4812866CEB023D31C253");
|
||
|
||
//boolean s=regDevice("C32A612DB50E41CEA877373E8A25F735","BC6ADC048174459389A23A209875824F","42002457B01D4812866CEB023D31C253","84E0F420242902F8");
|
||
//boolean s=deleteDevice("C32A612DB50E41CEA877373E8A25F735","BC6ADC048174459389A23A209875824F","42002457B01D4812866CEB023D31C253","84E0F420242902F8");
|
||
//String appId,String appKey,String appSecret,String name,String idNo,String idcardNo,String imageUrl,String deviceKeys
|
||
//boolean s=addPerson("C32A612DB50E41CEA877373E8A25F735","BC6ADC048174459389A23A209875824F","42002457B01D4812866CEB023D31C253","王五","22222","23210319900926461X","http://129.204.165.94:8080/itbgp/file/4760aef7-f6ad-425a-8823-c1d306b3d1ea.jpg","84E0F420242902F8");
|
||
//boolean s=delPerson(null,"C32A612DB50E41CEA877373E8A25F735","BC6ADC048174459389A23A209875824F","42002457B01D4812866CEB023D31C253","410522198607061618");
|
||
|
||
//List<Map<String,Object>> list=getDevonlineState("C32A612DB50E41CEA877373E8A25F735","BC6ADC048174459389A23A209875824F","42002457B01D4812866CEB023D31C253");
|
||
List<String> devList=new ArrayList<>();
|
||
devList.add("84E0F428592D51FA");
|
||
//retryAttendance("8FBF8823B69141B9887C7A83BAA7ABC7","38824FDDAB2540F68A6016E8B9754FE5","EE8895820EEF4027BE68028C0BD7AF28",devList,"2022-02-18","2022-02-18");
|
||
|
||
}
|
||
}
|