Bläddra i källkod

Merge remote-tracking branch 'origin/master'

李进 2 år sedan
förälder
incheckning
fb17d41951

+ 19 - 0
authorize-api-service/pom.xml

@@ -68,4 +68,23 @@
             <version>1.0</version>
         </dependency>
     </dependencies>
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+                <filtering>true</filtering>
+            </resource>
+            <resource>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**/*.*</include>
+                </includes>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+
+    </build>
 </project>

+ 8 - 0
authorize-api-service/src/main/java/com/xy/service/SysRoleMenuService.java

@@ -21,4 +21,12 @@ public interface SysRoleMenuService extends IService<SysRoleMenu> {
      */
     Boolean saveRoleMenus(RoleMenuVo roleMenuVo);
 
+    /**
+     * 获取角色菜单ID
+     *
+     * @param roleId
+     * @return
+     */
+    List<Long> getMenuIdsByRoleId(Long roleId);
+
 }

+ 13 - 0
authorize-api-service/src/main/java/com/xy/service/impl/SysRoleMenuServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -10,6 +11,7 @@ import com.xy.vo.RoleMenuVo;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -51,4 +53,15 @@ public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRo
         return saveBatch(roleMenuList);
     }
 
+    @Override
+    public List<Long> getMenuIdsByRoleId(Long roleId) {
+        List<Long> menuIds = new ArrayList<>(16);
+        List<SysRoleMenu> sysRoleMenus = this.list(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, roleId));
+        if (CollUtil.isEmpty(sysRoleMenus)) {
+            return menuIds;
+        }
+        menuIds = sysRoleMenus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
+        return menuIds;
+    }
+
 }

+ 41 - 2
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;
@@ -67,8 +69,33 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
         if (count > 0) {
             return R.fail("此角色标识已存在");
         }
-        SysRole sysRole = Beans.copy(SysRole.class, sysRoleDto).saveOrUpdate(RedisCache.getLoginId(Long.class), sysRoleDto.getSysId());
+        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());
     }
 
@@ -123,7 +150,19 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
                     .eq(SysRole::getIsLeave, true)
             );
         }
+        //角色菜单信息
         IPage<SysRole> page = page(toIPage(pageBean), lqw);
-        return R.ok(toPageBean(SysRoleVo.class, page));
+        PageBean<SysRoleVo> sysRoleVoPageBean = toPageBean(SysRoleVo.class, page);
+        List<SysRoleVo> records = sysRoleVoPageBean.getRecords();
+        if (CollUtil.isNotEmpty(records)) {
+            //拿到角色菜单信息返回
+            records.forEach(sysRoleVo -> {
+                Long id = sysRoleVo.getId();
+                List<Long> menuIdsByRoleId = sysRoleMenuService.getMenuIdsByRoleId(id);
+                sysRoleVo.setMenuIds(menuIdsByRoleId);
+            });
+            sysRoleVoPageBean.setRecords(records);
+        }
+        return R.ok(sysRoleVoPageBean);
     }
 }

+ 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