refactor(sis): E8授权逻辑更改
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
zcxlsm 2025-06-29 17:17:02 +08:00
parent abeac0c7c7
commit 116abb4113
4 changed files with 84 additions and 7 deletions

View File

@ -3,10 +3,13 @@ package org.dromara.sis.sdk.e8;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq;
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.QueryDto;
import java.util.List;
/**
* @author lsm
* @apiNote DoorDeviceService
@ -53,4 +56,11 @@ public interface DoorDeviceService {
* @return Boolean
*/
Boolean deleteDoorDevice(Integer id);
/**
* 分页获取授权门信息
*
* @return TableDataInfo<AuthDoorDeviceFindRes>
*/
List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList();
}

View File

@ -0,0 +1,22 @@
package org.dromara.sis.sdk.e8.domain.door.res;
import lombok.Data;
/**
* @author lsm
* @apiNote AuthDoorDeviceFindRes
* @since 2025/6/29
*/
@Data
public class AuthDoorDeviceFindRes {
/**
* id
*/
private Long id;
/**
* deviceId
*/
private Long deviceId;
}

View File

@ -11,6 +11,7 @@ import org.dromara.sis.sdk.e8.domain.ApiResp;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceAddReq;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceFindReq;
import org.dromara.sis.sdk.e8.domain.door.req.DoorDeviceUpdateReq;
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceAddRes;
import org.dromara.sis.sdk.e8.domain.door.res.DoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.QueryDto;
@ -18,6 +19,7 @@ import org.dromara.sis.sdk.e8.utils.E8ApiUtil;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -35,6 +37,7 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
private final static String DOOR_DEVICE_CREATE = "/api/E8Door/man-device-info";
private final static String DOOR_DEVICE_UPDATE = "/api/E8Door/man-device-info/{id}/update";
private final static String DOOR_DEVICE_DELETE = "/api/E8Door/man-device-info/{id}";
private final static String AUTH_DOOR_DEVICE_GET_LIST = "/api/E8Door/man-auth-info/get-page-list-auth-data";
private final E8ApiUtil e8ApiUtil;
@ -170,4 +173,34 @@ public class DoorDeviceServiceImpl implements DoorDeviceService {
return apiResp.getSuccess();
}
/**
* 分页获取授权门信息
*
* @return TableDataInfo<AuthDoorDeviceFindRes>
*/
public List<AuthDoorDeviceFindRes> getPageAuthDoorDeviceList() {
Map<String, Object> queryDto = new HashMap<>();
queryDto.put("type", -1);
queryDto.put("matchString", "");
// 创建一个参数映射用于存储API请求所需的参数
Map<String, Object> 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<String, Object> result = JSONUtil.toBean(JSONUtil.toJsonStr(apiResp.getResult()), new TypeReference<>() {
}, false);
// 返回list
return JSONUtil.toList(JSONUtil.toJsonStr(result.get("item")), AuthDoorDeviceFindRes.class);
}
}

View File

@ -14,8 +14,10 @@ import org.dromara.sis.domain.bo.SisLibDeviceImgRefBo;
import org.dromara.sis.domain.bo.SisLibDeviceRefBo;
import org.dromara.sis.domain.vo.*;
import org.dromara.sis.sdk.e8.AccessControlService;
import org.dromara.sis.sdk.e8.DoorDeviceService;
import org.dromara.sis.sdk.e8.VoucherControlService;
import org.dromara.sis.sdk.e8.domain.accessControl.req.CustomerAuthAddReq;
import org.dromara.sis.sdk.e8.domain.door.res.AuthDoorDeviceFindRes;
import org.dromara.sis.sdk.e8.domain.voucher.req.IssueVoucherReq;
import org.dromara.sis.sdk.unview.UnViewAiBoxApi;
import org.dromara.sis.sdk.unview.model.UvModel;
@ -45,6 +47,7 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
private final UnViewAiBoxApi unViewAiBoxApi;
private final SisAuthRecordMapper baseMapper;
private final VoucherControlService e8VouchService;
private final DoorDeviceService e8DoorDeviceService;
private final ISisPersonLibService sisPersonLibService;
private final ISisEEightRefService sisEEightRefService;
private final AccessControlService e8AccessControlService;
@ -224,17 +227,26 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
Assert.notNull(vId, "E8平台发行凭证失败");
log.info("E8平台发行凭证完成!");
log.info("E8平台授权凭证");
// E8平台授权门列表
List<AuthDoorDeviceFindRes> authDoor = e8DoorDeviceService.getPageAuthDoorDeviceList();
Map<Long, AuthDoorDeviceFindRes> authDoorMap = authDoor.stream()
.collect(Collectors.toMap(AuthDoorDeviceFindRes::getDeviceId, authDoorRes -> authDoorRes));
List<CustomerAuthAddReq.AuthGroupData> authList = acList.stream()
// TODO 阶段调试E8人脸设备非E8且非人脸设备不处理
.filter(acVo -> acVo.getControlType() != 1 && acVo.getAccessType() != 2)
.map(acVo -> {
CustomerAuthAddReq.AuthGroupData auth = new CustomerAuthAddReq.AuthGroupData();
auth.setType(0);
auth.setGatewayType(1);
auth.setId(Long.parseLong(acVo.getAccessCode()));
return auth;
CustomerAuthAddReq.AuthGroupData door = new CustomerAuthAddReq.AuthGroupData();
door.setType(0);
door.setGatewayType(1);
Long id = Long.parseLong(acVo.getOutCode());
door.setId(id);
// 如果 authDoorMap 中存在对应的 deviceId则更新 id
AuthDoorDeviceFindRes authDoorRes = authDoorMap.get(id);
if (authDoorRes != null) {
door.setId(authDoorRes.getId());
}
return door;
}).toList();
CustomerAuthAddReq authReq = new CustomerAuthAddReq();