feat: 修改角色功能
This commit is contained in:
@@ -2,6 +2,7 @@ package com.onixbyte.helix.controller;
|
|||||||
|
|
||||||
import com.onixbyte.helix.domain.entity.Role;
|
import com.onixbyte.helix.domain.entity.Role;
|
||||||
import com.onixbyte.helix.domain.web.request.AddRoleRequest;
|
import com.onixbyte.helix.domain.web.request.AddRoleRequest;
|
||||||
|
import com.onixbyte.helix.domain.web.request.EditRoleRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.QueryRoleRequest;
|
import com.onixbyte.helix.domain.web.request.QueryRoleRequest;
|
||||||
import com.onixbyte.helix.service.RoleService;
|
import com.onixbyte.helix.service.RoleService;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -36,4 +37,10 @@ public class RoleController {
|
|||||||
roleService.addRole(request);
|
roleService.addRole(request);
|
||||||
return ResponseEntity.ok(null);
|
return ResponseEntity.ok(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PutMapping
|
||||||
|
public ResponseEntity<Void> editRole(@Validated @RequestBody EditRoleRequest request) {
|
||||||
|
roleService.editRole(request);
|
||||||
|
return ResponseEntity.ok(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package com.onixbyte.helix.domain.web.request;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import jakarta.validation.constraints.Pattern;
|
||||||
|
|
||||||
|
public record EditRoleRequest(
|
||||||
|
@NotNull(message = "角色 ID 不能为空")
|
||||||
|
Long id,
|
||||||
|
String name,
|
||||||
|
String code,
|
||||||
|
Integer sort,
|
||||||
|
Boolean defaultValue,
|
||||||
|
String description,
|
||||||
|
@Pattern(
|
||||||
|
regexp = "^(ACTIVE|INACTIVE)?$",
|
||||||
|
message = "状态仅可以是 ACTIVE、INACTIVE 其中之一")
|
||||||
|
String status
|
||||||
|
) {
|
||||||
|
}
|
||||||
@@ -1,16 +1,15 @@
|
|||||||
package com.onixbyte.helix.manager;
|
package com.onixbyte.helix.manager;
|
||||||
|
|
||||||
|
import com.onixbyte.helix.constant.Status;
|
||||||
import com.onixbyte.helix.domain.database.query.wrapper.QueryRoleWrapper;
|
import com.onixbyte.helix.domain.database.query.wrapper.QueryRoleWrapper;
|
||||||
import com.onixbyte.helix.domain.entity.Role;
|
import com.onixbyte.helix.domain.entity.Role;
|
||||||
import com.onixbyte.helix.exception.BizException;
|
import com.onixbyte.helix.exception.BizException;
|
||||||
import com.onixbyte.helix.mapper.RoleMapper;
|
import com.onixbyte.helix.mapper.RoleMapper;
|
||||||
import com.onixbyte.helix.repository.RoleRepository;
|
import com.onixbyte.helix.repository.RoleRepository;
|
||||||
import org.springframework.data.domain.Example;
|
import org.springframework.data.domain.*;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageImpl;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@@ -32,8 +31,8 @@ public class RoleManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<Role> getRole(Role example) {
|
public List<Role> getRoles(Role example) {
|
||||||
return roleRepository.findOne(Example.of(example));
|
return roleRepository.findAll(Example.of(example), Sort.by(Sort.Order.asc("id")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Page<Role> selectAll(Pageable pageable, QueryRoleWrapper wrapper) {
|
public Page<Role> selectAll(Pageable pageable, QueryRoleWrapper wrapper) {
|
||||||
@@ -46,4 +45,28 @@ public class RoleManager {
|
|||||||
public Role save(Role role) {
|
public Role save(Role role) {
|
||||||
return roleRepository.save(role);
|
return roleRepository.save(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<Role> getRoleById(Long id) {
|
||||||
|
return roleRepository.findById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void updateRole(Role role) {
|
||||||
|
var roleToUpdate = roleRepository.findById(role.getId())
|
||||||
|
.orElseThrow(() -> new BizException(HttpStatus.NOT_FOUND, "找不到指定的角色信息。"));
|
||||||
|
|
||||||
|
Optional.ofNullable(role.getName())
|
||||||
|
.ifPresent(roleToUpdate::setName);
|
||||||
|
|
||||||
|
Optional.ofNullable(role.getCode())
|
||||||
|
.ifPresent(roleToUpdate::setCode);
|
||||||
|
|
||||||
|
Optional.ofNullable(role.getSort())
|
||||||
|
.ifPresent(roleToUpdate::setSort);
|
||||||
|
|
||||||
|
roleToUpdate.setDescription(role.getDescription());
|
||||||
|
|
||||||
|
Optional.ofNullable(role.getStatus())
|
||||||
|
.ifPresent(roleToUpdate::setStatus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ import com.onixbyte.helix.constant.Status;
|
|||||||
import com.onixbyte.helix.domain.database.query.wrapper.QueryRoleWrapper;
|
import com.onixbyte.helix.domain.database.query.wrapper.QueryRoleWrapper;
|
||||||
import com.onixbyte.helix.domain.entity.Role;
|
import com.onixbyte.helix.domain.entity.Role;
|
||||||
import com.onixbyte.helix.domain.web.request.AddRoleRequest;
|
import com.onixbyte.helix.domain.web.request.AddRoleRequest;
|
||||||
|
import com.onixbyte.helix.domain.web.request.EditRoleRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.QueryRoleRequest;
|
import com.onixbyte.helix.domain.web.request.QueryRoleRequest;
|
||||||
import com.onixbyte.helix.manager.RoleManager;
|
import com.onixbyte.helix.manager.RoleManager;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
@@ -59,4 +61,19 @@ public class RoleService {
|
|||||||
|
|
||||||
return roleManager.save(role);
|
return roleManager.save(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void editRole(EditRoleRequest request) {
|
||||||
|
roleManager.updateRole(Role.builder()
|
||||||
|
.id(request.id())
|
||||||
|
.name(request.name())
|
||||||
|
.code(request.code())
|
||||||
|
.sort(request.sort())
|
||||||
|
.defaultValue(request.defaultValue())
|
||||||
|
.description(request.description())
|
||||||
|
.status(Optional.ofNullable(request.status())
|
||||||
|
.map(Status::valueOf)
|
||||||
|
.orElse(null))
|
||||||
|
.build());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import com.onixbyte.helix.domain.web.request.QueryUserRequest;
|
|||||||
import com.onixbyte.helix.domain.web.request.ResetPasswordRequest;
|
import com.onixbyte.helix.domain.web.request.ResetPasswordRequest;
|
||||||
import com.onixbyte.helix.domain.web.request.UpdateUserRequest;
|
import com.onixbyte.helix.domain.web.request.UpdateUserRequest;
|
||||||
import com.onixbyte.helix.domain.web.response.UserDetailResponse;
|
import com.onixbyte.helix.domain.web.response.UserDetailResponse;
|
||||||
import com.onixbyte.helix.exception.BizException;
|
|
||||||
import com.onixbyte.helix.manager.ApplicationManager;
|
import com.onixbyte.helix.manager.ApplicationManager;
|
||||||
import com.onixbyte.helix.manager.RoleManager;
|
import com.onixbyte.helix.manager.RoleManager;
|
||||||
import com.onixbyte.helix.manager.UserManager;
|
import com.onixbyte.helix.manager.UserManager;
|
||||||
@@ -25,7 +24,6 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -111,11 +109,12 @@ public class UserService {
|
|||||||
// Get role IDs
|
// Get role IDs
|
||||||
var roleIds = Optional.ofNullable(request.roleIds())
|
var roleIds = Optional.ofNullable(request.roleIds())
|
||||||
.filter(CollectionUtils::isNotEmpty)
|
.filter(CollectionUtils::isNotEmpty)
|
||||||
.orElseGet(() -> List.of(roleManager.getRole(Role.builder()
|
.orElseGet(() -> roleManager.getRoles(Role.builder()
|
||||||
.defaultValue(true)
|
.defaultValue(true)
|
||||||
.build())
|
.build())
|
||||||
|
.stream()
|
||||||
.map(Role::getId)
|
.map(Role::getId)
|
||||||
.orElseThrow(() -> new BizException("No default role specified."))));
|
.toList());
|
||||||
|
|
||||||
// Build bindings
|
// Build bindings
|
||||||
var userRoleBindings = roleIds
|
var userRoleBindings = roleIds
|
||||||
|
|||||||
Reference in New Issue
Block a user