refactor(admin-server): 重构管理员列表接口返回值类型

-将 IAdminService 接口中的 pageList 方法返回类型从 IPage<Admin> 改为 IPage<AdminVO>
- 在 AdminServiceImpl 中实现新的 pageList 方法,使用 BeanConvertUtil 进行实体转换
- 新增 BeanConvertUtil工具类,用于实体类与 VO 之间的转换
This commit is contained in:
FalingCliff 2025-05-25 23:39:45 +08:00
parent 821c7a3695
commit 0e9030f364
3 changed files with 79 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.example.admin_server.common.query.IPageRequest;
import com.example.admin_server.model.entity.Admin;
import com.example.admin_server.model.query.AdminQuery;
import com.example.admin_server.model.vo.AdminVO;
/**
* <p>
@ -15,5 +16,5 @@ import com.example.admin_server.model.query.AdminQuery;
* @since 2025-05-24
*/
public interface IAdminService extends IService<Admin> {
IPage<Admin> pageList(IPageRequest pageRequest, AdminQuery query);
IPage<AdminVO> pageList(IPageRequest pageRequest, AdminQuery query);
}

View File

@ -9,7 +9,9 @@ import com.example.admin_server.common.query.QueryWrapperBuilder;
import com.example.admin_server.mapper.AdminMapper;
import com.example.admin_server.model.entity.Admin;
import com.example.admin_server.model.query.AdminQuery;
import com.example.admin_server.model.vo.AdminVO;
import com.example.admin_server.service.IAdminService;
import com.example.admin_server.utils.BeanConvertUtil;
import org.springframework.stereotype.Service;
/**
@ -23,11 +25,12 @@ import org.springframework.stereotype.Service;
@Service
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements IAdminService {
@Override
public IPage<Admin> pageList(IPageRequest pageRequest, AdminQuery query) {
public IPage<AdminVO> pageList(IPageRequest pageRequest, AdminQuery query) {
Page<Admin> page = pageRequest.toPage();
QueryWrapper<Admin> wrapper = QueryWrapperBuilder.build(query, Admin.class);
return this.page(page, wrapper);
IPage<Admin> adminPage = this.page(page, wrapper);
return BeanConvertUtil.convertPage(adminPage, AdminVO::new);
}
}

View File

@ -0,0 +1,71 @@
package com.example.admin_server.utils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
/**
* Bean转换工具类用于实体类与VO之间的转换
*
* @author FallingCliff
* @since 2025-05-24
*/
public class BeanConvertUtil {
/**
* 将源对象转换为目标类型对象
*
* @param source 源对象
* @param targetSupplier 目标对象提供者
* @param <S> 源对象类型
* @param <T> 目标对象类型
* @return 转换后的目标对象
*/
public static <S, T> T convert(S source, Supplier<T> targetSupplier) {
if (source == null) {
return null;
}
T target = targetSupplier.get();
BeanUtils.copyProperties(source, target);
return target;
}
/**
* 将源对象列表转换为目标类型对象列表
*
* @param sourceList 源对象列表
* @param targetSupplier 目标对象提供者
* @param <S> 源对象类型
* @param <T> 目标对象类型
* @return 转换后的目标对象列表
*/
public static <S, T> List<T> convertList(List<S> sourceList, Supplier<T> targetSupplier) {
if (sourceList == null || sourceList.isEmpty()) {
return new ArrayList<>();
}
List<T> targetList = new ArrayList<>(sourceList.size());
for (S source : sourceList) {
targetList.add(convert(source, targetSupplier));
}
return targetList;
}
/**
* 将MyBatis-Plus分页对象转换为目标类型的分页对象
*
* @param page 源分页对象
* @param targetSupplier 目标对象提供者
* @param <S> 源对象类型
* @param <T> 目标对象类型
* @return 转换后的目标类型分页对象
*/
public static <S, T> IPage<T> convertPage(IPage<S> page, Supplier<T> targetSupplier) {
if (page == null) {
return null;
}
return page.convert(source -> convert(source, targetSupplier));
}
}