package com.yx.face.service.impl;
import cn.hutool.core.codec.Base64;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Maps;
import com.yx.face.boot.restful.RestDTO;
import com.yx.face.boot.restful.ServiceException;
import com.yx.face.boot.uitls.*;
import com.yx.face.dao.*;
import com.yx.face.model.dto.FaceDeviceDTO;
import com.yx.face.model.entity.Admin;
import com.yx.face.model.entity.FaceDevice;
import com.yx.face.model.entity.FaceDeviceLogo;
import com.yx.face.model.entity.FaceRequestLog;
import com.yx.face.model.excel.FaceLogVoExcel;
import com.yx.face.model.excel.UploadExcel;
import com.yx.face.model.excel.UserWhitelistExcel;
import com.yx.face.model.query.FaceServerLogQu;
import com.yx.face.model.query.QueryUser;
import com.yx.face.model.search.FaceDeviceSearch;
import com.yx.face.model.search.FaceServerLogSearch;
import com.yx.face.model.vo.*;
import com.yx.face.service.AdminService;
import com.yx.face.service.FaceService;
import com.yx.face.service.TbDeviceWhiteListService;
import com.yx.face.service.feign.TBDeviceFaceService;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import net.coobird.thumbnailator.Thumbnails;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @description: FaceServiceImpl
* @date: 2021/6/2 14:49
* @author: PWB
*/
@Slf4j
@Service
public class FaceServiceImpl implements FaceService {
@Value("${face.service.tb}")
private String ip;
@Resource
private FacePassDao facePassDao;
@Resource
private FaceDeviceDao faceDeviceDao;
@Resource
private FaceLogDao faceLogDao;
@Resource
private FaceRequestLogDao faceRequestLogDao;
@Autowired
private TBDeviceFaceService tbDeviceFaceService;
@Autowired
private AdminService adminService;
@Resource
private FaceDeviceLogoDao faceDeviceLogoDao;
@Resource
private SystemConfigDao systemConfigDao;
@Resource
private TbDeviceWhiteListService tbDeviceWhiteListService;
@Override
public Boolean authFaceDevice(Integer deviceId) {
FaceDevice faceDevice = faceDeviceDao.selectByPrimaryKey(deviceId);
if (faceDevice == null) {
throw new ServiceException("无此设备");
}
FaceDevice device = new FaceDevice();
device.setId(deviceId);
device.setAuth(1);
device.setUpdateTime(new Date());
Boolean aBoolean = tbDeviceWhiteListService.addOrDeleteTbDeviceWhiteList(faceDevice.getSn(), "00");
if (aBoolean) {
return faceDeviceDao.updateByPrimaryKeySelective(device) == 1;
}
return aBoolean;
}
@Override
public Boolean stopFaceDevice(Integer deviceId) {
FaceDevice faceDevice = faceDeviceDao.selectByPrimaryKey(deviceId);
if (faceDevice == null) {
throw new ServiceException("无此设备");
}
FaceDevice device = new FaceDevice();
device.setId(deviceId);
device.setAuth(0);
device.setUpdateTime(new Date());
Boolean aBoolean = tbDeviceWhiteListService.addOrDeleteTbDeviceWhiteList(faceDevice.getSn(), "01");
if (aBoolean) {
return faceDeviceDao.updateByPrimaryKeySelective(device) == 1;
}
return aBoolean;
}
@Override
public Boolean addFaceDevice(FaceDeviceDTO deviceDTO) {
FaceDevice device = faceDeviceDao.getFaceDeviceBySn(deviceDTO.getSn());
if (device != null) {
if (!device.getAdminId().equals(0)) {
if (!device.getAdminId().equals(deviceDTO.getAdminId())) {
throw new ServiceException("该设备也绑定别的账号");
}
}
device.setName(deviceDTO.getName());
device.setEnable(deviceDTO.getEnable());
device.setAdminId(deviceDTO.getAdminId());
return faceDeviceDao.updateByPrimaryKeySelective(device) == 1;
}
AdminVO info = adminService.getInfo(deviceDTO.getAdminId());
if (info.getType() != 5) {
throw new ServiceException("不能将设备添加到区级以外的账号上");
}
FaceDevice faceDevice = new FaceDevice();
// faceDevice.setId();
faceDevice.setSn(deviceDTO.getSn());
faceDevice.setName(deviceDTO.getName());
faceDevice.setEnable(deviceDTO.getEnable());
faceDevice.setAdminId(deviceDTO.getAdminId());
faceDevice.setPass(deviceDTO.getPass());
faceDevice.setRemark(deviceDTO.getRemark());
Date now = new Date();
faceDevice.setUpdateTime(now);
faceDevice.setCreateTime(now);
return faceDeviceDao.insertSelective(faceDevice) == 1;
}
@Override
public Boolean modifyFaceDevice(FaceDeviceDTO deviceDTO) {
FaceDevice device = faceDeviceDao.selectByPrimaryKey(deviceDTO.getDeviceId());
if (device == null) {
throw new ServiceException("没有发现该设备");
}
if (deviceDTO.getSn() != null) {
device = faceDeviceDao.getFaceDeviceBySn(deviceDTO.getSn());
if (device != null) {
if (!device.getId().equals(deviceDTO.getDeviceId())) {
throw new ServiceException("也存在该设备");
}
}
}
FaceDevice faceDevice = new FaceDevice();
faceDevice.setId(deviceDTO.getDeviceId());
faceDevice.setSn(deviceDTO.getSn());
faceDevice.setName(deviceDTO.getName());
faceDevice.setEnable(deviceDTO.getEnable());
faceDevice.setPass(deviceDTO.getPass());
faceDevice.setRemark(deviceDTO.getRemark());
faceDevice.setUpdateTime(new Date());
faceDevice.setAdminId(deviceDTO.getAdminId());
return faceDeviceDao.updateByPrimaryKeySelective(faceDevice) == 1;
}
@Override
public Boolean deleteDevice(Integer deviceId) {
FaceDevice device = faceDeviceDao.selectByPrimaryKey(deviceId);
if (device == null) {
throw new ServiceException("无此数据");
}
Boolean aBoolean = tbDeviceWhiteListService.addOrDeleteTbDeviceWhiteList(device.getSn(), "01");
if (!aBoolean) {
throw new ServiceException("删除失败");
}
FaceRequestLog requestLog = new FaceRequestLog();
requestLog.setName("删除人员人脸信息");
requestLog.setContext("/delUser");
requestLog.setParams("");
requestLog.setStatus(0);
requestLog.setUsedTime(0L);
Date now = new Date();
requestLog.setUpdateTime(now);
requestLog.setCreateTime(now);
faceRequestLogDao.insertSelective(requestLog);
faceDeviceDao.deleteByPrimaryKey(deviceId);
Map map = Maps.newHashMap();
map.put("SN", device.getSn());
map.put("taskId", requestLog.getId());
map.put("Data", "all");
try {
tbDeviceFaceService.delUser(map);
} catch (Exception e) {
log.info("删除人脸异常 {}", e.getMessage());
}
return true;
}
@Override
public PageInfo getFaceDevices(RestDTO dto) {
FaceDeviceSearch data = dto.getData();
AdminVO info = adminService.getInfo();
Map map = new HashMap<>();
map.put("adminVo", info);
map.put("fde", data);
// data.setAdminId(info.getAdminId());
// data.setType(info.getType().intValue());
// data.setProvinceId(info.getProvinceId());
// data.setCityId(info.getCityId());
// data.setAreaId(info.getAreaId());
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
return new PageInfo<>(faceDeviceDao.getFaceDevices(map));
}
@Override
public PageInfo getFacePasses(RestDTO dto) {
AdminVO info = adminService.getInfo();
Map map = new HashMap<>();
map.put("adminVo", info);
map.put("query", dto.getData());
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List list = facePassDao.getFacePasses(map);
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getPhone() != null)
list.get(i).setPhone(SMSOrIdCardUtils.hidePhone(list.get(i).getPhone()));
if (list.get(i).getUsername() != null)
list.get(i).setUsername(SMSOrIdCardUtils.hideName(list.get(i).getUsername()));
}
return new PageInfo<>(list);
}
@SneakyThrows
@Override
public PageInfo getFaceLogs(RestDTO dto) {
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
FaceServerLogSearch data = dto.getData();
//时间减去8小时
// if (StringUtils.isNotBlank(data.getEndTime()) && StringUtils.isNotBlank(data.getStartTime())) {
// String startTime = DateUtils.getReduceEightTime(data.getStartTime());
// String endTime = DateUtils.getReduceEightTime(data.getEndTime());
// data.setStartTime(startTime);
// data.setEndTime(endTime);
// log.info("startTime;{} ====== endTime; {}", startTime, endTime);
// }
// if (StringUtils.isNotBlank(data.getStartTime()) && StringUtils.isBlank(data.getEndTime())) {
// String startTime = DateUtils.getReduceEightTime(data.getStartTime());
// String endTime = DateUtils.getReduceEightTime(data.getEndTime());
// data.setStartTime(startTime);
// data.setEndTime(endTime);
// log.info("startTime;{} ====== endTime; {}", startTime, endTime);
// }
AdminVO info = adminService.getInfo();
Map map = new HashMap<>();
map.put("adminVo", info);
map.put("query", data);
/*1.获取所有满足条件的adminId*/
List adminIds = adminService.getAdminListSearch(map);
map.put("adminIds", adminIds);
/*2.获取所有满足条件的设备编号
* 注:因为没有设备的相关查询条件所以不需要查询 所有满足条件的设备编号
* */
/*3.通过查询回来的id值 插入map中重新查询face_log表 进行单表查询*/
PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
List list = faceLogDao.getFaceLogsNew(map);
/*4.查询完成之后应当对其中的数据包括进行填入
* 1.对admin中的数据字段进行填入
* 2.对face_device中的数据字段进行填入
* */
/*4.1 获取所有adminId并把获取相关的admin*/
List adminList = list.stream().collect(Collectors.groupingBy(FaceLogVO::getAdminId)).keySet().stream().map(key -> key).collect(Collectors.toList());
List adminVOList = adminService.getByAdminlist(adminList);
Map adminVOMap = adminVOList.stream().collect(Collectors.toMap(AdminVO::getAdminId, AdminVO -> AdminVO));
List snList = list.stream().collect(Collectors.groupingBy(FaceLogVO::getDeviceSn)).keySet().stream().map(key -> key).collect(Collectors.toList());
List faceDeviceVOList = faceDeviceDao.getBySnList(snList);
Map faceDeviceVOMap = faceDeviceVOList.stream().collect(Collectors.toMap(FaceDeviceVO::getSn, FaceDeviceVO -> FaceDeviceVO));
// PageHelper.startPage(dto.getPageNum(), dto.getPageSize());
// List list = faceLogDao.getFaceLogs(map);
for (FaceLogVO faceLog : list) {
AdminVO adminVO = adminVOMap.get(faceLog.getAdminId());
if (Objects.nonNull(adminVO)) {
faceLog.setUsername(adminVO.getUsername());
}
FaceDeviceVO faceDeviceVO = faceDeviceVOMap.get(faceLog.getDeviceSn());
if (Objects.nonNull(faceDeviceVO)) {
faceLog.setDeviceName(faceDeviceVO.getName());
faceLog.setOutType(faceDeviceVO.getPass());
}
if (!faceLog.getJkmStatus().equals("01") && !faceLog.getJkmStatus().equals("10")) {
if (faceLog.getPhone() != null)
faceLog.setPhone(SMSOrIdCardUtils.hidePhone(faceLog.getPhone()));
if (faceLog.getCardid() != null)
faceLog.setCardid(SMSOrIdCardUtils.hideIdNumber(faceLog.getCardid()));
}
if (faceLog.getName() != null)
faceLog.setName(faceLog.getName().trim());
if (StringUtils.isNotBlank(faceLog.getYmStatus())) {
String[] split = faceLog.getYmStatus().split(",");
faceLog.setYmStatus(split[1]);
}
if (StringUtils.isNotBlank(faceLog.getHsStatus())) {
String[] split = faceLog.getHsStatus().split(";");
faceLog.setHsStatus(split[0]);
}
}
return new PageInfo<>(list);
}
@Override
public Map queryFaceSuccess(String taskId) {
Map facePassByTaskId = facePassDao.getFacePassByTaskId(taskId);
HashMap map = new HashMap<>();
if (facePassByTaskId != null) {
FacePassUserInFoVO facePassVO = facePassDao.getUserName((Long) facePassByTaskId.get("userId"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Calendar cal = Calendar.getInstance();
// map.get("createTime");
// String s = map.get("createTime").toString().replace("T", " ");
// String format = sdf.format(facePassVO.getCreateTime());
// Date parse = sdf.parse(s);
cal.setTime(facePassVO.getCreateTime());
cal.add(Calendar.HOUR_OF_DAY, +24);
Date time = cal.getTime();
String format = sdf.format(time);
map.putAll(facePassByTaskId);
map.put("avatar", facePassVO.getAvatar());
map.put("username", facePassVO.getUsername());
map.put("phone", facePassVO.getPhone());
map.put("idNumber", facePassVO.getIdNumber());
map.put("createTime", format);
map.put("status", true);
} catch (Exception e) {
e.printStackTrace();
log.info("数据异常", e.getMessage());
String format = sdf.format(new Date());
map.put("avatar", facePassVO.getAvatar());
map.put("username", facePassVO.getUsername());
map.put("phone", facePassVO.getPhone());
map.put("idNumber", facePassVO.getIdNumber());
map.put("createTime", format);
map.put("status", true);
return map;
}
} else {
map.put("status", false);
}
return map;
}
@Override
public List getFaceLogsExcel(FaceServerLogSearch data) {
// //时间减去8小时
// if (StringUtils.isNotBlank(data.getEndTime()) && StringUtils.isNotBlank(data.getStartTime())) {
// String startTime = DateUtils.getReduceEightTime(data.getStartTime());
// String endTime = DateUtils.getReduceEightTime(data.getEndTime());
// data.setStartTime(startTime);
// data.setEndTime(endTime);
// log.info("startTime;{} ====== endTime; {}", startTime, endTime);
// }
// if (StringUtils.isNotBlank(data.getStartTime()) && StringUtils.isBlank(data.getEndTime())) {
// String startTime = DateUtils.getReduceEightTime(data.getStartTime());
// String endTime = DateUtils.getReduceEightTime(data.getEndTime());
// data.setStartTime(startTime);
// data.setEndTime(endTime);
// log.info("startTime;{} ====== endTime; {}", startTime, endTime);
// }
AdminVO info = adminService.getInfo();
if (info.getIsOut() != 1) {
throw new ServiceException("你没有导出的权限");
}
Map map = new HashMap<>();
map.put("adminVo", info);
map.put("query", data);
List list = faceLogDao.getFaceLogs(map);
List faceLogs = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if (info.getIsHideImportant() == 1) {
if (list.get(i).getPhone() != null)
list.get(i).setPhone(SMSOrIdCardUtils.hidePhone(list.get(i).getPhone()));
if (list.get(i).getCardid() != null)
list.get(i).setCardid(SMSOrIdCardUtils.hideIdNumber(list.get(i).getCardid()));
if (list.get(i).getName() != null)
list.get(i).setName(list.get(i).getName().trim());
}
FaceLogVO fv = list.get(i);
FaceLogVoExcel fle = new FaceLogVoExcel();
fle.setDeviceSn(fv.getDeviceSn() == null ? null : fv.getDeviceSn());
fle.setDeviceName(fv.getDeviceName() == null ? null : fv.getDeviceName());
fle.setName(fv.getName() == null ? null : fv.getName());
fle.setPhoto(fv.getPhoto() == null ? null : fv.getPhoto());
fle.setCardid(fv.getCardid() == null ? null : fv.getCardid());
fle.setPhone(fv.getPhone() == null ? null : fv.getPhone());
if (fv.getJkmStatus() != null) {
String jkmStatus = fv.getJkmStatus();
if (jkmStatus.equals("00")) fle.setJkmStatus("绿码");
else if (jkmStatus.equals("01")) fle.setJkmStatus("黄码");
else if (jkmStatus.equals("10")) fle.setJkmStatus("红码");
else {
fle.setJkmStatus("未知");
}
}
if (fv.getTwStatus() != null) {
String twStatus = fv.getTwStatus();
if (twStatus.equals("0")) fle.setTwStatus("正常");
else if (twStatus.equals("1")) fle.setTwStatus("异常");
else {
fle.setTwStatus("未知");
}
}
fle.setExtend3(fv.getExtend3() == null ? null : fv.getExtend3());
fle.setHsStatus(fv.getHsStatus() == null ? null : fv.getHsStatus());
fle.setXcInfo(fv.getXcInfo() == null ? null : fv.getXcInfo());
fle.setYmStatus(fv.getYmStatus() == null ? null : fv.getYmStatus());
if (fv.getOutType() != null) {
Integer outType = fv.getOutType();
if (outType == 0) fle.setOutType("通用");
else if (outType == 1) fle.setOutType("进门");
else if (outType == 2) fle.setOutType("出门");
else {
fle.setJkmStatus("未知");
}
}
if (fv.getVerifyType() != null) {
Integer verifyType = fv.getVerifyType();
if (verifyType == 0) fle.setVerifyType("人脸");
else if (verifyType == 1) fle.setVerifyType("卡");
else if (verifyType == 2) fle.setVerifyType("身份证");
else if (verifyType == 3) fle.setVerifyType("二维码");
else if (verifyType == 4) fle.setVerifyType("远程");
else if (verifyType == 6) fle.setVerifyType("IC卡+人脸");
else {
fle.setJkmStatus("未知");
}
}
if (fv.getRightno() != null) {
Integer rightno = fv.getRightno();
if (rightno == 106) fle.setRightno("管理员");
else if (rightno == 105) fle.setRightno("操作员");
else if (rightno == 104) fle.setRightno("普通员工");
else if (rightno == 103) fle.setRightno("访客");
else if (rightno == 102) fle.setRightno("禁止");
else if (rightno == 101) fle.setRightno("黑名单");
else {
fle.setJkmStatus("未知");
}
}
fle.setCreateTime(fv.getCreateTime());
faceLogs.add(fle);
}
return faceLogs;
}
@Override
public List getFaceDeviceList(JSONObject adminId) {
AdminVO info;
Map map = new HashMap<>();
if (adminId != null && !adminId.isEmpty()) {
info = adminService.getInfo(adminId.getInteger("adminId"));
} else {
info = adminService.getInfo();
}
map.put("adminVo", info);
return faceDeviceDao.getFaceDeviceList(map);
}
/**
* 设备 log 上传
*
* @param file
* @param adminId
* @return
*/
@Override
public String addFaceDeviceLogImg(InputStream file, Integer adminId) {
String path = null;
//按指定大小把图片进行缩和放(会遵循原图高宽比例)
//此处把图片压成60*60的缩略图
try {
BufferedImage image = Thumbnails.of(file).size(60, 60).asBufferedImage();//变为400*300,遵循原图比例缩或放到400*某个高度
//输出流
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ImageIO.write(image, "png", stream);
String base64 = Base64.encode(stream.toByteArray());
stream.flush();
stream.close();
String name = UUID.randomUUID().toString().concat(".jpg");
path = FileUploadUtil.uploadLogImgUtil(base64, name);
//判断logo 是否存在
FaceDeviceLogo faceDeviceLogo = faceDeviceLogoDao.selectList(adminId);
if (faceDeviceLogo == null) {
faceDeviceLogo = new FaceDeviceLogo();
faceDeviceLogo.setLogoImg(path);
faceDeviceLogo.setAdminId(adminId);
faceDeviceLogoDao.insert(faceDeviceLogo);
} else {
faceDeviceLogo.setLogoImg(path);
faceDeviceLogoDao.updateByPrimaryKeySelective(faceDeviceLogo);
}
} catch (IOException e) {
e.printStackTrace();
}
return path;
}
@Override
public Boolean issuedAll(Integer type, Integer adminId, String sn) {
List list = new ArrayList<>();
AdminVO info = adminService.getInfo();
if (info == null) {
list.add("数据匹配失败未找到此账号");
throw new ServiceException(list.toString());
}
//设备列表
List listSn = faceDeviceDao.selectSnList(type, sn, info.getProvinceId(), adminId);
FaceDeviceLogo faceDeviceLogo = faceDeviceLogoDao.selectList(info.getAdminId());
if (faceDeviceLogo == null) {
list.add("LOGO失效下发失败请重新上传下发");
throw new ServiceException(list.toString());
}
String base64 = FileUploadUtil.downloadFile(faceDeviceLogo.getLogoImg());
if (StringUtils.isBlank(base64)) {
list.add("LOGO失效下发失败请重新上传下发");
throw new ServiceException(list.toString());
}
for (FaceDevice faceDevice : listSn) {
//停用-0|启用-1
Integer enable = faceDevice.getEnable();
//离线-0|在线-1
Integer online = faceDevice.getOnline();
//未授权-0|已授权-1
Integer auth = faceDevice.getAuth();
if (enable == 0 || online == 0 || auth == 0) {
list.add(faceDevice.getSn() + ":离线未授权停用状态LOGO下发失败请检查设备状态");
continue;
} else {
List stringList = new ArrayList<>();
stringList.add(faceDevice.getSn());
JSONObject img = new JSONObject();
img.put("logo", base64);
JSONObject json = new JSONObject();
json.put("SN", stringList);
json.put("type", "downLogo");
json.put("taskId", faceDevice.getId());
json.put("Data", img);
log.info("log下发参数; {}", json);
String sync = OkHttpUtils.builder().url(ip + "/Face/sendControl").localPost(json.toJSONString()).sync();
log.info("log下发返回参数;{}", sync);
JSONObject jsonObject = JSONObject.parseObject(sync);
String msg = jsonObject.getString("msg");
if ("命令下发成功".equals(msg)) {
log.info("logo命令下发成功" + jsonObject);
} else {
list.add(faceDevice.getSn() + ":离线未授权停用状态LOGO下发失败请检查设备状态");
}
}
}
if (!list.isEmpty()) {
throw new ServiceException(list.toString());
}
return true;
}
@Override
public String getLogo(Integer adminId) {
FaceDeviceLogo faceDeviceLogo = faceDeviceLogoDao.selectList(adminId);
if (faceDeviceLogo == null) {
return "";
}
return faceDeviceLogo.getLogoImg();
}
@Override
public Boolean doReboot(String sn) {
FaceDevice faceDeviceBySn = faceDeviceDao.getFaceDeviceBySn(sn);
if (faceDeviceBySn == null) {
throw new ServiceException("此设备不存在");
}
List sns = new ArrayList<>();
sns.add(sn);
Map map = Maps.newHashMap();
Map data = Maps.newHashMap();
data.put("rebootType", "2");
data.put("time", "");
map.put("SN", sns);
map.put("taskId", System.currentTimeMillis());
map.put("type", "reboot");
map.put("Data", data);
try {
Map sendControl = tbDeviceFaceService.sendControl(map);
log.info("重启设备返回参数;{}", sendControl);
if (sendControl.isEmpty()) {
throw new ServiceException("设备重启失败请检查是否离线");
}
if (!"00".equals((String) sendControl.get("errCode"))) {
//设备不在线 重试 3次
// Boolean retry = triggerRetry(map);
throw new ServiceException("设备重启失败请检查是否离线");
}
} catch (Exception e) {
log.info("下发失败 原因 {}", e.getMessage());
throw new ServiceException("设备重启失败请检查是否离线");
//设备不在线 重试 3次
// Boolean retry = triggerRetry(map);
}
return true;
}
@Override
public FaceLogVO getDetails(FaceServerLogQu qu, Integer adminId) {
String pwd = PasswordUtils.buildPw(qu.getPassword());
if (StringUtils.equals(qu.getPassword(), pwd)) {
throw new ServiceException("密码有误哦~");
}
SystemConfigVO vo = systemConfigDao.sysConfiguration(adminId);
if (vo == null) {
throw new ServiceException("未配置此权限哦~");
}
if (vo.getStatus() != 1) {
throw new ServiceException("此权限未开启哦~");
}
return faceLogDao.getDetails(qu.getId());
}
@Override
public void uploadExcel(List