315 lines
14 KiB
Java
Raw Normal View History

2023-02-16 15:28:15 +08:00
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) {
e.printStackTrace();
}
}
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");
}
}