refactor(auth): 权限组⇄设备关联功能完善
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
This commit is contained in:
@@ -63,11 +63,8 @@ public class AuthTimer {
|
||||
/**
|
||||
* 每两分钟执行一次
|
||||
*/
|
||||
@Scheduled(cron = "0 */1 * * * ?")
|
||||
// @Scheduled(cron = "0 */1 * * * ?")
|
||||
public void autoAuth() {
|
||||
|
||||
// TenantHelper.setDynamic("000000", true);
|
||||
|
||||
List<RemoteResidentPersonVo> unAuthPerson = remoteResidentPersonService.queryUnAuthPerson();
|
||||
// if (CollUtil.isNotEmpty(unAuthPerson)) {
|
||||
//
|
||||
|
@@ -1,5 +1,6 @@
|
||||
package org.dromara.sis.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.dromara.sis.domain.SisAuthGroupRef;
|
||||
import org.dromara.sis.domain.vo.SisAuthGroupRefVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
@@ -8,8 +9,9 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
* 权限组⇄设备关联Mapper接口
|
||||
*
|
||||
* @author lsm
|
||||
* @date 2025-07-23
|
||||
* @since 2025-07-23
|
||||
*/
|
||||
@Mapper
|
||||
public interface SisAuthGroupRefMapper extends BaseMapperPlus<SisAuthGroupRef, SisAuthGroupRefVo> {
|
||||
|
||||
}
|
||||
|
@@ -346,8 +346,8 @@ public class HikAlarmCallBack implements HCNetSDK.FMSGCallBack_V31 {
|
||||
acIds.forEach(id -> {
|
||||
// controlType 1-门禁
|
||||
Long deviceId = bindRefList.stream().filter(vo -> vo.getBindId().equals(id) && vo.getControlType() == 1).findFirst().map(SisDeviceBindRefVo::getBindId).orElse(null);
|
||||
SisAccessControlVo ac = accessControlService.queryById(deviceId);
|
||||
if (ac != null) {
|
||||
if (deviceId != null) {
|
||||
SisAccessControlVo ac = accessControlService.queryById(deviceId);
|
||||
log.info("调用门禁服务远程开门,doorName:{}", ac.getAccessName());
|
||||
RemoteOpenDoorReq req = new RemoteOpenDoorReq();
|
||||
req.setType(0);
|
||||
|
@@ -44,10 +44,13 @@ public interface ISisAuthGroupRefService {
|
||||
/**
|
||||
* 新增权限组⇄设备关联
|
||||
*
|
||||
* @param bo 权限组⇄设备关联
|
||||
* @param authGroupId 权限组id
|
||||
* @param acIds 门禁id
|
||||
* @param eleIds 电梯id
|
||||
* @param floorIds 楼层id
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(SisAuthGroupRefBo bo);
|
||||
Boolean insertByBo(Long authGroupId, Collection<Long> acIds, Collection<Long> eleIds, Collection<Long> floorIds);
|
||||
|
||||
/**
|
||||
* 修改权限组⇄设备关联
|
||||
@@ -66,12 +69,17 @@ public interface ISisAuthGroupRefService {
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 通过权限组id,查询授权设备列表
|
||||
*
|
||||
* @param groupId 权限id
|
||||
*/
|
||||
List<SisAuthGroupRefVo> queryListByGroupId(Long groupId);
|
||||
|
||||
/**
|
||||
* 通过权限组id,删除授权设备列表
|
||||
*
|
||||
* @param groupId 权限id
|
||||
*/
|
||||
Boolean deleteByGroupId(Long groupId);
|
||||
}
|
||||
|
@@ -1,7 +1,8 @@
|
||||
package org.dromara.sis.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -9,12 +10,19 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.property.api.RemoteFloorService;
|
||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||
import org.dromara.sis.domain.bo.SisElevatorFloorRefBo;
|
||||
import org.dromara.sis.domain.vo.SisElevatorInfoVo;
|
||||
import org.dromara.sis.service.ISisElevatorFloorRefService;
|
||||
import org.dromara.sis.service.ISisElevatorInfoService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.sis.domain.bo.SisAuthGroupRefBo;
|
||||
import org.dromara.sis.domain.vo.SisAuthGroupRefVo;
|
||||
import org.dromara.sis.domain.SisAuthGroupRef;
|
||||
import org.dromara.sis.mapper.SisAuthGroupRefMapper;
|
||||
import org.dromara.sis.service.ISisAuthGroupRefService;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -27,12 +35,18 @@ import java.util.Collection;
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
|
||||
private final SisAuthGroupRefMapper baseMapper;
|
||||
|
||||
private final ISisElevatorInfoService elevatorInfoService;
|
||||
private final ISisElevatorFloorRefService sisElevatorFloorRefService;
|
||||
|
||||
@DubboReference
|
||||
private RemoteFloorService remoteFloorService;
|
||||
|
||||
/**
|
||||
* 查询权限组⇄设备关联
|
||||
*
|
||||
@@ -40,7 +54,7 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
* @return 权限组⇄设备关联
|
||||
*/
|
||||
@Override
|
||||
public SisAuthGroupRefVo queryById(Long id){
|
||||
public SisAuthGroupRefVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
@@ -83,18 +97,58 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
/**
|
||||
* 新增权限组⇄设备关联
|
||||
*
|
||||
* @param bo 权限组⇄设备关联
|
||||
* @param authGroupId 权限组id
|
||||
* @param acIds 门禁id
|
||||
* @param eleIds 电梯id
|
||||
* @param floorIds 授权楼层id
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(SisAuthGroupRefBo bo) {
|
||||
SisAuthGroupRef add = MapstructUtils.convert(bo, SisAuthGroupRef.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(Long authGroupId, Collection<Long> acIds, Collection<Long> eleIds, Collection<Long> floorIds) {
|
||||
// 删除权限组⇄设备关联关系
|
||||
this.deleteByGroupId(authGroupId);
|
||||
|
||||
// 电梯设备
|
||||
List<SisElevatorInfoVo> eleVoList = elevatorInfoService.queryListByIds(eleIds);
|
||||
|
||||
log.info("开始写入授权组门禁,acIds:{}", acIds);
|
||||
boolean check = false;
|
||||
for (Long ac : acIds) {
|
||||
SisAuthGroupRef groupRef = new SisAuthGroupRef();
|
||||
groupRef.setAuthGroupId(authGroupId);
|
||||
groupRef.setDeviceType(1L);
|
||||
groupRef.setDeviceId(ac);
|
||||
check = baseMapper.insert(groupRef) > 0;
|
||||
Assert.isTrue(check, "写入授权组门禁失败!");
|
||||
}
|
||||
return flag;
|
||||
log.info("写入授权组门禁完成");
|
||||
|
||||
log.info("开始写入授权组电梯,eleIds:{}", eleIds);
|
||||
for (SisElevatorInfoVo ele : eleVoList) {
|
||||
SisAuthGroupRef groupRef = new SisAuthGroupRef();
|
||||
groupRef.setAuthGroupId(authGroupId);
|
||||
groupRef.setDeviceType(2L);
|
||||
groupRef.setDeviceId(ele.getElevatorId());
|
||||
check = baseMapper.insert(groupRef) > 0;
|
||||
Assert.isTrue(check, "写入授权组电梯失败!");
|
||||
|
||||
log.info("开始写入授权组电梯楼层,floorIds:{}", floorIds);
|
||||
// 获取该电梯所在单元的楼层信息
|
||||
List<RemoteFloorVo> floorVoList = remoteFloorService.queryByUnitId(ele.getUnitId());
|
||||
// 该单元所有楼层id
|
||||
List<Long> allFloors = floorVoList.stream().map(RemoteFloorVo::getId).toList();
|
||||
// 对比找出授权楼层id
|
||||
List<Long> authFloors = floorIds.stream().filter(allFloors::contains).toList();
|
||||
SisElevatorFloorRefBo refBo = new SisElevatorFloorRefBo();
|
||||
refBo.setAuthGroupId(authGroupId);
|
||||
refBo.setElevatorId(ele.getElevatorId());
|
||||
refBo.setFloorIds(authFloors);
|
||||
sisElevatorFloorRefService.insertByBo(refBo);
|
||||
}
|
||||
log.info("写入授权组电梯完成");
|
||||
|
||||
return check;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -113,7 +167,7 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(SisAuthGroupRef entity){
|
||||
private void validEntityBeforeSave(SisAuthGroupRef entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
@@ -126,7 +180,7 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
@@ -138,9 +192,21 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
* @param groupId 权限id
|
||||
*/
|
||||
@Override
|
||||
public List<SisAuthGroupRefVo> queryListByGroupId(Long groupId){
|
||||
public List<SisAuthGroupRefVo> queryListByGroupId(Long groupId) {
|
||||
LambdaQueryWrapper<SisAuthGroupRef> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(SisAuthGroupRef::getAuthGroupId, groupId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过权限组id,删除授权设备列表
|
||||
*
|
||||
* @param groupId 权限id
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteByGroupId(Long groupId) {
|
||||
LambdaQueryWrapper<SisAuthGroupRef> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(SisAuthGroupRef::getAuthGroupId, groupId);
|
||||
return baseMapper.delete(lqw) > 0;
|
||||
}
|
||||
}
|
||||
|
@@ -1,8 +1,6 @@
|
||||
package org.dromara.sis.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import org.apache.dubbo.config.annotation.DubboReference;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
@@ -12,12 +10,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.property.api.RemoteFloorService;
|
||||
import org.dromara.property.api.domain.vo.RemoteFloorVo;
|
||||
import org.dromara.sis.domain.bo.SisAuthGroupRefBo;
|
||||
import org.dromara.sis.domain.bo.SisElevatorFloorRefBo;
|
||||
import org.dromara.sis.domain.vo.SisAccessControlVo;
|
||||
import org.dromara.sis.domain.vo.SisElevatorInfoVo;
|
||||
import org.dromara.sis.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.sis.domain.bo.SisAuthGroupBo;
|
||||
@@ -43,13 +35,10 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
|
||||
private final SisAuthGroupMapper baseMapper;
|
||||
|
||||
private final ISisElevatorInfoService elevatorInfoService;
|
||||
private final ISisAccessControlService accessControlService;
|
||||
private final ISisAuthGroupRefService sisAuthGroupRefService;
|
||||
private final ISisElevatorFloorRefService sisElevatorFloorRefService;
|
||||
|
||||
@DubboReference
|
||||
private RemoteFloorService remoteFloorService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询授权组
|
||||
*
|
||||
@@ -57,7 +46,7 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
* @return 授权组
|
||||
*/
|
||||
@Override
|
||||
public SisAuthGroupVo queryById(Long id){
|
||||
public SisAuthGroupVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
@@ -109,51 +98,11 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
add.setName(bo.getName());
|
||||
add.setGroupType(bo.getGroupType());
|
||||
|
||||
// 电梯设备
|
||||
List<SisElevatorInfoVo> eleVoList = elevatorInfoService.queryListByIds(bo.getEleIds());
|
||||
if (CollUtil.isEmpty(eleVoList)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
Assert.isTrue(flag, "新增授权组失败");
|
||||
|
||||
if (flag) {
|
||||
log.info("开始写入授权组门禁,acIds:{}", bo.getAcIds());
|
||||
boolean check;
|
||||
for(Long ac : bo.getAcIds()){
|
||||
SisAuthGroupRefBo groupRef = new SisAuthGroupRefBo();
|
||||
groupRef.setAuthGroupId(add.getId());
|
||||
groupRef.setDeviceType(1L);
|
||||
groupRef.setDeviceId(ac);
|
||||
check = sisAuthGroupRefService.insertByBo(groupRef);
|
||||
Assert.isTrue(check, "写入授权组门禁失败!");
|
||||
}
|
||||
log.info("写入授权组门禁完成");
|
||||
|
||||
log.info("开始写入授权组电梯,eleIds:{}", bo.getEleIds());
|
||||
for (SisElevatorInfoVo ele : eleVoList) {
|
||||
SisAuthGroupRefBo groupRef = new SisAuthGroupRefBo();
|
||||
groupRef.setAuthGroupId(add.getId());
|
||||
groupRef.setDeviceType(2L);
|
||||
groupRef.setDeviceId(ele.getElevatorId());
|
||||
check = sisAuthGroupRefService.insertByBo(groupRef);
|
||||
Assert.isTrue(check, "写入授权组电梯失败!");
|
||||
|
||||
log.info("开始写入授权组电梯楼层,floorIds:{}", bo.getFloorIds());
|
||||
// 获取该电梯所在单元的楼层信息
|
||||
List<RemoteFloorVo> floorVoList = remoteFloorService.queryByUnitId(ele.getUnitId());
|
||||
// 该单元所有楼层id
|
||||
List<Long> allFloors = floorVoList.stream().map(RemoteFloorVo::getId).toList();
|
||||
// 对比找出授权楼层id
|
||||
List<Long> authFloors = bo.getFloorIds().stream().filter(allFloors::contains).toList();
|
||||
SisElevatorFloorRefBo refBo = new SisElevatorFloorRefBo();
|
||||
refBo.setAuthGroupId(add.getId());
|
||||
refBo.setElevatorId(ele.getElevatorId());
|
||||
refBo.setFloorIds(authFloors);
|
||||
sisElevatorFloorRefService.insertByBo(refBo);
|
||||
}
|
||||
log.info("写入授权组电梯完成");
|
||||
flag = sisAuthGroupRefService.insertByBo(add.getId(), bo.getAcIds(), bo.getEleIds(), bo.getFloorIds());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
@@ -165,16 +114,24 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(SisAuthGroupBo bo) {
|
||||
SisAuthGroup update = MapstructUtils.convert(bo, SisAuthGroup.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
Assert.notNull(update, "数据转换错误");
|
||||
boolean flag = baseMapper.updateById(update) > 0;
|
||||
Assert.isTrue(flag, "修改授权组失败");
|
||||
|
||||
if (flag) {
|
||||
flag = sisAuthGroupRefService.insertByBo(update.getId(), bo.getAcIds(), bo.getEleIds(), bo.getFloorIds());
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(SisAuthGroup entity){
|
||||
private void validEntityBeforeSave(SisAuthGroup entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
@@ -187,7 +144,7 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
|
Reference in New Issue
Block a user