feat(新增): 根据用户获取角色数据和根据用户分配角色
This commit is contained in:
parent
1b22f6dca0
commit
5139c4459f
|
@ -0,0 +1,24 @@
|
|||
package com.atguigu.ssyx.vo.acl;
|
||||
|
||||
import com.atguigu.ssyx.model.acl.Role;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ApiModel(description = "所有角色数据")
|
||||
public class AssignAdminRoleVo {
|
||||
@ApiModelProperty(value = "角色列表数据")
|
||||
private List<Role> assignRoles;
|
||||
|
||||
@ApiModelProperty(value = "所有角色数据")
|
||||
private List<Role> allRolesList;
|
||||
}
|
|
@ -3,9 +3,11 @@ package com.atguigu.ssyx.acl;
|
|||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
|
||||
@SpringBootApplication
|
||||
@ComponentScan(basePackages = {"com.atguigu.ssyx", "com.atguigu.ssyx.acl"})
|
||||
@EnableTransactionManagement
|
||||
public class ServiceAclApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ServiceAclApplication.class, args);
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
package com.atguigu.ssyx.acl.controller;
|
||||
|
||||
import com.atguigu.ssyx.acl.service.AdminRoleService;
|
||||
import com.atguigu.ssyx.common.result.Result;
|
||||
import com.atguigu.ssyx.vo.acl.AssignAdminRoleVo;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/admin/acl/user")
|
||||
@Api(tags = "用户和角色管理")
|
||||
public class AdminRoleController {
|
||||
@Autowired
|
||||
private AdminRoleService adminRoleService;
|
||||
|
||||
@ApiOperation(value = "根据用户获取角色数据")
|
||||
@GetMapping("/toAssign/{adminId}")
|
||||
public Result<AssignAdminRoleVo> toAssign(@PathVariable Long adminId) {
|
||||
AssignAdminRoleVo vo = adminRoleService.findRoleByUserId(adminId);
|
||||
return Result.success(vo);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据用户分配角色")
|
||||
@PostMapping("/doAssign")
|
||||
public Result<String> doAssign(@RequestParam Long adminId, @RequestParam Long[] roleId) {
|
||||
adminRoleService.saveUserRoleShip(adminId, roleId);
|
||||
return Result.success();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package com.atguigu.ssyx.acl.mapper;
|
||||
|
||||
import com.atguigu.ssyx.model.acl.AdminRole;
|
||||
import com.atguigu.ssyx.model.acl.Role;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface AdminRoleMapper extends BaseMapper<AdminRole> {
|
||||
/**
|
||||
* * 根据用户ID查找角色
|
||||
*
|
||||
* @param adminId 用户ID
|
||||
* @return 角色列表
|
||||
*/
|
||||
List<Role> findRoleByUserId(Long adminId);
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package com.atguigu.ssyx.acl.service;
|
||||
|
||||
import com.atguigu.ssyx.model.acl.AdminRole;
|
||||
import com.atguigu.ssyx.vo.acl.AssignAdminRoleVo;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
public interface AdminRoleService extends IService<AdminRole> {
|
||||
/**
|
||||
* * 根据用户获取角色数据
|
||||
*
|
||||
* @param adminId 用户ID
|
||||
* @return 分配集合
|
||||
*/
|
||||
AssignAdminRoleVo findRoleByUserId(Long adminId);
|
||||
|
||||
/**
|
||||
* * 根据用户分配角色
|
||||
*
|
||||
* @param adminId 用户ID
|
||||
* @param roleId 角色ID
|
||||
*/
|
||||
void saveUserRoleShip(Long adminId, Long[] roleId);
|
||||
}
|
|
@ -6,6 +6,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
public interface RoleService extends IService<Role> {
|
||||
// 获取角色分页列表
|
||||
/**
|
||||
* * 获取角色分页列表
|
||||
*
|
||||
* @param page 当前页码
|
||||
* @param limit 每页记录数
|
||||
* @param vo 角色查询实体
|
||||
* @return 分页结果
|
||||
*/
|
||||
IPage<Role> selectPage(Long page, Long limit, RoleQueryVo vo);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
package com.atguigu.ssyx.acl.service.impl;
|
||||
|
||||
import com.atguigu.ssyx.acl.mapper.AdminRoleMapper;
|
||||
import com.atguigu.ssyx.acl.service.AdminRoleService;
|
||||
import com.atguigu.ssyx.acl.service.RoleService;
|
||||
import com.atguigu.ssyx.model.acl.AdminRole;
|
||||
import com.atguigu.ssyx.model.acl.Role;
|
||||
import com.atguigu.ssyx.vo.acl.AssignAdminRoleVo;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
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;
|
||||
|
||||
@Service
|
||||
public class AdminRoleServiceImpl extends ServiceImpl<AdminRoleMapper, AdminRole> implements AdminRoleService {
|
||||
@Autowired
|
||||
private RoleService roleService;
|
||||
|
||||
/**
|
||||
* 根据用户获取角色数据
|
||||
*
|
||||
* @param adminId 用户ID
|
||||
* @return 分配集合
|
||||
*/
|
||||
@Override
|
||||
public AssignAdminRoleVo findRoleByUserId(Long adminId) {
|
||||
// 查询所有的角色
|
||||
List<Role> allRolesList = roleService.list(null);
|
||||
List<Role> roleList = baseMapper.findRoleByUserId(adminId);
|
||||
|
||||
return AssignAdminRoleVo.builder().assignRoles(roleList).allRolesList(allRolesList).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* * 根据用户分配角色
|
||||
*
|
||||
* @param adminId 用户ID
|
||||
* @param roleIds 角色ID
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void saveUserRoleShip(Long adminId, Long[] roleIds) {
|
||||
remove(Wrappers.<AdminRole>lambdaQuery().eq(AdminRole::getAdminId, adminId));
|
||||
ArrayList<AdminRole> adminRoles = new ArrayList<>();
|
||||
|
||||
// 循环遍历并插入
|
||||
for (Long roleId : roleIds) {
|
||||
AdminRole adminRole = new AdminRole();
|
||||
adminRole.setAdminId(adminId);
|
||||
adminRole.setRoleId(roleId);
|
||||
adminRoles.add(adminRole);
|
||||
}
|
||||
|
||||
// 插入整体数据
|
||||
saveBatch(adminRoles);
|
||||
}
|
||||
}
|
|
@ -15,6 +15,14 @@ import org.springframework.stereotype.Service;
|
|||
@Service
|
||||
@Slf4j
|
||||
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
|
||||
/**
|
||||
* 获取角色分页列表
|
||||
*
|
||||
* @param page 当前页码
|
||||
* @param limit 每页记录数
|
||||
* @param vo 角色查询实体
|
||||
* @return 分页结果
|
||||
*/
|
||||
@Override
|
||||
public IPage<Role> selectPage(Long page, Long limit, RoleQueryVo vo) {
|
||||
Page<Role> roleParam = new Page<>(page, limit);
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
|
||||
<mapper namespace="com.atguigu.ssyx.acl.mapper.AdminRoleMapper">
|
||||
<!-- 根据用户ID查找角色 -->
|
||||
<select id="findRoleByUserId" resultType="com.atguigu.ssyx.model.acl.Role">
|
||||
SELECT r.*
|
||||
FROM admin_role ar
|
||||
LEFT JOIN role r ON ar.role_id = r.id AND ar.admin_id = #{adminId}
|
||||
WHERE ar.is_deleted = 0
|
||||
AND r.is_deleted = 0
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue