Skip to content

Commit 6395415

Browse files
authored
[Fix-4492] Fix role menu update issue (#4499)
1 parent 7a1f87f commit 6395415

1 file changed

Lines changed: 18 additions & 22 deletions

File tree

dinky-admin/src/main/java/org/dinky/service/impl/RoleMenuServiceImpl.java

Lines changed: 18 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,46 +28,42 @@
2828
import org.dinky.service.RoleMenuService;
2929

3030
import java.util.List;
31+
import java.util.stream.Collectors;
3132

3233
import org.springframework.stereotype.Service;
34+
import org.springframework.transaction.annotation.Transactional;
3335

3436
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
3537

3638
import cn.hutool.core.collection.CollUtil;
3739

3840
@Service
3941
public class RoleMenuServiceImpl extends SuperServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
42+
4043
@Override
44+
@Transactional(rollbackFor = Exception.class)
4145
public Result<Void> assignMenuToRole(AssignMenuToRoleDTO assignMenuToRoleDto) {
4246

4347
if (CollUtil.isEmpty(assignMenuToRoleDto.getMenuIds())) {
4448
return Result.failed(Status.SELECT_MENU);
4549
}
4650

47-
int insertSize = 0;
4851
// 先删除原有的关系
49-
List<RoleMenu> roleMenus = getBaseMapper()
50-
.selectList(
51-
new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, assignMenuToRoleDto.getRoleId()));
52-
53-
// if not empty , delete all role menus
54-
if (CollUtil.isNotEmpty(roleMenus)) {
55-
roleMenus.forEach(rm -> {
56-
getBaseMapper().delete(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getMenuId, rm.getMenuId()));
57-
});
58-
}
59-
60-
// then insert new role menus
61-
for (Integer id : assignMenuToRoleDto.getMenuIds()) {
62-
RoleMenu roleMenu = new RoleMenu();
63-
roleMenu.setRoleId(assignMenuToRoleDto.getRoleId());
64-
roleMenu.setMenuId(id);
65-
insertSize += getBaseMapper().insert(roleMenu);
66-
}
67-
68-
if (assignMenuToRoleDto.getMenuIds().size() == insertSize) {
52+
getBaseMapper()
53+
.delete(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, assignMenuToRoleDto.getRoleId()));
54+
List<RoleMenu> newRoles = assignMenuToRoleDto.getMenuIds().stream()
55+
.map(menuId -> {
56+
RoleMenu roleMenu = new RoleMenu();
57+
roleMenu.setRoleId(assignMenuToRoleDto.getRoleId());
58+
roleMenu.setMenuId(menuId);
59+
return roleMenu;
60+
})
61+
.collect(Collectors.toList());
62+
boolean res = saveBatch(newRoles);
63+
if (res) {
6964
return Result.succeed(Status.ASSIGN_MENU_SUCCESS);
65+
} else {
66+
return Result.failed(Status.ASSIGN_MENU_FAILED);
7067
}
71-
return Result.failed(Status.ASSIGN_MENU_FAILED);
7268
}
7369
}

0 commit comments

Comments
 (0)