提交 81249ce9 作者: 方治民

feat: 使用 RepositoryUtil 简化常见的 findById 校验操作

上级 55c1a4d9
......@@ -6,10 +6,9 @@ import com.yiring.auth.domain.permission.Permission;
import com.yiring.auth.domain.role.Role;
import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository;
import com.yiring.common.core.Status;
import com.yiring.common.utils.RepositoryUtil;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
......@@ -58,11 +57,6 @@ public class StpInterfaceImpl implements StpInterface {
*/
public User getUser(Object loginId) {
String id = Objects.toString(loginId);
Optional<User> optional = userRepository.findById(id);
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception("Code.1000");
}
return optional.get();
return RepositoryUtil.get(userRepository, id, "Code.1000");
}
}
......@@ -8,11 +8,11 @@ import com.yiring.auth.param.permission.PermissionParam;
import com.yiring.auth.util.Permissions;
import com.yiring.auth.vo.permission.PermissionVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.exception.BusinessException;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.param.PidParam;
import com.yiring.common.utils.RepositoryUtil;
import com.yiring.common.validation.group.Group;
import com.yiring.common.vo.PageVo;
import io.swagger.v3.oas.annotations.Operation;
......@@ -68,12 +68,7 @@ public class PermissionController {
@Operation(summary = "修改")
@PostMapping("modify")
public Result<String> modify(@RequestBody @Validated({ Group.Edit.class }) PermissionParam param) {
Optional<Permission> optional = permissionRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Permission entity = optional.get();
Permission entity = RepositoryUtil.get(permissionRepository, param.getId());
if (!entity.getUid().equals(param.getUid())) {
// 仅当修改了角色标识时才检查重复
if (has(param.getUid())) {
......@@ -88,12 +83,7 @@ public class PermissionController {
@Operation(summary = "删除")
@PostMapping("remove")
public Result<String> remove(@ParameterObject @Validated IdParam param) {
Optional<Permission> optional = permissionRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Permission entity = optional.get();
Permission entity = RepositoryUtil.get(permissionRepository, param.getId());
permissionRepository.delete(entity);
return Result.ok();
}
......@@ -101,14 +91,9 @@ public class PermissionController {
@Operation(summary = "查询")
@GetMapping("find")
public Result<PermissionVo> find(@ParameterObject @Validated IdParam param) {
Optional<Permission> optional = permissionRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Permission permission = optional.get();
Permission permission = RepositoryUtil.get(permissionRepository, param.getId());
PermissionVo vo = new PermissionVo();
BeanUtils.copyProperties(optional.get(), vo, Permission.Fields.meta);
BeanUtils.copyProperties(permission, vo, Permission.Fields.meta);
vo.setMeta(permission.getMetaJson());
return Result.ok(vo);
}
......
......@@ -9,11 +9,11 @@ import com.yiring.auth.param.role.RoleParam;
import com.yiring.auth.util.Permissions;
import com.yiring.auth.vo.role.RoleVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.exception.BusinessException;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IdsParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.utils.RepositoryUtil;
import com.yiring.common.validation.group.Group;
import com.yiring.common.vo.PageVo;
import io.swagger.v3.oas.annotations.Operation;
......@@ -73,12 +73,7 @@ public class RoleController {
@Operation(summary = "修改")
@PostMapping("modify")
public Result<String> modify(@ParameterObject @Validated({ Group.Edit.class }) RoleParam param) {
Optional<Role> optional = roleRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Role entity = optional.get();
Role entity = RepositoryUtil.get(roleRepository, param.getId());
if (!entity.getUid().equals(param.getUid())) {
// 仅当修改了角色标识时才检查重复
if (has(param.getUid())) {
......@@ -97,16 +92,11 @@ public class RoleController {
@ParameterObject @Validated IdParam idParam,
@ParameterObject @Validated IdsParam idsParam
) {
Optional<Role> optional = roleRepository.findById(idParam.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Role entity = RepositoryUtil.get(roleRepository, idParam.getId());
// 查询权限集合
Collection<Serializable> ids = idsParam.toIds();
Set<Permission> permissions = new HashSet<>(permissionRepository.findAllById(ids));
Role entity = optional.get();
entity.setPermissions(permissions);
roleRepository.saveAndFlush(entity);
return Result.ok();
......@@ -123,12 +113,7 @@ public class RoleController {
@Operation(summary = "查询")
@GetMapping("find")
public Result<RoleVo> find(@ParameterObject @Validated IdParam param) {
Optional<Role> optional = roleRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Role entity = optional.get();
Role entity = RepositoryUtil.get(roleRepository, param.getId());
RoleVo vo = new RoleVo();
BeanUtils.copyProperties(entity, vo, Role.Fields.permissions);
vo.setPermissions(Permissions.toPermissionVos(Permissions.toPermissions(Collections.singleton(entity))));
......
......@@ -7,11 +7,11 @@ import com.yiring.auth.domain.user.User;
import com.yiring.auth.domain.user.UserRepository;
import com.yiring.auth.vo.user.UserVo;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IdsParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.util.Commons;
import com.yiring.common.utils.RepositoryUtil;
import com.yiring.common.utils.Specifications;
import com.yiring.common.vo.PageVo;
import io.swagger.v3.oas.annotations.Operation;
......@@ -60,16 +60,11 @@ public class UserController {
@ParameterObject @Validated IdParam idParam,
@ParameterObject @Validated IdsParam idsParam
) {
Optional<User> optional = userRepository.findById(idParam.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
User entity = RepositoryUtil.get(userRepository, idParam.getId());
// 查询角色集合
Collection<Serializable> ids = idsParam.toIds();
Set<Role> roles = new HashSet<>(roleRepository.findAllById(ids));
User entity = optional.get();
entity.setRoles(roles);
userRepository.saveAndFlush(entity);
return Result.ok();
......
/* (C) 2023 YiRing, Inc. */
package com.yiring.common.utils;
import com.yiring.common.core.I18n;
import com.yiring.common.core.Status;
import lombok.experimental.UtilityClass;
import org.jetbrains.annotations.PropertyKey;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author Jim
* @version 0.1
* 2023/6/25 17:43
*/
@SuppressWarnings({ "unused" })
@UtilityClass
public class RepositoryUtil {
/**
* 根据 ID 查询数据,如果数据不存在则抛出异常【数据未找到】
* @param repository repository
* @param id id
* @return T
* @param <T> T
* @param <ID> ID
*/
public <T, ID> T get(JpaRepository<T, ID> repository, ID id) {
return repository.findById(id).orElseThrow(Status.NOT_FOUND::exception);
}
/**
* 根据 ID 查询数据,如果数据不存在则抛出自定义异常【message】
* @param repository repository
* @param id id
* @param message 自定义异常信息
* @return T
* @param <T> T
* @param <ID> ID
*/
public <T, ID> T get(
JpaRepository<T, ID> repository,
ID id,
@PropertyKey(resourceBundle = I18n.RESOURCE_BUNDLE) String message
) {
return repository.findById(id).orElseThrow(() -> Status.NOT_FOUND.exception(message));
}
}
......@@ -2,12 +2,12 @@
package com.yiring.dict.web;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.exception.BusinessException;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IdsParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.util.Commons;
import com.yiring.common.utils.RepositoryUtil;
import com.yiring.common.utils.Specifications;
import com.yiring.common.validation.group.Group;
import com.yiring.common.vo.OptionVo;
......@@ -22,7 +22,6 @@ import io.swagger.v3.oas.annotations.extensions.ExtensionProperty;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -74,12 +73,7 @@ public class DictController {
@Operation(summary = "修改")
@PostMapping("modify")
public Result<String> modify(@ParameterObject @Validated({ Group.Edit.class }) DictParam param) {
Optional<Dict> optional = dictRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Dict entity = optional.get();
Dict entity = RepositoryUtil.get(dictRepository, param.getId());
if (!entity.getCode().equals(param.getCode())) {
throw BusinessException.i18n("Code.101002");
}
......@@ -100,12 +94,7 @@ public class DictController {
@Operation(summary = "查询")
@GetMapping("find")
public Result<DictVo> find(@ParameterObject @Validated IdParam param) {
Optional<Dict> optional = dictRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
Dict entity = optional.get();
Dict entity = RepositoryUtil.get(dictRepository, param.getId());
DictVo vo = Commons.transform(entity, DictVo.class);
return Result.ok(vo);
}
......
......@@ -3,13 +3,13 @@ package com.yiring.dict.web;
import cn.hutool.core.util.StrUtil;
import com.yiring.common.core.Result;
import com.yiring.common.core.Status;
import com.yiring.common.domain.BasicEntity;
import com.yiring.common.exception.BusinessException;
import com.yiring.common.param.IdParam;
import com.yiring.common.param.IdsParam;
import com.yiring.common.param.PageParam;
import com.yiring.common.util.Commons;
import com.yiring.common.utils.RepositoryUtil;
import com.yiring.common.utils.Specifications;
import com.yiring.common.validation.group.Group;
import com.yiring.common.vo.OptionVo;
......@@ -27,7 +27,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -76,12 +75,7 @@ public class DictItemController {
@Operation(summary = "修改")
@PostMapping("modify")
public Result<String> modify(@ParameterObject @Validated({ Group.Edit.class }) DictItemParam param) {
Optional<DictItem> optional = dictItemRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
DictItem entity = optional.get();
DictItem entity = RepositoryUtil.get(dictItemRepository, param.getId());
BeanUtils.copyProperties(param, entity);
dictItemRepository.saveAndFlush(entity);
return Result.ok();
......@@ -98,12 +92,7 @@ public class DictItemController {
@Operation(summary = "查询")
@GetMapping("find")
public Result<DictItemVo> find(@ParameterObject @Validated IdParam param) {
Optional<DictItem> optional = dictItemRepository.findById(param.getId());
if (optional.isEmpty()) {
throw Status.NOT_FOUND.exception();
}
DictItem entity = optional.get();
DictItem entity = RepositoryUtil.get(dictItemRepository, param.getId());
DictItemVo vo = Commons.transform(entity, DictItemVo.class);
return Result.ok(vo);
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论