feat(auth): 优化授权组相关功能
This commit is contained in:
parent
bbe911119c
commit
b7a4e512f0
@ -6,9 +6,6 @@ import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.dromara.sis.domain.bo.SisElevatorFloorRefBo;
|
||||
import org.dromara.sis.domain.vo.SisElevatorFloorRefVo;
|
||||
import org.dromara.sis.service.ISisElevatorFloorRefService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -40,8 +37,6 @@ public class SisElevatorInfoController extends BaseController {
|
||||
|
||||
private final ISisElevatorInfoService sisElevatorInfoService;
|
||||
|
||||
private final ISisElevatorFloorRefService sisElevatorFloorRefService;
|
||||
|
||||
/**
|
||||
* 查询电梯基本信息列表
|
||||
*/
|
||||
@ -108,26 +103,4 @@ public class SisElevatorInfoController extends BaseController {
|
||||
@PathVariable("elevatorIds") Long[] elevatorIds) {
|
||||
return toAjax(sisElevatorInfoService.deleteWithValidByIds(List.of(elevatorIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增电梯⇄楼层关联
|
||||
*
|
||||
* @param bo 电梯⇄楼层关联
|
||||
*/
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/ref/add")
|
||||
public R<Void> addRef(@Validated(AddGroup.class) @RequestBody SisElevatorFloorRefBo bo) {
|
||||
return toAjax(sisElevatorFloorRefService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询电梯⇄楼层关联
|
||||
*
|
||||
* @param id 电梯id
|
||||
*/
|
||||
@GetMapping("/ref/{id}")
|
||||
public R<List<SisElevatorFloorRefVo>> queryRef(@NotNull(message = "电梯id不能为空")
|
||||
@PathVariable("id") Long id) {
|
||||
return R.ok(sisElevatorFloorRefService.queryByAuthGroupId(id));
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
@ -18,7 +19,7 @@ import java.util.Date;
|
||||
* 授权组视图对象 sis_auth_group
|
||||
*
|
||||
* @author lsm
|
||||
* @date 2025-07-23
|
||||
* @since 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@ -52,5 +53,19 @@ public class SisAuthGroupVo implements Serializable {
|
||||
@ExcelProperty(value = "是否启用(0:禁用,1启用)")
|
||||
private Boolean isEnable;
|
||||
|
||||
/**
|
||||
* 门禁id
|
||||
*/
|
||||
private Collection<Long> acIds;
|
||||
|
||||
/**
|
||||
* 电梯
|
||||
*/
|
||||
private Collection<Long> eleIds;
|
||||
|
||||
/**
|
||||
* 门禁id
|
||||
*/
|
||||
private Collection<Long> floorIds;
|
||||
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ public interface ISisAuthGroupRefService {
|
||||
/**
|
||||
* 通过权限组id,删除授权设备列表
|
||||
*
|
||||
* @param groupId 权限id
|
||||
* @param groupIds 权限id
|
||||
*/
|
||||
Boolean deleteByGroupId(Long groupId);
|
||||
Boolean deleteByGroupId(Collection<Long> groupIds);
|
||||
}
|
||||
|
@ -109,9 +109,17 @@ public interface ISisAuthRecordService {
|
||||
/**
|
||||
* 批量删除授权记录
|
||||
*
|
||||
* @param ids 入驻员工ids
|
||||
* @param ids 入驻员工ids
|
||||
* @param e8Ids e8id
|
||||
*/
|
||||
Boolean deleteByPersonIds(Collection<Long> ids, Collection<Long> e8Ids);
|
||||
|
||||
/**
|
||||
* 根据权限组ID,查询授权记录
|
||||
*
|
||||
* @param groupIds 权限组ID
|
||||
*/
|
||||
Boolean queryByGroupIds(Collection<Long> groupIds);
|
||||
|
||||
|
||||
}
|
||||
|
@ -74,6 +74,13 @@ public interface ISisElevatorFloorRefService {
|
||||
*/
|
||||
List<SisElevatorFloorRefVo> queryByAuthGroupId(Long authGroupId);
|
||||
|
||||
/**
|
||||
* 根据权限组id,删除电梯⇄楼层关联信息
|
||||
*
|
||||
* @param authGroupIds 权限组ids
|
||||
*/
|
||||
Boolean deleteByAuthGroupId(Collection<Long> authGroupIds);
|
||||
|
||||
/**
|
||||
* 批量更新电梯⇄楼层通道关联信息
|
||||
*
|
||||
|
@ -108,7 +108,7 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(Long authGroupId, Collection<Long> acIds, Collection<Long> eleIds, Collection<Long> floorIds) {
|
||||
// 删除权限组⇄设备关联关系
|
||||
this.deleteByGroupId(authGroupId);
|
||||
this.deleteByGroupId(List.of(authGroupId));
|
||||
|
||||
log.info("开始写入授权组门禁,acIds:{}", acIds);
|
||||
boolean check = false;
|
||||
@ -203,12 +203,13 @@ public class SisAuthGroupRefServiceImpl implements ISisAuthGroupRefService {
|
||||
/**
|
||||
* 通过权限组id,删除授权设备列表
|
||||
*
|
||||
* @param groupId 权限id
|
||||
* @param groupIds 权限id
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteByGroupId(Long groupId) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteByGroupId(Collection<Long> groupIds) {
|
||||
LambdaQueryWrapper<SisAuthGroupRef> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(SisAuthGroupRef::getAuthGroupId, groupId);
|
||||
lqw.in(SisAuthGroupRef::getAuthGroupId, groupIds);
|
||||
return baseMapper.delete(lqw) > 0;
|
||||
}
|
||||
}
|
||||
|
@ -10,6 +10,9 @@ 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.sis.domain.SisElevatorFloorRef;
|
||||
import org.dromara.sis.domain.vo.SisAuthGroupRefVo;
|
||||
import org.dromara.sis.domain.vo.SisElevatorFloorRefVo;
|
||||
import org.dromara.sis.service.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.sis.domain.bo.SisAuthGroupBo;
|
||||
@ -35,8 +38,9 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
|
||||
private final SisAuthGroupMapper baseMapper;
|
||||
|
||||
private final ISisAuthRecordService sisAuthRecordService;
|
||||
private final ISisAuthGroupRefService sisAuthGroupRefService;
|
||||
|
||||
private final ISisElevatorFloorRefService sisElevatorFloorRefService;
|
||||
|
||||
|
||||
/**
|
||||
@ -47,7 +51,21 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
*/
|
||||
@Override
|
||||
public SisAuthGroupVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
|
||||
// 门禁设备
|
||||
List<SisAuthGroupRefVo> groupRefs = sisAuthGroupRefService.queryListByGroupId(id);
|
||||
Collection<Long> acIds = groupRefs.stream().filter(vo -> vo.getDeviceType() == 1).map(SisAuthGroupRefVo::getDeviceId).toList();
|
||||
|
||||
// 楼层
|
||||
List<SisElevatorFloorRefVo> floorRefs = sisElevatorFloorRefService.queryByAuthGroupId(id);
|
||||
Collection<Long> floorIds = floorRefs.stream().map(SisElevatorFloorRefVo::getFloorId).toList();
|
||||
|
||||
SisAuthGroupVo vo = baseMapper.selectVoById(id);
|
||||
|
||||
vo.setAcIds(acIds);
|
||||
vo.setFloorIds(floorIds);
|
||||
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -144,10 +162,25 @@ public class SisAuthGroupServiceImpl implements ISisAuthGroupService {
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
boolean auth = sisAuthRecordService.queryByGroupIds(ids);
|
||||
Assert.isTrue(!auth, "授权组已分配");
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
|
||||
boolean flag = baseMapper.deleteByIds(ids) > 0;
|
||||
Assert.isTrue(flag, "删除授权组失败");
|
||||
|
||||
if (flag) {
|
||||
// 删除授权组⇄授权设备关联表
|
||||
Boolean ref = sisAuthGroupRefService.deleteByGroupId(ids);
|
||||
Assert.isTrue(ref, "删除授权组⇄授权设备失败");
|
||||
|
||||
// 删除授权组⇄电梯⇄楼层
|
||||
Boolean floor = sisElevatorFloorRefService.deleteByAuthGroupId(ids);
|
||||
Assert.isTrue(floor, "删除授权组⇄电梯⇄楼层失败");
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
}
|
||||
|
@ -375,4 +375,17 @@ public class SisAuthRecordServiceImpl implements ISisAuthRecordService {
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据权限组ID,查询授权记录
|
||||
*
|
||||
* @param groupIds 权限组IDs
|
||||
*/
|
||||
@Override
|
||||
public Boolean queryByGroupIds(Collection<Long> groupIds){
|
||||
LambdaQueryWrapper<SisAuthRecord> lqw = Wrappers.lambdaQuery();
|
||||
lqw.in(SisAuthRecord::getGroupId, groupIds);
|
||||
List<SisAuthRecordVo> authVoList = baseMapper.selectVoList(lqw);
|
||||
return CollUtil.isNotEmpty(authVoList);
|
||||
}
|
||||
}
|
||||
|
@ -166,17 +166,30 @@ public class SisElevatorFloorRefServiceImpl implements ISisElevatorFloorRefServi
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据电梯id,获取电梯⇄楼层关联信息
|
||||
* 根据权限组id,获取电梯⇄楼层关联信息
|
||||
*
|
||||
* @param authGroupId 电梯id
|
||||
*/
|
||||
@Override
|
||||
public List<SisElevatorFloorRefVo> queryByAuthGroupId(Long authGroupId) {
|
||||
LambdaQueryWrapper<SisElevatorFloorRef> lqw = Wrappers.lambdaQuery();
|
||||
lqw.eq(SisElevatorFloorRef::getElevatorId, authGroupId);
|
||||
lqw.eq(SisElevatorFloorRef::getAuthGroupId, authGroupId);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据权限组id,删除电梯⇄楼层关联信息
|
||||
*
|
||||
* @param authGroupIds 权限组ids
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteByAuthGroupId(Collection<Long> authGroupIds) {
|
||||
LambdaQueryWrapper<SisElevatorFloorRef> lqw = Wrappers.lambdaQuery();
|
||||
lqw.in(SisElevatorFloorRef::getAuthGroupId, authGroupIds);
|
||||
return baseMapper.delete(lqw) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新电梯⇄楼层通道关联信息
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user