use of com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper in project diboot by dibo-software.
the class IamPositionServiceImpl method updateUserPositionRelations.
@Transactional(rollbackFor = Exception.class)
@Override
public boolean updateUserPositionRelations(String userType, Long userId, List<IamUserPosition> userPositionList) {
if (V.isEmpty(userType) || V.isEmpty(userId)) {
throw new BusinessException(Status.FAIL_OPERATION, "参数错误");
}
// 校验用户ID是否存在
if (V.notEmpty(userPositionList)) {
for (IamUserPosition userPosition : userPositionList) {
userPosition.setUserType(userType);
userPosition.setUserId(userId);
}
}
// 删除所有旧关联数据
LambdaQueryWrapper deleteWrapper = Wrappers.<IamUserPosition>lambdaQuery().eq(IamUserPosition::getUserType, userType).eq(IamUserPosition::getUserId, userId);
long count = iamUserPositionMapper.selectCount(deleteWrapper);
if (count > 0) {
iamUserPositionMapper.delete(deleteWrapper);
}
// 批量设置新的岗位列表
if (V.isEmpty(userPositionList)) {
return true;
}
for (IamUserPosition userPosition : userPositionList) {
userPosition.setId(null);
iamUserPositionMapper.insert(userPosition);
}
return true;
}
use of com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper in project diboot by dibo-software.
the class IamResourcePermissionServiceImpl method updateMenuAndPermissions.
@Override
@Transactional(rollbackFor = Exception.class)
public void updateMenuAndPermissions(IamResourcePermissionDTO iamResourcePermissionDTO) {
// 检查是否设置了自身id为parentId,如果设置parentId与自身id相同,将会导致非常严重的潜在隐患
if (V.equals(iamResourcePermissionDTO.getId(), iamResourcePermissionDTO.getParentId())) {
throw new BusinessException(Status.FAIL_OPERATION, "不可设置父级菜单资源为自身");
}
// 设置menu的接口列表
if (V.notEmpty(iamResourcePermissionDTO.getApiSetList())) {
iamResourcePermissionDTO.setApiSet(S.join(iamResourcePermissionDTO.getApiSetList(), ","));
}
// 更新menu
this.updateEntity(iamResourcePermissionDTO);
List<IamResourcePermissionDTO> permissionList = iamResourcePermissionDTO.getPermissionList();
permissionList.forEach(p -> {
p.setParentId(iamResourcePermissionDTO.getId());
p.setDisplayType(Cons.RESOURCE_PERMISSION_DISPLAY_TYPE.PERMISSION.name());
});
// 需要更新的列表
List<IamResourcePermissionDTO> updatePermissionList = permissionList.stream().filter(p -> V.notEmpty(p.getId())).collect(Collectors.toList());
// 需要新建的列表
List<IamResourcePermissionDTO> createPermissionDTOList = permissionList.stream().filter(p -> V.isEmpty(p.getId())).collect(Collectors.toList());
List<Long> updatePermissionIdList = updatePermissionList.stream().map(IamResourcePermission::getId).collect(Collectors.toList());
// 批量删除不存在的按钮/权限列表
List<IamResourcePermission> oldPermissionList = this.getEntityList(Wrappers.<IamResourcePermission>lambdaQuery().eq(IamResourcePermission::getParentId, iamResourcePermissionDTO.getId()).eq(IamResourcePermission::getDisplayType, Cons.RESOURCE_PERMISSION_DISPLAY_TYPE.PERMISSION));
if (V.notEmpty(oldPermissionList)) {
LambdaQueryWrapper<IamResourcePermission> deleteWrapper = Wrappers.<IamResourcePermission>lambdaQuery().eq(IamResourcePermission::getParentId, iamResourcePermissionDTO.getId()).eq(IamResourcePermission::getDisplayType, Cons.RESOURCE_PERMISSION_DISPLAY_TYPE.PERMISSION);
if (V.notEmpty(updatePermissionIdList)) {
deleteWrapper.notIn(IamResourcePermission::getId, updatePermissionIdList);
}
this.deleteEntities(deleteWrapper);
}
// 批量新建按钮/权限列表
if (V.notEmpty(createPermissionDTOList)) {
List<IamResourcePermission> createPermissionList = BeanUtils.convertList(createPermissionDTOList, IamResourcePermission.class);
this.createEntities(createPermissionList);
}
// 批量更新按钮/权限列表
if (V.notEmpty(updatePermissionList)) {
for (IamResourcePermissionDTO updatePermission : updatePermissionList) {
this.updateEntity(updatePermission);
}
}
// 检测是否有脏数据存在
if (hasDirtyData()) {
throw new BusinessException(Status.FAIL_OPERATION, "父级节点不可设置在自己的子节点上");
}
// 清理脏数据
// this.clearDirtyData();
}
use of com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper in project diboot by dibo-software.
the class IamAccountServiceImpl method getAuthAccount.
@Override
public String getAuthAccount(String userType, Long userId) {
LambdaQueryWrapper<IamAccount> queryWrapper = new QueryWrapper<IamAccount>().lambda().select(IamAccount::getAuthAccount).eq(IamAccount::getUserType, userType).eq(IamAccount::getUserId, userId);
IamAccount account = getSingleEntity(queryWrapper);
return account != null ? account.getAuthAccount() : null;
}
use of com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper in project diboot by dibo-software.
the class TestDictBinder method testBinder.
@Test
public void testBinder() {
// 加载测试数据
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(User::getId, 1001L, 1002L);
List<User> userList = userService.getEntityList(queryWrapper);
// 自动绑定
List<UserVO> voList = Binder.convertAndBindRelations(userList, UserVO.class);
// 验证绑定结果
Assert.assertTrue(V.notEmpty(voList));
for (UserVO vo : voList) {
// 验证直接关联和通过中间表间接关联的绑定
Assert.assertNotNull(vo.getGenderLabel());
System.out.println(JSON.stringify(vo));
}
// 单个entity接口测试
UserVO singleVO = BeanUtils.convert(userList.get(1), UserVO.class);
Binder.bindRelations(singleVO);
// 验证直接关联和通过中间表间接关联的绑定
Assert.assertNotNull(singleVO.getGenderLabel());
System.out.println(JSON.stringify(singleVO));
}
use of com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper in project diboot by dibo-software.
the class TestEntityListBinder method testComplexBinder.
/**
* 验证通过中间表间接关联的绑定
*/
@Test
public void testComplexBinder() {
// 加载测试数据
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(User::getId, 1001L, 1002L);
List<User> userList = userService.getEntityList(queryWrapper);
// 自动绑定
List<EntityListComplexVO> voList = Binder.convertAndBindRelations(userList, EntityListComplexVO.class);
// 验证绑定结果
Assert.assertTrue(V.notEmpty(voList));
for (EntityListComplexVO vo : voList) {
// 验证通过中间表间接关联的绑定
Assert.assertTrue(V.notEmpty(vo.getRoleList()));
System.out.println(JSON.stringify(vo));
}
}
Aggregations