以SSM框架为例
后台管理系统——给用户添加角色流程分析与设计
1.流程分析
注:图片来源itheima的ssm课件
2.UserController
//给用户添加角色
@RequestMapping("/addRoleToUser.do")
public String addRoleToUser(@RequestParam(name = "userId",required = true) Integer userId,@RequestParam(name = "ids",required = true) Integer[] roleIds){
//单个用户可以对应多个角色,所以采用数组存userService.findOtherRoles(id)查询出来的角色id
userService.addRoleToUser(userId,roleIds);
return "redirect:findAll.do";
}
//查询用户以及用户可以添加的角色
@RequestMapping("/findUserByIdAndAllRole.do")
public ModelAndView findUserByIdAndAllRole(@RequestParam(name = "id",required = true) Integer id){
ModelAndView mv = new ModelAndView();
//1.根据用户id查询用户
Userinfo userinfo = userService.findById(id);
//2.根据用户id查询可以添加的角色
List<Role> roles = userService.findOtherRoles(id);
mv.addObject("user",userinfo);
mv.addObject("roleList",roles);
mv.setViewName("user-role-add");
return mv;
}
3.UserService接口
void addRoleToUser(Integer userId, Integer[] roleIds);
4.UserServiceImpl
//给用户添加角色
@Override
public void addRoleToUser(Integer userId, Integer[] roleIds) {
for (Integer roleId : roleIds) {
//(单个用户可以对应多个角色)给用户添加角色时,从数组中遍历取出角色id
userDao.addRoleToUser(userId,roleId);
}
}
//根据用户id查询可以添加的角色
@Override
public List<Role> findOtherRoles(Integer id) {
return userDao.findOtherRoles(id);
}
5.UserDao
//查询用户可以添加的角色
@Select("select * from role where id not in(select roleId from users_role where userId=#{id})")
List<Role> findOtherRoles(Integer id);
@Insert("insert into users_role(userId,roleId) values(#{userId},#{roleId})")
//当传入mybatis的参数有多个时,必须写@Param
void addRoleToUser(@Param("userId") Integer userId,@Param("roleId") Integer roleId);
注:添加权限与添加角色同理
评论 (0)