2、Dao层
public interface RoleRepository extends JpaRepository<Role,Integer> {
public List<Role> findAllById(Integer id);
boolean existsById(Integer id);
//删除Role表数据
@Modifying
@Transactional
@Query("delete from Role where id = :id")
Integer deleteRole(@Param("id") Integer id);
public interface MenuRepository extends JpaRepository<Menu,Integer> {
public List<Menu> findAllById(Integer id);
List<Menu> findAllByIdIn(List<Integer> id);
}
public interface MenuroleRepository extends JpaRepository<MenuRole,Integer> {
public List<MenuRole> findAllById(Integer id);
public List<MenuRole> findByRidIn(List<Integer> Rids);
@Query("select menurole.mid from MenuRole menurole where menurole.rid = ?1")
List<Integer> findMidByRid(Integer id);
@Modifying
@Transactional
@Query(value = "insert into menu_role(rid,mid) values(?1,?2)",nativeQuery = true)
void addMenuRole(Integer rid,Integer mids);
@Modifying
@Transactional
@Query("delete from MenuRole where rid=?1")
void deleteByRid(Integer rid);
}
3、Service层
@Service
public class RoleServiceImpl implements RoleService {
@Autowired
RoleRepository roleRepository;
@Override
public boolean addROle(Role role) {
Role role1 = roleRepository.save(role);
return roleRepository.existsById(role1.getId());
}
}
@Service
public class MenuRoleServiceImpl implements MenuRoleService {
@Autowired
MenuroleRepository menuroleRepository;
//增加多个权限
@Override
public Integer updateMenuRole(Integer rid, List<Integer> mids) {
menuroleRepository.deleteByRid(rid);
int s = 0;
for (int i = 0;i<mids.size();i++){
menuroleRepository.addMenuRole(rid,mids.get(i));
s = s + 1;
}
return s;
}
}
4、Controller层
@RestController
@RequestMapping("/system/basic/permiss")
public class PermissController {
@Autowired
RoleRepository roleRepository;
@Autowired
MenuRepository menuRepository;
@Autowired
MenuroleRepository menuroleRepository;
@Autowired
RoleService roleService;
@Autowired
MenuRoleService menuRoleService;
//获得所有角色
@GetMapping("/")
public List<Role> getAllRoles(){
return roleRepository.findAll();
}
//获得所有权限
@GetMapping("/menus")
public List<Menu> getAllMenus(){
return menuRepository.findAll();
}
//通过角色查找权限
@GetMapping("/mids/{rid}")
public List<Integer> getMidByRid(@PathVariable Integer rid){
return menuroleRepository.findMidByRid(rid);
}
//增加角色
@PostMapping("/role")
public RespBean addRole(@RequestBody Role role){
if (roleService.addROle(role) == true){
return RespBean.ok("添加成功");
}
return RespBean.error("添加失败");
}
//删除角色
@DeleteMapping("/role/{rid}")
public RespBean deleteRoleById(@PathVariable Integer rid){
if(roleRepository.deleteRole(rid) == 1){
return RespBean.ok("删除成功");
}
return RespBean.error("删除失败");
}
}
我们利用postman传入的是数组,但是接收的方式不是JSON,我们需要转换。
这里我们需要引入依赖,才能使用==JSON.parseObject()==方法
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.66</version>
</dependency>
//更新权限
@PutMapping("/")
public RespBean updateMenuRole(@RequestBody String str){
Integer rid = Integer.parseInt(JSON.parseObject(str).get("rid").toString());
List<Integer> mids = JSON.parseArray(JSON.parseObject(str).getString("mids"),Integer.class);
if (menuRoleService.updateMenuRole(rid,mids) == mids.size()){
return RespBean.ok("更新成功");
}
return RespBean.error("更新失败");
}
测试