From d5981b0d4a6057493e8847e2c418a03d52707bc7 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Wed, 25 Jun 2025 15:41:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(sis):=20=E6=96=B0=E5=A2=9E=E5=87=AD?= =?UTF-8?q?=E8=AF=81=E6=8E=A7=E5=88=B6=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增发行凭证、批量发行凭证、操作凭证、换卡补卡、注销人员凭证等功能 - 实现凭证控制相关的API接口和控制器 --- .../e8/AccessControlController.java | 2 +- .../controller/e8/DoorDeviceController.java | 2 +- .../e8/VoucherControlController.java | 153 ++++++++++++++++++ .../sis/sdk/e8/AccessControlService.java | 1 - .../dromara/sis/sdk/e8/DoorDeviceService.java | 1 - .../sis/sdk/e8/VoucherControlService.java | 52 +++++- .../domain/voucher/req/CancelVoucherReq.java | 16 ++ .../e8/domain/voucher/req/ChangeCardReq.java | 39 +++++ .../domain/voucher/req/IssueVoucherReq.java | 69 ++++++++ .../domain/voucher/req/OperateVoucherReq.java | 29 ++++ .../sdk/e8/impl/AccessControlServiceImpl.java | 12 +- .../sis/sdk/e8/impl/CustomerServiceImpl.java | 19 ++- .../sdk/e8/impl/DoorDeviceServiceImpl.java | 9 +- .../e8/impl/VoucherControlServiceImpl.java | 143 +++++++++++++++- 14 files changed, 520 insertions(+), 27 deletions(-) create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java create mode 100644 ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java index 6459b2b..1b35a4b 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/AccessControlController.java @@ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController @RequiredArgsConstructor -@RequestMapping("/e8accessControl") +@RequestMapping("/e8AccessControl") public class AccessControlController { private final AccessControlService accessControlService; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java index 2e256be..a649916 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/DoorDeviceController.java @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.*; @Slf4j @RestController @RequiredArgsConstructor -@RequestMapping("/e8doorDevice") +@RequestMapping("/e8DoorDevice") public class DoorDeviceController { private final DoorDeviceService doorDeviceService; diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java new file mode 100644 index 0000000..bb6c3b6 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/controller/e8/VoucherControlController.java @@ -0,0 +1,153 @@ +package org.dromara.sis.controller.e8; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.R; +import org.dromara.sis.sdk.e8.VoucherControlService; +import org.dromara.sis.sdk.e8.domain.voucher.req.CancelVoucherReq; +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.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.util.List; + +/** + * @author lsm + * @apiNote VoucherControlController + * @since 2025/6/25 + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/e8VoucherControl") +public class VoucherControlController { + + private final VoucherControlService voucherControlService; + + /** + * 发行凭证 + * + * @param req 入参 + * @return 是否成功 + */ + @PostMapping("/issueVoucher") + public R issueVoucher(@RequestBody IssueVoucherReq req) { + log.info("E8发行凭证入参:{}", req); + + Boolean flag = voucherControlService.issueVoucher(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8发行凭证,调用失败!"); + } + } + + /** + * 批量发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + @PostMapping("/issueVoucherMany") + public R issueVoucherMany(@RequestBody List req) { + log.info("E8批量发行凭证入参:{}", req); + + Boolean flag = voucherControlService.issueVoucherMany(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8批量发行凭证,调用失败!"); + } + } + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + @PostMapping("/operateVoucher") + public R operateVoucher(@RequestBody OperateVoucherReq req) { + log.info("E8操作凭证入参:{}", req); + + Boolean flag = voucherControlService.operateVoucher(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8操作凭证,调用失败!"); + } + } + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + @PostMapping("/changeCard") + public R changeCard(@RequestBody ChangeCardReq req) { + log.info("E8换卡补卡入参:{}", req); + + Boolean flag = voucherControlService.changeCard(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8换卡补卡,调用失败!"); + } + } + + /** + * 注销人员凭证 + * + * @param req 入参 + * @return Boolean + */ + @PostMapping("/cancelVoucher") + public R cancelVoucher(@RequestBody CancelVoucherReq req) { + log.info("E8注销人员凭证入参:{}", req); + + Boolean flag = voucherControlService.cancelVoucher(req); + + if (flag) { + return R.ok(); + } else { + return R.fail("E8注销人员凭证,调用失败!"); + } + } + + /** + * 上传人脸 + * + * @param file 入参 + * @return imageUrl 人脸图片地址 + */ + @PostMapping("/uploadFace") + public R uploadFace(@RequestParam("file") MultipartFile file) { + log.info("E8上传人脸入参:{}", file.getOriginalFilename()); + + // 获取文件字节数组 + byte[] imageByte; + try { + imageByte = file.getBytes(); + } catch (IOException e) { + log.error("获取上传文件字节失败:{}", e.getMessage()); + return R.fail("E8上传人脸,获取文件字节失败!"); + } + + String imageUrl = voucherControlService.uploadFace(imageByte); + + if (imageUrl != null) { + return R.ok(imageUrl); + } else { + return R.fail("E8上传人脸,调用失败!"); + } + } + +} 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 index 726be5e..6097937 100644 --- 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 @@ -2,7 +2,6 @@ package org.dromara.sis.sdk.e8; import org.dromara.common.mybatis.core.page.TableDataInfo; 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.QueryDto; 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 f50bbaf..aa70d85 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 @@ -5,7 +5,6 @@ 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.DoorDeviceAddRes; import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes; -import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceUpdateRes; import org.dromara.sis.sdk.e8.domain.QueryDto; /** 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 index 9ee7d3f..0bb9f0e 100644 --- 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 @@ -1,5 +1,12 @@ package org.dromara.sis.sdk.e8; +import org.dromara.sis.sdk.e8.domain.voucher.req.CancelVoucherReq; +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 VoucherControlService @@ -7,10 +14,51 @@ package org.dromara.sis.sdk.e8; */ public interface VoucherControlService { + /** + * 发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + Boolean issueVoucher(IssueVoucherReq req); + + /** + * 批量发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + Boolean issueVoucherMany(List req); + + /** + * 操作凭证 + * + * @param req 入参 + * @return Boolean + */ + Boolean operateVoucher(OperateVoucherReq req); + + /** + * 换卡补卡 + * + * @param req 入参 + * @return Boolean + */ + Boolean changeCard(ChangeCardReq req); + + /** + * 注销人员凭证 + * + * @param req 入参 + * @return Boolean + */ + Boolean cancelVoucher(CancelVoucherReq req); + /** * 上传人脸 * - * @param queryDto 查询参数 - * @return 凭证控制列表 + * @param imageByte 入参 + * @return imageUrl 人脸图片地址 */ + String uploadFace(byte[] imageByte); } diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java new file mode 100644 index 0000000..cbf178e --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/CancelVoucherReq.java @@ -0,0 +1,16 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote CancelVoucherReq + * @since 2025/6/25 + */ +@Data +public class CancelVoucherReq { + + private List ids; +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java new file mode 100644 index 0000000..a846f9b --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/ChangeCardReq.java @@ -0,0 +1,39 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote ChangeCardReq + * @since 2025/6/25 + */ +@Data +public class ChangeCardReq { + /** + * origVoucherId int64 Y 原凭证ID + * idno string Y 物理卡号 + * remark string N 备注 + * personID int64 Y 人员ID + */ + + /** + * 原凭证ID + */ + private Long origVoucherId; + + /** + * 物理卡号 + */ + private String idno; + + /** + * 备注 + */ + private String remark; + + /** + * 人员ID + */ + private Long personID; + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java new file mode 100644 index 0000000..9bd444a --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/IssueVoucherReq.java @@ -0,0 +1,69 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +/** + * @author lsm + * @apiNote IssueVoucher + * @since 2025/6/25 + */ +@Data +public class IssueVoucherReq { + + /** + * 物理卡号 + */ + private String idno; + + /** + * 密码 + */ + private String password; + + /** + * 凭证类型 10:MF1-A卡 11:MF1-B卡 12:MF1卡(ID) 20:个人密码 40:条码、纸票 50:指纹 60:身份证号码 70:人脸 80:虚拟卡 110:蓝牙卡 21:管理密码 22:胁迫密码 + */ + private Integer voucherType; + + /** + * 客户ID + */ + private Long personID; + + /** + * 开始日期 + */ + private String startTime; + + /** + * 结束日期 + */ + private String endTime; + + /** + * 图片地址 + */ + private String txtData; + + /** + * 指纹数据 + */ + private String blobData; + + /** + * 指纹编号 + */ + private String fingerNo; + + /** + * 卡类别 34:普通用户卡 35:胁迫卡 36:保安卡 40:临时卡 41:中级用户卡 48:高级用户卡 49:高级管理卡(注:41、48、49仅适用于分体式门禁) + */ + private Integer cardType; + + /** + * 凭证模式 0:ID卡模式 1:IC卡模式 3:CPU卡模式 + */ + private Integer voucherMode; + + +} diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java new file mode 100644 index 0000000..8acd228 --- /dev/null +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/sdk/e8/domain/voucher/req/OperateVoucherReq.java @@ -0,0 +1,29 @@ +package org.dromara.sis.sdk.e8.domain.voucher.req; + +import lombok.Data; + +import java.util.List; + +/** + * @author lsm + * @apiNote OperateVoucherReq + * @since 2025/6/25 + */ +@Data +public class OperateVoucherReq { + + /** + * 凭证ID集合 + */ + private List ids; + + /** + * 凭证操作类型 4:冻结 5:解冻 6:注销 7:挂失 8:解挂 + */ + private Integer type; + + /** + * 原因 (必填) + */ + private String reason; +} 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 index 8d5d412..ff58738 100644 --- 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 @@ -3,8 +3,8 @@ 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.apache.dubbo.config.annotation.DubboService; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.sdk.e8.AccessControlService; import org.dromara.sis.sdk.e8.domain.accessControl.req.AccessRecordFindReq; @@ -18,7 +18,6 @@ import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes; 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; @@ -29,7 +28,7 @@ import java.util.Map; */ @Slf4j @Service -@DubboService +@RequiredArgsConstructor public class AccessControlServiceImpl implements AccessControlService { // 远程开门 @@ -44,8 +43,8 @@ public class AccessControlServiceImpl implements AccessControlService { // 获取人员权限分页列表 private static final String GET_PAGE_PERSON_AUTHORIZATION_PAGE_LIST = "/api/E8Door/man-person-device-finally/get-page-list"; - @Resource - private E8ApiUtil e8ApiUtil; + + private final E8ApiUtil e8ApiUtil; /** * 远程开门 @@ -61,6 +60,8 @@ public class AccessControlServiceImpl implements AccessControlService { // 调用第三方API进行开门操作,传入处理后的参数和指定的API端点 ApiResp apiResp = e8ApiUtil.doPost(params, REMOTE_OPEN_DOOR); + if (!apiResp.getSuccess()) log.error("调用E8远程开门失败,errorMsg:{}", apiResp); + // 返回API调用是否成功的结果 return apiResp.getSuccess(); } @@ -85,6 +86,7 @@ public class AccessControlServiceImpl implements AccessControlService { 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对象 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 index f964521..37e0053 100644 --- 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 @@ -5,8 +5,8 @@ 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.apache.dubbo.config.annotation.DubboService; import org.dromara.sis.sdk.e8.CustomerService; import org.dromara.sis.sdk.e8.domain.ApiResp; import org.dromara.sis.sdk.e8.domain.QueryDto; @@ -18,7 +18,6 @@ import org.dromara.sis.sdk.e8.domain.custom.res.CustomFindRes; 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; @@ -29,7 +28,7 @@ import java.util.Map; */ @Slf4j @Service -@DubboService +@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"; @@ -37,8 +36,8 @@ public class CustomerServiceImpl implements CustomerService { private final static String CUSTOMER_UPDATE = "/api/E8/customer/{id}/update"; private final static String CUSTOMER_DELETE = "/api/E8/customer/{id}"; - @Resource - private E8ApiUtil e8ApiUtil; + + private final E8ApiUtil e8ApiUtil; /** * 查询单个人员信息 @@ -56,7 +55,7 @@ public class CustomerServiceImpl implements CustomerService { // 检查API调用是否成功 if (!apiResp.getSuccess()) { - log.info("E8查询人员信息失败 errorMsg:{}", apiResp); + log.error("E8查询人员信息失败 errorMsg:{}", apiResp); // 如果API调用失败,返回null return null; } @@ -86,7 +85,7 @@ public class CustomerServiceImpl implements CustomerService { if (!apiResp.getSuccess()) { - log.info("E8人员信息分页查询 errorMsg:{}", apiResp); + log.error("E8人员信息分页查询 errorMsg:{}", apiResp); // 如果API响应不成功,返回null return null; } @@ -121,7 +120,7 @@ public class CustomerServiceImpl implements CustomerService { // 检查API调用是否成功 if (!apiResp.getSuccess()) { - log.info("E8新增人员信息失败 errorMsg:{}", apiResp); + log.error("E8新增人员信息失败 errorMsg:{}", apiResp); // 如果API调用失败,返回null return null; } @@ -147,6 +146,8 @@ public class CustomerServiceImpl implements CustomerService { // 调用API工具类发送POST请求,并获取API响应对象 ApiResp apiResp = e8ApiUtil.doPost(params, api); + if (!apiResp.getSuccess()) log.error("E8人员信息修改失败 errorMsg:{}", apiResp); + // 返回API调用是否成功的标志 return apiResp.getSuccess(); } @@ -165,6 +166,8 @@ public class CustomerServiceImpl implements CustomerService { // 调用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 index 649e2ee..060151c 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 @@ -3,8 +3,8 @@ 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.apache.dubbo.config.annotation.DubboService; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.sis.sdk.e8.DoorDeviceService; import org.dromara.sis.sdk.e8.domain.ApiResp; @@ -17,7 +17,6 @@ import org.dromara.sis.sdk.e8.domain.QueryDto; 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; @@ -28,7 +27,7 @@ import java.util.Map; */ @Slf4j @Service -@DubboService +@RequiredArgsConstructor public class DoorDeviceServiceImpl implements DoorDeviceService { private final static String DOOR_DEVICE_GET_PAGE_LIST = "/api/e8door/man-device-info/get-page-list"; @@ -37,8 +36,8 @@ public class DoorDeviceServiceImpl implements DoorDeviceService { 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}"; - @Resource - private E8ApiUtil e8ApiUtil; + + private final E8ApiUtil e8ApiUtil; /** * 查询门禁信息 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 index 4ccffb9..dc39abe 100644 --- 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 @@ -1,12 +1,149 @@ package org.dromara.sis.sdk.e8.impl; -import lombok.Data; +import cn.hutool.core.bean.BeanUtil; +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.CancelVoucherReq; +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.utils.E8ApiUtil; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @author lsm * @apiNote VoucherControlServiceImpl * @since 2025/6/25 */ -@Data -public class VoucherControlServiceImpl { +@Slf4j +@Service +@RequiredArgsConstructor +public class VoucherControlServiceImpl implements VoucherControlService { + + private static final String ISSUANCE_VOUCHER = "/api/E8/voucher/issue-voucher"; + private static final String ISSUANCE_VOUCHER_MANY = "/api/E8/voucher/issue-voucher-many"; + private static final String OPERATE_VOUCHER = "/api/E8/voucher/operate-many"; + private static final String CHANGE_CARD = "/api/E8/voucher/change-card"; + private static final String CANCEL_VOUCHER = "/api/E8/voucher/cancel-voucher"; + + private final E8ApiUtil e8ApiUtil; + + /** + * 发行凭证 + * + * @param req 入参 + * @return 是否成功 + */ + @Override + public Boolean 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 apiResp.getSuccess(); + } + + /** + * 批量发行凭证 + * + * @param req 凭证数据 + * @return Boolean + */ + public Boolean issueVoucherMany(List req) { + // 封装入参 + Map params = new HashMap<>(); + params.put("", req); + + // 调用API + ApiResp apiResp = e8ApiUtil.doPost(params, ISSUANCE_VOUCHER_MANY); + + if (!apiResp.getSuccess()) log.error("E8批量发行凭证失败,errorMsg:{}", apiResp); + + return apiResp.getSuccess(); + } + + /** + * 操作凭证 + * + * @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 req 入参 + * @return Boolean + */ + @Override + public Boolean cancelVoucher(CancelVoucherReq req) { + Map params = new HashMap<>(); + params.put("", req.getIds()); + + ApiResp apiResp = e8ApiUtil.doPost(params, CANCEL_VOUCHER); + + 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(); + } }