Browse Source

角色新增剩余接口。菜单校验和角色校验

huangqizheng/feature-20250717200321-优化导出
sunjiabei 1 month ago
parent
commit
b40b2a7141
  1. 7
      src/main/java/com/example/demo/controller/MenuController.java
  2. 10
      src/main/java/com/example/demo/controller/RoleController.java
  3. 20
      src/main/java/com/example/demo/domain/vo/RoleMenu.java
  4. 5
      src/main/java/com/example/demo/domain/vo/RoleVo.java
  5. 10
      src/main/java/com/example/demo/mapper/MenuMapper.java
  6. 10
      src/main/java/com/example/demo/mapper/RoleMapper.java
  7. 7
      src/main/java/com/example/demo/service/MenuService.java
  8. 5
      src/main/java/com/example/demo/service/RoleService.java
  9. 42
      src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java
  10. 33
      src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java
  11. 15
      src/main/resources/mapper/MenuMapper.xml
  12. 18
      src/main/resources/mapper/RoleMapper.xml

7
src/main/java/com/example/demo/controller/MenuController.java

@ -37,4 +37,11 @@ public class MenuController {
List<MenuVo> permissionTree = menuService.getPermissionTree(roleVo.getId());
return Result.success(permissionTree);
}
//新增权限
@PostMapping("/add")
public Result addPermission(@RequestBody RoleVo roleVo) {
return menuService.addPermission(roleVo);
}
}

10
src/main/java/com/example/demo/controller/RoleController.java

@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleController
@ -38,4 +40,12 @@ public class RoleController {
return roleService.addRole(roleVo);
}
//查找全部角色
@PostMapping("/selectAll")
public Result selectRole() {
List<RoleVo> list = roleService.selectAllRole();
return Result.success(list);
}
}

20
src/main/java/com/example/demo/domain/vo/RoleMenu.java

@ -0,0 +1,20 @@
package com.example.demo.domain.vo;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @program: gold-java
* @ClassName RoleMenu
* @description:
* @author: Double
* @create: 202507-15 16:19
* @Version 1.0
**/
@Data
@NoArgsConstructor
public class RoleMenu {
private Integer roleId; // 角色id
private Integer menuId; // 菜单id
}

5
src/main/java/com/example/demo/domain/vo/RoleVo.java

@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @program: gold-java
@ -26,10 +27,12 @@ public class RoleVo implements Serializable {
private String roleName; // 角色名
private String roleKey; // 角色标识符
private Integer priority;//优先级
private String fatherId;//上级角色id
private Integer fatherId;//上级角色id
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date updateTime; // 更新时间
List<Integer> menuIds;//拥有的菜单id
}

10
src/main/java/com/example/demo/mapper/MenuMapper.java

@ -1,7 +1,11 @@
package com.example.demo.mapper;
import com.example.demo.domain.entity.Menu;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.RoleMenu;
import com.example.demo.domain.vo.RoleVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -18,4 +22,10 @@ public interface MenuMapper {
//根据角色ID查菜单权限
List<MenuVo> selectMenusByRoleId(Integer roleId);
//新增权限
void addPermission(List<RoleMenu> roleMenuList);
//查找菜单id
Menu selectByMenuId(Integer id);
}

10
src/main/java/com/example/demo/mapper/RoleMapper.java

@ -2,8 +2,10 @@ package com.example.demo.mapper;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.RoleVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Random;
/**
@ -21,4 +23,12 @@ public interface RoleMapper {
//查找角色名
Role selectByRoleName(String roleName);
//查找角色id
Role selectByRoleId(Integer id);
//查找全部角色
List<RoleVo> selectAllRole();
//新建角色
void addRole(RoleVo roleVo);
}

7
src/main/java/com/example/demo/service/MenuService.java

@ -2,6 +2,8 @@ package com.example.demo.service;
import java.util.List;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
/**
* @program: gold-java
@ -17,4 +19,9 @@ public interface MenuService {
//根据角色ID生成权限树
List<MenuVo> getPermissionTree(Integer roleId);
//新增权限
Result addPermission(RoleVo roleVo);
}

5
src/main/java/com/example/demo/service/RoleService.java

@ -4,6 +4,8 @@ package com.example.demo.service;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import java.util.List;
/**
* @program: gold-java
* @ClassName RoleService
@ -17,4 +19,7 @@ public interface RoleService {
//新增角色
Result addRole(RoleVo roleVo);
//查找全部角色
List<RoleVo> selectAllRole();
}

42
src/main/java/com/example/demo/serviceImpl/MenuServiceImpl.java

@ -1,11 +1,17 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.vo.MenuVo;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleMenu;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.mapper.MenuMapper;
import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.MenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@ -25,6 +31,8 @@ public class MenuServiceImpl implements MenuService {
@Autowired
private MenuMapper menuMapper;
@Autowired
private RoleMapper roleMapper;
//构建菜单树
@Override
public List<MenuVo> getPermissionTree(Integer roleId) {
@ -55,4 +63,38 @@ public class MenuServiceImpl implements MenuService {
return children;
}
//新增权限
@Override
@Transactional
public Result addPermission(RoleVo roleVo) {
//校验
if(Objects.isNull(roleVo)) {
return Result.error("传入角色为空");
}
if(Objects.isNull(roleVo.getId())) {
return Result.error("角色ID为空");
}
if(roleVo.getMenuIds() == null||roleVo.getMenuIds().isEmpty()) {
return Result.error("角色权限为空");
}
if(roleMapper.selectByRoleId(roleVo.getId())==null){
return Result.error("角色不存在");
}
//角色菜单权限对应
List<RoleMenu> roleMenuList = new ArrayList<>();
//循环导入
for (Integer menuId : roleVo.getMenuIds()) {
if(menuMapper.selectByMenuId(menuId)==null){
return Result.error("菜单不存在");
}
RoleMenu roleMenu = new RoleMenu();
roleMenu.setRoleId(roleVo.getId());
roleMenu.setMenuId(menuId);
roleMenuList.add(roleMenu);
}
//提交
menuMapper.addPermission(roleMenuList);
return Result.success("权限新增成功");
}
}

33
src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java

@ -1,12 +1,17 @@
package com.example.demo.serviceImpl;
import com.example.demo.domain.entity.Role;
import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo;
import com.example.demo.mapper.RefundMapper;
import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.MenuService;
import com.example.demo.service.RoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* @program: gold-java
@ -22,11 +27,14 @@ public class RoleServiceImpl implements RoleService {
@Autowired
private RoleMapper roleMapper;
@Autowired
private MenuService menuService;
//新增角色
@Override
@Transactional
public Result addRole(RoleVo roleVo) {
//校验角色
//校验角色
if(roleVo.getRoleName()==null|| roleVo.getRoleName().isEmpty()){
return Result.error("角色名为空");
}
@ -36,8 +44,31 @@ public class RoleServiceImpl implements RoleService {
if(roleVo.getPriority()==null){
return Result.error("优先级为空");
}
if(roleVo.getMenuIds()==null||roleVo.getMenuIds().isEmpty()){
return Result.error("权限为空");
}
try {
roleMapper.addRole(roleVo);
Role role = roleMapper.selectByRoleName(roleVo.getRoleName());
if(role==null){
return Result.error("角色添加失败");
}else{
roleVo.setId(role.getId());
}
menuService.addPermission(roleVo);
}catch (Exception e)
{
return Result.error("添加失败");
}
return Result.success("创建成功");
}
//查找全部角色
@Override
public List<RoleVo> selectAllRole() {
return roleMapper.selectAllRole();
}
}

15
src/main/resources/mapper/MenuMapper.xml

@ -20,4 +20,19 @@
m.parent_id,m.priority
</select>
<insert id="addPermission">
INSERT INTO role_menu (role_id, menu_id)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.roleId}, #{item.menuId})
</foreach>
</insert>
<select id="selectByMenuId" resultType="com.example.demo.domain.entity.Menu">
SELECT menu_name FROM menu
<where>
id = #{id}
</where>
</select>
</mapper>

18
src/main/resources/mapper/RoleMapper.xml

@ -10,4 +10,22 @@
</where>
</select>
<select id="selectByRoleId" resultType="com.example.demo.domain.entity.Role">
SELECT role_name FROM role
<where>
id = #{id}
</where>
</select>
<select id="selectAllRole" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name FROM role
</select>
<!-- 插入角色信息 -->
<insert id="addRole" parameterType="com.example.demo.domain.vo.RoleVo" useGeneratedKeys="true" keyProperty="id">
INSERT INTO role
(role_name, priority, father_id)
VALUES
(#{roleName}, #{priority}, #{fatherId})
</insert>
</mapper>
Loading…
Cancel
Save