Skip to content

Commit 6a3b892

Browse files
authored
[fix] role menu update issue (#4492)
1 parent 0447088 commit 6a3b892

File tree

1 file changed

+17
-23
lines changed

1 file changed

+17
-23
lines changed

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

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@
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

@@ -38,36 +40,28 @@
3840
@Service
3941
public class RoleMenuServiceImpl extends SuperServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
4042
@Override
43+
@Transactional(rollbackFor = Exception.class)
4144
public Result<Void> assignMenuToRole(AssignMenuToRoleDTO assignMenuToRoleDto) {
4245

4346
if (CollUtil.isEmpty(assignMenuToRoleDto.getMenuIds())) {
4447
return Result.failed(Status.SELECT_MENU);
4548
}
46-
47-
int insertSize = 0;
4849
// 先删除原有的关系
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) {
50+
getBaseMapper()
51+
.delete(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, assignMenuToRoleDto.getRoleId()));
52+
List<RoleMenu> newRoles = assignMenuToRoleDto.getMenuIds().stream()
53+
.map(menuId -> {
54+
RoleMenu roleMenu = new RoleMenu();
55+
roleMenu.setRoleId(assignMenuToRoleDto.getRoleId());
56+
roleMenu.setMenuId(menuId);
57+
return roleMenu;
58+
})
59+
.collect(Collectors.toList());
60+
boolean res = saveBatch(newRoles);
61+
if (res) {
6962
return Result.succeed(Status.ASSIGN_MENU_SUCCESS);
63+
} else {
64+
return Result.failed(Status.ASSIGN_MENU_FAILED);
7065
}
71-
return Result.failed(Status.ASSIGN_MENU_FAILED);
7266
}
7367
}

0 commit comments

Comments
 (0)