From 0e9030f3640330eb0017bc641c49cb76e9b704f3 Mon Sep 17 00:00:00 2001 From: FalingCliff Date: Sun, 25 May 2025 23:39:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor(admin-server):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=80=BC=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -将 IAdminService 接口中的 pageList 方法返回类型从 IPage 改为 IPage - 在 AdminServiceImpl 中实现新的 pageList 方法,使用 BeanConvertUtil 进行实体转换 - 新增 BeanConvertUtil工具类,用于实体类与 VO 之间的转换 --- .../admin_server/service/IAdminService.java | 3 +- .../service/impl/AdminServiceImpl.java | 9 ++- .../admin_server/utils/BeanConvertUtil.java | 71 +++++++++++++++++++ 3 files changed, 79 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/example/admin_server/utils/BeanConvertUtil.java diff --git a/src/main/java/com/example/admin_server/service/IAdminService.java b/src/main/java/com/example/admin_server/service/IAdminService.java index 580461b..c1df10a 100644 --- a/src/main/java/com/example/admin_server/service/IAdminService.java +++ b/src/main/java/com/example/admin_server/service/IAdminService.java @@ -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; /** *

@@ -15,5 +16,5 @@ import com.example.admin_server.model.query.AdminQuery; * @since 2025-05-24 */ public interface IAdminService extends IService { - IPage pageList(IPageRequest pageRequest, AdminQuery query); + IPage pageList(IPageRequest pageRequest, AdminQuery query); } diff --git a/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java b/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java index 29cc22a..bce0694 100644 --- a/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java +++ b/src/main/java/com/example/admin_server/service/impl/AdminServiceImpl.java @@ -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 implements IAdminService { - @Override - public IPage pageList(IPageRequest pageRequest, AdminQuery query) { + public IPage pageList(IPageRequest pageRequest, AdminQuery query) { Page page = pageRequest.toPage(); QueryWrapper wrapper = QueryWrapperBuilder.build(query, Admin.class); - return this.page(page, wrapper); + IPage adminPage = this.page(page, wrapper); + + return BeanConvertUtil.convertPage(adminPage, AdminVO::new); } } diff --git a/src/main/java/com/example/admin_server/utils/BeanConvertUtil.java b/src/main/java/com/example/admin_server/utils/BeanConvertUtil.java new file mode 100644 index 0000000..0ddfbe4 --- /dev/null +++ b/src/main/java/com/example/admin_server/utils/BeanConvertUtil.java @@ -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 源对象类型 + * @param 目标对象类型 + * @return 转换后的目标对象 + */ + public static T convert(S source, Supplier targetSupplier) { + if (source == null) { + return null; + } + T target = targetSupplier.get(); + BeanUtils.copyProperties(source, target); + return target; + } + + /** + * 将源对象列表转换为目标类型对象列表 + * + * @param sourceList 源对象列表 + * @param targetSupplier 目标对象提供者 + * @param 源对象类型 + * @param 目标对象类型 + * @return 转换后的目标对象列表 + */ + public static List convertList(List sourceList, Supplier targetSupplier) { + if (sourceList == null || sourceList.isEmpty()) { + return new ArrayList<>(); + } + List targetList = new ArrayList<>(sourceList.size()); + for (S source : sourceList) { + targetList.add(convert(source, targetSupplier)); + } + return targetList; + } + + /** + * 将MyBatis-Plus分页对象转换为目标类型的分页对象 + * + * @param page 源分页对象 + * @param targetSupplier 目标对象提供者 + * @param 源对象类型 + * @param 目标对象类型 + * @return 转换后的目标类型分页对象 + */ + public static IPage convertPage(IPage page, Supplier targetSupplier) { + if (page == null) { + return null; + } + return page.convert(source -> convert(source, targetSupplier)); + } +}