refactor(admin-server): 重构管理员列表接口返回值类型
-将 IAdminService 接口中的 pageList 方法返回类型从 IPage<Admin> 改为 IPage<AdminVO> - 在 AdminServiceImpl 中实现新的 pageList 方法,使用 BeanConvertUtil 进行实体转换 - 新增 BeanConvertUtil工具类,用于实体类与 VO 之间的转换
This commit is contained in:
parent
821c7a3695
commit
0e9030f364
|
|
@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
import com.example.admin_server.common.query.IPageRequest;
|
import com.example.admin_server.common.query.IPageRequest;
|
||||||
import com.example.admin_server.model.entity.Admin;
|
import com.example.admin_server.model.entity.Admin;
|
||||||
import com.example.admin_server.model.query.AdminQuery;
|
import com.example.admin_server.model.query.AdminQuery;
|
||||||
|
import com.example.admin_server.model.vo.AdminVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|
@ -15,5 +16,5 @@ import com.example.admin_server.model.query.AdminQuery;
|
||||||
* @since 2025-05-24
|
* @since 2025-05-24
|
||||||
*/
|
*/
|
||||||
public interface IAdminService extends IService<Admin> {
|
public interface IAdminService extends IService<Admin> {
|
||||||
IPage<Admin> pageList(IPageRequest pageRequest, AdminQuery query);
|
IPage<AdminVO> pageList(IPageRequest pageRequest, AdminQuery query);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,9 @@ import com.example.admin_server.common.query.QueryWrapperBuilder;
|
||||||
import com.example.admin_server.mapper.AdminMapper;
|
import com.example.admin_server.mapper.AdminMapper;
|
||||||
import com.example.admin_server.model.entity.Admin;
|
import com.example.admin_server.model.entity.Admin;
|
||||||
import com.example.admin_server.model.query.AdminQuery;
|
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.service.IAdminService;
|
||||||
|
import com.example.admin_server.utils.BeanConvertUtil;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -23,11 +25,12 @@ import org.springframework.stereotype.Service;
|
||||||
@Service
|
@Service
|
||||||
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements IAdminService {
|
public class AdminServiceImpl extends ServiceImpl<AdminMapper, Admin> implements IAdminService {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<Admin> pageList(IPageRequest pageRequest, AdminQuery query) {
|
public IPage<AdminVO> pageList(IPageRequest pageRequest, AdminQuery query) {
|
||||||
Page<Admin> page = pageRequest.toPage();
|
Page<Admin> page = pageRequest.toPage();
|
||||||
QueryWrapper<Admin> wrapper = QueryWrapperBuilder.build(query, Admin.class);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue