From e07f690002aff4c0da56b9938d92d437da97d7a8 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Thu, 17 Jul 2025 19:54:57 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sis):=20=E6=95=B4=E5=90=88E8=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sis/sdk/e8/AccessControlService.java | 51 -- .../dromara/sis/sdk/e8/CustomerService.java | 57 -- .../dromara/sis/sdk/e8/DoorDeviceService.java | 66 -- .../org/dromara/sis/sdk/e8/E8PlatformApi.java | 231 ++++++ .../org/dromara/sis/sdk/e8/LiftService.java | 56 -- .../sis/sdk/e8/VoucherControlService.java | 45 -- .../sdk/e8/impl/AccessControlServiceImpl.java | 162 ---- .../sis/sdk/e8/impl/CustomerServiceImpl.java | 174 ----- .../sdk/e8/impl/DoorDeviceServiceImpl.java | 206 ------ .../sis/sdk/e8/impl/LiftServiceImpl.java | 161 ---- .../e8/impl/VoucherControlServiceImpl.java | 115 --- .../sdk/e8/service/E8PlatformApiService.java | 697 ++++++++++++++++++ .../sis/sdk/hik/calback/HikAlarmCallBack.java | 6 +- .../sdk/unview/service/VideoAlarmService.java | 4 +- .../impl/SisAccessControlServiceImpl.java | 6 +- 15 files changed, 936 insertions(+), 1101 deletions(-) delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/LiftServiceImpl.java delete mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java deleted file mode 100644 index c991ffd..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/AccessControlService.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.dromara.sis.sdk.e8; - -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.sdk.e8.domain.QueryDto; -import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; -import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; -import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; -import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; - -/** - * @author lsm - * @apiNote AccessControlService - * @since 2025/6/24 - */ -public interface AccessControlService { - - /** - * 远程开门 - * - * @param req 传参 - * @return Boolean - */ - Boolean remoteOpenDoor(RemoteOpenDoorReq req); - - - /** - * 获取通行记录分页列表 - * - * @param dto 传参 - * @return IPage - */ - TableDataInfo getPageAccessRecordList(QueryDto dto); - - /** - * 人员授权 - * - * @param req 传参 - * @return Boolean - */ - Boolean addCustomerAuth(CustomerAuthAddReq req); - - /** - * 获取人员权限分页列表 - * - * @param dto 传参 - * @return TableDataInfo - */ - TableDataInfo getPageCustomerAuth(QueryDto dto); - - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java deleted file mode 100644 index 164b1f3..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/CustomerService.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.dromara.sis.sdk.e8; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.dromara.sis.sdk.e8.domain.QueryDto; -import org.dromara.sis.sdk.e8.domain.custom.req.CustomAddReq; -import org.dromara.sis.sdk.e8.domain.custom.req.CustomFindReq; -import org.dromara.sis.sdk.e8.domain.custom.req.CustomUpdateReq; -import org.dromara.sis.sdk.e8.domain.custom.res.CustomAddRes; -import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; - -/** - * @author lsm - * @apiNote CustomerService - * @since 2025/6/23 - */ -public interface CustomerService { - - /** - * 查询单个人员信息 - * - * @param findReq 传参 - * @return CustomFindRes - */ - CustomFindRes findCustomer(CustomFindReq findReq); - - /** - * 人员信息分页查询 - * - * @param dto 传参 - * @return IPage - */ - IPage findCustomerList(QueryDto dto); - - /** - * 新增人员信息 - * - * @param addReq 传参 - * @return CustomAddRes - */ - CustomAddRes addCustomer(CustomAddReq addReq); - - /** - * 人员信息修改 - * - * @param updateReq 传参 - * @return Boolean - */ - Boolean updateCustomer(CustomUpdateReq updateReq); - - /** - * 删除人员信息 - * - * @param id 传参 - * @return Boolean - */ - Boolean deleteCustomer(Long id); -} 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 deleted file mode 100644 index 98015df..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/DoorDeviceService.java +++ /dev/null @@ -1,66 +0,0 @@ -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 - * @since 2025/6/20 - */ -public interface DoorDeviceService { - - /** - * 查询门禁信息 - * - * @param id 入参 - * @return DoorDeviceFindRes - */ - DoorDeviceFindRes findDoorDevice(Long id); - - /** - * 门禁信息分页查询 - * - * @param dto 入参 - * @return IPage - */ - TableDataInfo findDoorDeviceList(QueryDto dto); - - /** - * 新增门禁信息 - * - * @param addReq 入参 - * @return DoorDeviceAddRes - */ - DoorDeviceAddRes addDoorDevice(DoorDeviceAddReq addReq); - - /** - * 门禁信息修改 - * - * @param updateReq 入参 - * @return DoorDeviceUpdateRes - */ - Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq); - - /** - * 删除门禁信息 - * - * @param id 入参 - * @return Boolean - */ - Boolean deleteDoorDevice(Long id); - - /** - * 分页获取授权门信息 - * - * @return TableDataInfo - */ - List getPageAuthDoorDeviceList(); -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java new file mode 100644 index 0000000..b5bd34f --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/E8PlatformApi.java @@ -0,0 +1,231 @@ +package org.dromara.sis.sdk.e8; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; +import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; +import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomAddReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomFindReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomUpdateReq; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomAddRes; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; +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.lift.req.LiftAddReq; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; +import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; +import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; + +import java.util.List; + +/** + * @author lsm + * @apiNote E8PlatformApi + * @since 2025/7/17 + */ +public interface E8PlatformApi { + + //***************************************客户信息接口*******************************************/ + /** + * 查询单个人员信息 + * + * @param findReq 传参 + * @return CustomFindRes + */ + CustomFindRes findCustomer(CustomFindReq findReq); + + /** + * 人员信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + IPage findCustomerList(QueryDto dto); + + /** + * 新增人员信息 + * + * @param addReq 传参 + * @return CustomAddRes + */ + CustomAddRes addCustomer(CustomAddReq addReq); + + /** + * 人员信息修改 + * + * @param updateReq 传参 + * @return Boolean + */ + Boolean updateCustomer(CustomUpdateReq updateReq); + + /** + * 删除人员信息 + * + * @param id 传参 + * @return Boolean + */ + Boolean deleteCustomer(Long id); + + //***************************************门禁信息接口******************************************* + /** + * 查询门禁信息 + * + * @param id 入参 + * @return DoorDeviceFindRes + */ + DoorDeviceFindRes findDoorDevice(Long id); + + /** + * 门禁信息分页查询 + * + * @param dto 入参 + * @return IPage + */ + TableDataInfo findDoorDeviceList(QueryDto dto); + + /** + * 新增门禁信息 + * + * @param addReq 入参 + * @return DoorDeviceAddRes + */ + DoorDeviceAddRes addDoorDevice(DoorDeviceAddReq addReq); + + /** + * 门禁信息修改 + * + * @param updateReq 入参 + * @return DoorDeviceUpdateRes + */ + Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq); + + /** + * 删除门禁信息 + * + * @param id 入参 + * @return Boolean + */ + Boolean deleteDoorDevice(Long id); + + /** + * 分页获取授权门信息 + * + * @return TableDataInfo + */ + List getPageAuthDoorDeviceList(); + + /** + * 远程开门 + * + * @param req 传参 + * @return Boolean + */ + Boolean remoteOpenDoor(RemoteOpenDoorReq req); + + + /** + * 获取通行记录分页列表 + * + * @param dto 传参 + * @return IPage + */ + TableDataInfo getPageAccessRecordList(QueryDto dto); + + /** + * 人员授权 + * + * @param req 传参 + * @return Boolean + */ + Boolean addCustomerAuth(CustomerAuthAddReq req); + + /** + * 获取人员权限分页列表 + * + * @param dto 传参 + * @return TableDataInfo + */ + TableDataInfo getPageCustomerAuth(QueryDto dto); + + //***************************************电梯信息接口******************************************* + /** + * 电梯信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + IPage getPageList(QueryDto dto); + + /** + * 查询电梯楼层 + * + * @param id 传参 + * @return LiftFindRes + */ + LiftFindRes getLiftFloor(Long id); + + /** + * 添加电梯 + * + * @param addReq 传参 + * @return Boolean + */ + Boolean addLift(LiftAddReq addReq); + + /** + * 修改电梯信息 + * + * @param updateReq 传参 + * @return Boolean + */ + Boolean updateLift(LiftUpdateReq updateReq); + + /** + * 删除电梯信息 + * + * @param id 传参 + * @return Boolean + */ + Boolean deleteLift(Integer id); + + //***************************************凭证信息接口******************************************* + /** + * 发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + Long issueVoucher(IssueVoucherReq req); + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + Boolean operateVoucher(OperateVoucherReq req); + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + Boolean changeCard(ChangeCardReq req); + + /** + * 上传人脸 + * + * @param imageByte 入参 + * @return imageUrl 人脸图片地址 + */ + String uploadFace(byte[] imageByte); +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java deleted file mode 100644 index 1045d09..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/LiftService.java +++ /dev/null @@ -1,56 +0,0 @@ -package org.dromara.sis.sdk.e8; - - -import com.baomidou.mybatisplus.core.metadata.IPage; -import org.dromara.sis.sdk.e8.domain.QueryDto; -import org.dromara.sis.sdk.e8.domain.lift.req.LiftAddReq; -import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; -import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; - -/** - * @author zcxlsm - * @apiNote LiftService - * @since 2025/5/9 18:04 - */ -public interface LiftService { - - /** - * 电梯信息分页查询 - * - * @param dto 传参 - * @return IPage - */ - IPage getPageList(QueryDto dto); - - /** - * 查询电梯楼层 - * - * @param id 传参 - * @return LiftFindRes - */ - LiftFindRes getLiftFloor(Long id); - - /** - * 添加电梯 - * - * @param addReq 传参 - * @return Boolean - */ - Boolean addLift(LiftAddReq addReq); - - /** - * 修改电梯信息 - * - * @param updateReq 传参 - * @return Boolean - */ - Boolean updateLift(LiftUpdateReq updateReq); - - /** - * 删除电梯信息 - * - * @param id 传参 - * @return Boolean - */ - Boolean deleteLift(Integer id); -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java deleted file mode 100644 index c1e5972..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/VoucherControlService.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.dromara.sis.sdk.e8; - -import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; -import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; -import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; - -/** - * @author lsm - * @apiNote VoucherControlService - * @since 2025/6/24 - */ -public interface VoucherControlService { - - /** - * 发行凭证 - * - * @param req 凭证数据 - * @return Boolean - */ - Long issueVoucher(IssueVoucherReq req); - - /** - * 操作凭证 - * - * @param req 入参 - * @return Boolean - */ - Boolean operateVoucher(OperateVoucherReq req); - - /** - * 换卡补卡 - * - * @param req 入参 - * @return Boolean - */ - Boolean changeCard(ChangeCardReq req); - - /** - * 上传人脸 - * - * @param imageByte 入参 - * @return imageUrl 人脸图片地址 - */ - String uploadFace(byte[] imageByte); -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java deleted file mode 100644 index c5f84ac..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/AccessControlServiceImpl.java +++ /dev/null @@ -1,162 +0,0 @@ -package org.dromara.sis.sdk.e8.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.lang.TypeReference; -import cn.hutool.json.JSONUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.sdk.e8.AccessControlService; -import org.dromara.sis.sdk.e8.domain.ApiResp; -import org.dromara.sis.sdk.e8.domain.QueryDto; -import org.dromara.sis.sdk.e8.domain.accessControl.req.AccessRecordFindReq; -import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; -import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthFindReq; -import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; -import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; -import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; -import org.dromara.sis.sdk.e8.utils.E8ApiUtil; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author lsm - * @apiNote AccessControlServiceImpl - * @since 2025/6/24 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class AccessControlServiceImpl implements AccessControlService { - - // 远程开门 - private static final String REMOTE_OPEN_DOOR = "/api/E8Door/man-device-info/device-control"; - - // 获取通行记录分页列表 - private static final String GET_PAGE_ACCESS_RECORD_PAGE_LIST = "/api/E8Door/man-pass-record/get-page-list"; - - // 人员授权 - private static final String PERSON_AUTHORIZATION = "/api/E8Door/man-auth-info/auth-info-by-type"; - - // 获取人员权限分页列表 - private static final String GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST = "/api/E8Door/man-person-device-finally/get-page-list"; - - - private final E8ApiUtil e8ApiUtil; - - /** - * 远程开门 - * - * @param req 入参 - * @return Boolean - */ - @Override - public Boolean remoteOpenDoor(RemoteOpenDoorReq req) { - // 将RemoteOpenDoorReq转为Map对象,以便作为API请求的参数 - Map params = BeanUtil.beanToMap(req); - - // 调用第三方API进行开门操作,传入处理后的参数和指定的API端点 - ApiResp apiResp = e8ApiUtil.doPost(params, REMOTE_OPEN_DOOR); - - if (!apiResp.getSuccess()) log.error("调用E8远程开门失败,errorMsg:{}", apiResp); - - // 返回API调用是否成功的结果 - return apiResp.getSuccess(); - } - - /** - * 获取通行记录分页列表 - * - * @param dto 传参 - * @return IPage - */ - @Override - public TableDataInfo getPageAccessRecordList(QueryDto dto) { - // 创建一个参数映射,用于存储API请求的参数 - Map params = new HashMap<>(); - // 将分页索引和最大结果数放入参数映射中 - params.put("pageIndex", dto.getPageIndex()); - params.put("maxResultCount", dto.getMaxResultCount()); - // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 - params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), AccessRecordFindReq.class)); - - // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 - ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_ACCESS_RECORD_PAGE_LIST); - // 如果API响应不成功,则返回null - if (!apiResp.getSuccess()) { - log.error("调用E8获取通行记录分页列表失败,errorMsg:{}", apiResp); - return null; - } - // 将API响应的结果转换为JSON字符串,再转换为Map对象 - Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { - }, false); - // 创建一个分页对象,传入分页索引和最大结果数 - TableDataInfo tableData = new TableDataInfo<>(); - // 从结果映射中获取总记录数,转换为长整型后设置到分页对象中 - tableData.setTotal(Long.parseLong(result.get("total").toString())); - // 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中 - tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AccessRecordFindRes.class)); - // 返回填充了数据的分页对象 - return tableData; - } - - /** - * 人员授权 - * - * @param req 传参 - * @return Boolean - */ - @Override - public Boolean addCustomerAuth(CustomerAuthAddReq req) { - // 创建一个参数映射,用于存储API请求的参数 - Map params = BeanUtil.beanToMap(req); - - // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 - ApiResp apiResp = e8ApiUtil.doPost(params, PERSON_AUTHORIZATION); - - if (!apiResp.getSuccess()) log.error("调用E8人员授权失败,errorMsg:{}", apiResp); - - // 返回API调用是否成功 - return apiResp.getSuccess(); - } - - /** - * 获取人员权限分页列表 - * - * @param dto 传参 - * @return TableDataInfo - */ - @Override - public TableDataInfo getPageCustomerAuth(QueryDto dto) { - // 创建一个参数映射,用于存储API请求的参数 - Map params = new HashMap<>(); - // 将分页索引和最大结果数放入参数映射中 - params.put("pageIndex", dto.getPageIndex()); - params.put("maxResultCount", dto.getMaxResultCount()); - // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 - params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomerAuthFindReq.class)); - - // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 - ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST); - // 如果API响应不成功,则返回null - if (!apiResp.getSuccess()) { - log.error("调用E8获取人员权限分页列表失败,errorMsg:{}", apiResp); - return null; - } - - // 将API响应的结果转换为JSON字符串,再转换为Map对象 - Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { - }, false); - // 创建一个分页对象,传入分页索引和最大结果数 - TableDataInfo tableData = new TableDataInfo<>(); - // 从结果映射中获取总记录数,转换为长整型后设置到分页对象中 - tableData.setTotal(Long.parseLong(result.get("total").toString())); - // 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中 - tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomerAuthFindRes.class)); - // 返回填充了数据的分页对象 - return tableData; - } - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java deleted file mode 100644 index 37e0053..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/CustomerServiceImpl.java +++ /dev/null @@ -1,174 +0,0 @@ -package org.dromara.sis.sdk.e8.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.lang.TypeReference; -import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dromara.sis.sdk.e8.CustomerService; -import org.dromara.sis.sdk.e8.domain.ApiResp; -import org.dromara.sis.sdk.e8.domain.QueryDto; -import org.dromara.sis.sdk.e8.domain.custom.req.CustomAddReq; -import org.dromara.sis.sdk.e8.domain.custom.req.CustomFindReq; -import org.dromara.sis.sdk.e8.domain.custom.req.CustomUpdateReq; -import org.dromara.sis.sdk.e8.domain.custom.res.CustomAddRes; -import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; -import org.dromara.sis.sdk.e8.utils.E8ApiUtil; -import org.springframework.stereotype.Service; - -import java.util.HashMap; -import java.util.Map; - -/** - * @author lsm - * @apiNote CustomerServiceImpl - * @since 2025/6/23 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class CustomerServiceImpl implements CustomerService { - private final static String CUSTOMER_GET_PAGE_LIST = "/api/E8/customer/get-page-list"; - private final static String CUSTOMER_GET_FIRST_OR_DEFAULT = "/api/E8/customer/get-first-or-default"; - private final static String CUSTOMER_CREATE = "/api/E8/customer"; - private final static String CUSTOMER_UPDATE = "/api/E8/customer/{id}/update"; - private final static String CUSTOMER_DELETE = "/api/E8/customer/{id}"; - - - private final E8ApiUtil e8ApiUtil; - - /** - * 查询单个人员信息 - * - * @param findReq 传参 - * @return CustomerInfo - */ - @Override - public CustomFindRes findCustomer(CustomFindReq findReq) { - // 将查询请求对象转换为参数映射 - Map params = BeanUtil.beanToMap(findReq); - - // 调用API接口获取客户信息 - ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_GET_FIRST_OR_DEFAULT); - - // 检查API调用是否成功 - if (!apiResp.getSuccess()) { - log.error("E8查询人员信息失败 errorMsg:{}", apiResp); - // 如果API调用失败,返回null - return null; - } - - // 将API响应结果转换为CustomFindRes对象并返回 - return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomFindRes.class); - } - - /** - * 人员信息分页查询 - * - * @param dto 传参 - * @return IPage - */ - @Override - public IPage findCustomerList(QueryDto dto) { - // 创建参数映射,用于存储HTTP请求的参数 - Map params = new HashMap<>(); - // 添加分页参数:当前页码和最大结果数量 - params.put("pageIndex", dto.getPageIndex()); - params.put("maxResultCount", dto.getMaxResultCount()); - // 将查询条件对象转换为JSON字符串,并再次转换为Map对象,然后添加到参数映射中 - params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomFindReq.class)); - - // 调用API工具类的POST方法,发送请求到第三方API,并获取响应结果 - ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_GET_PAGE_LIST); - - - if (!apiResp.getSuccess()) { - log.error("E8人员信息分页查询 errorMsg:{}", apiResp); - // 如果API响应不成功,返回null - return null; - } - - // 将API响应结果转换为Map对象,以便于后续处理 - Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { - }, false); - // 创建一个分页对象,用于存储客户信息列表和分页数据 - IPage pageInfo = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); - // 设置总记录数 - pageInfo.setTotal(Long.parseLong(result.get("total").toString())); - // 将API响应结果中的客户信息列表转换为CustomFindRes对象列表,并设置到分页对象中 - pageInfo.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomFindRes.class)); - - // 返回分页对象 - return pageInfo; - } - - /** - * 新增人员信息 - * - * @param addReq 传参 - * @return Boolean - */ - @Override - public CustomAddRes addCustomer(CustomAddReq addReq) { - // 将添加请求对象转换为Map对象,以便后续API调用 - Map params = BeanUtil.beanToMap(addReq); - - // 执行客户创建API调用,并获取API响应对象 - ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_CREATE); - - // 检查API调用是否成功 - if (!apiResp.getSuccess()) { - log.error("E8新增人员信息失败 errorMsg:{}", apiResp); - // 如果API调用失败,返回null - return null; - } - - // 返回API调用是否成功的标志 - return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomAddRes.class); - } - - /** - * 人员信息修改 - * - * @param updateReq 传参 - * @return Boolean - */ - @Override - public Boolean updateCustomer(CustomUpdateReq updateReq) { - // 根据更新请求构建API URL - String api = CUSTOMER_UPDATE.replace("{id}", updateReq.getId().toString()); - - // 将更新请求对象转换为Map,以便后续API调用 - Map params = BeanUtil.beanToMap(updateReq); - - // 调用API工具类发送POST请求,并获取API响应对象 - ApiResp apiResp = e8ApiUtil.doPost(params, api); - - if (!apiResp.getSuccess()) log.error("E8人员信息修改失败 errorMsg:{}", apiResp); - - // 返回API调用是否成功的标志 - return apiResp.getSuccess(); - } - - /** - * 删除人员信息 - * - * @param id 传参 - * @return Boolean - */ - @Override - public Boolean deleteCustomer(Long id) { - // 构造删除客户的API请求URL - String api = CUSTOMER_DELETE.replace("{id}", id.toString()); - - // 调用API工具类的 doGetOrDel 方法发送GET或DELETE请求,并获取响应结果 - ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true); - - if (!apiResp.getSuccess()) log.error("E8删除人员信息失败 errorMsg:{}", apiResp); - - // 返回API请求是否成功的标志 - return apiResp.getSuccess(); - } -} 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 deleted file mode 100644 index e44a011..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/DoorDeviceServiceImpl.java +++ /dev/null @@ -1,206 +0,0 @@ -package org.dromara.sis.sdk.e8.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.lang.TypeReference; -import cn.hutool.json.JSONUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dromara.common.mybatis.core.page.TableDataInfo; -import org.dromara.sis.sdk.e8.DoorDeviceService; -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; -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; - -/** - * @author lsm - * @apiNote DoorDeviceServiceImpl - * @since 2025/6/20 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class DoorDeviceServiceImpl implements DoorDeviceService { - - private final static String DOOR_DEVICE_GET_PAGE_LIST = "/api/e8door/man-device-info/get-page-list"; - private final static String DOOR_DEVICE_GET_FIRST_OR_DEFAULT = "/api/E8Door/man-device-info/{id}"; - 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; - - /** - * 查询门禁信息 - * - * @param id 传参 - * @return DoorDeviceFindRes - */ - @Override - public DoorDeviceFindRes findDoorDevice(Long id) { - - // 使用给定的ID替换API模板中的{id}占位符 - String api = DOOR_DEVICE_GET_FIRST_OR_DEFAULT.replace("{id}", id.toString()); - - // 调用E8 API工具类的doGetOrDel方法发送GET请求,并获取响应结果 - ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, false); - - // 检查API响应是否成功 - if (!apiResp.getSuccess()) { - log.error("查询E8门禁信息失败 errorMsg:{}", apiResp); - // 如果响应不成功,则返回null - return null; - } - - // 将API响应结果转换为指定的Java对象,并返回该对象 - return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), DoorDeviceFindRes.class); - } - - /** - * 门禁信息分页查询 - * - * @param dto 传参 - * @return IPage - */ - @Override - public TableDataInfo findDoorDeviceList(QueryDto dto) { - // 创建一个参数映射,用于存储API请求所需的参数 - Map params = new HashMap<>(); - // 将分页索引和最大结果数放入参数映射中 - params.put("PageIndex", dto.getPageIndex()); - params.put("MaxResultCount", dto.getMaxResultCount()); - // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 - params.put("QueryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), DoorDeviceFindReq.class)); - - // 调用第三方API,获取门禁设备分页列表 - ApiResp apiResp = e8ApiUtil.doPost(params, DOOR_DEVICE_GET_PAGE_LIST); - - // 如果API调用不成功,则返回null - if (!apiResp.getSuccess()) { - log.error("分页查询E8门禁信息失败 errorMsg:{}", apiResp); - // 如果响应不成功,则返回null - return null; - } - // 将API响应结果转换为Map对象,以便后续处理 - Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { - }, false); - // 创建一个分页对象,用于存储处理后的门禁设备信息 - TableDataInfo tableDataInfo = new TableDataInfo<>(); - // 设置分页对象的总记录数 - tableDataInfo.setTotal(Long.parseLong(result.get("total").toString())); - // 将API响应结果中的门禁设备信息列表转换为DoorDeviceFindRes对象列表,并设置到分页对象中 - tableDataInfo.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), DoorDeviceFindRes.class)); - // 返回处理后的分页对象 - return tableDataInfo; - } - - /** - * 新增门禁信息 - * - * @param addReq 传参 - * @return Boolean - */ - @Override - public DoorDeviceAddRes addDoorDevice(DoorDeviceAddReq addReq) { - // 将DoorDeviceAddReq转为Map对象,以便作为API请求的参数 - Map params = BeanUtil.beanToMap(addReq); - - // 调用第三方API进行门禁设备创建,并传入转换后的参数 - ApiResp apiResp = e8ApiUtil.doPost(params, DOOR_DEVICE_CREATE); - - if (!apiResp.getSuccess()) { - log.error("新增E8门禁信息,errorMsg:{}", apiResp); - // 如果响应不成功,则返回null - return null; - } - - return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), DoorDeviceAddRes.class); - } - - /** - * 门禁信息修改 - * - * @param updateReq 传参 - * @return DoorDeviceUpdateRes - */ - @Override - public Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq) { - - // 构造门设备更新API的URL - String api = DOOR_DEVICE_UPDATE.replace("{id}", updateReq.getId().toString()); - - // 将门设备信息对象转换为键值对形式的参数 - Map params = BeanUtil.beanToMap(updateReq); - - // 调用API进行门设备信息更新 - ApiResp apiResp = e8ApiUtil.doPost(params, api); - - if (!apiResp.getSuccess()) log.error("修改E8门禁信息,errorMsg:{}", apiResp); - - return apiResp.getSuccess(); - } - - /** - * 删除门禁信息 - * - * @param id 传参 - * @return Boolean - */ - @Override - public Boolean deleteDoorDevice(Long id) { - - // 构造删除门设备的API路径,使用设备ID替换占位符 - String api = DOOR_DEVICE_DELETE.replace("{id}", id.toString()); - - // 调用E8 API工具类进行HTTP DELETE请求,参数为构造的API路径和null(因为DELETE请求通常不需要请求体) - ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true); - - if (!apiResp.getSuccess()) log.error("删除E8门禁信息,errorMsg:{}", apiResp); - - // 返回API响应的成功标志 - return apiResp.getSuccess(); - } - - /** - * 分页获取授权门信息 - * - * @return List - */ - 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/sdk/e8/impl/LiftServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/LiftServiceImpl.java deleted file mode 100644 index 079c516..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/LiftServiceImpl.java +++ /dev/null @@ -1,161 +0,0 @@ -package org.dromara.sis.sdk.e8.impl; - - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.lang.TypeReference; -import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import org.apache.dubbo.config.annotation.DubboService; -import org.dromara.sis.sdk.e8.LiftService; -import org.dromara.sis.sdk.e8.domain.ApiResp; -import org.dromara.sis.sdk.e8.domain.QueryDto; -import org.dromara.sis.sdk.e8.domain.lift.req.LiftAddReq; -import org.dromara.sis.sdk.e8.domain.lift.req.LiftFindReq; -import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; -import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; -import org.dromara.sis.sdk.e8.utils.E8ApiUtil; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.HashMap; -import java.util.Map; - -/** - * @author lsm - * @apiNote LiftServiceImpl - * @since 2025/5/9 11:52 - */ -@Service -@DubboService -public class LiftServiceImpl implements LiftService { - - private static final String GET_PAGE_LIST = "/api/E8Door/man-elevator-management/get-page-list"; - private static final String GET_LIFT_FLOOR = "/api/E8Door/man-elevator-management/{id}/get-man-elevator-floors"; - private static final String LIFT_ADD = "/api/E8Door/man-elevator-management"; - private static final String LIFT_UPDATE = "/api/E8Door/man-elevator-management/{id}/update"; - private static final String LIFT_DELETE = "/api/E8Door/man-elevator-management/{id}"; - - @Resource - private E8ApiUtil e8ApiUtil; - - /** - * 电梯信息分页查询 - * - * @param dto 传参 - * @return IPage - */ - @Override - public IPage getPageList(QueryDto dto) { - // 创建一个参数映射,用于存储API请求所需的参数 - Map params = new HashMap<>(); - // 将分页索引和最大结果数放入参数映射中 - params.put("pageIndex", dto.getPageIndex()); - params.put("maxResultCount", dto.getMaxResultCount()); - // 将查询DTO转换为LiftInfo对象,并将其添加到参数映射中 - params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftFindReq.class)); - - // 调用E8 API工具类的POST方法,传入参数和API路径,获取API响应 - ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_LIST); - // 如果API响应不成功,则返回null - if (!apiResp.getSuccess()) { - return null; - } - - // 将API响应的结果转换为一个Map对象 - Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { - }, false); - // 创建一个分页对象,传入分页索引和最大结果数 - IPage page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); - // 设置分页对象的总记录数 - page.setTotal(Long.parseLong(result.get("total").toString())); - // 将结果中的项转换为LiftFindRes列表,并设置为分页对象的记录 - page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), LiftFindRes.class)); - - // 返回填充了数据的分页对象 - return page; - } - - /** - * 查询电梯楼层 - * - * @param id 传参 - * @return LiftFindRes - */ - @Override - public LiftFindRes getLiftFloor(Long id) { - - // 构造请求URL,其中{id}将被liftInfo的ID替换 - String url = GET_LIFT_FLOOR.replace("{id}", id.toString()); - - // 调用API接口,获取电梯信息 - ApiResp apiResp = e8ApiUtil.doPost(null, url); - // 如果API调用不成功,则返回null - if (!apiResp.getSuccess()) { - return null; - } - - // 将API响应结果转换为LiftFindRes对象,并返回 - return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), LiftFindRes.class); - } - - /** - * 添加电梯 - * - * @param addReq 传参 - * @return Boolean - */ - @Override - public Boolean addLift(LiftAddReq addReq) { - // 将添加请求对象转换为Map对象,便于后续操作 - Map params = BeanUtil.beanToMap(addReq); - - // 调用第三方API进行电梯添加操作,并获取API响应结果 - ApiResp apiResp = e8ApiUtil.doPost(params, LIFT_ADD); - - // 返回API操作是否成功的标志 - return apiResp.getSuccess(); - } - - /** - * 修改电梯信息 - * - * @param updateReq 传参 - * @return Boolean - */ - @Override - public Boolean updateLift(LiftUpdateReq updateReq) { - - // 根据LiftUpdateReq对象中的ID生成请求URL - String url = LIFT_UPDATE.replace("{id}", updateReq.getId().toString()); - - // 将LiftUpdateReq对象转换为Map类型,以便于API请求参数的处理 - Map params = BeanUtil.beanToMap(updateReq); - - // 调用E8 API进行POST请求,并返回API响应对象 - ApiResp apiResp = e8ApiUtil.doPost(params, url); - - // 返回API调用是否成功的标志 - return apiResp.getSuccess(); - } - - /** - * 删除电梯信息 - * - * @param id 传参 - * @return Boolean - */ - @Override - public Boolean deleteLift(Integer id) { - - // 构造删除电梯的API请求URL,使用id替换模板中的{id}占位符 - String url = LIFT_DELETE.replace("{id}", id.toString()); - - // 调用e8ApiUtils工具类执行DELETE请求,并获取API响应结果 - ApiResp apiResp = e8ApiUtil.doGetOrDel(url, null, true); - - // 返回API响应中的成功标志,表示删除操作是否成功 - return apiResp.getSuccess(); - } - -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java deleted file mode 100644 index a87494c..0000000 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/impl/VoucherControlServiceImpl.java +++ /dev/null @@ -1,115 +0,0 @@ -package org.dromara.sis.sdk.e8.impl; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.json.JSONUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.dromara.sis.sdk.e8.VoucherControlService; -import org.dromara.sis.sdk.e8.domain.ApiResp; -import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; -import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; -import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; -import org.dromara.sis.sdk.e8.domain.voucher.res.IssueVoucherRes; -import org.dromara.sis.sdk.e8.utils.E8ApiUtil; -import org.springframework.stereotype.Service; - - -import java.util.Map; - -/** - * @author lsm - * @apiNote VoucherControlServiceImpl - * @since 2025/6/25 - */ -@Slf4j -@Service -@RequiredArgsConstructor -public class VoucherControlServiceImpl implements VoucherControlService { - - private static final String ISSUANCE_VOUCHER = "/api/E8/voucher/issue-voucher"; - private static final String OPERATE_VOUCHER = "/api/E8/voucher/operate-many"; - private static final String CHANGE_CARD = "/api/E8/voucher/change-card"; - - private final E8ApiUtil e8ApiUtil; - - /** - * 发行凭证 - * - * @param req 入参 - * @return 是否成功 - */ - @Override - public Long issueVoucher(IssueVoucherReq req) { - // 封装入参 - Map params = BeanUtil.beanToMap(req); - - // 调用API - ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER); - - if (!apiResp.getSuccess()) { - log.error("E8发行凭证失败,errorMsg:{}", apiResp); - return null; - } - - IssueVoucherRes res = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), IssueVoucherRes.class); - - return res.getId(); - } - - /** - * 操作凭证 - * - * @param req 入参 - * @return Boolean - */ - @Override - public Boolean operateVoucher(OperateVoucherReq req) { - // 封装入参 - Map params = BeanUtil.beanToMap(req); - - // 调用API - ApiResp apiResp = e8ApiUtil.doPost(params, OPERATE_VOUCHER); - - if (!apiResp.getSuccess()) log.error("E8操作凭证失败,errorMsg:{}", apiResp); - - return apiResp.getSuccess(); - } - - /** - * 换卡补卡 - * - * @param req 入参 - * @return Boolean - */ - @Override - public Boolean changeCard(ChangeCardReq req) { - // 封装入参 - Map params = BeanUtil.beanToMap(req); - - // 调用API - ApiResp apiResp = e8ApiUtil.doPost(params, CHANGE_CARD); - - if (!apiResp.getSuccess()) log.error("E8换卡补卡失败,errorMsg:{}", apiResp); - - return apiResp.getSuccess(); - } - - /** - * 上传人脸 - * - * @param imageByte 入参 - * @return imageUrl 人脸图片地址 - */ - @Override - public String uploadFace(byte[] imageByte) { - - ApiResp apiResp = e8ApiUtil.doFaceImgUpload(imageByte); - - if (!apiResp.getSuccess()) { - log.error("上传人脸图片失败,errorMsg:{}", apiResp); - return null; - } - - return apiResp.getMessage(); - } -} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java new file mode 100644 index 0000000..2b9249e --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/service/E8PlatformApiService.java @@ -0,0 +1,697 @@ +package org.dromara.sis.sdk.e8.service; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.sis.sdk.e8.E8PlatformApi; +import org.dromara.sis.sdk.e8.domain.ApiResp; +import org.dromara.sis.sdk.e8.domain.QueryDto; +import org.dromara.sis.sdk.e8.domain.accessControl.req.AccessRecordFindReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthFindReq; +import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; +import org.dromara.sis.sdk.e8.domain.accessControl.res.AccessRecordFindRes; +import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomAddReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomFindReq; +import org.dromara.sis.sdk.e8.domain.custom.req.CustomUpdateReq; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomAddRes; +import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; +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.lift.req.LiftAddReq; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftFindReq; +import org.dromara.sis.sdk.e8.domain.lift.req.LiftUpdateReq; +import org.dromara.sis.sdk.e8.domain.lift.res.LiftFindRes; +import org.dromara.sis.sdk.e8.domain.voucher.req.ChangeCardReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.req.OperateVoucherReq; +import org.dromara.sis.sdk.e8.domain.voucher.res.IssueVoucherRes; +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; + +/** + * @author lsm + * @apiNote E8PlatformApiService + * @since 2025/7/17 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class E8PlatformApiService implements E8PlatformApi { + + private final E8ApiUtil e8ApiUtil; + + //***************************************客户信息接口******************************************* + private final static String CUSTOMER_GET_PAGE_LIST = "/api/E8/customer/get-page-list"; + private final static String CUSTOMER_GET_FIRST_OR_DEFAULT = "/api/E8/customer/get-first-or-default"; + private final static String CUSTOMER_CREATE = "/api/E8/customer"; + private final static String CUSTOMER_UPDATE = "/api/E8/customer/{id}/update"; + private final static String CUSTOMER_DELETE = "/api/E8/customer/{id}"; + + /** + * 查询单个人员信息 + * + * @param findReq 传参 + * @return CustomerInfo + */ + @Override + public CustomFindRes findCustomer(CustomFindReq findReq) { + // 将查询请求对象转换为参数映射 + Map params = BeanUtil.beanToMap(findReq); + + // 调用API接口获取客户信息 + ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_GET_FIRST_OR_DEFAULT); + + // 检查API调用是否成功 + if (!apiResp.getSuccess()) { + log.error("E8查询人员信息失败 errorMsg:{}", apiResp); + // 如果API调用失败,返回null + return null; + } + + // 将API响应结果转换为CustomFindRes对象并返回 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomFindRes.class); + } + + /** + * 人员信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + @Override + public IPage findCustomerList(QueryDto dto) { + // 创建参数映射,用于存储HTTP请求的参数 + Map params = new HashMap<>(); + // 添加分页参数:当前页码和最大结果数量 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询条件对象转换为JSON字符串,并再次转换为Map对象,然后添加到参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomFindReq.class)); + + // 调用API工具类的POST方法,发送请求到第三方API,并获取响应结果 + ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_GET_PAGE_LIST); + + + if (!apiResp.getSuccess()) { + log.error("E8人员信息分页查询 errorMsg:{}", apiResp); + // 如果API响应不成功,返回null + return null; + } + + // 将API响应结果转换为Map对象,以便于后续处理 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,用于存储客户信息列表和分页数据 + IPage pageInfo = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); + // 设置总记录数 + pageInfo.setTotal(Long.parseLong(result.get("total").toString())); + // 将API响应结果中的客户信息列表转换为CustomFindRes对象列表,并设置到分页对象中 + pageInfo.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomFindRes.class)); + + // 返回分页对象 + return pageInfo; + } + + /** + * 新增人员信息 + * + * @param addReq 传参 + * @return Boolean + */ + @Override + public CustomAddRes addCustomer(CustomAddReq addReq) { + // 将添加请求对象转换为Map对象,以便后续API调用 + Map params = BeanUtil.beanToMap(addReq); + + // 执行客户创建API调用,并获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, CUSTOMER_CREATE); + + // 检查API调用是否成功 + if (!apiResp.getSuccess()) { + log.error("E8新增人员信息失败 errorMsg:{}", apiResp); + // 如果API调用失败,返回null + return null; + } + + // 返回API调用是否成功的标志 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), CustomAddRes.class); + } + + /** + * 人员信息修改 + * + * @param updateReq 传参 + * @return Boolean + */ + @Override + public Boolean updateCustomer(CustomUpdateReq updateReq) { + // 根据更新请求构建API URL + String api = CUSTOMER_UPDATE.replace("{id}", updateReq.getId().toString()); + + // 将更新请求对象转换为Map,以便后续API调用 + Map params = BeanUtil.beanToMap(updateReq); + + // 调用API工具类发送POST请求,并获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, api); + + if (!apiResp.getSuccess()) log.error("E8人员信息修改失败 errorMsg:{}", apiResp); + + // 返回API调用是否成功的标志 + return apiResp.getSuccess(); + } + + /** + * 删除人员信息 + * + * @param id 传参 + * @return Boolean + */ + @Override + public Boolean deleteCustomer(Long id) { + // 构造删除客户的API请求URL + String api = CUSTOMER_DELETE.replace("{id}", id.toString()); + + // 调用API工具类的 doGetOrDel 方法发送GET或DELETE请求,并获取响应结果 + ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true); + + if (!apiResp.getSuccess()) log.error("E8删除人员信息失败 errorMsg:{}", apiResp); + + // 返回API请求是否成功的标志 + return apiResp.getSuccess(); + } + + //***************************************门禁信息接口******************************************* + private final static String DOOR_DEVICE_GET_PAGE_LIST = "/api/e8door/man-device-info/get-page-list"; + private final static String DOOR_DEVICE_GET_FIRST_OR_DEFAULT = "/api/E8Door/man-device-info/{id}"; + 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 static final String REMOTE_OPEN_DOOR = "/api/E8Door/man-device-info/device-control"; + private static final String GET_PAGE_ACCESS_RECORD_PAGE_LIST = "/api/E8Door/man-pass-record/get-page-list"; + private static final String PERSON_AUTHORIZATION = "/api/E8Door/man-auth-info/auth-info-by-type"; + private static final String GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST = "/api/E8Door/man-person-device-finally/get-page-list"; + + /** + * 查询门禁信息 + * + * @param id 传参 + * @return DoorDeviceFindRes + */ + @Override + public DoorDeviceFindRes findDoorDevice(Long id) { + + // 使用给定的ID替换API模板中的{id}占位符 + String api = DOOR_DEVICE_GET_FIRST_OR_DEFAULT.replace("{id}", id.toString()); + + // 调用E8 API工具类的doGetOrDel方法发送GET请求,并获取响应结果 + ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, false); + + // 检查API响应是否成功 + if (!apiResp.getSuccess()) { + log.error("查询E8门禁信息失败 errorMsg:{}", apiResp); + // 如果响应不成功,则返回null + return null; + } + + // 将API响应结果转换为指定的Java对象,并返回该对象 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), DoorDeviceFindRes.class); + } + + /** + * 门禁信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + @Override + public TableDataInfo findDoorDeviceList(QueryDto dto) { + // 创建一个参数映射,用于存储API请求所需的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("PageIndex", dto.getPageIndex()); + params.put("MaxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 + params.put("QueryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), DoorDeviceFindReq.class)); + + // 调用第三方API,获取门禁设备分页列表 + ApiResp apiResp = e8ApiUtil.doPost(params, DOOR_DEVICE_GET_PAGE_LIST); + + // 如果API调用不成功,则返回null + if (!apiResp.getSuccess()) { + log.error("分页查询E8门禁信息失败 errorMsg:{}", apiResp); + // 如果响应不成功,则返回null + return null; + } + // 将API响应结果转换为Map对象,以便后续处理 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,用于存储处理后的门禁设备信息 + TableDataInfo tableDataInfo = new TableDataInfo<>(); + // 设置分页对象的总记录数 + tableDataInfo.setTotal(Long.parseLong(result.get("total").toString())); + // 将API响应结果中的门禁设备信息列表转换为DoorDeviceFindRes对象列表,并设置到分页对象中 + tableDataInfo.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), DoorDeviceFindRes.class)); + // 返回处理后的分页对象 + return tableDataInfo; + } + + /** + * 新增门禁信息 + * + * @param addReq 传参 + * @return Boolean + */ + @Override + public DoorDeviceAddRes addDoorDevice(DoorDeviceAddReq addReq) { + // 将DoorDeviceAddReq转为Map对象,以便作为API请求的参数 + Map params = BeanUtil.beanToMap(addReq); + + // 调用第三方API进行门禁设备创建,并传入转换后的参数 + ApiResp apiResp = e8ApiUtil.doPost(params, DOOR_DEVICE_CREATE); + + if (!apiResp.getSuccess()) { + log.error("新增E8门禁信息,errorMsg:{}", apiResp); + // 如果响应不成功,则返回null + return null; + } + + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), DoorDeviceAddRes.class); + } + + /** + * 门禁信息修改 + * + * @param updateReq 传参 + * @return DoorDeviceUpdateRes + */ + @Override + public Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq) { + + // 构造门设备更新API的URL + String api = DOOR_DEVICE_UPDATE.replace("{id}", updateReq.getId().toString()); + + // 将门设备信息对象转换为键值对形式的参数 + Map params = BeanUtil.beanToMap(updateReq); + + // 调用API进行门设备信息更新 + ApiResp apiResp = e8ApiUtil.doPost(params, api); + + if (!apiResp.getSuccess()) log.error("修改E8门禁信息,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 删除门禁信息 + * + * @param id 传参 + * @return Boolean + */ + @Override + public Boolean deleteDoorDevice(Long id) { + + // 构造删除门设备的API路径,使用设备ID替换占位符 + String api = DOOR_DEVICE_DELETE.replace("{id}", id.toString()); + + // 调用E8 API工具类进行HTTP DELETE请求,参数为构造的API路径和null(因为DELETE请求通常不需要请求体) + ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true); + + if (!apiResp.getSuccess()) log.error("删除E8门禁信息,errorMsg:{}", apiResp); + + // 返回API响应的成功标志 + return apiResp.getSuccess(); + } + + /** + * 分页获取授权门信息 + * + * @return List + */ + 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); + } + + /** + * 远程开门 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean remoteOpenDoor(RemoteOpenDoorReq req) { + // 将RemoteOpenDoorReq转为Map对象,以便作为API请求的参数 + Map params = BeanUtil.beanToMap(req); + + // 调用第三方API进行开门操作,传入处理后的参数和指定的API端点 + ApiResp apiResp = e8ApiUtil.doPost(params, REMOTE_OPEN_DOOR); + + if (!apiResp.getSuccess()) log.error("调用E8远程开门失败,errorMsg:{}", apiResp); + + // 返回API调用是否成功的结果 + return apiResp.getSuccess(); + } + + /** + * 获取通行记录分页列表 + * + * @param dto 传参 + * @return IPage + */ + @Override + public TableDataInfo getPageAccessRecordList(QueryDto dto) { + // 创建一个参数映射,用于存储API请求的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), AccessRecordFindReq.class)); + + // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_ACCESS_RECORD_PAGE_LIST); + // 如果API响应不成功,则返回null + if (!apiResp.getSuccess()) { + log.error("调用E8获取通行记录分页列表失败,errorMsg:{}", apiResp); + return null; + } + // 将API响应的结果转换为JSON字符串,再转换为Map对象 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,传入分页索引和最大结果数 + TableDataInfo tableData = new TableDataInfo<>(); + // 从结果映射中获取总记录数,转换为长整型后设置到分页对象中 + tableData.setTotal(Long.parseLong(result.get("total").toString())); + // 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中 + tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AccessRecordFindRes.class)); + // 返回填充了数据的分页对象 + return tableData; + } + + /** + * 人员授权 + * + * @param req 传参 + * @return Boolean + */ + @Override + public Boolean addCustomerAuth(CustomerAuthAddReq req) { + // 创建一个参数映射,用于存储API请求的参数 + Map params = BeanUtil.beanToMap(req); + + // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, PERSON_AUTHORIZATION); + + if (!apiResp.getSuccess()) log.error("调用E8人员授权失败,errorMsg:{}", apiResp); + + // 返回API调用是否成功 + return apiResp.getSuccess(); + } + + /** + * 获取人员权限分页列表 + * + * @param dto 传参 + * @return TableDataInfo + */ + @Override + public TableDataInfo getPageCustomerAuth(QueryDto dto) { + // 创建一个参数映射,用于存储API请求的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为JSON字符串,再转换为Map对象,然后放入参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), CustomerAuthFindReq.class)); + + // 调用API工具类的POST方法,传入参数和API路径,获取API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST); + // 如果API响应不成功,则返回null + if (!apiResp.getSuccess()) { + log.error("调用E8获取人员权限分页列表失败,errorMsg:{}", apiResp); + return null; + } + + // 将API响应的结果转换为JSON字符串,再转换为Map对象 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,传入分页索引和最大结果数 + TableDataInfo tableData = new TableDataInfo<>(); + // 从结果映射中获取总记录数,转换为长整型后设置到分页对象中 + tableData.setTotal(Long.parseLong(result.get("total").toString())); + // 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中 + tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomerAuthFindRes.class)); + // 返回填充了数据的分页对象 + return tableData; + } + + //***************************************电梯信息接口******************************************* + private static final String GET_PAGE_LIST = "/api/E8Door/man-elevator-management/get-page-list"; + private static final String GET_LIFT_FLOOR = "/api/E8Door/man-elevator-management/{id}/get-man-elevator-floors"; + private static final String LIFT_ADD = "/api/E8Door/man-elevator-management"; + private static final String LIFT_UPDATE = "/api/E8Door/man-elevator-management/{id}/update"; + private static final String LIFT_DELETE = "/api/E8Door/man-elevator-management/{id}"; + + /** + * 电梯信息分页查询 + * + * @param dto 传参 + * @return IPage + */ + @Override + public IPage getPageList(QueryDto dto) { + // 创建一个参数映射,用于存储API请求所需的参数 + Map params = new HashMap<>(); + // 将分页索引和最大结果数放入参数映射中 + params.put("pageIndex", dto.getPageIndex()); + params.put("maxResultCount", dto.getMaxResultCount()); + // 将查询DTO转换为LiftInfo对象,并将其添加到参数映射中 + params.put("queryDto", JSONUtil.toBean(JSONUtil.toJsonStr(dto.getQueryDto()), LiftFindReq.class)); + + // 调用E8 API工具类的POST方法,传入参数和API路径,获取API响应 + ApiResp apiResp = e8ApiUtil.doPost(params, GET_PAGE_LIST); + // 如果API响应不成功,则返回null + if (!apiResp.getSuccess()) { + return null; + } + + // 将API响应的结果转换为一个Map对象 + Map result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() { + }, false); + // 创建一个分页对象,传入分页索引和最大结果数 + IPage page = new Page<>(dto.getPageIndex(), dto.getMaxResultCount()); + // 设置分页对象的总记录数 + page.setTotal(Long.parseLong(result.get("total").toString())); + // 将结果中的项转换为LiftFindRes列表,并设置为分页对象的记录 + page.setRecords(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), LiftFindRes.class)); + + // 返回填充了数据的分页对象 + return page; + } + + /** + * 查询电梯楼层 + * + * @param id 传参 + * @return LiftFindRes + */ + @Override + public LiftFindRes getLiftFloor(Long id) { + + // 构造请求URL,其中{id}将被liftInfo的ID替换 + String url = GET_LIFT_FLOOR.replace("{id}", id.toString()); + + // 调用API接口,获取电梯信息 + ApiResp apiResp = e8ApiUtil.doPost(new HashMap<>(), url); + // 如果API调用不成功,则返回null + if (!apiResp.getSuccess()) { + return null; + } + + // 将API响应结果转换为LiftFindRes对象,并返回 + return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), LiftFindRes.class); + } + + /** + * 添加电梯 + * + * @param addReq 传参 + * @return Boolean + */ + @Override + public Boolean addLift(LiftAddReq addReq) { + // 将添加请求对象转换为Map对象,便于后续操作 + Map params = BeanUtil.beanToMap(addReq); + + // 调用第三方API进行电梯添加操作,并获取API响应结果 + ApiResp apiResp = e8ApiUtil.doPost(params, LIFT_ADD); + + // 返回API操作是否成功的标志 + return apiResp.getSuccess(); + } + + /** + * 修改电梯信息 + * + * @param updateReq 传参 + * @return Boolean + */ + @Override + public Boolean updateLift(LiftUpdateReq updateReq) { + + // 根据LiftUpdateReq对象中的ID生成请求URL + String url = LIFT_UPDATE.replace("{id}", updateReq.getId().toString()); + + // 将LiftUpdateReq对象转换为Map类型,以便于API请求参数的处理 + Map params = BeanUtil.beanToMap(updateReq); + + // 调用E8 API进行POST请求,并返回API响应对象 + ApiResp apiResp = e8ApiUtil.doPost(params, url); + + // 返回API调用是否成功的标志 + return apiResp.getSuccess(); + } + + /** + * 删除电梯信息 + * + * @param id 传参 + * @return Boolean + */ + @Override + public Boolean deleteLift(Integer id) { + + // 构造删除电梯的API请求URL,使用id替换模板中的{id}占位符 + String url = LIFT_DELETE.replace("{id}", id.toString()); + + // 调用e8ApiUtils工具类执行DELETE请求,并获取API响应结果 + ApiResp apiResp = e8ApiUtil.doGetOrDel(url, null, true); + + // 返回API响应中的成功标志,表示删除操作是否成功 + return apiResp.getSuccess(); + } + + //***************************************凭证信息接口******************************************* + private static final String ISSUANCE_VOUCHER = "/api/E8/voucher/issue-voucher"; + private static final String OPERATE_VOUCHER = "/api/E8/voucher/operate-many"; + private static final String CHANGE_CARD = "/api/E8/voucher/change-card"; + + /** + * 发行凭证 + * + * @param req 入参 + * @return 是否成功 + */ + @Override + public Long issueVoucher(IssueVoucherReq req) { + // 封装入参 + Map params = BeanUtil.beanToMap(req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER); + + if (!apiResp.getSuccess()) { + log.error("E8发行凭证失败,errorMsg:{}", apiResp); + return null; + } + + IssueVoucherRes res = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), IssueVoucherRes.class); + + return res.getId(); + } + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean operateVoucher(OperateVoucherReq req) { + // 封装入参 + Map params = BeanUtil.beanToMap(req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, OPERATE_VOUCHER); + + if (!apiResp.getSuccess()) log.error("E8操作凭证失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + @Override + public Boolean changeCard(ChangeCardReq req) { + // 封装入参 + Map params = BeanUtil.beanToMap(req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, CHANGE_CARD); + + if (!apiResp.getSuccess()) log.error("E8换卡补卡失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 上传人脸 + * + * @param imageByte 入参 + * @return imageUrl 人脸图片地址 + */ + @Override + public String uploadFace(byte[] imageByte) { + + ApiResp apiResp = e8ApiUtil.doFaceImgUpload(imageByte); + + if (!apiResp.getSuccess()) { + log.error("上传人脸图片失败,errorMsg:{}", apiResp); + return null; + } + + return apiResp.getMessage(); + } +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java index 24cc8bc..56f8e4c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/hik/calback/HikAlarmCallBack.java @@ -9,7 +9,7 @@ import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.property.api.RemoteFloorService; import org.dromara.property.api.domain.vo.RemoteFloorVo; import org.dromara.sis.domain.vo.*; -import org.dromara.sis.sdk.e8.AccessControlService; +import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.e8.domain.accessControl.req.RemoteOpenDoorReq; import org.dromara.sis.sdk.hik.HCNetSDK; import org.dromara.sis.sdk.hik.HikApiService; @@ -33,7 +33,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { private final ISisAccessControlService accessControlService; private final ISisElevatorFloorRefService elevatorFloorRefService; - private final AccessControlService e8AccessControlService; + private final E8PlatformApi e8PlatformApi; @DubboReference private RemoteFloorService remoteFloorService; @@ -99,7 +99,7 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 { data.setDeviceId(Long.parseLong(ac.getOutCode())); data.setDoorId(Long.parseLong(ac.getOutCode())); req.setControlList(List.of(data)); - Boolean flag = e8AccessControlService.remoteOpenDoor(req); + Boolean flag = e8PlatformApi.remoteOpenDoor(req); log.info("远程开门结果,result={}", flag); } }); diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java index 4f02b8f..42f33d4 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/unview/service/VideoAlarmService.java @@ -3,7 +3,7 @@ package org.dromara.sis.sdk.unview.service; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.dromara.sis.sdk.e8.AccessControlService; +import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.hik.HikApiService; import org.dromara.sis.sdk.unview.model.UvModel; import org.dromara.sis.sdk.unview.model.enums.AlarmTypeEnum; @@ -28,7 +28,7 @@ public class VideoAlarmService { private final ISisDeviceManageService deviceManageService; private final ISisAuthRecordService authRecordService; - private final AccessControlService accessControlService; + private final E8PlatformApi e8PlatformApi; private final ISisAccessControlService sisAccessControlService; private final ISisDeviceBindRefService deviceBindRefService; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java index cbde927..a44b435 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/service/impl/SisAccessControlServiceImpl.java @@ -22,7 +22,7 @@ import org.dromara.sis.domain.enums.ControlTypeEnum; import org.dromara.sis.domain.vo.SisAccessControlVo; import org.dromara.sis.domain.vo.SisDeviceManageVo; import org.dromara.sis.mapper.SisAccessControlMapper; -import org.dromara.sis.sdk.e8.DoorDeviceService; +import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes; import org.dromara.sis.service.ISisAccessControlService; import org.dromara.sis.service.ISisDeviceBindRefService; @@ -47,7 +47,7 @@ import java.util.Map; public class SisAccessControlServiceImpl implements ISisAccessControlService { private final SisAccessControlMapper baseMapper; - private final DoorDeviceService doorDeviceService; + private final E8PlatformApi e8PlatformApi; private final ISisDeviceManageService sisDeviceManageService; private final ISisDeviceBindRefService sisDeviceBindRefService; @DubboReference @@ -207,7 +207,7 @@ public class SisAccessControlServiceImpl implements ISisAccessControlService { @Override @Transactional(rollbackFor = Exception.class) public Boolean syncE8() { - List authDoorDeviceFindRes = doorDeviceService.getPageAuthDoorDeviceList(); + List authDoorDeviceFindRes = e8PlatformApi.getPageAuthDoorDeviceList(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.eq(true, SisAccessControl::getControlType, 2);