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;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.List;
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.validate.AddGroup;
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.mybatis.core.page.PageQuery;
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.common.excel.utils.ExcelUtil;
import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.service.ISisAuthRecordService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 授权记录
* 前端访问路由地址为:/sis/authRecord
*
* @author lsm
* @since 2025-06-28
* @since 2025-07-14
*/
@Validated
@RequiredArgsConstructor
@@ -79,23 +75,11 @@ public class SisAuthRecordController extends BaseController {
@SaCheckPermission("sis:authRecord:add")
@Log(title = "授权记录", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/add")
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo 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) {
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
*
* @author lsm
* @since 2025-06-28
* @since 2025-07-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -33,29 +33,14 @@ public class SisAuthRecord extends TenantEntity {
private Long libId;
/**
* 图片id
*/
private Long imgId;
/**
* 门禁id
*/
private Long acId;
/**
* 设备id
*/
private Long eqbId;
/*
门id
*/
private Long doorId;
/**
* 设备id
* 设备id门禁/电梯)
*/
private Long deviceId;
/**
* 设备类型1-门禁 2-电梯
*/
private Integer deviceType;
}

View File

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

View File

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

View File

@@ -1,6 +1,5 @@
package org.dromara.sis.mapper;
import org.apache.ibatis.annotations.Param;
import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@@ -9,9 +8,8 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* 授权记录Mapper接口
*
* @author lsm
* @date 2025-06-28
* @since 2025-07-14
*/
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;
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.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.List;
@@ -15,7 +12,7 @@ import java.util.List;
* 授权记录Service接口
*
* @author lsm
* @date 2025-06-28
* @since 2025-07-14
*/
public interface ISisAuthRecordService {
@@ -68,32 +65,4 @@ public interface ISisAuthRecordService {
* @return 是否删除成功
*/
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;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.lang.Assert;
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.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
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.springframework.stereotype.Service;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.domain.vo.SisAuthRecordVo;
import org.dromara.sis.domain.SisAuthRecord;
import org.dromara.sis.mapper.SisAuthRecordMapper;
import org.dromara.sis.sdk.e8.AccessControlService;
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.dromara.sis.service.ISisAuthRecordService;
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.Map;
import java.util.Collection;
/**
* 授权记录Service业务层处理
*
* @author lsm
* @since 2025-06-28
* @since 2025-07-14
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
private final UnViewAiBoxApi unViewAiBoxApi;
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
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);
return TableDataInfo.build(result);
}
@@ -116,184 +88,32 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(SisAuthRecordBo bo) {
// List<SisLibDeviceRefVo> refVos = sisLibDeviceRefService.queryByLibIds(Collections.singleton(bo.getLibId()));
// Assert.notEmpty(refVos, "图像库与设备关联关系不存在");
// List<Long> eqpIds = refVos.stream().map(SisLibDeviceRefVo::getEqpId).toList();
//
// SisPersonLibVo libVo = sisPersonLibService.queryById(bo.getLibId());
// 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;
}
boolean flag = false;
log.info("开始写入门禁授权记录acIds{}", bo.getAcIdList());
for (Long acId : bo.getAcIdList()) {
SisAuthRecord add = MapstructUtils.convert(bo, SisAuthRecord.class);
Assert.notNull(add, "数据处理失败");
public String base64Helper(byte[] imageByte) throws IOException {
// 1. 将字节数组解码为BufferedImage对象
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
add.setDeviceType(1);
add.setDeviceId(acId);
flag = baseMapper.insert(add) > 0;
Assert.isTrue(flag, "写入门禁授权记录失败!");
}
log.info("写入门禁授权记录完成");
// 2. 将图片重新编码为JPG格式的字节数组
ByteArrayOutputStream bos = new ByteArrayOutputStream();
log.info("开始写入电梯授权记录eleIds{}", bo.getEleIdList());
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();
// 3. 将JPG字节数组转为Base64字符串
return Base64.getEncoder().encodeToString(jpgBytes);
}
@Override
public Boolean singleAuth(SingleAuthRecordBo bo) {
return null;
return flag;
}
/**
@@ -330,46 +150,4 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
}
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);
}
}