谭斌 2 лет назад
Родитель
Сommit
4700a0bcc0

+ 27 - 1
authorize-api-service/src/main/java/com/xy/service/impl/SysRoleServiceImpl.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xy.consts.CommConsts;
 import com.xy.dto.BatchDeleteDto;
 import com.xy.dto.CommDto;
 import com.xy.dto.SysRoleDto;
@@ -35,6 +36,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import static com.xy.utils.PlusBeans.toIPage;
 import static com.xy.utils.PlusBeans.toPageBean;
@@ -69,7 +71,31 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         }
         SysRole sysRole = Beans.copy(SysRole.class, sysRoleDto).saveOrUpdate(RedisCache.getLoginId(Long.class), id);
         saveOrUpdate(sysRole);
-        
+        List<Long> menuIds = sysRoleDto.getMenuIds();
+        if (CollUtil.isNotEmpty(menuIds)) {
+            Boolean selectAdmin = false;
+            if (CommConsts.ADMIN_ROLE_CODE.equals(sysRole.getCode())) {
+                selectAdmin = true;
+            }
+
+            Long sysRoleId = sysRole.getId();
+            sysRoleMenuService.remove(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, sysRoleId));
+
+            //角色菜单绑定
+            Boolean finalSelectAdmin = selectAdmin;
+            List<SysRoleMenu> sysRoleMenus = menuIds.stream().map(menuId -> {
+                SysRoleMenu sysRoleMenu = new SysRoleMenu()
+                        .createId()
+                        .setSelectAdmin(finalSelectAdmin)
+                        .setMenuId(menuId)
+                        .setRoleId(sysRoleId);
+                return sysRoleMenu;
+
+            }).collect(Collectors.toList());
+            //批量保存菜单角色绑定关系
+            sysRoleMenuService.saveBatch(sysRoleMenus);
+        }
+
         return R.ok(sysRole.getId());
     }
 

+ 4 - 0
authorize-api/src/main/java/com/xy/dto/SysRoleDto.java

@@ -11,6 +11,7 @@ import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Data
 @ApiModel("角色表DTO")
@@ -47,6 +48,9 @@ public class SysRoleDto {
 
         @ApiModelProperty("是否预留角色;true=是 false=否(默认)")
         private Boolean isLeave;
+
+        @ApiModelProperty("菜单ID数组")
+        private List<Long> menuIds;
     }
 
     @Data