2024-04-14 21:05:01 +08:00

315 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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");
}
}