package com.thhy.staff.modules.biz.face.service.impl;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.nacos.api.utils.StringUtils;
|
import com.thhy.general.utils.DeepCopyUtils;
|
import com.thhy.staff.config.EmqxConfig;
|
import com.thhy.staff.config.EmqxProperties;
|
import com.thhy.staff.modules.biz.face.entity.FaceDevice;
|
import com.thhy.staff.modules.biz.face.entity.FaceResult;
|
import com.thhy.staff.modules.biz.face.entity.UserFaceVo;
|
import com.thhy.staff.modules.biz.face.mapper.FaceDeviceMapper;
|
import com.thhy.staff.modules.biz.face.service.FaceServer;
|
import com.thhy.staff.modules.biz.platuser.mapper.PlatUserMapper;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
public class FaceServerImpl implements FaceServer {
|
|
@Autowired
|
private FaceDeviceMapper faceDeviceMapper;
|
|
@Autowired
|
private PlatUserMapper userMapper;
|
|
@Autowired
|
private EmqxConfig emqxConfig;
|
|
private Logger logger = LoggerFactory.getLogger(FaceServer.class);
|
|
@Override
|
public FaceResult login(String mess) {
|
JSONObject jsonObject = JSONObject.parseObject(mess);
|
FaceDevice faceDevice = JSON.toJavaObject(jsonObject,FaceDevice.class);
|
int devCount = faceDeviceMapper.countByDevSn(faceDevice.getDevSno());
|
|
if (devCount<1) {
|
faceDeviceMapper.insert(faceDevice);
|
}else{
|
logger.info("设备"+faceDevice.getDevSno()+"已经存在");
|
}
|
|
FaceResult faceResult = new FaceResult(true,faceDevice,emqxConfig.toString());
|
return faceResult;
|
}
|
|
@Override
|
public JSONObject syncPerson(String mess) {
|
JSONObject reqJson = JSONObject.parseObject(mess);
|
JSONObject paramJson = reqJson.getJSONObject("path_params");
|
|
List<UserFaceVo> faceVoList = userMapper.queryUserFace(paramJson.getIntValue("offset"),paramJson.getIntValue("limit"));
|
|
JSONObject jsonObject = new JSONObject();
|
jsonObject.put("code",0);
|
jsonObject.put("msg","OK");
|
jsonObject.put("success",true);
|
jsonObject.put("offset",paramJson.getIntValue("offset")+paramJson.getIntValue("limit"));
|
jsonObject.put("person_list",faceVoList);
|
return jsonObject;
|
}
|
|
@Override
|
public JSONObject syncPersonSingle(String mess) {
|
JSONObject reqJson = JSONObject.parseObject(mess);
|
JSONObject paramJson = reqJson.getJSONObject("path_params");
|
JSONArray userIdArray = paramJson.getJSONArray("person_list");
|
String userId = userIdArray.getString(0);
|
|
UserFaceVo userFaceVo = userMapper.queryUserFaceSingle(userId);
|
|
JSONObject jsonObject = new JSONObject();
|
jsonObject.put("code",0);
|
jsonObject.put("msg","OK");
|
jsonObject.put("success",true);
|
jsonObject.put("offset",0);
|
List<UserFaceVo> faceVoList = new ArrayList<>();
|
faceVoList.add(userFaceVo);
|
jsonObject.put("person_list",JSONObject.parseObject(JSON.toJSONString(faceVoList)));
|
return jsonObject;
|
}
|
|
@Override
|
public void personNotify(String mess) {
|
JSONObject reqJson = JSONObject.parseObject(mess);
|
if(reqJson.containsKey("success")&&reqJson.getBooleanValue("success")){
|
String userIds = reqJson.getString("successful");
|
if(!StringUtils.isEmpty(userIds)){
|
String[] userIdArray = new String[]{userIds};
|
if(userIds.contains(",")){
|
userIdArray = userIds.split(",");
|
}
|
userMapper.syncResult(1,userIdArray);
|
}
|
JSONArray failJsonArray = reqJson.getJSONArray("failed");
|
if(failJsonArray.size()>0){
|
for(Object obj : failJsonArray){
|
JSONObject failUserInfo = JSON.parseObject(obj.toString());
|
String userId = failUserInfo.getString("person_id");
|
JSONArray failInfoArray = failUserInfo.getJSONArray("info");
|
String failReason = failInfoArray.getJSONObject(0).getString("reason");
|
userMapper.syncFail(userId,failReason);
|
}
|
}
|
}
|
}
|
}
|