提交 86468443 作者: 方治民

fix: 修复角色 ID 字段类型变更后遗留未处理的问题、调整部分 copyProperties 实现

上级 38b4e253
...@@ -34,11 +34,7 @@ public class Permissions { ...@@ -34,11 +34,7 @@ public class Permissions {
public List<RoleVo> toRoleVos(Set<Role> roles) { public List<RoleVo> toRoleVos(Set<Role> roles) {
return roles return roles
.stream() .stream()
.map(role -> { .map(role -> Commons.transform(role, RoleVo.class, Role.Fields.permissions))
RoleVo vo = new RoleVo();
BeanUtils.copyProperties(role, vo, Role.Fields.permissions);
return vo;
})
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
......
...@@ -97,7 +97,7 @@ public class RoleController { ...@@ -97,7 +97,7 @@ public class RoleController {
} }
// 查询权限集合 // 查询权限集合
Set<Long> ids = idsParam.toIds(); Set<String> ids = idsParam.toIds();
Set<Permission> permissions = permissionRepository Set<Permission> permissions = permissionRepository
.findAll() .findAll()
.stream() .stream()
......
...@@ -17,6 +17,7 @@ import com.yiring.common.core.Status; ...@@ -17,6 +17,7 @@ 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.vo.PageVo; import com.yiring.common.vo.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -28,7 +29,6 @@ import java.util.stream.Collectors; ...@@ -28,7 +29,6 @@ import java.util.stream.Collectors;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.Valid; import javax.validation.Valid;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
...@@ -109,7 +109,7 @@ public class UserController { ...@@ -109,7 +109,7 @@ public class UserController {
} }
// 查询权限集合 // 查询权限集合
Set<Long> ids = idsParam.toIds(); Set<String> ids = idsParam.toIds();
Set<Role> roles = roleRepository Set<Role> roles = roleRepository
.findAll() .findAll()
.stream() .stream()
...@@ -126,14 +126,8 @@ public class UserController { ...@@ -126,14 +126,8 @@ public class UserController {
@GetMapping("/manage/page") @GetMapping("/manage/page")
public Result<PageVo<UserVo>> page(@Valid PageParam param) { public Result<PageVo<UserVo>> page(@Valid PageParam param) {
Page<User> page = userRepository.findAll(PageParam.toPageable(param)); Page<User> page = userRepository.findAll(PageParam.toPageable(param));
List<UserVo> data = page
.get() List<UserVo> data = page.get().map(user -> Commons.transform(user, UserVo.class)).collect(Collectors.toList());
.map(role -> {
UserVo vo = new UserVo();
BeanUtils.copyProperties(role, vo);
return vo;
})
.collect(Collectors.toList());
PageVo<UserVo> vo = PageVo.build(data, page.getTotalElements()); PageVo<UserVo> vo = PageVo.build(data, page.getTotalElements());
return Result.ok(vo); return Result.ok(vo);
} }
......
...@@ -40,7 +40,7 @@ public class IdsParam implements Serializable { ...@@ -40,7 +40,7 @@ public class IdsParam implements Serializable {
* 获取 Long 类型的 ID 集合 * 获取 Long 类型的 ID 集合
* @return ID 集合 * @return ID 集合
*/ */
public Set<Long> toIds() { public Set<String> toIds() {
return Arrays.stream(this.ids.split(",")).map(Long::parseLong).collect(Collectors.toSet()); return Arrays.stream(this.ids.split(",")).collect(Collectors.toSet());
} }
} }
...@@ -84,6 +84,27 @@ public class Commons { ...@@ -84,6 +84,27 @@ public class Commons {
} }
/** /**
* 对象 Copy
* @param source 源对象
* @param type 目标类型
* @param ignoreProperties 忽略属性
* @return 目标对象
* @param <T> 目标类型
*/
public <T> T transform(Object source, Class<T> type, String... ignoreProperties) {
try {
Constructor<T> declaredConstructor = type.getDeclaredConstructor();
// 实例化
T target = declaredConstructor.newInstance();
// 使用 BeanUtils 进行数据拷贝
BeanUtils.copyProperties(source, target, ignoreProperties);
return target;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 将集合通过 BeanUtils 反射转换成指定类型集合 * 将集合通过 BeanUtils 反射转换成指定类型集合
* @param list 原始数据集合 * @param list 原始数据集合
* @param type 目标类型 * @param type 目标类型
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论