提交 81249ce9 作者: 方治民

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

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