提交 86468443 作者: 方治民

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

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