提交 f4e24024 作者: 方治民

refactor: 优化 RepositoryUtil

上级 842af799
...@@ -20,6 +20,7 @@ import com.yiring.common.param.PageParam; ...@@ -20,6 +20,7 @@ import com.yiring.common.param.PageParam;
import com.yiring.common.service.FileManageService; import com.yiring.common.service.FileManageService;
import com.yiring.common.util.Commons; import com.yiring.common.util.Commons;
import com.yiring.common.util.FileUtils; import com.yiring.common.util.FileUtils;
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;
...@@ -29,7 +30,6 @@ import jakarta.servlet.http.HttpServletResponse; ...@@ -29,7 +30,6 @@ import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -129,12 +129,8 @@ public class ExampleController { ...@@ -129,12 +129,8 @@ public class ExampleController {
@GetMapping("findUserExtensionInfo") @GetMapping("findUserExtensionInfo")
public Result<UserExtensionVo> findUserExtensionInfo() { public Result<UserExtensionVo> findUserExtensionInfo() {
User user = auths.getLoginUser(); User user = auths.getLoginUser();
Optional<UserExtension> optional = userExtensionRepository.findOne(Example.of(new UserExtension(user))); Example<UserExtension> example = Example.of(new UserExtension(user));
if (optional.isEmpty()) { UserExtension ext = RepositoryUtil.find(userExtensionRepository, example);
throw Status.NOT_FOUND.exception();
}
UserExtension ext = optional.get();
UserExtensionVo vo = Commons.transform(ext, UserExtensionVo.class); UserExtensionVo vo = Commons.transform(ext, UserExtensionVo.class);
return Result.ok(vo); return Result.ok(vo);
} }
......
...@@ -6,7 +6,7 @@ import com.yiring.auth.domain.permission.Permission; ...@@ -6,7 +6,7 @@ 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.utils.JpaUtil; 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.Set; import java.util.Set;
...@@ -57,6 +57,6 @@ public class StpInterfaceImpl implements StpInterface { ...@@ -57,6 +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);
return JpaUtil.getOrElseThrow(userRepository, id, "Code.1000"); return RepositoryUtil.find(userRepository, id, "Code.1000");
} }
} }
...@@ -12,7 +12,7 @@ import com.yiring.common.exception.BusinessException; ...@@ -12,7 +12,7 @@ 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.JpaUtil; 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,7 +68,7 @@ public class PermissionController { ...@@ -68,7 +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) {
Permission entity = JpaUtil.getOrElseThrow(permissionRepository, param.getId()); Permission entity = RepositoryUtil.find(permissionRepository, param.getId());
if (!entity.getUid().equals(param.getUid())) { if (!entity.getUid().equals(param.getUid())) {
// 仅当修改了角色标识时才检查重复 // 仅当修改了角色标识时才检查重复
if (has(param.getUid())) { if (has(param.getUid())) {
...@@ -83,7 +83,7 @@ public class PermissionController { ...@@ -83,7 +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) {
Permission entity = JpaUtil.getOrElseThrow(permissionRepository, param.getId()); Permission entity = RepositoryUtil.find(permissionRepository, param.getId());
permissionRepository.delete(entity); permissionRepository.delete(entity);
return Result.ok(); return Result.ok();
} }
...@@ -91,7 +91,7 @@ public class PermissionController { ...@@ -91,7 +91,7 @@ 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) {
Permission permission = JpaUtil.getOrElseThrow(permissionRepository, param.getId()); Permission permission = RepositoryUtil.find(permissionRepository, param.getId());
PermissionVo vo = new PermissionVo(); PermissionVo vo = new PermissionVo();
BeanUtils.copyProperties(permission, vo, Permission.Fields.meta); BeanUtils.copyProperties(permission, vo, Permission.Fields.meta);
vo.setMeta(permission.getMetaJson()); vo.setMeta(permission.getMetaJson());
......
...@@ -13,7 +13,7 @@ import com.yiring.common.exception.BusinessException; ...@@ -13,7 +13,7 @@ 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.JpaUtil; 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,7 +73,7 @@ public class RoleController { ...@@ -73,7 +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) {
Role entity = JpaUtil.getOrElseThrow(roleRepository, param.getId()); Role entity = RepositoryUtil.find(roleRepository, param.getId());
if (!entity.getUid().equals(param.getUid())) { if (!entity.getUid().equals(param.getUid())) {
// 仅当修改了角色标识时才检查重复 // 仅当修改了角色标识时才检查重复
if (has(param.getUid())) { if (has(param.getUid())) {
...@@ -92,7 +92,7 @@ public class RoleController { ...@@ -92,7 +92,7 @@ public class RoleController {
@ParameterObject @Validated IdParam idParam, @ParameterObject @Validated IdParam idParam,
@ParameterObject @Validated IdsParam idsParam @ParameterObject @Validated IdsParam idsParam
) { ) {
Role entity = JpaUtil.getOrElseThrow(roleRepository, idParam.getId()); Role entity = RepositoryUtil.find(roleRepository, idParam.getId());
// 查询权限集合 // 查询权限集合
Collection<Serializable> ids = idsParam.toIds(); Collection<Serializable> ids = idsParam.toIds();
...@@ -113,7 +113,7 @@ public class RoleController { ...@@ -113,7 +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) {
Role entity = JpaUtil.getOrElseThrow(roleRepository, param.getId()); Role entity = RepositoryUtil.find(roleRepository, param.getId());
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))));
......
...@@ -11,7 +11,7 @@ import com.yiring.common.param.IdParam; ...@@ -11,7 +11,7 @@ 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.JpaUtil; 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,7 +60,7 @@ public class UserController { ...@@ -60,7 +60,7 @@ public class UserController {
@ParameterObject @Validated IdParam idParam, @ParameterObject @Validated IdParam idParam,
@ParameterObject @Validated IdsParam idsParam @ParameterObject @Validated IdsParam idsParam
) { ) {
User entity = JpaUtil.getOrElseThrow(userRepository, idParam.getId()); User entity = RepositoryUtil.find(userRepository, idParam.getId());
// 查询角色集合 // 查询角色集合
Collection<Serializable> ids = idsParam.toIds(); Collection<Serializable> ids = idsParam.toIds();
......
...@@ -3,8 +3,10 @@ package com.yiring.common.utils; ...@@ -3,8 +3,10 @@ package com.yiring.common.utils;
import com.yiring.common.core.I18n; import com.yiring.common.core.I18n;
import com.yiring.common.core.Status; import com.yiring.common.core.Status;
import com.yiring.common.exception.FailStatusException;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.jetbrains.annotations.PropertyKey; import org.jetbrains.annotations.PropertyKey;
import org.springframework.data.domain.Example;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
/** /**
...@@ -15,7 +17,7 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -15,7 +17,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
@SuppressWarnings({ "unused" }) @SuppressWarnings({ "unused" })
@UtilityClass @UtilityClass
public class JpaUtil { public class RepositoryUtil {
/** /**
* 根据 ID 查询数据,如果数据不存在则抛出异常【数据未找到】 * 根据 ID 查询数据,如果数据不存在则抛出异常【数据未找到】
...@@ -24,8 +26,9 @@ public class JpaUtil { ...@@ -24,8 +26,9 @@ public class JpaUtil {
* @return T * @return T
* @param <T> T * @param <T> T
* @param <ID> ID * @param <ID> ID
* @exception FailStatusException FailStatusException
*/ */
public <T, ID> T getOrElseThrow(JpaRepository<T, ID> repository, ID id) { public <T, ID> T find(JpaRepository<T, ID> repository, ID id) throws FailStatusException {
return repository.findById(id).orElseThrow(Status.NOT_FOUND::exception); return repository.findById(id).orElseThrow(Status.NOT_FOUND::exception);
} }
...@@ -37,12 +40,44 @@ public class JpaUtil { ...@@ -37,12 +40,44 @@ public class JpaUtil {
* @return T * @return T
* @param <T> T * @param <T> T
* @param <ID> ID * @param <ID> ID
* @exception FailStatusException FailStatusException
*/ */
public <T, ID> T getOrElseThrow( public <T, ID> T find(
JpaRepository<T, ID> repository, JpaRepository<T, ID> repository,
ID id, ID id,
@PropertyKey(resourceBundle = I18n.RESOURCE_BUNDLE) String message @PropertyKey(resourceBundle = I18n.RESOURCE_BUNDLE) String message
) { ) throws FailStatusException {
return repository.findById(id).orElseThrow(() -> Status.NOT_FOUND.exception(message)); return repository.findById(id).orElseThrow(() -> Status.NOT_FOUND.exception(message));
} }
/**
* 根据条件查询数据,如果数据不存在则抛出异常【数据未找到】
* @param repository repository
* @param example example
* @return T
* @param <T> T
* @param <ID> ID
* @throws FailStatusException FailStatusException
*/
public <T, ID> T find(JpaRepository<T, ID> repository, Example<T> example) throws FailStatusException {
return repository.findOne(example).orElseThrow(Status.NOT_FOUND::exception);
}
/**
* 根据条件查询数据,如果数据不存在则抛出自定义异常【message】
* @param repository repository
* @param example example
* @param message 自定义异常信息
* @return T
* @param <T> T
* @param <ID> ID
* @throws FailStatusException FailStatusException
*/
public <T, ID> T find(
JpaRepository<T, ID> repository,
Example<T> example,
@PropertyKey(resourceBundle = I18n.RESOURCE_BUNDLE) String message
) throws FailStatusException {
return repository.findOne(example).orElseThrow(() -> Status.NOT_FOUND.exception(message));
}
} }
...@@ -7,7 +7,7 @@ import com.yiring.common.param.IdParam; ...@@ -7,7 +7,7 @@ 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.JpaUtil; 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;
...@@ -73,7 +73,7 @@ public class DictController { ...@@ -73,7 +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) {
Dict entity = JpaUtil.getOrElseThrow(dictRepository, param.getId()); Dict entity = RepositoryUtil.find(dictRepository, param.getId());
if (!entity.getCode().equals(param.getCode())) { if (!entity.getCode().equals(param.getCode())) {
throw BusinessException.i18n("Code.101002"); throw BusinessException.i18n("Code.101002");
} }
...@@ -94,7 +94,7 @@ public class DictController { ...@@ -94,7 +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) {
Dict entity = JpaUtil.getOrElseThrow(dictRepository, param.getId()); Dict entity = RepositoryUtil.find(dictRepository, param.getId());
DictVo vo = Commons.transform(entity, DictVo.class); DictVo vo = Commons.transform(entity, DictVo.class);
return Result.ok(vo); return Result.ok(vo);
} }
......
...@@ -9,7 +9,7 @@ import com.yiring.common.param.IdParam; ...@@ -9,7 +9,7 @@ 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.JpaUtil; 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;
...@@ -75,7 +75,7 @@ public class DictItemController { ...@@ -75,7 +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) {
DictItem entity = JpaUtil.getOrElseThrow(dictItemRepository, param.getId()); DictItem entity = RepositoryUtil.find(dictItemRepository, param.getId());
BeanUtils.copyProperties(param, entity); BeanUtils.copyProperties(param, entity);
dictItemRepository.saveAndFlush(entity); dictItemRepository.saveAndFlush(entity);
return Result.ok(); return Result.ok();
...@@ -92,7 +92,7 @@ public class DictItemController { ...@@ -92,7 +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) {
DictItem entity = JpaUtil.getOrElseThrow(dictItemRepository, param.getId()); DictItem entity = RepositoryUtil.find(dictItemRepository, param.getId());
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论