diff --git a/src/main/java/com/cultural/heritage/controller/book/BookingDateController.java b/src/main/java/com/cultural/heritage/controller/book/BookingDateController.java index a06b3bd..b739ac6 100644 --- a/src/main/java/com/cultural/heritage/controller/book/BookingDateController.java +++ b/src/main/java/com/cultural/heritage/controller/book/BookingDateController.java @@ -111,7 +111,6 @@ public class BookingDateController { } Long id = commonRequest.getId(); BookingDate bookingDate = bookingDateService.getById(id); - ThrowUtils.throwIf(bookingDate == null, ErrorCode.OPERATION_ERROR, "预约日期不存在"); Integer status = bookingDate.getIsAvailable() == 0 ? 1 : 0; UpdateWrapper updateWrapper = new UpdateWrapper<>(); diff --git a/src/main/java/com/cultural/heritage/controller/book/PhotoCategoryController.java b/src/main/java/com/cultural/heritage/controller/book/PhotoCategoryController.java index f1d7236..a1312a1 100644 --- a/src/main/java/com/cultural/heritage/controller/book/PhotoCategoryController.java +++ b/src/main/java/com/cultural/heritage/controller/book/PhotoCategoryController.java @@ -1,7 +1,6 @@ package com.cultural.heritage.controller.book; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.cultural.heritage.annotation.AuthCheck; import com.cultural.heritage.common.BaseResponse; @@ -36,8 +35,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/photoCategory") @@ -142,20 +142,12 @@ public class PhotoCategoryController { Long id = commonRequest.getId(); PhotoCategory photoCategory = photoCategoryService.getById(id); ThrowUtils.throwIf(photoCategory == null, ErrorCode.OPERATION_ERROR, "写真类别不存在"); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("categoryName", photoCategory.getName()); - List photoProductsList = photoProductsService.list(queryWrapper); + // 获取写真产品列表 + List photoProductsList = commonService.findByFieldValue("categoryName", photoCategory.getName(), photoProductsService); // 获取预约日期表 - List photoProductIds = photoProductsList.stream().map(PhotoProducts::getId).toList(); - QueryWrapper bookingDateQueryWrapper = new QueryWrapper<>(); - bookingDateQueryWrapper.in("photoProductId", photoProductIds); - List bookingDateList = bookingDateService.list(bookingDateQueryWrapper); + List bookingDateList = commonService.findBySourceFieldValues(photoProductsList, bookingDateService, "id", "photoProductId"); // 获取预约时间表 - List bookingDateIds = bookingDateList.stream().map(BookingDate::getId).toList(); - QueryWrapper bookingTimeQueryWrapper = new QueryWrapper<>(); - bookingTimeQueryWrapper.in("bookingDateId", bookingDateIds); - List bookingTimeList = bookingTimeService.list(bookingTimeQueryWrapper); - + List bookingTimeList = commonService.findBySourceFieldValues(bookingDateList, bookingTimeService, "id", "bookingDateId"); // 批量删除预约时间 boolean removeTime = bookingTimeService.removeBatchByIds(bookingTimeList); ThrowUtils.throwIf(!removeTime, ErrorCode.OPERATION_ERROR, "预约时间删除失败"); @@ -186,16 +178,14 @@ public class PhotoCategoryController { @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) public BaseResponse> listCategory() { List photoCategoryList = photoCategoryService.list(); - List photoCategoryVOS = photoCategoryList.stream().map(photoCategory -> { - PhotoCategoryVO photoCategoryVO = new PhotoCategoryVO(); - BeanUtils.copyProperties(photoCategory, photoCategoryVO); - return photoCategoryVO; - }).toList(); + // 获取写真产品VO列表 + List photoCategoryVOS = commonService.convertList(photoCategoryList, PhotoCategoryVO.class); return ResultUtils.success(photoCategoryVOS); } + /** * 小程序端用户查询写真类别 * @return 写真类别列表 @@ -204,24 +194,14 @@ public class PhotoCategoryController { @Operation(summary = "小程序端用户查询写真类别", description = "参数:无,权限:所有人,方法名:listCategoryByUsers") @AuthCheck(mustRole = UserConstant.ADMIN_ROLE) public BaseResponse> listCategoryByUsers() { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("isShelves", 1); - List photoProductsList = photoProductsService.list(queryWrapper); - List typeNameList = photoProductsList.stream().map(PhotoProducts::getCategoryName).toList(); + // 获取已上架的写真产品列表 + List photoProductsList = commonService.findByFieldValue("isShelves", 1, photoProductsService); + // 获取类别写真产品类别列表 + List photoCategoryList = commonService.findBySourceFieldValues(photoProductsList, photoCategoryService, "categoryName", "name"); + // 获取写真产品类别VO列表 + List photoCategoryVOList = commonService.convertList(photoCategoryList, PhotoCategoryVO.class); - QueryWrapper categoryWrapper = new QueryWrapper<>(); - List categoryList = new ArrayList<>(); - if (!typeNameList.isEmpty()) { - categoryWrapper.in("name", typeNameList); - categoryList = photoCategoryService.list(categoryWrapper); - } - List photoCategoryVOS = categoryList.stream().map(photoCategory -> { - PhotoCategoryVO photoCategoryVO = new PhotoCategoryVO(); - BeanUtils.copyProperties(photoCategory, photoCategoryVO); - return photoCategoryVO; - }).toList(); - - return ResultUtils.success(photoCategoryVOS); + return ResultUtils.success(photoCategoryVOList); } @@ -241,15 +221,12 @@ public class PhotoCategoryController { throw new BusinessException(ErrorCode.PARAMS_ERROR); } String categoryName = commonStringRequest.getType(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("categoryName", categoryName).eq("isShelves", 1); - List photoProductsList = photoProductsService.list(queryWrapper); - - List photoProductsVOS = photoProductsList.stream().map(photoProducts -> { - PhotoProductsVO photoProductsVO = new PhotoProductsVO(); - BeanUtils.copyProperties(photoProducts, photoProductsVO); - return photoProductsVO; - }).toList(); + Map fieldConditions = new HashMap<>(); + fieldConditions.put("categoryName", categoryName); + fieldConditions.put("isShelves", 1); + List photoProductsList = commonService.findByMultipleFieldValues(fieldConditions, photoProductsService); + // 获取写真产品VO列表 + List photoProductsVOS = commonService.convertList(photoProductsList, PhotoProductsVO.class); return ResultUtils.success(photoProductsVOS); } diff --git a/src/main/java/com/cultural/heritage/controller/book/PhotoProductsController.java b/src/main/java/com/cultural/heritage/controller/book/PhotoProductsController.java index b92ea89..faf1d02 100644 --- a/src/main/java/com/cultural/heritage/controller/book/PhotoProductsController.java +++ b/src/main/java/com/cultural/heritage/controller/book/PhotoProductsController.java @@ -43,9 +43,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; @RestController @RequestMapping("/photoProducts") @@ -93,9 +91,6 @@ public class PhotoProductsController { boolean result = photoProductsService.save(photoProducts); ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "写真产品添加失败"); - // 封装map集合(键:预约日期id, 值:预约时间列表) - Map> map = new HashMap<>(); - // 添加预约日期 List bookingDateAddRequestList = photoProductsAddRequest.getBookingDateAddRequestList(); List bookingDateList = bookingDateAddRequestList.stream().map(bookingDateAddRequest -> { @@ -171,17 +166,15 @@ public class PhotoProductsController { throw new BusinessException(ErrorCode.PARAMS_ERROR); } Long id = commonRequest.getId(); + // 获取预约日期列表 + List bookingDateList = commonService.findByFieldValue("photoProductId", id, bookingDateService); + // 获取预约时间列表 + List bookingTimeList = commonService.findBySourceFieldValues(bookingDateList, bookingTimeService, "id", "bookingDateId"); // 删除写真产品下的预约时间 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("photoProductId", id); - List bookingDateList = bookingDateService.list(queryWrapper); - List bookingDateIds = bookingDateList.stream().map(BookingDate::getId).toList(); - QueryWrapper bookingTimeQueryWrapper = new QueryWrapper<>(); - bookingTimeQueryWrapper.in("bookingDateId", bookingDateIds); - boolean remove = bookingTimeService.remove(bookingTimeQueryWrapper); + boolean remove = bookingTimeService.removeBatchByIds(bookingTimeList); ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR, "预约时间批量删除失败"); - // 删除写真产品下的预约时间 - boolean success = bookingDateService.remove(queryWrapper); + // 删除写真产品下的预约日期 + boolean success = bookingDateService.removeBatchByIds(bookingDateList); ThrowUtils.throwIf(!success, ErrorCode.OPERATION_ERROR, "预约日期批量删除失败"); // 删除写真产品 boolean result = photoProductsService.removeById(id); @@ -205,19 +198,16 @@ public class PhotoProductsController { throw new BusinessException(ErrorCode.PARAMS_ERROR); } List idList = commonBatchRequest.getIdList(); + // 获取写真产品的预约日期 + List bookingDateList = commonService.findByMyIds(idList, bookingDateService); + // 获取写真产品的预约时间 + List bookingTimeList = commonService.findBySourceFieldValues(bookingDateList, bookingTimeService, "id", "bookingDateId"); // 删除写真产品下的预约时间 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in("photoProductId", idList); - List bookingDateList = bookingDateService.list(queryWrapper); - List bookingDateIds = bookingDateList.stream().map(BookingDate::getId).toList(); - QueryWrapper bookingTimeQueryWrapper = new QueryWrapper<>(); - bookingTimeQueryWrapper.in("bookingDateId", bookingDateIds); - boolean remove = bookingTimeService.remove(bookingTimeQueryWrapper); + boolean remove = bookingTimeService.removeBatchByIds(bookingTimeList); ThrowUtils.throwIf(!remove, ErrorCode.OPERATION_ERROR, "预约时间批量删除失败"); - // 删除写真产品下的预约时间 - boolean success = bookingDateService.remove(queryWrapper); + // 删除写真产品下的预约日期 + boolean success = bookingDateService.removeBatchByIds(bookingDateList); ThrowUtils.throwIf(!success, ErrorCode.OPERATION_ERROR, "预约日期批量删除失败"); - // 批量删除写真产品 boolean result = photoProductsService.removeBatchByIds(idList); ThrowUtils.throwIf(!result, ErrorCode.OPERATION_ERROR, "写真产品批量删除失败"); @@ -246,26 +236,16 @@ public class PhotoProductsController { // 获取写真产品列表 List records = page.getRecords(); // 获取预约日期表 - List photoProductIds = records.stream().map(PhotoProducts::getId).toList(); - QueryWrapper bookingDateQueryWrapper = new QueryWrapper<>(); - bookingDateQueryWrapper.in("photoProductId", photoProductIds); - List bookingDateList = bookingDateService.list(bookingDateQueryWrapper); + List bookingDateList = commonService.findBySourceFieldValues(records, bookingDateService, "id", "photoProductId"); // 获取预约时间表 - List bookingDateIds = bookingDateList.stream().map(BookingDate::getId).toList(); - QueryWrapper bookingTimeQueryWrapper = new QueryWrapper<>(); - bookingTimeQueryWrapper.in("bookingDateId", bookingDateIds); - List bookingTimeList = bookingTimeService.list(bookingTimeQueryWrapper); + List bookingTimeList = commonService.findBySourceFieldValues(bookingDateList, bookingTimeService, "id", "bookingDateId"); // 封装成BookingTimeVO列表, 并将预约时间从小到大排序 - List bookingTimeVOList = bookingTimeList.stream().map(bookingTime -> { - BookingTimeVO bookingTimeVO = new BookingTimeVO(); - BeanUtils.copyProperties(bookingTime, bookingTimeVO); - return bookingTimeVO; - }).sorted((b1, b2) -> { + List bookingTimeVOList = commonService.convertList(bookingTimeList, BookingTimeVO.class); + bookingTimeVOList.sort((b1, b2) -> { DateTime time1 = DateUtil.parse(b1.getTimePoint(), "HH:mm"); DateTime time2 = DateUtil.parse(b2.getTimePoint(), "HH:mm"); return time1.compareTo(time2); // 按照时间升序排序 - }).toList(); - + }); // 封装成BookingDateVO列表 List bookingDateVOS = new ArrayList<>(); @@ -324,29 +304,18 @@ public class PhotoProductsController { } Long id = commonRequest.getId(); PhotoProducts photoProducts = photoProductsService.getById(id); - System.out.println("\n\n\n\n\n"); - System.out.println(photoProducts); ThrowUtils.throwIf(photoProducts == null || photoProducts.getIsShelves() == 0, ErrorCode.OPERATION_ERROR, "该商品已被删除或者已下架"); - // 获取预约日期表 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("photoProductId", id); - List bookingDateList = bookingDateService.list(queryWrapper); + List bookingDateList = commonService.findByFieldValue("photoProductId", id, bookingDateService); // 获取预约时间表 - List bookingDateIds = bookingDateList.stream().map(BookingDate::getId).toList(); - QueryWrapper bookingTimeQueryWrapper = new QueryWrapper<>(); - bookingTimeQueryWrapper.in("bookingDateId", bookingDateIds); - List bookingTimeList = bookingTimeService.list(bookingTimeQueryWrapper); + List bookingTimeList = commonService.findBySourceFieldValues(bookingDateList, bookingTimeService, "id", "bookingDateId"); // 封装成BookingTimeVO列表, 并将预约时间从小到大排序 - List bookingTimeVOList = bookingTimeList.stream().map(bookingTime -> { - BookingTimeVO bookingTimeVO = new BookingTimeVO(); - BeanUtils.copyProperties(bookingTime, bookingTimeVO); - return bookingTimeVO; - }).sorted((b1, b2) -> { + List bookingTimeVOList = commonService.convertList(bookingTimeList, BookingTimeVO.class); + bookingTimeVOList.sort((b1, b2) -> { DateTime time1 = DateUtil.parse(b1.getTimePoint(), "HH:mm"); DateTime time2 = DateUtil.parse(b2.getTimePoint(), "HH:mm"); return time1.compareTo(time2); // 按照时间升序排序 - }).toList(); + }); // 封装成BookingDateVO列表 List bookingDateVOS = new ArrayList<>(); diff --git a/src/main/java/com/cultural/heritage/controller/good/AppointmentDateController.java b/src/main/java/com/cultural/heritage/controller/good/AppointmentDateController.java index 9aebc21..c82d029 100644 --- a/src/main/java/com/cultural/heritage/controller/good/AppointmentDateController.java +++ b/src/main/java/com/cultural/heritage/controller/good/AppointmentDateController.java @@ -288,7 +288,7 @@ public class AppointmentDateController { ThrowUtils.throwIf(good == null, ErrorCode.OPERATION_ERROR, "当前商品不存在"); // 获取预约日期列表 - List appointmentDateList = commonService.getItemsByIds(timePeriodList, appointmentDateService, TimePeriod::getAppointmentDateId); + List appointmentDateList = commonService.findByOtherIds(timePeriodList, appointmentDateService, TimePeriod::getAppointmentDateId); // 封装map集合(键:预约日期id, 值:是否可预约) Map map = new HashMap<>(); diff --git a/src/main/java/com/cultural/heritage/controller/good/CartExperienceController.java b/src/main/java/com/cultural/heritage/controller/good/CartExperienceController.java index f260157..b60ab60 100644 --- a/src/main/java/com/cultural/heritage/controller/good/CartExperienceController.java +++ b/src/main/java/com/cultural/heritage/controller/good/CartExperienceController.java @@ -95,7 +95,7 @@ public class CartExperienceController { userService.getLoginUser(request); // 获取服务类购物车商品列表 - List cartExperienceList = commonService.getItemsByIds(cartExperienceUpdateRequestList, cartExperienceService, CartExperienceUpdateRequest::getId); + List cartExperienceList = commonService.findByOtherIds(cartExperienceUpdateRequestList, cartExperienceService, CartExperienceUpdateRequest::getId); // 封装map集合(键:购物车id, 值:商品数量) Map QuantityMap = new HashMap<>(); @@ -114,7 +114,7 @@ public class CartExperienceController { } // 获取商品列表 - List goodList = commonService.getItemsByIds(cartExperienceList, goodService, CartExperience::getGoodId); + List goodList = commonService.findByOtherIds(cartExperienceList, goodService, CartExperience::getGoodId); // 封装map集合(键:商品id, 值:商品价格) Map priceMap = new HashMap<>(); @@ -222,10 +222,10 @@ public class CartExperienceController { userService.getLoginUser(request); List cartExperienceIds = commonBatchRequest.getIdList(); // 获取购物车信息列表 - List cartExperiences = commonService.getListByIds(cartExperienceIds, cartExperienceService); + List cartExperiences = commonService.findByMyIds(cartExperienceIds, cartExperienceService); // 获取购物车中的商品列表 - List goodList = commonService.getItemsByIds(cartExperiences, goodService, CartExperience::getGoodId); + List goodList = commonService.findByOtherIds(cartExperiences, goodService, CartExperience::getGoodId); // 封装goodMap(根据商品id查询商品) Map goodMap = new HashMap<>(); diff --git a/src/main/java/com/cultural/heritage/controller/good/CartRecordController.java b/src/main/java/com/cultural/heritage/controller/good/CartRecordController.java index 6dccd72..cb3a6ad 100644 --- a/src/main/java/com/cultural/heritage/controller/good/CartRecordController.java +++ b/src/main/java/com/cultural/heritage/controller/good/CartRecordController.java @@ -88,7 +88,7 @@ public class CartRecordController { userService.getLoginUser(request); // 获取购物车列表 - List cartRecordList = commonService.getItemsByIds(cartRecordUpdateRequestList, cartRecordService, CartRecordUpdateRequest::getId); + List cartRecordList = commonService.findByOtherIds(cartRecordUpdateRequestList, cartRecordService, CartRecordUpdateRequest::getId); // 封装map集合(键:购物车id, 值:商品数量) Map QuantityMap = new HashMap<>(); @@ -97,7 +97,7 @@ public class CartRecordController { } // 获取商品列表 - List goodList = commonService.getItemsByIds(cartRecordList, goodService, CartRecord::getGoodId); + List goodList = commonService.findByOtherIds(cartRecordList, goodService, CartRecord::getGoodId); // 封装map集合(键:商品id, 值:商品价格) Map priceMap = new HashMap<>(); @@ -200,10 +200,10 @@ public class CartRecordController { userService.getLoginUser(request); List cartRecordIds = commonBatchRequest.getIdList(); // 根据id列表获取购物车信息列表 - List cartRecords = commonService.getListByIds(cartRecordIds, cartRecordService); + List cartRecords = commonService.findByMyIds(cartRecordIds, cartRecordService); // 提取出购物车中的商品列表 - List goodList = commonService.getItemsByIds(cartRecords, goodService, CartRecord::getGoodId); + List goodList = commonService.findByOtherIds(cartRecords, goodService, CartRecord::getGoodId); // 封装goodMap(根据商品id查询商品) Map goodMap = new HashMap<>(); diff --git a/src/main/java/com/cultural/heritage/controller/good/CategoryController.java b/src/main/java/com/cultural/heritage/controller/good/CategoryController.java index 3a2c62f..1215c7e 100644 --- a/src/main/java/com/cultural/heritage/controller/good/CategoryController.java +++ b/src/main/java/com/cultural/heritage/controller/good/CategoryController.java @@ -130,7 +130,7 @@ public class CategoryController { } List idList = commonDelBatchRequest.getIdList(); // 批量删除当前类别下的所有商品 - List categoryList = commonService.getListByIds(idList, categoryService); + List categoryList = commonService.findByMyIds(idList, categoryService); List typeNameList = categoryList.stream().map(Category::getTypeName).toList(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("type", typeNameList); diff --git a/src/main/java/com/cultural/heritage/service/book/PhotoCategoryService.java b/src/main/java/com/cultural/heritage/service/book/PhotoCategoryService.java index 8fd725d..998f590 100644 --- a/src/main/java/com/cultural/heritage/service/book/PhotoCategoryService.java +++ b/src/main/java/com/cultural/heritage/service/book/PhotoCategoryService.java @@ -11,4 +11,5 @@ public interface PhotoCategoryService extends IService { */ void validPhotoCategory(PhotoCategory photoCategory, boolean update); + } diff --git a/src/main/java/com/cultural/heritage/service/book/impl/PhotoCategoryServiceImpl.java b/src/main/java/com/cultural/heritage/service/book/impl/PhotoCategoryServiceImpl.java index 7ddee70..a5bd7f7 100644 --- a/src/main/java/com/cultural/heritage/service/book/impl/PhotoCategoryServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/book/impl/PhotoCategoryServiceImpl.java @@ -18,7 +18,7 @@ public class PhotoCategoryServiceImpl extends ServiceImpl List getItemsByIds(List records, IService genericService, Function getId); + List findByOtherIds(List sourceList, IService genericService, Function getId); /** * 根据 ID 列表获取对应的实体列表 */ - List getListByIds(List ids, IService genericService); + List findByMyIds(List ids, IService genericService); @@ -31,5 +32,47 @@ public interface CommonService { * @param 目标查询实体类型 * @return 查询结果集合 */ - List findListByField(List sourceList, IService service, String sourceField, String targetField); + List findBySourceFieldValues(List sourceList, IService service, String sourceField, String targetField); + + + + /** + * 根据指定字段名和值,使用给定的服务对象查询对应的实体类列表。 + * @param 实体类类型 + * @param fieldName 查询字段的名称 + * @param fieldValue 查询字段的值 + * @param service 用于执行查询的服务层对象 + * @return 返回符合条件的实体类列表(`List`)。如果没有符合条件的记录,返回空列表。 + */ + List findByFieldValue(String fieldName, Object fieldValue, IService service); + + + + /** + * 根据多个字段和对应的值进行查询。 + * 该方法可以动态构建查询条件并执行查询。 + * + * @param fieldConditions 查询条件的字段和值,使用Map存储 + * @param service 执行查询操作的服务对象(通常是MyBatis-Plus的 IService) + * @return 返回查询结果的列表 + */ + List findByMultipleFieldValues(Map fieldConditions, IService service); + + + + /** + * 将一个类型的 List 转换为另一个类型的 List。 + * @param sourceList 源列表,类型为 T + * @param targetClass 目标类型的 Class 对象 + * @param 源类型 + * @param 目标类型 + * @return 转换后的目标类型列表 + */ + List convertList(List sourceList, Class targetClass); + + + + + + } diff --git a/src/main/java/com/cultural/heritage/service/common/impl/CommonServiceImpl.java b/src/main/java/com/cultural/heritage/service/common/impl/CommonServiceImpl.java index 713ac46..99399fa 100644 --- a/src/main/java/com/cultural/heritage/service/common/impl/CommonServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/common/impl/CommonServiceImpl.java @@ -3,10 +3,12 @@ package com.cultural.heritage.service.common.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.IService; import com.cultural.heritage.service.common.CommonService; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.lang.reflect.Field; import java.util.List; +import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; @@ -18,12 +20,15 @@ public class CommonServiceImpl implements CommonService { * 取出一个集合的某个id列表, 去另外一个集合中筛选出属于这个id列表的集合 */ @Override - public List getItemsByIds(List records, IService genericService, Function getId) { + public List findByOtherIds(List sourceList, IService genericService, Function getId) { // 提取ID - List ids = records.stream() + List ids = sourceList.stream() .map(getId) // 提取每个元素的ID .collect(Collectors.toList()); + if (ids.isEmpty()) { + return List.of(); // 返回空集合 + } // 构造查询条件 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", ids); @@ -37,7 +42,10 @@ public class CommonServiceImpl implements CommonService { * 根据 ID 列表获取对应的实体列表 */ @Override - public List getListByIds(List ids, IService genericService) { + public List findByMyIds(List ids, IService genericService) { + if (ids.isEmpty()) { + return List.of(); // 返回空集合 + } // 构造查询条件 QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", ids); // 使用 IN 条件 @@ -59,7 +67,7 @@ public class CommonServiceImpl implements CommonService { * @return 查询结果集合 */ @Override - public List findListByField(List sourceList, IService service, String sourceField, String targetField) { + public List findBySourceFieldValues(List sourceList, IService service, String sourceField, String targetField) { // 使用反射获取源集合中对应字段的值 List fieldValues = sourceList.stream() .map(item -> getFieldValue(item, sourceField)) // 获取字段值 @@ -76,6 +84,8 @@ public class CommonServiceImpl implements CommonService { return service.list(queryWrapper); // 执行查询并返回结果 } + + /** * 使用反射获取对象的字段值 * @param object 对象 @@ -93,4 +103,81 @@ public class CommonServiceImpl implements CommonService { } + + /** + * 根据指定字段名和值,使用给定的服务对象查询对应的实体类列表。 + * @param 实体类类型 + * @param fieldName 查询字段的名称 + * @param fieldValue 查询字段的值 + * @param service 用于执行查询的服务层对象 + * + * @return 返回符合条件的实体类列表(`List`)。如果没有符合条件的记录,返回空列表。 + */ + @Override + public List findByFieldValue(String fieldName, Object fieldValue, IService service) { + // 创建 QueryWrapper,动态构建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(fieldName, fieldValue); // 设置等值查询条件 + + // 执行查询 + return service.list(queryWrapper); + } + + + + + /** + * 根据多个字段和对应的值进行查询。 + * 该方法根据输入的查询条件,动态构建查询,并执行数据库查询。 + * @param fieldConditions 查询条件的字段和值,使用Map存储 + * @param service 执行查询操作的服务对象(通常是MyBatis-Plus的 IService) + * @return 返回查询结果的列表 + */ + @Override + public List findByMultipleFieldValues(Map fieldConditions, IService service) { + // 创建 QueryWrapper,动态构建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + + // 遍历传入的条件Map,逐个设置查询条件 + for (Map.Entry entry : fieldConditions.entrySet()) { + // 设置等值查询条件 + queryWrapper.eq(entry.getKey(), entry.getValue()); + } + + // 执行查询,并返回结果 + return service.list(queryWrapper); + } + + + + + /** + * 将源列表 List 转换为目标类型的列表 List + * @param sourceList 源列表,包含 T 类型的对象 + * @param targetClass 目标类型的 Class 对象 + * @param 源类型 + * @param 目标类型 + * @return 转换后的目标类型的 List + */ + @Override + public List convertList(List sourceList, Class targetClass) { + // 使用 Stream 流式操作来遍历源列表,并将每个元素转换为目标类型 + return sourceList.stream() + .map(source -> { + try { + // 通过反射创建目标类型的实例 + R target = targetClass.getDeclaredConstructor().newInstance(); + // 使用 BeanUtils.copyProperties 复制属性 + BeanUtils.copyProperties(source, target); + return target; + } catch (Exception e) { + // 捕获异常并抛出运行时异常 + throw new RuntimeException("Error copying properties", e); + } + }) + .collect(Collectors.toList()); // 将转换后的对象收集到目标类型的列表中 + + } + + } diff --git a/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java b/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java index 0b81746..9938b0b 100644 --- a/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/good/impl/CartExperienceServiceImpl.java @@ -233,7 +233,7 @@ public class CartExperienceServiceImpl extends ServiceImpl getInvalidCartIds(List cartExperienceList) { // 获取购物车的商品id列表 - List goodList = commonService.getItemsByIds(cartExperienceList, goodService, CartExperience::getGoodId); + List goodList = commonService.findByOtherIds(cartExperienceList, goodService, CartExperience::getGoodId); // 封装map集合(键:商品id, 值:商品详情信息) Map map = new HashMap<>(); for (Good good : goodList) { diff --git a/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java b/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java index 4a62f78..0444fac 100644 --- a/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java +++ b/src/main/java/com/cultural/heritage/service/good/impl/CartRecordServiceImpl.java @@ -179,7 +179,7 @@ public class CartRecordServiceImpl extends ServiceImpl cartRecordList = commonService.getItemsByIds(cartOrderItemAddRequestList, this, CartOrderItemAddRequest::getCartRecordId); + List cartRecordList = commonService.findByOtherIds(cartOrderItemAddRequestList, this, CartOrderItemAddRequest::getCartRecordId); for (CartRecord cartRecord : cartRecordList) { Integer quantity = map.get(cartRecord.getId()); cartRecord.setQuantity(quantity); @@ -195,7 +195,7 @@ public class CartRecordServiceImpl extends ServiceImpl getInvalidCartIds(List cartRecords) { // 获取购物车的商品列表 - List goodList = commonService.getItemsByIds(cartRecords, goodService, CartRecord::getGoodId); + List goodList = commonService.findByOtherIds(cartRecords, goodService, CartRecord::getGoodId); // 封装map集合(键:商品id, 值:商品详情信息) Map map = new HashMap<>(); for (Good good : goodList) {