From 116abb4113b92fdec69ab75065f78768aae67144 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Sun, 29 Jun 2025 17:17:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sis):=20E8=E6=8E=88=E6=9D=83=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sis/sdk/e8/DoorDeviceService.java | 10 ++++++ .../door/res/AuthDoorDeviceFindRes.java | 22 +++++++++++++ .../sdk/e8/impl/DoorDeviceServiceImpl.java | 33 +++++++++++++++++++ .../impl/SisAuthRecordServiceImpl.java | 26 +++++++++++---- 4 files changed, 84 insertions(+), 7 deletions(-) create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java index aa70d85..6a6e717 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java @@ -3,10 +3,13 @@ package org.dromara.sis.sdk.e8; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq; import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq; +import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes; import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes; import org.dromara.sis.sdk.e8.domain.QueryDto; +import java.util.List; + /** * @author lsm * @apiNote DoorDeviceService @@ -53,4 +56,11 @@ public interface DoorDeviceService { * @return Boolean */ Boolean deleteDoorDevice(Integer id); + + /** + * 分页获取授权门信息 + * + * @return TableDataInfo + */ + List getPageAuthDoorDeviceList(); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java new file mode 100644 index 0000000..f2cf2d6 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/door/res/AuthDoorDeviceFindRes.java @@ -0,0 +1,22 @@ +package org.dromara.sis.sdk.e8.domain.door.res; + +import lombok.Data; + +/** + * @author lsm + * @apiNote AuthDoorDeviceFindRes + * @since 2025/6/29 + */ +@Data +public class AuthDoorDeviceFindRes { + + /** + * id + */ + private Long id; + + /** + * deviceId + */ + private Long deviceId; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java index 060151c..b299a09 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java @@ -11,6 +11,7 @@ import org.dromara.sis.sdk.e8.domain.ApiResp; import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq; import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceFindReq; import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq; +import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes; import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes; import org.dromara.sis.sdk.e8.domain.QueryDto; @@ -18,6 +19,7 @@ import org.dromara.sis.sdk.e8.utils.E8ApiUtil; import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -35,6 +37,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { private final static String DOOR_DEVICE_CREATE = "/api/E8Door/man-device-info"; private final static String DOOR_DEVICE_UPDATE = "/api/E8Door/man-device-info/{id}/update"; private final static String DOOR_DEVICE_DELETE = "/api/E8Door/man-device-info/{id}"; + private final static String AUTH_DOOR_DEVICE_GET_LIST = "/api/E8Door/man-auth-info/get-page-list-auth-data"; private final E8ApiUtil e8ApiUtil; @@ -170,4 +173,34 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { return apiResp.getSuccess(); } + /** + * 分页获取授权门信息 + * + * @return TableDataInfo + */ + public List getPageAuthDoorDeviceList() { + Map queryDto = new HashMap<>(); + queryDto.put("type", -1); + queryDto.put("matchString", ""); + + // 创建一个参数映射,用于存储API请求所需的参数 + Map params = new HashMap<>(); + params.put("PageIndex", 1); + params.put("MaxResultCount", 100000); + params.put("QueryDto", queryDto); + + ApiResp apiResp = e8ApiUtil.doPost(params, AUTH_DOOR_DEVICE_GET_LIST); + + // 如果API调用不成功,则返回null + if (!apiResp.getSuccess()) { + log.error("分页获取授权门信息失败 errorMsg:{}", apiResp); + // 如果响应不成功,则返回null + return null; + } + // 将API响应结果转换为Map对象,以便后续处理 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 返回list + return JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AuthDoorDeviceFindRes.class); + } } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java index 1f0cd0c..52a3a4c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAuthRecordServiceImpl.java @@ -14,8 +14,10 @@ import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo; import org.dromara.sis.domain.bo.SisLibDeviceRefBo; import org.dromara.sis.domain.vo.*; 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.e8.domain.accessControl.req.CustomerAuthAddReq; +import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; import org.dromara.sis.sdk.unview.UnViewAiBoxApi; import org.dromara.sis.sdk.unview.model.UvModel; @@ -45,6 +47,7 @@ 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; @@ -224,17 +227,26 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService { Assert.notNull(vId, "E8平台发行凭证失败"); log.info("E8平台发行凭证完成!"); - log.info("E8平台授权凭证"); + // E8平台授权门列表 + List authDoor = e8DoorDeviceService.getPageAuthDoorDeviceList(); + Map authDoorMap = authDoor.stream() + .collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes)); + List authList = acList.stream() - // TODO 阶段调试E8人脸设备,非E8且非人脸设备不处理 .filter(acVo -> acVo.getControlType() != 1 && acVo.getAccessType() != 2) .map(acVo -> { - CustomerAuthAddReq.AuthGroupData auth = new CustomerAuthAddReq.AuthGroupData(); - auth.setType(0); - auth.setGatewayType(1); - auth.setId(Long.parseLong(acVo.getAccessCode())); - return auth; + CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData(); + door.setType(0); + door.setGatewayType(1); + Long id = Long.parseLong(acVo.getOutCode()); + door.setId(id); + // 如果 authDoorMap 中存在对应的 deviceId,则更新 id + AuthDoorDeviceFindRes authDoorRes = authDoorMap.get(id); + if (authDoorRes != null) { + door.setId(authDoorRes.getId()); + } + return door; }).toList(); CustomerAuthAddReq authReq = new CustomerAuthAddReq();