新增角色标签
This commit is contained in:
parent
76eeeb4b8e
commit
c19b27e9d9
@ -7,6 +7,7 @@ import com.qqchen.deploy.backend.model.RoleDTO;
|
|||||||
import com.qqchen.deploy.backend.model.query.RoleQuery;
|
import com.qqchen.deploy.backend.model.query.RoleQuery;
|
||||||
import com.qqchen.deploy.backend.service.IRoleService;
|
import com.qqchen.deploy.backend.service.IRoleService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
@ -32,6 +33,17 @@ public class RoleApiController extends BaseController<Role, RoleDTO, Long, RoleQ
|
|||||||
return Response.success();
|
return Response.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Operation(summary = "分配角色")
|
||||||
|
@PostMapping("/{userId}/assignRoles")
|
||||||
|
public Response<Void> assignRoles(
|
||||||
|
@Parameter(description = "用户ID", required = true) @PathVariable Long userId,
|
||||||
|
@Parameter(description = "角色ID列表", required = true) @RequestBody List<Long> roleIds
|
||||||
|
) {
|
||||||
|
roleService.assignRoles(userId, roleIds);
|
||||||
|
return Response.success();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void exportData(jakarta.servlet.http.HttpServletResponse response, List<RoleDTO> data) {
|
protected void exportData(jakarta.servlet.http.HttpServletResponse response, List<RoleDTO> data) {
|
||||||
// TODO: 实现导出功能
|
// TODO: 实现导出功能
|
||||||
|
|||||||
@ -0,0 +1,30 @@
|
|||||||
|
package com.qqchen.deploy.backend.controller;
|
||||||
|
|
||||||
|
import com.qqchen.deploy.backend.framework.api.Response;
|
||||||
|
import com.qqchen.deploy.backend.service.IRoleService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/mgmt/role")
|
||||||
|
@Tag(name = "角色管理")
|
||||||
|
public class RoleController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IRoleService roleService;
|
||||||
|
|
||||||
|
@PostMapping("/{id}/roles")
|
||||||
|
@Operation(summary = "分配角色")
|
||||||
|
public Response<Void> assignRoles(
|
||||||
|
@Parameter(description = "用户ID", required = true) @PathVariable Long id,
|
||||||
|
@Parameter(description = "角色ID列表", required = true) @RequestBody List<Long> roleIds
|
||||||
|
) {
|
||||||
|
roleService.assignRoles(id, roleIds);
|
||||||
|
return Response.success();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -27,4 +27,9 @@ public interface IRoleService extends IBaseService<Role, RoleDTO, Long> {
|
|||||||
* 分配标签
|
* 分配标签
|
||||||
*/
|
*/
|
||||||
void assignTags(Long roleId, List<Long> tagIds);
|
void assignTags(Long roleId, List<Long> tagIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分配角色
|
||||||
|
*/
|
||||||
|
void assignRoles(Long userId, List<Long> roleIds);
|
||||||
}
|
}
|
||||||
@ -2,6 +2,7 @@ package com.qqchen.deploy.backend.service.impl;
|
|||||||
|
|
||||||
import com.qqchen.deploy.backend.entity.Role;
|
import com.qqchen.deploy.backend.entity.Role;
|
||||||
import com.qqchen.deploy.backend.entity.RoleTag;
|
import com.qqchen.deploy.backend.entity.RoleTag;
|
||||||
|
import com.qqchen.deploy.backend.entity.User;
|
||||||
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
||||||
import com.qqchen.deploy.backend.framework.exception.BusinessException;
|
import com.qqchen.deploy.backend.framework.exception.BusinessException;
|
||||||
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
||||||
@ -9,13 +10,16 @@ import com.qqchen.deploy.backend.model.RoleDTO;
|
|||||||
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
import com.qqchen.deploy.backend.framework.service.impl.BaseServiceImpl;
|
||||||
import com.qqchen.deploy.backend.repository.IRoleRepository;
|
import com.qqchen.deploy.backend.repository.IRoleRepository;
|
||||||
import com.qqchen.deploy.backend.repository.IRoleTagRepository;
|
import com.qqchen.deploy.backend.repository.IRoleTagRepository;
|
||||||
|
import com.qqchen.deploy.backend.repository.IUserRepository;
|
||||||
import com.qqchen.deploy.backend.service.IRoleService;
|
import com.qqchen.deploy.backend.service.IRoleService;
|
||||||
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
||||||
|
import com.qqchen.deploy.backend.service.IUserService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@ -33,6 +37,9 @@ public class RoleServiceImpl extends BaseServiceImpl<Role, RoleDTO, Long> implem
|
|||||||
@Resource
|
@Resource
|
||||||
private IRoleTagRepository roleTagRepository;
|
private IRoleTagRepository roleTagRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IUserRepository userRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Long> getUserRoleIds(Long userId) {
|
public List<Long> getUserRoleIds(Long userId) {
|
||||||
return roleRepository.findRoleIdsByUserId(userId);
|
return roleRepository.findRoleIdsByUserId(userId);
|
||||||
@ -78,4 +85,31 @@ public class RoleServiceImpl extends BaseServiceImpl<Role, RoleDTO, Long> implem
|
|||||||
role.setTags(tags);
|
role.setTags(tags);
|
||||||
roleRepository.save(role);
|
roleRepository.save(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void assignRoles(Long userId, List<Long> roleIds) {
|
||||||
|
// 获取用户
|
||||||
|
User user = userRepository.findById(userId)
|
||||||
|
.orElseThrow(() -> new BusinessException(ResponseCode.USER_NOT_FOUND));
|
||||||
|
|
||||||
|
// 不允许修改admin用户的角色
|
||||||
|
if ("admin".equals(user.getUsername())) {
|
||||||
|
throw new BusinessException(ResponseCode.ROLE_ADMIN_CANNOT_UPDATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取角色列表
|
||||||
|
List<Role> roles = roleRepository.findAllById(roleIds);
|
||||||
|
|
||||||
|
// 验证所有角色ID是否都存在
|
||||||
|
if (roles.size() != roleIds.size()) {
|
||||||
|
throw new BusinessException(ResponseCode.ROLE_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置用户角色
|
||||||
|
user.setRoles(new HashSet<>(roles));
|
||||||
|
|
||||||
|
// 保存更新
|
||||||
|
userRepository.save(user);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user