refactor(sis): 授权记录模块重新调整
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
2025-07-14 23:15:29 +08:00
parent f53dee48ca
commit 8b340c9e95
7 changed files with 99 additions and 419 deletions

View File

@@ -1,37 +1,33 @@
package org.dromara.sis.controller; package org.dromara.sis.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import java.util.List;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType; import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.domain.bo.AuthLibBo;
import org.dromara.sis.domain.bo.SingleAuthRecordBo;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.service.ISisAuthRecordService; import org.dromara.sis.service.ISisAuthRecordService;
import org.springframework.validation.annotation.Validated; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* 授权记录 * 授权记录
* 前端访问路由地址为:/sis/authRecord * 前端访问路由地址为:/sis/authRecord
* *
* @author lsm * @author lsm
* @since 2025-06-28 * @since 2025-07-14
*/ */
@Validated @Validated
@RequiredArgsConstructor @RequiredArgsConstructor
@@ -79,23 +75,11 @@ public class SisAuthRecordController extends BaseController {
@SaCheckPermission("sis:authRecord:add") @SaCheckPermission("sis:authRecord:add")
@Log(title = "授权记录", businessType = BusinessType.INSERT) @Log(title = "授权记录", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/add") @PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) { public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo) {
return toAjax(sisAuthRecordService.insertByBo(bo)); return toAjax(sisAuthRecordService.insertByBo(bo));
} }
/**
* 新增授权记录
*/
@SaCheckPermission("sis:authRecord:add")
@Log(title = "单个人像授权", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/auth/single")
public R<Void> singleAuth(@Validated(AddGroup.class) @RequestBody SingleAuthRecordBo bo) {
return toAjax(sisAuthRecordService.singleAuth(bo));
}
/** /**
* 修改授权记录 * 修改授权记录
*/ */
@@ -119,21 +103,4 @@ public class SisAuthRecordController extends BaseController {
@PathVariable("ids") Long[] ids) { @PathVariable("ids") Long[] ids) {
return toAjax(sisAuthRecordService.deleteWithValidByIds(List.of(ids), true)); return toAjax(sisAuthRecordService.deleteWithValidByIds(List.of(ids), true));
} }
/**
* 删除授权记录
*
* @param bo 授权信息
*/
@SaCheckPermission("sis:authRecord:authLib")
@Log(title = "人员库授权", businessType = BusinessType.INSERT)
@PostMapping("/authLib")
public R<Void> authLib(@Validated @RequestBody AuthLibBo bo) {
return toAjax(sisAuthRecordService.authLib(bo));
}
@GetMapping("/authDevice/{libId}")
public R<List<SisAuthRecord>> queryAuthDevice(@PathVariable("libId") String libId) {
return R.ok(sisAuthRecordService.queryAuthDevice(libId));
}
} }

View File

@@ -11,7 +11,7 @@ import java.io.Serial;
* 授权记录对象 sis_auth_record * 授权记录对象 sis_auth_record
* *
* @author lsm * @author lsm
* @since 2025-06-28 * @since 2025-07-14
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -33,29 +33,14 @@ public class SisAuthRecord extends TenantEntity {
private Long libId; private Long libId;
/** /**
* 图片id * 设备id门禁/电梯)
*/
private Long imgId;
/**
* 门禁id
*/
private Long acId;
/**
* 设备id
*/
private Long eqbId;
/*
门id
*/
private Long doorId;
/**
* 设备id
*/ */
private Long deviceId; private Long deviceId;
/**
* 设备类型1-门禁 2-电梯
*/
private Integer deviceType;
} }

View File

@@ -1,21 +1,21 @@
package org.dromara.sis.domain.bo; package org.dromara.sis.domain.bo;
import io.github.linpeilie.annotations.AutoMapper; import org.dromara.sis.domain.SisAuthRecord;
import jakarta.validation.constraints.NotNull; import org.dromara.common.mybatis.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup; import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity; import io.github.linpeilie.annotations.AutoMapper;
import org.dromara.sis.domain.SisAuthRecord; import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.List; import java.util.Collection;
/** /**
* 授权记录业务对象 sis_auth_record * 授权记录业务对象 sis_auth_record
* *
* @author lsm * @author lsm
* @since 2025-06-28 * @since 2025-07-14
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -23,26 +23,26 @@ import java.util.List;
public class SisAuthRecordBo extends BaseEntity { public class SisAuthRecordBo extends BaseEntity {
/** /**
* 图像库Id * 主键id
*/ */
@NotNull(message = "图像库Id不能为空", groups = {AddGroup.class, EditGroup.class}) @NotNull(message = "主键id不能为空", groups = {EditGroup.class})
private Long id;
/**
* 图像库id
*/
@NotNull(message = "图像库id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long libId; private Long libId;
/** /**
* 图像id列表 * 门禁idList
*/ */
@NotNull(message = "图像id列表不能为空", groups = {AddGroup.class, EditGroup.class}) @NotEmpty(message = "门禁idList不能为空", groups = {AddGroup.class, EditGroup.class})
private List<Long> imgIds; private Collection<Long> acIdList;
/** /**
* 门禁id列表 * 电梯idList
*/ */
@NotNull(message = "门禁id列表能为空", groups = {AddGroup.class, EditGroup.class}) @NotEmpty(message = "电梯idList不能为空", groups = {AddGroup.class, EditGroup.class})
private List<Long> acIds; private Collection<Long> eleIdList;
/**
* 是否将图片下发到宇视盒子
*/
private Boolean issue = false;
} }

View File

@@ -3,19 +3,20 @@ package org.dromara.sis.domain.vo;
import org.dromara.sis.domain.SisAuthRecord; import org.dromara.sis.domain.SisAuthRecord;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper; import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* 授权记录视图对象 sis_auth_record * 授权记录视图对象 sis_auth_record
* *
* @author lsm * @author lsm
* @since 2025-06-28 * @since 2025-07-14
*/ */
@Data @Data
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
@@ -32,41 +33,23 @@ public class SisAuthRecordVo implements Serializable {
private Long id; private Long id;
/** /**
* 图像库Id * 图像库id
*/ */
@ExcelProperty(value = "图像库Id") @ExcelProperty(value = "图像库id")
private Long libId; private Long libId;
/** /**
* 人像id * 设备id门禁/电梯)
*/
@ExcelProperty(value = "人像id")
private Long imgId;
/**
* 门禁id
*/
@ExcelProperty(value = "门禁id")
private Long acId;
/**
* 设备id
*/
@ExcelProperty(value = "设备id")
private Long eqbId;
/**
* E8权限ID
*/
private Long remoteAuthId;
/*
门id
*/
private Long doorId;
/**
* 设备id
*/ */
@ExcelProperty(value = "设备id", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "门=禁/电梯")
private Long deviceId; private Long deviceId;
/**
* 设备类型1-门禁 2-电梯
*/
@ExcelProperty(value = "设备类型1-门禁 2-电梯")
private Integer deviceType;
} }

View File

@@ -1,6 +1,5 @@
package org.dromara.sis.mapper; package org.dromara.sis.mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.sis.domain.SisAuthRecord; import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@@ -9,9 +8,8 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* 授权记录Mapper接口 * 授权记录Mapper接口
* *
* @author lsm * @author lsm
* @date 2025-06-28 * @since 2025-07-14
*/ */
public interface SisAuthRecordMapper extends BaseMapperPlus<SisAuthRecord, SisAuthRecordVo> { public interface SisAuthRecordMapper extends BaseMapperPlus<SisAuthRecord, SisAuthRecordVo> {
SisAuthRecordVo checkAuth(@Param("personId") Integer personId,@Param("accessControlId") Long accessControlId);
} }

View File

@@ -1,12 +1,9 @@
package org.dromara.sis.service; package org.dromara.sis.service;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.domain.bo.AuthLibBo;
import org.dromara.sis.domain.bo.SingleAuthRecordBo;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@@ -15,7 +12,7 @@ import java.util.List;
* 授权记录Service接口 * 授权记录Service接口
* *
* @author lsm * @author lsm
* @date 2025-06-28 * @since 2025-07-14
*/ */
public interface ISisAuthRecordService { public interface ISisAuthRecordService {
@@ -68,32 +65,4 @@ public interface ISisAuthRecordService {
* @return 是否删除成功 * @return 是否删除成功
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 通过宇视图片id和门禁id校验此图像是否有通行权限
*
* @param personId 人像id
* @param accessControlId 门禁id
* @return 返回授权记录
*/
SisAuthRecordVo checkAuth(Integer personId, Long accessControlId);
/**
* 单个人像授权
*
* @param bo 授权信息
* @return 是否授权成功
*/
Boolean singleAuth(SingleAuthRecordBo bo);
Boolean deleteByLibId(Long libId);
Boolean authLib(AuthLibBo bo);
/**
* 插叙库id授权的设备
* @param libId 人像库id
* @return
*/
List<SisAuthRecord> queryAuthDevice(String libId);
} }

View File

@@ -1,66 +1,38 @@
package org.dromara.sis.service.impl; package org.dromara.sis.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert;
import cn.hutool.core.img.ImgUtil; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.stereotype.Service;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.resource.api.RemoteFileService;
import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.domain.SisDeviceManage;
import org.dromara.sis.domain.bo.AuthLibBo;
import org.dromara.sis.domain.bo.SingleAuthRecordBo;
import org.dromara.sis.domain.bo.SisAuthRecordBo; import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.domain.vo.SisAuthRecordVo; import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.mapper.SisAuthRecordMapper; import org.dromara.sis.mapper.SisAuthRecordMapper;
import org.dromara.sis.sdk.e8.AccessControlService; import org.dromara.sis.service.ISisAuthRecordService;
import org.dromara.sis.sdk.e8.DoorDeviceService;
import org.dromara.sis.sdk.e8.VoucherControlService;
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
import org.dromara.sis.service.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection;
/** /**
* 授权记录Service业务层处理 * 授权记录Service业务层处理
* *
* @author lsm * @author lsm
* @since 2025-06-28 * @since 2025-07-14
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class SisAuthRecordServiceImpl implements ISisAuthRecordService { public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
private final UnViewAiBoxApi unViewAiBoxApi;
private final SisAuthRecordMapper baseMapper; private final SisAuthRecordMapper baseMapper;
private final VoucherControlService e8VouchService;
private final DoorDeviceService e8DoorDeviceService;
private final ISisPersonLibService sisPersonLibService;
private final ISisEEightRefService sisEEightRefService;
private final AccessControlService e8AccessControlService;
private final ISisPersonLibImgService sisPersonLibImgService;
private final ISisLibDeviceRefService sisLibDeviceRefService;
private final ISisAccessControlService sisAccessControlService;
private final ISisLibDeviceImgRefService sisLibDeviceImgRefService;
private final ISisDeviceManageService deviceManageService;
@DubboReference
private final RemoteFileService remoteFileService;
/** /**
* 查询授权记录 * 查询授权记录
@@ -82,7 +54,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
*/ */
@Override @Override
public TableDataInfo<SisAuthRecordVo> queryPageList(SisAuthRecordBo bo, PageQuery pageQuery) { public TableDataInfo<SisAuthRecordVo> queryPageList(SisAuthRecordBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<SisAuthRecord> lqw = buildQueryWrapper(bo);
Page<SisAuthRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<SisAuthRecordVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@@ -116,184 +88,32 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(SisAuthRecordBo bo) { public Boolean insertByBo(SisAuthRecordBo bo) {
// List<SisLibDeviceRefVo> refVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(bo.getLibId())); boolean flag = false;
// Assert.notEmpty(refVos, "图像库与设备关联关系不存在"); log.info("开始写入门禁授权记录acIds{}", bo.getAcIdList());
// List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList(); for (Long acId : bo.getAcIdList()) {
// SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class);
// SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId()); Assert.notNull(add, "数据处理失败");
// Assert.notNull(libVo, "图像库不存在id=" + (bo.getLibId()));
//
// List<SisPersonLibImgVo> imgList = sisPersonLibImgService.queryListByIds(bo.getImgIds());
// Assert.notEmpty(imgList, "图片不存在");
//
// List<SisAccessControlVo> acList = sisAccessControlService.queryListByIds(bo.getAcIds());
// Assert.notEmpty(acList, "门禁设备不存在!");
//
//
// try {
// log.info("开始对宇视盒子下发照片,图片:{}、设备:{}", bo.getImgIds(), eqpIds);
// for (SisPersonLibImgVo imgVo : imgList) {
// for (Long eqpId : eqpIds) {
// long eqp_lib_id;
// Integer eqp_lib_img_id;
//
// byte[] imageByte = remoteFileService.downloadToByteArray(imgVo.getImgOssId());
// Assert.notNull(imageByte, "图片下载失败");
//
// SisAccessControlDeviceVo vo = sisAccessControlDeviceService.queryById(eqpId);
// Assert.notNull(vo, "门禁控制设备不存在id=" + eqpId);
// log.info(libVo .getLibType() == 1 ? "准备写入人像设备code={}" : "准备写入工服设备code={}", vo.getEqpNo());
//
// UvModel.UvSystemInfo systemInfo = new UvModel.UvSystemInfo();
// systemInfo.setAccount(vo.getEqpAccount());
// systemInfo.setPassword(vo.getEqpPwd());
// systemInfo.setIp(vo.getEqpIp());
// systemInfo.setPort(vo.getEqpPort());
//
// // 获取宇视线上库ID
// SisLibDeviceRefBo refBo = new SisLibDeviceRefBo();
// refBo.setEqpId(eqpId);
// refBo.setLibId(libVo.getId());
// List<SisLibDeviceRefVo> refVo = sisLibDeviceRefService.queryList(refBo);
// Assert.notNull(refVo, "系统库与设备库关联关系不存在libId:{},eqpId:{}", libVo.getId(), eqpId);
// eqp_lib_id = refVo.get(0).getEqpLibId();
//
// if (libVo.getLibType() == 1) {
// // 宇视添加人像
// UvModel.AddPersonParams addPersonParams = new UvModel.AddPersonParams();
// addPersonParams.setPerson_name(imgVo.getImgName());
// addPersonParams.setImage_base64(base64Helper(imageByte));
// addPersonParams.setLib_id(Math.toIntExact(eqp_lib_id));
// addPersonParams.setSex(imgVo.getSex());
// addPersonParams.setEmail(imgVo.getEmail());
// addPersonParams.setTel(imgVo.getTel());
// addPersonParams.setCertificate_type(imgVo.getCertificateType());
// addPersonParams.setCertificate_no(imgVo.getCertificateNo());
// addPersonParams.setBirth_date(imgVo.getBirthDate());
// // 发起请求获取响应
// UvModel.AddPersonResult addResult = unViewAiBoxApi.addPerson(systemInfo, addPersonParams);
// eqp_lib_img_id = addResult.getPerson_id();
//
// } else {
// UvModel.WorkClothesInfo addResult = unViewAiBoxApi.addWorkClothes(systemInfo, Math.toIntExact(eqp_lib_id), base64Helper(imageByte));
// eqp_lib_img_id = addResult.getWorkclothes_id();
// }
// Assert.notNull(eqp_lib_img_id, "图片上传宇视盒子失败");
// log.info("图片上传宇视盒子完成eqp_lib_img_id = {}", eqp_lib_img_id);
//
// SisLibDeviceImgRefBo ref = new SisLibDeviceImgRefBo();
// ref.setLibId(libVo.getId());
// ref.setImgId(imgVo.getId());
// ref.setEqpId(eqpId);
// ref.setEqpLibId(eqp_lib_id);
// ref.setEqpLibImgId(eqp_lib_img_id.longValue());
// Boolean insert = sisLibDeviceImgRefService.insertByBo(ref);
// Assert.isTrue(insert, "写入图片关联关系表失败!");
//
// }
// }
// log.info("图片开始下发完成!");
//
// log.info("开始写入E8平台图片{}、门禁:{}", bo.getImgIds(), bo.getAcIds());
// for (SisPersonLibImgVo imgVo : imgList) {
// byte[] imageByte = remoteFileService.downloadToByteArray(imgVo.getImgOssId());
// Assert.notNull(imageByte, "图片下载失败");
//
// log.info("E8平台上传图片{}", imgVo.getId());
// String url = e8VouchService.uploadFace(imageByte);
// Assert.notNull(url, "E8平台上传图片失败");
// log.info("E8平台上传图片完成!");
//
// log.info("E8平台发行凭证");
// IssueVoucherReq req = new IssueVoucherReq();
// // 34普通用户卡
// req.setCardType(34);
// // 70人脸凭证
// req.setVoucherType(70);
// // TODO 临时默认人员
// req.setPersonID(539696740646981L);
// req.setTxtData(url);
// Long vId = e8VouchService.issueVoucher(req);
// Assert.notNull(vId, "E8平台发行凭证失败");
// log.info("E8平台发行凭证完成!");
//
// log.info("E8平台授权凭证");
// // 查询E8授权门列表
// List<AuthDoorDeviceFindRes> authDoorList = e8DoorDeviceService.getPageAuthDoorDeviceList();
// Assert.notEmpty(authDoorList, "E8平台授权门列表为空");
//
// // E8 授权列表
// List<CustomerAuthAddReq.AuthGroupData> authList = new ArrayList<>(acList.size());
// // 授权记录
// List<SisAuthRecord> recordList = new ArrayList<>(acList.size());
// // E8授权门
// AuthDoorDeviceFindRes authDoor = null;
// for (SisAccessControlVo sisAccessControlVo : acList) {
// if (sisAccessControlVo.getControlType() != 1 && sisAccessControlVo.getAccessType() != 2) {
//
// // 通过门禁ID匹配授权门
// authDoor = authDoorList.stream().filter(item -> item.getDeviceId() == Long.parseLong(sisAccessControlVo.getOutCode())).findFirst().orElse(null);
//
// if (authDoor != null) {
// CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData();
// door.setType(0);
// door.setGatewayType(1);
// // E8授权传入ID为门ID非门禁ID
// door.setId(authDoor.getId());
// authList.add(door);
//
// SisAuthRecord authRecord = new SisAuthRecord();
// authRecord.setDoorId(authDoor.getId());
// authRecord.setDeviceId(authDoor.getDeviceId());
// authRecord.setLibId(imgVo.getLibId());
// authRecord.setImgId(imgVo.getId());
// authRecord.setAcId(sisAccessControlVo.getId());
// recordList.add(authRecord);
// }
// }
// }
//
// CustomerAuthAddReq authReq = new CustomerAuthAddReq();
// authReq.setAuthType(0);
// authReq.setScheduleId(1L);
// authReq.setPersonIds(Collections.singletonList(539696740646981L));
// authReq.setStartTime("2025-06-25 11: 23: 39");
// authReq.setEndTime("2025-07-25 11: 23: 39");
// authReq.setAuthData(authList);
// Boolean auth = e8AccessControlService.addCustomerAuth(authReq);
// Assert.isTrue(auth, "E8平台授权失败");
// log.info("E8平台授权完成!");
// boolean insert = baseMapper.insertBatch(recordList);
// Assert.isTrue(insert, "写入E8关联关系表失败!");
// }
// log.info("写入E8平台完成!");
//
// } catch (Exception e) {
// throw new RuntimeException(e.getMessage());
// }
//
// return true;
return true;
}
public String base64Helper(byte[] imageByte) throws IOException { add.setDeviceType(1);
// 1. 将字节数组解码为BufferedImage对象 add.setDeviceId(acId);
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte); flag = baseMapper.insert(add) > 0;
Assert.isTrue(flag, "写入门禁授权记录失败!");
}
log.info("写入门禁授权记录完成");
// 2. 将图片重新编码为JPG格式的字节数组 log.info("开始写入电梯授权记录eleIds{}", bo.getEleIdList());
ByteArrayOutputStream bos = new ByteArrayOutputStream(); for (Long ele : bo.getEleIdList()) {
SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class);
Assert.notNull(add, "数据处理失败");
ImgUtil.convert(bis, "jpg", bos); add.setDeviceType(2);
add.setDeviceId(ele);
flag = baseMapper.insert(add) > 0;
Assert.isTrue(flag, "写入电梯授权记录失败!");
}
log.info("写入电梯授权记录完成");
byte[] jpgBytes = bos.toByteArray(); return flag;
// 3. 将JPG字节数组转为Base64字符串
return Base64.getEncoder().encodeToString(jpgBytes);
}
@Override
public Boolean singleAuth(SingleAuthRecordBo bo) {
return null;
} }
/** /**
@@ -330,46 +150,4 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
} }
return baseMapper.deleteByIds(ids) > 0; return baseMapper.deleteByIds(ids) > 0;
} }
@Override
public SisAuthRecordVo checkAuth(Integer personId, Long accessControlId) {
return baseMapper.checkAuth(personId, accessControlId);
}
@Override
public Boolean deleteByLibId(Long libId) {
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
lqw.eq(SisAuthRecord::getLibId, libId);
return baseMapper.delete(lqw) > 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean authLib(AuthLibBo bo) {
if (CollUtil.isEmpty(bo.getDeviceIds())) {
return false;
}
// 每次授权先删除上一次授权信息
deleteByLibId(bo.getLibId());
// 过滤点不是设备的节点数据
List<SisDeviceManage> ls = deviceManageService.queryByIds(bo.getDeviceIds());
if (CollUtil.isEmpty(ls)) {
return false;
}
// 批量写入授权数据
List<SisAuthRecord> list = ls.stream().map(item -> {
SisAuthRecord authRecord = new SisAuthRecord();
authRecord.setDeviceId(item.getId());
authRecord.setLibId(bo.getLibId());
return authRecord;
}).toList();
return baseMapper.insertBatch(list);
}
@Override
public List<SisAuthRecord> queryAuthDevice(String libId) {
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
lqw.eq(SisAuthRecord::getLibId, libId);
return baseMapper.selectList(lqw);
}
} }