Parcourir la source

Merge remote-tracking branch 'origin/master'

李进 il y a 2 ans
Parent
commit
506417d0cd

+ 1 - 5
authorize-api-service/pom.xml

@@ -29,11 +29,7 @@
             <artifactId>xy-redis</artifactId>
             <version>1.0</version>
         </dependency>
-        <dependency>
-            <groupId>com.xy</groupId>
-            <artifactId>xy-mp</artifactId>
-            <version>1.0</version>
-        </dependency>
+
         <dependency>
             <groupId>com.xy</groupId>
             <artifactId>xy-satoken</artifactId>

+ 23 - 7
authorize-api-service/src/main/java/com/xy/service/SysRoleMenuService.java

@@ -1,13 +1,29 @@
 package com.xy.service;
 
-/**
- * <p>
- * 角色菜单表 服务类
- * </p>
- *
- * @author lijin
- * @since 2022-12-09
+import java.util.List;
+
+/***
+ * 角色菜单表
+ * @author 谭斌
+ * @date 2022/12/13 9:08
  */
 public interface SysRoleMenuService {
 
+    /**
+     * 更新角色菜单权限
+     *
+     * @param roleId
+     * @param menuIds
+     * @return
+     */
+    Boolean saveRoleMenus(Long roleId, List<Long> menuIds);
+
+    /**
+     * 查询角色菜单
+     *
+     * @param roleId
+     * @return
+     */
+    List<Long> getRoleMenus(Long roleId);
+
 }

+ 43 - 8
authorize-api-service/src/main/java/com/xy/service/impl/SysRoleMenuServiceImpl.java

@@ -1,20 +1,55 @@
 package com.xy.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.entity.SysRoleMenu;
 import com.xy.mapper.SysRoleMenuMapper;
 import com.xy.service.SysRoleMenuService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
 
-/**
- * <p>
- * 角色菜单表 服务实现类
- * </p>
- *
- * @author lijin
- * @since 2022-12-09
+/***
+ * 角色菜单表
+ * @author 谭斌
+ * @date 2022/12/13 9:21
  */
 @Service
 public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
 
+    /**
+     * 更新角色菜单权限
+     *
+     * @param roleId
+     * @param menuIds
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean saveRoleMenus(Long roleId, List<Long> menuIds) {
+        //移除旧的权限
+        remove(Wrappers.<SysRoleMenu>query().lambda().eq(SysRoleMenu::getRoleId, roleId));
+
+        if (CollectionUtil.isEmpty(menuIds)) {
+            return Boolean.TRUE;
+        }
+        //封装角色菜单权限
+        List<SysRoleMenu> roleMenuList = menuIds.stream().map(menuId -> {
+            SysRoleMenu roleMenu = new SysRoleMenu();
+            roleMenu.setRoleId(roleId);
+            roleMenu.setMenuId(menuId);
+            return roleMenu;
+        }).collect(Collectors.toList());
+        //批量保存
+        return saveBatch(roleMenuList);
+    }
+
+    @Override
+    public List<Long> getRoleMenus(Long roleId) {
+        List<SysRoleMenu> sysRoleMenus = this.list(Wrappers.<SysRoleMenu>lambdaQuery().eq(SysRoleMenu::getRoleId, roleId));
+        return sysRoleMenus.stream().map(SysRoleMenu::getMenuId).collect(Collectors.toList());
+    }
 }

+ 40 - 3
authorize-api-service/src/main/java/com/xy/service/impl/SysRoleServiceImpl.java

@@ -1,15 +1,23 @@
 package com.xy.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 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.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xy.dto.BatchDeleteDto;
 import com.xy.dto.SysRoleDto;
 import com.xy.entity.SysRole;
 import com.xy.mapper.SysRoleMapper;
+import com.xy.service.SysRoleMenuService;
 import com.xy.service.SysRoleService;
 import com.xy.utils.R;
 import com.xy.utils.SaTokenUtils;
+import com.xy.vo.RoleMenuVo;
 import com.xy.vo.SysRoleVo;
+import io.swagger.annotations.Api;
+import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 
 import static com.xy.utils.Beans.copy;
@@ -19,14 +27,22 @@ import static com.xy.utils.Beans.copy;
  * @author 谭斌
  * @date 2022/12/12 17:17
  */
+@Api(tags = "角色管理")
 @Service
+@RequiredArgsConstructor
 public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
 
+    private final SysRoleMenuService sysRoleMenuService;
+
     @Override
     public R<Boolean> saveOrUpdate(SysRoleDto sysRoleDto) {
         Long id = sysRoleDto.getId();
+        if (SaTokenUtils.getId() == null) {
+            return R.fail("获取用户信息失败");
+        }
+        long currentUser = Long.parseLong(SaTokenUtils.getId().toString());
         LambdaQueryWrapper<SysRole> lqw = new LambdaQueryWrapper<SysRole>()
-                .eq(SysRole::getName, sysRoleDto.getName())
+                .eq(SysRole::getCode, sysRoleDto.getCode())
                 .eq(SysRole::getSysId, sysRoleDto.getSysId());
         if (id != null) {
             lqw.ne(SysRole::getId, id);
@@ -34,10 +50,11 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
 
         long count = count(lqw);
         if (count > 0) {
-            return R.fail("已存在同名角色");
+            return R.fail("此角色标识已存在");
         }
 
-        SysRole sysRole = copy(SysRole.class, sysRoleDto).saveOrUpdate(Long.parseLong(SaTokenUtils.getId().toString()), sysRoleDto.getSysId());
+        SysRole sysRole = copy(SysRole.class, sysRoleDto).saveOrUpdate(currentUser, sysRoleDto.getSysId());
+
         return R.ok(saveOrUpdate(sysRole));
     }
 
@@ -50,6 +67,26 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
     public R<SysRoleVo> getById(Long id) {
         SysRole role = super.getById(id);
         SysRoleVo sysRoleVo = copy(SysRoleVo.class, role);
+        //角色菜单
+        sysRoleVo.setMenuIds(sysRoleMenuService.getRoleMenus(id));
         return R.ok(sysRoleVo);
     }
+
+    @Override
+    public R<IPage<SysRoleVo>> getRolePage(Page page, SysRoleDto sysRoleDto) {
+
+        Page pageResult = this.page(page, Wrappers.<SysRole>lambdaQuery()
+                .like(StrUtil.isNotBlank(sysRoleDto.getName()), SysRole::getName, sysRoleDto.getName())
+                .like(StrUtil.isNotBlank(sysRoleDto.getCode()), SysRole::getCode, sysRoleDto.getCode())
+        );
+        return R.ok(pageResult);
+
+    }
+
+    @Override
+    public R<Boolean> saveRoleMenus(RoleMenuVo roleMenuVo) {
+        return R.ok(sysRoleMenuService.saveRoleMenus(roleMenuVo.getId(), roleMenuVo.getMenuIds()));
+    }
+
+
 }

+ 7 - 0
authorize-api/pom.xml

@@ -23,5 +23,12 @@
             <artifactId>xy-common</artifactId>
             <version>1.0</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.xy</groupId>
+            <artifactId>xy-mp</artifactId>
+            <version>1.0</version>
+        </dependency>
+
     </dependencies>
 </project>

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

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
-import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
 
 @Data
@@ -16,19 +16,19 @@ public class SysRoleDto {
     @ApiModelProperty("角色ID")
     private Long id;
 
-    @NotBlank(message = "所属系统不可为空")
-    @ApiModelProperty("系统")
+    @NotNull(message = "所属系统不可为空")
+    @ApiModelProperty(value = "系统", required = true)
     private Long sysId;
 
 
-    @NotBlank(message = "角色标识不可为空")
+    @NotNull(message = "角色标识不可为空")
     @Size(max = 64, min = 1, message = "角色标识长度需要在2-64之间")
-    @ApiModelProperty("角色标识")
+    @ApiModelProperty(value = "角色标识", required = true)
     private String code;
 
-    @NotBlank(message = "角色名称不能为空")
+    @NotNull(message = "角色名称不能为空")
     @Size(max = 64, min = 1, message = "角色名称长度需要在2-64之间")
-    @ApiModelProperty("角色名称")
+    @ApiModelProperty(value = "角色名称", required = true)
     private String name;
 
 
@@ -43,6 +43,6 @@ public class SysRoleDto {
 
     @ApiModelProperty("是否预留角色;true=是 false=否(默认)")
     private Boolean isLeave;
-    
+ 
 
 }

+ 29 - 3
authorize-api/src/main/java/com/xy/service/SysRoleService.java

@@ -1,9 +1,12 @@
 package com.xy.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xy.annotate.RestMappingController;
 import com.xy.dto.BatchDeleteDto;
 import com.xy.dto.SysRoleDto;
 import com.xy.utils.R;
+import com.xy.vo.RoleMenuVo;
 import com.xy.vo.SysRoleVo;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
@@ -21,8 +24,8 @@ public interface SysRoleService {
     /**
      * 新增、更新角色信息
      *
-     * @param sysRoleDto 角色信息
-     * @return success、false
+     * @param sysRoleDto
+     * @return
      */
     @ApiOperation(value = "新增、更新角色信息", notes = "新增、更新角色信息")
     @PostMapping("saveOrUpdate")
@@ -44,8 +47,31 @@ public interface SysRoleService {
      * @param id
      * @return
      */
+    @ApiOperation(value = "获取角色详情", notes = "获取角色详情")
     @GetMapping("{id}")
     R<SysRoleVo> getById(@PathVariable Long id);
 
-   
+    /**
+     * 分页查询角色信息
+     *
+     * @param page 分页对象 (current,size)
+     * @param page 筛选参数 sysRoleVo
+     * @return
+     */
+    @ApiOperation(value = "分页获取角色信息", notes = "分页获取角色信息")
+    @GetMapping("page")
+    R<IPage<SysRoleVo>> getRolePage(Page page, SysRoleDto sysRoleDto);
+
+
+    /**
+     * 编辑角色菜单
+     *
+     * @param roleMenuVo
+     * @return
+     */
+    @ApiOperation(value = "编辑角色菜单", notes = "编辑角色菜单")
+    @PostMapping("saveRoleMenus")
+    R<Boolean> saveRoleMenus(@RequestBody RoleMenuVo roleMenuVo);
+
+
 }

+ 21 - 0
authorize-api/src/main/java/com/xy/vo/RoleMenuVo.java

@@ -0,0 +1,21 @@
+package com.xy.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@ApiModel("角色菜单信息")
+@Accessors(chain = true)
+public class RoleMenuVo {
+
+    @ApiModelProperty("角色ID")
+    private Long id;
+
+    @ApiModelProperty("菜单")
+    private List<Long> menuIds;
+
+}

+ 5 - 0
authorize-api/src/main/java/com/xy/vo/SysRoleVo.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
 
+import java.util.List;
+
 @Data
 @ApiModel("角色表信息")
 @Accessors(chain = true)
@@ -35,5 +37,8 @@ public class SysRoleVo {
     @ApiModelProperty("是否预留角色;true=是 false=否(默认)")
     private Boolean isLeave;
 
+    @ApiModelProperty("角色菜单")
+    private List<Long> menuIds;
+
 
 }