Merge branch 'master' of http://192.168.110.207:3000/by2025/SmartParks
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 5m46s
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 5m46s
# Conflicts: # ruoyi-modules/Sis/src/main/java/org/dromara/sis/domain/vo/SisDevicePointVo.java
This commit is contained in:
@@ -1,64 +0,0 @@
|
||||
package org.dromara.sis.controller;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||
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;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
* @apiNote AccessControlController
|
||||
* @since 2025/6/24
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/e8accessControl")
|
||||
public class AccessControlController {
|
||||
|
||||
private final AccessControlService accessControlService;
|
||||
|
||||
/**
|
||||
* 远程开门
|
||||
*
|
||||
* @param req 传参
|
||||
* @return Boolean
|
||||
*/
|
||||
@PostMapping("/remoteOpenDoor")
|
||||
public R<Boolean> remoteOpenDoor(RemoteOpenDoorReq req) {
|
||||
log.info("E8远程开门 入参:{}", req);
|
||||
|
||||
Boolean flag = accessControlService.remoteOpenDoor(req);
|
||||
|
||||
if (flag) {
|
||||
return R.ok();
|
||||
} else {
|
||||
return R.fail("E8远程开门,调用失败!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取门禁记录列表
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return IPage<AccessRecordFindRes>
|
||||
*/
|
||||
@PostMapping("/getPageAccessRecordList")
|
||||
public R<TableDataInfo<AccessRecordFindRes>> getPageAccessRecordList(QueryDto dto) {
|
||||
log.info("E8获取门禁记录列表 入参:{}", dto);
|
||||
TableDataInfo<AccessRecordFindRes> page = accessControlService.getPageAccessRecordList(dto);
|
||||
if (page == null) {
|
||||
return R.fail("E8获取门禁记录列表,调用失败!");
|
||||
} else {
|
||||
return R.ok(page);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,108 @@
|
||||
package org.dromara.sis.controller.e8;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.sis.sdk.e8.AccessControlService;
|
||||
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.QueryDto;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
* @apiNote AccessControlController
|
||||
* @since 2025/6/24
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/e8AccessControl")
|
||||
public class AccessControlController {
|
||||
|
||||
private final AccessControlService accessControlService;
|
||||
|
||||
/**
|
||||
* 远程开门
|
||||
*
|
||||
* @param req 传参
|
||||
* @return Boolean
|
||||
*/
|
||||
@PostMapping("/remoteOpenDoor")
|
||||
public R<Boolean> remoteOpenDoor(@RequestBody RemoteOpenDoorReq req) {
|
||||
log.info("E8远程开门 入参:{}", req);
|
||||
|
||||
Boolean flag = accessControlService.remoteOpenDoor(req);
|
||||
|
||||
if (flag) {
|
||||
return R.ok();
|
||||
} else {
|
||||
return R.fail("E8远程开门,调用失败!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取门禁记录列表
|
||||
*
|
||||
* @param dto 查询参数
|
||||
* @return IPage<AccessRecordFindRes>
|
||||
* @apiNote 获取参数示例 {"maxResultCount":10,"pageIndex":1,"queryDto":{"isViewFullData":false}}
|
||||
*/
|
||||
@PostMapping("/getPageAccessRecordList")
|
||||
public R<TableDataInfo<AccessRecordFindRes>> getPageAccessRecordList(@RequestBody QueryDto dto) {
|
||||
log.info("E8获取门禁记录列表 入参:{}", dto);
|
||||
TableDataInfo<AccessRecordFindRes> page = accessControlService.getPageAccessRecordList(dto);
|
||||
if (page == null) {
|
||||
return R.fail("E8获取门禁记录列表,调用失败!");
|
||||
} else {
|
||||
return R.ok(page);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 人员授权
|
||||
*
|
||||
* @param req 传参
|
||||
* @return Boolean
|
||||
* @apiNote 参数示例 {"accessAuthModel":0,"authData":[{"floors":[],"gatewayType":1,"id":528705580163141,"type":0}],"authType":0,"elevatorAuthModel":1,"endTime":"2025-07-2511: 23: 39","personIds":[539696740646981],"scheduleId":1,"startTime":"2025-06-2511: 23: 39"}
|
||||
*/
|
||||
@PostMapping("/addCustomerAuth")
|
||||
public R<Boolean> addCustomerAuth(@RequestBody CustomerAuthAddReq req) {
|
||||
log.info("E8人员授权 入参:{}", req);
|
||||
|
||||
Boolean flag = accessControlService.addCustomerAuth(req);
|
||||
|
||||
if (flag) {
|
||||
return R.ok();
|
||||
} else {
|
||||
return R.fail("E8人员授权,调用失败!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取人员权限分页列表
|
||||
*
|
||||
* @param dto 获取参数
|
||||
* @return TableDataInfo<CustomerAuthFindRes>
|
||||
* @apiNote 获取参数示例 {"maxResultCount":10,"pageIndex":1,"queryDto":{"isViewFullData":false}}
|
||||
*/
|
||||
@PostMapping("getPageCustomerAuth")
|
||||
public R<TableDataInfo<CustomerAuthFindRes>> getPageCustomerAuth(@RequestBody QueryDto dto) {
|
||||
log.info("E8获取人员权限分页列表 入参:{}", dto);
|
||||
|
||||
TableDataInfo<CustomerAuthFindRes> page = accessControlService.getPageCustomerAuth(dto);
|
||||
|
||||
if (page == null) {
|
||||
return R.fail("E8获取人员权限分页列表,调用失败!");
|
||||
} else {
|
||||
return R.ok(page);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.controller;
|
||||
package org.dromara.sis.controller.e8;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -9,7 +9,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;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -22,7 +21,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/e8doorDevice")
|
||||
@RequestMapping("/e8DoorDevice")
|
||||
public class DoorDeviceController {
|
||||
|
||||
private final DoorDeviceService doorDeviceService;
|
||||
@@ -70,15 +69,15 @@ public class DoorDeviceController {
|
||||
* @return Boolean
|
||||
*/
|
||||
@PostMapping("/updateDoorDevice")
|
||||
public R<DoorDeviceUpdateRes> updateDoorDevice(@RequestBody DoorDeviceUpdateReq updateReq) {
|
||||
public R<Boolean> updateDoorDevice(@RequestBody DoorDeviceUpdateReq updateReq) {
|
||||
log.info("E8接口门禁信息修改 入参={}", updateReq);
|
||||
|
||||
DoorDeviceUpdateRes doorDevice = doorDeviceService.updateDoorDevice(updateReq);
|
||||
Boolean flag = doorDeviceService.updateDoorDevice(updateReq);
|
||||
|
||||
if (doorDevice == null) {
|
||||
return R.fail("E8接口门禁信息修改,调用失败!");
|
||||
if (flag) {
|
||||
return R.ok();
|
||||
} else {
|
||||
return R.ok(doorDevice);
|
||||
return R.fail("E8接口门禁信息修改,调用失败!");
|
||||
}
|
||||
}
|
||||
|
@@ -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<Boolean> 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<Boolean> issueVoucherMany(@RequestBody List<IssueVoucherReq> 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<Boolean> 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<Boolean> 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<Boolean> 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<String> 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上传人脸,调用失败!");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,9 +1,11 @@
|
||||
package org.dromara.sis.sdk.e8;
|
||||
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
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.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.QueryDto;
|
||||
import org.dromara.sis.sdk.e8.domain.accessControl.res.CustomerAuthFindRes;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
@@ -29,19 +31,19 @@ public interface AccessControlService {
|
||||
*/
|
||||
TableDataInfo<AccessRecordFindRes> getPageAccessRecordList(QueryDto dto);
|
||||
|
||||
// /**
|
||||
// * 人员授权
|
||||
// *
|
||||
// * @param imageFile 传参
|
||||
// * @return Boolean
|
||||
// */
|
||||
// Boolean addCustomerAuth(Byte[] imageFile);
|
||||
/**
|
||||
* 人员授权
|
||||
*
|
||||
* @param req 传参
|
||||
* @return Boolean
|
||||
*/
|
||||
Boolean addCustomerAuth(CustomerAuthAddReq req);
|
||||
|
||||
// /**
|
||||
// * 获取人员权限分页列表
|
||||
// *
|
||||
// * @param dto 传参
|
||||
// * @return
|
||||
// */
|
||||
// IPage getPageAccessControl(QueryDto dto);
|
||||
/**
|
||||
* 获取人员权限分页列表
|
||||
*
|
||||
* @param dto 传参
|
||||
* @return TableDataInfo<CustomerAuthFindRes>
|
||||
*/
|
||||
TableDataInfo<CustomerAuthFindRes> getPageCustomerAuth(QueryDto dto);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
||||
/**
|
||||
@@ -45,7 +44,7 @@ public interface DoorDeviceService {
|
||||
* @param updateReq 入参
|
||||
* @return DoorDeviceUpdateRes
|
||||
*/
|
||||
DoorDeviceUpdateRes updateDoorDevice(DoorDeviceUpdateReq updateReq);
|
||||
Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq);
|
||||
|
||||
/**
|
||||
* 删除门禁信息
|
||||
|
@@ -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<IssueVoucherReq> 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);
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.req;
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@@ -0,0 +1,112 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
* @apiNote CustomerAuthAddReq
|
||||
* @since 2025/6/25
|
||||
*/
|
||||
@Data
|
||||
public class CustomerAuthAddReq {
|
||||
|
||||
/**
|
||||
* 门禁授权类型 0:人员
|
||||
*/
|
||||
private Integer authType;
|
||||
|
||||
/**
|
||||
* 时区ID
|
||||
*/
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 人员ID集合
|
||||
*/
|
||||
private List<Long> personIds;
|
||||
|
||||
/**
|
||||
* 授权数据
|
||||
*/
|
||||
private List<AuthGroupData> authData;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private String startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private String endTime;
|
||||
|
||||
/**
|
||||
* 授权日期类型 0:默认 1:一月 2:半年 3:一年 4:三年 5:永久
|
||||
*/
|
||||
private Integer dateType;
|
||||
|
||||
@Data
|
||||
public static class AuthGroupData {
|
||||
|
||||
/**
|
||||
* 门/电梯ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 类型 0:门 1:电梯
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 出入口类型 0:未知 1:入口 2:出口
|
||||
*/
|
||||
private Integer gatewayType;
|
||||
|
||||
/**
|
||||
* 楼层
|
||||
*/
|
||||
private List<Floor> floors;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Floor {
|
||||
|
||||
/**
|
||||
* 楼层权限标识
|
||||
*/
|
||||
private Long floorId;
|
||||
|
||||
/**
|
||||
* 楼层名称
|
||||
*/
|
||||
private String floorName;
|
||||
|
||||
/**
|
||||
* 是否前门可用
|
||||
*/
|
||||
private Boolean isFrontDoor;
|
||||
|
||||
/**
|
||||
* 是否后门可用
|
||||
*/
|
||||
private Boolean isBackDoor;
|
||||
|
||||
/**
|
||||
* 是否选择前门
|
||||
*/
|
||||
private Boolean isSelectFrontDoor;
|
||||
|
||||
/**
|
||||
* 是否选择后门
|
||||
*/
|
||||
private Boolean isSelectBackDoor;
|
||||
|
||||
/**
|
||||
* 是否公共门
|
||||
*/
|
||||
private Boolean isCommonFloor;
|
||||
}
|
||||
}
|
@@ -0,0 +1,52 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
* @apiNote CustomerAuthFindReq
|
||||
* @since 2025/6/25
|
||||
*/
|
||||
@Data
|
||||
public class CustomerAuthFindReq {
|
||||
|
||||
/**
|
||||
* 是否脱敏 true脱敏,敏感信息加***隐藏;false完整显示;
|
||||
*/
|
||||
private Boolean isViewFullData;
|
||||
|
||||
/**
|
||||
* 客户编号
|
||||
*/
|
||||
private String customerNo;
|
||||
|
||||
/**
|
||||
* 客户姓名
|
||||
*/
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 客户手机号码
|
||||
*/
|
||||
private String customerMobile;
|
||||
|
||||
/**
|
||||
* 组织ID
|
||||
*/
|
||||
private Long organId;
|
||||
|
||||
/**
|
||||
* 门/电梯ID
|
||||
*/
|
||||
private Long itemId;
|
||||
|
||||
/**
|
||||
* 授权开始时间
|
||||
*/
|
||||
private String authStartTime;
|
||||
|
||||
/**
|
||||
* 授权结束时间
|
||||
*/
|
||||
private String authEndTime;
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.req;
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accesscontrol.res;
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
|
@@ -0,0 +1,210 @@
|
||||
package org.dromara.sis.sdk.e8.domain.accessControl.res;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
* @apiNote CustomerAuthFindRes
|
||||
* @since 2025/6/25
|
||||
*/
|
||||
@Data
|
||||
public class CustomerAuthFindRes {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date creationTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String creatorId;
|
||||
|
||||
/**
|
||||
* 最后修改时间
|
||||
*/
|
||||
private Date lastModificationTime;
|
||||
|
||||
/**
|
||||
* 最后修改人
|
||||
*/
|
||||
private String lastModifierId;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Boolean isDeleted;
|
||||
|
||||
/**
|
||||
* 删除人
|
||||
*/
|
||||
private String deleterId;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
*/
|
||||
private Date deletionTime;
|
||||
|
||||
/**
|
||||
* 客户ID
|
||||
*/
|
||||
private Long personId;
|
||||
|
||||
/**
|
||||
* 主设备ID
|
||||
*/
|
||||
private Long mainDeviceId;
|
||||
|
||||
/**
|
||||
* 读头ID
|
||||
*/
|
||||
private Long readerId;
|
||||
|
||||
/**
|
||||
* 组织ID
|
||||
*/
|
||||
private Long organId;
|
||||
|
||||
/**
|
||||
* 组织名称
|
||||
*/
|
||||
private String orgName;
|
||||
|
||||
/**
|
||||
* 区域ID
|
||||
*/
|
||||
private Long areaId;
|
||||
|
||||
/**
|
||||
* 区域名称
|
||||
*/
|
||||
private String areaName;
|
||||
|
||||
/**
|
||||
* 客户姓名
|
||||
*/
|
||||
private String customerName;
|
||||
|
||||
/**
|
||||
* 客户编号
|
||||
*/
|
||||
private String customerNo;
|
||||
|
||||
/**
|
||||
* 客户手机号码
|
||||
*/
|
||||
private String mobile;
|
||||
|
||||
/**
|
||||
* 门/电梯名称
|
||||
*/
|
||||
private String itemName;
|
||||
|
||||
/**
|
||||
* 是否显示敏感信息 true隐藏 false显示
|
||||
*/
|
||||
private Boolean isViewFullData;
|
||||
|
||||
/**
|
||||
* 授权楼层字符串
|
||||
*/
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 授权开始时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 授权结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 设施类型 0:门禁 1:电梯
|
||||
*/
|
||||
private Integer facilityType;
|
||||
|
||||
/**
|
||||
* 时区ID
|
||||
*/
|
||||
private Long scheduleId;
|
||||
|
||||
/**
|
||||
* 时区名称
|
||||
*/
|
||||
private String scheduleName;
|
||||
|
||||
/**
|
||||
* 授权人
|
||||
*/
|
||||
private String authName;
|
||||
|
||||
/**
|
||||
* 授权时间段
|
||||
*/
|
||||
private String duration;
|
||||
|
||||
/**
|
||||
* 出入口类型 0:未知 1:入口 2:出口
|
||||
*/
|
||||
private Integer gatewayType;
|
||||
|
||||
/**
|
||||
* 出入口类型描述
|
||||
*/
|
||||
private String gatewayTypeDesc;
|
||||
|
||||
/**
|
||||
* 授权楼层
|
||||
*/
|
||||
private List<Floor> floors;
|
||||
|
||||
@Data
|
||||
public static class Floor {
|
||||
|
||||
/**
|
||||
* 楼层权限标识
|
||||
*/
|
||||
private Long floorId;
|
||||
|
||||
/**
|
||||
* 楼层名称
|
||||
*/
|
||||
private String floorName;
|
||||
|
||||
/**
|
||||
* 是否前门可用
|
||||
*/
|
||||
private Boolean isFrontDoor;
|
||||
|
||||
/**
|
||||
* 是否后门可用
|
||||
*/
|
||||
private Boolean isBackDoor;
|
||||
|
||||
/**
|
||||
* 是否选择前门
|
||||
*/
|
||||
private Boolean isSelectFrontDoor;
|
||||
|
||||
/**
|
||||
* 是否选择后门
|
||||
*/
|
||||
private Boolean isSelectBackDoor;
|
||||
|
||||
/**
|
||||
* 是否公共门
|
||||
*/
|
||||
private Boolean isCommonFloor;
|
||||
}
|
||||
|
||||
}
|
@@ -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<Long> ids;
|
||||
}
|
@@ -0,0 +1,33 @@
|
||||
package org.dromara.sis.sdk.e8.domain.voucher.req;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author lsm
|
||||
* @apiNote ChangeCardReq
|
||||
* @since 2025/6/25
|
||||
*/
|
||||
@Data
|
||||
public class ChangeCardReq {
|
||||
|
||||
/**
|
||||
* 原凭证ID
|
||||
*/
|
||||
private Long origVoucherId;
|
||||
|
||||
/**
|
||||
* 物理卡号
|
||||
*/
|
||||
private String idno;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 人员ID
|
||||
*/
|
||||
private Long personID;
|
||||
|
||||
}
|
@@ -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;
|
||||
|
||||
|
||||
}
|
@@ -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<Long> ids;
|
||||
|
||||
/**
|
||||
* 凭证操作类型 4:冻结 5:解冻 6:注销 7:挂失 8:解挂
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 原因 (必填)
|
||||
*/
|
||||
private String reason;
|
||||
}
|
@@ -3,19 +3,21 @@ 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;
|
||||
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.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.ApiResp;
|
||||
import org.dromara.sis.sdk.e8.domain.QueryDto;
|
||||
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;
|
||||
|
||||
@@ -26,7 +28,7 @@ import java.util.Map;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@DubboService
|
||||
@RequiredArgsConstructor
|
||||
public class AccessControlServiceImpl implements AccessControlService {
|
||||
|
||||
// 远程开门
|
||||
@@ -41,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;
|
||||
|
||||
/**
|
||||
* 远程开门
|
||||
@@ -58,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();
|
||||
}
|
||||
@@ -82,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对象
|
||||
@@ -100,8 +105,58 @@ public class AccessControlServiceImpl implements AccessControlService {
|
||||
/**
|
||||
* 人员授权
|
||||
*
|
||||
* @param imageFile 传参
|
||||
* @param req 传参
|
||||
* @return Boolean
|
||||
*/
|
||||
@Override
|
||||
public Boolean addCustomerAuth(CustomerAuthAddReq req) {
|
||||
// 创建一个参数映射,用于存储API请求的参数
|
||||
Map<String, Object> 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<CustomerAuthFindRes>
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<CustomerAuthFindRes> getPageCustomerAuth(QueryDto dto) {
|
||||
// 创建一个参数映射,用于存储API请求的参数
|
||||
Map<String, Object> 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<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() {
|
||||
}, false);
|
||||
// 创建一个分页对象,传入分页索引和最大结果数
|
||||
TableDataInfo<CustomerAuthFindRes> tableData = new TableDataInfo<>();
|
||||
// 从结果映射中获取总记录数,转换为长整型后设置到分页对象中
|
||||
tableData.setTotal(Long.parseLong(result.get("total").toString()));
|
||||
// 从结果映射中获取项目列表,转换为访问记录信息列表后设置到分页对象中
|
||||
tableData.setRows(JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), CustomerAuthFindRes.class));
|
||||
// 返回填充了数据的分页对象
|
||||
return tableData;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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;
|
||||
@@ -13,12 +13,10 @@ 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.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;
|
||||
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 +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";
|
||||
@@ -38,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;
|
||||
|
||||
/**
|
||||
* 查询门禁信息
|
||||
@@ -135,7 +133,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
|
||||
* @return DoorDeviceUpdateRes
|
||||
*/
|
||||
@Override
|
||||
public DoorDeviceUpdateRes updateDoorDevice(DoorDeviceUpdateReq updateReq) {
|
||||
public Boolean updateDoorDevice(DoorDeviceUpdateReq updateReq) {
|
||||
|
||||
// 构造门设备更新API的URL
|
||||
String api = DOOR_DEVICE_UPDATE.replace("{id}", updateReq.getId().toString());
|
||||
@@ -146,13 +144,9 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
|
||||
// 调用API进行门设备信息更新
|
||||
ApiResp apiResp = e8ApiUtil.doPost(params, api);
|
||||
|
||||
if (!apiResp.getSuccess()) {
|
||||
log.error("修改E8门禁信息,errorMsg:{}", apiResp);
|
||||
// 如果响应不成功,则返回null
|
||||
return null;
|
||||
}
|
||||
if (!apiResp.getSuccess()) log.error("修改E8门禁信息,errorMsg:{}", apiResp);
|
||||
|
||||
return JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), DoorDeviceUpdateRes.class);
|
||||
return apiResp.getSuccess();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,9 +164,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
|
||||
// 调用E8 API工具类进行HTTP DELETE请求,参数为构造的API路径和null(因为DELETE请求通常不需要请求体)
|
||||
ApiResp apiResp = e8ApiUtil.doGetOrDel(api, null, true);
|
||||
|
||||
if (!apiResp.getSuccess()) {
|
||||
log.error("删除E8门禁信息,errorMsg:{}", apiResp);
|
||||
}
|
||||
if (!apiResp.getSuccess()) log.error("删除E8门禁信息,errorMsg:{}", apiResp);
|
||||
|
||||
// 返回API响应的成功标志
|
||||
return apiResp.getSuccess();
|
||||
|
@@ -0,0 +1,151 @@
|
||||
package org.dromara.sis.sdk.e8.impl;
|
||||
|
||||
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
|
||||
*/
|
||||
@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<String, Object> 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<IssueVoucherReq> req) {
|
||||
// 封装入参
|
||||
Map<String, Object> params = new HashMap<>();
|
||||
params.put("many", true);
|
||||
params.put("list", 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<String, Object> 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<String, Object> 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<String, Object> params = new HashMap<>();
|
||||
params.put("many", true);
|
||||
params.put("list", 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();
|
||||
}
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
package org.dromara.sis.sdk.e8.utils;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.crypto.digest.DigestUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import cn.hutool.http.HttpResponse;
|
||||
@@ -10,10 +11,7 @@ import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Base64;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -38,13 +36,30 @@ public class E8ApiUtil {
|
||||
public ApiResp doPost(Map<String, Object> params, String api) {
|
||||
// 时间戳
|
||||
String timestamp = Long.toString(System.currentTimeMillis());
|
||||
// sign签名
|
||||
String sign = getPostSign(params, api, timestamp);
|
||||
|
||||
String sign;
|
||||
String jsonBody;
|
||||
// 判断是否执行批量接口
|
||||
if (params.get("many") != null) {
|
||||
Object list = params.get("list");
|
||||
List<Object> realParams = CollectionUtil.toList(list);
|
||||
|
||||
// sign签名
|
||||
sign = getPostSign(null, api, timestamp);
|
||||
// 将params转换为JSON字符串
|
||||
jsonBody = JSONUtil.toJsonStr(realParams);
|
||||
|
||||
}else {
|
||||
// sign签名
|
||||
sign = getPostSign(params, api, timestamp);
|
||||
// 将params转换为JSON字符串
|
||||
jsonBody = JSONUtil.toJsonStr(params);
|
||||
}
|
||||
|
||||
// url
|
||||
String url = BASE_URL + api;
|
||||
|
||||
// 将params转换为JSON字符串
|
||||
String jsonBody = JSONUtil.toJsonStr(params);
|
||||
|
||||
// 对请求体进行Base64加密,指定UTF-8编码,避免乱码
|
||||
String base64Body = Base64.getEncoder().encodeToString(jsonBody.getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
|
Reference in New Issue
Block a user