更新了优惠券模块
This commit is contained in:
parent
dc43642574
commit
b988787fa5
|
@ -189,43 +189,8 @@ public class CartExperienceController {
|
||||||
// 封装用户购物车中的商品信息
|
// 封装用户购物车中的商品信息
|
||||||
List<CartExperienceVO> cartExperienceVOList = cartExperienceService.transformToCartRecordVOList(cartExperienceList);
|
List<CartExperienceVO> cartExperienceVOList = cartExperienceService.transformToCartRecordVOList(cartExperienceList);
|
||||||
|
|
||||||
List<PendingServiceGood> pendingServiceGoodList = commonService.findByFieldInTargetField(cartExperienceList, pendingServiceGoodService, CartExperience::getGoodId, "goodId");
|
// 封装成CartExperienceVOPlus
|
||||||
|
List<CartExperienceVOPlus> cartExperienceVOPluses = cartExperienceService.packageToCartExperienceVOPlusList(cartExperienceVOList);
|
||||||
List<PendingServiceOrder> pendingServiceOrderList = commonService.findByFieldInTargetField(pendingServiceGoodList, pendingServiceOrderService, PendingServiceGood::getId, "pendingId");
|
|
||||||
|
|
||||||
// 封装Map集合(键:服务类商品待处理id,值:预约人数)
|
|
||||||
Map<Long, Integer> countMap = new HashMap<>();
|
|
||||||
for (PendingServiceOrder pendingServiceOrder : pendingServiceOrderList) {
|
|
||||||
Long pendingId = pendingServiceOrder.getPendingId();
|
|
||||||
Integer quantity = pendingServiceOrder.getQuantity();
|
|
||||||
Integer currentNumber = countMap.get(pendingId);
|
|
||||||
countMap.put(pendingId, currentNumber == null ? quantity : currentNumber + quantity);
|
|
||||||
}
|
|
||||||
// 封装Map集合(键:预约情况,值:剩余可预约人数)
|
|
||||||
Map<String, Integer> bookingNumberMap = new HashMap<>();
|
|
||||||
for (PendingServiceGood pendingServiceGood : pendingServiceGoodList) {
|
|
||||||
Long pendingId = pendingServiceGood.getId();
|
|
||||||
Integer count = countMap.get(pendingId);
|
|
||||||
Long goodId = pendingServiceGood.getGoodId();
|
|
||||||
String reservationDate = pendingServiceGood.getReservationDate();
|
|
||||||
String timeSlot = pendingServiceGood.getTimeSlot();
|
|
||||||
BookingOrderQueryRequest bookingOrderQueryRequest = new BookingOrderQueryRequest(goodId, reservationDate, timeSlot);
|
|
||||||
Integer maxNumber = pendingServiceGood.getMaxNumber();
|
|
||||||
bookingNumberMap.put(bookingOrderQueryRequest.toString(), count == null ? maxNumber : maxNumber - count);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<CartExperienceVOPlus> cartExperienceVOPluses = cartExperienceVOList.stream().map(cartExperienceVO -> {
|
|
||||||
CartExperienceVOPlus cartExperienceVOPlus = new CartExperienceVOPlus();
|
|
||||||
BeanUtils.copyProperties(cartExperienceVO, cartExperienceVOPlus);
|
|
||||||
Long goodId = cartExperienceVO.getGoodId();
|
|
||||||
String reservationDate = cartExperienceVO.getReservationDate();
|
|
||||||
String timeSlot = cartExperienceVO.getTimeSlot();
|
|
||||||
BookingOrderQueryRequest bookingOrderQueryRequest = new BookingOrderQueryRequest(goodId, reservationDate, timeSlot);
|
|
||||||
Integer restNumber = bookingNumberMap.get(bookingOrderQueryRequest.toString());
|
|
||||||
cartExperienceVOPlus.setRestNumber(restNumber);
|
|
||||||
return cartExperienceVOPlus;
|
|
||||||
}).toList();
|
|
||||||
|
|
||||||
return ResultUtils.success(cartExperienceVOPluses);
|
return ResultUtils.success(cartExperienceVOPluses);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -291,6 +256,9 @@ public class CartExperienceController {
|
||||||
goodService.checkServiceGoodCartBookingDetailIsProperly(goodId, reservationDate, timeSlot, quantity, pendingServiceGoodMap, pendingServiceOrderList);
|
goodService.checkServiceGoodCartBookingDetailIsProperly(goodId, reservationDate, timeSlot, quantity, pendingServiceGoodMap, pendingServiceOrderList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<CartExperienceVO> cartExperienceVOList = commonService.convertList(cartExperiences, CartExperienceVO.class);
|
||||||
|
// 获取Map集合(键:预约情况,值:剩余预约人数)
|
||||||
|
Map<String, Integer> restNumberMap = cartExperienceService.getRestNumberMap(cartExperienceVOList);
|
||||||
|
|
||||||
// 封装提交订单页的商品信息列表
|
// 封装提交订单页的商品信息列表
|
||||||
List<CartExperienceOrderVO> cartOrderVOList = new ArrayList<>();
|
List<CartExperienceOrderVO> cartOrderVOList = new ArrayList<>();
|
||||||
|
@ -298,6 +266,8 @@ public class CartExperienceController {
|
||||||
Integer quantity = cartExperience.getQuantity();
|
Integer quantity = cartExperience.getQuantity();
|
||||||
Long goodId = cartExperience.getGoodId();
|
Long goodId = cartExperience.getGoodId();
|
||||||
Good good = goodMap.get(goodId);
|
Good good = goodMap.get(goodId);
|
||||||
|
String reservationDate = cartExperience.getReservationDate();
|
||||||
|
String timeSlot = cartExperience.getTimeSlot();
|
||||||
|
|
||||||
CartExperienceGoodVO cartExperienceGoodVO = new CartExperienceGoodVO();
|
CartExperienceGoodVO cartExperienceGoodVO = new CartExperienceGoodVO();
|
||||||
BeanUtils.copyProperties(good, cartExperienceGoodVO);
|
BeanUtils.copyProperties(good, cartExperienceGoodVO);
|
||||||
|
@ -305,8 +275,10 @@ public class CartExperienceController {
|
||||||
CartExperienceOrderVO cartExperienceOrderVO = new CartExperienceOrderVO();
|
CartExperienceOrderVO cartExperienceOrderVO = new CartExperienceOrderVO();
|
||||||
cartExperienceOrderVO.setCartExperienceGoodVO(cartExperienceGoodVO);
|
cartExperienceOrderVO.setCartExperienceGoodVO(cartExperienceGoodVO);
|
||||||
cartExperienceOrderVO.setQuantity(quantity);
|
cartExperienceOrderVO.setQuantity(quantity);
|
||||||
cartExperienceOrderVO.setReservationDate(cartExperience.getReservationDate());
|
cartExperienceOrderVO.setReservationDate(reservationDate);
|
||||||
cartExperienceOrderVO.setTimeSlot(cartExperience.getTimeSlot());
|
cartExperienceOrderVO.setTimeSlot(timeSlot);
|
||||||
|
BookingOrderQueryRequest bookingOrderQueryRequest = new BookingOrderQueryRequest(goodId, reservationDate, timeSlot);
|
||||||
|
cartExperienceOrderVO.setRestNumber(restNumberMap.get(bookingOrderQueryRequest.toString()));
|
||||||
cartOrderVOList.add(cartExperienceOrderVO);
|
cartOrderVOList.add(cartExperienceOrderVO);
|
||||||
}
|
}
|
||||||
Collections.reverse(cartOrderVOList);
|
Collections.reverse(cartOrderVOList);
|
||||||
|
|
|
@ -33,6 +33,12 @@ public class CartExperienceOrderVO implements Serializable {
|
||||||
private String timeSlot;
|
private String timeSlot;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 剩余人数
|
||||||
|
*/
|
||||||
|
private Integer restNumber;
|
||||||
|
|
||||||
|
|
||||||
@Serial
|
@Serial
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,11 @@ import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
||||||
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
||||||
import com.cultural.heritage.model.entity.CartExperience;
|
import com.cultural.heritage.model.entity.CartExperience;
|
||||||
import com.cultural.heritage.model.vo.cartService.CartExperienceVO;
|
import com.cultural.heritage.model.vo.cartService.CartExperienceVO;
|
||||||
|
import com.cultural.heritage.model.vo.cartService.CartExperienceVOPlus;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public interface CartExperienceService extends IService<CartExperience> {
|
public interface CartExperienceService extends IService<CartExperience> {
|
||||||
|
|
||||||
|
@ -43,4 +45,16 @@ public interface CartExperienceService extends IService<CartExperience> {
|
||||||
*/
|
*/
|
||||||
List<Long> getInvalidCartIds(List<CartExperience> cartExperienceList);
|
List<Long> getInvalidCartIds(List<CartExperience> cartExperienceList);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 封装成CartExperienceVOPlus
|
||||||
|
*/
|
||||||
|
List<CartExperienceVOPlus> packageToCartExperienceVOPlusList(List<CartExperienceVO> cartExperienceVOList);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取Map集合(键:预约情况,值:剩余预约人数)
|
||||||
|
*/
|
||||||
|
Map<String, Integer> getRestNumberMap (List<CartExperienceVO> cartExperienceVOList);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,12 +9,15 @@ import com.cultural.heritage.exception.ThrowUtils;
|
||||||
import com.cultural.heritage.mapper.CartExperienceMapper;
|
import com.cultural.heritage.mapper.CartExperienceMapper;
|
||||||
import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
import com.cultural.heritage.model.dto.cartService.CartExperienceAddRequest;
|
||||||
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
import com.cultural.heritage.model.dto.cartService.CartExperienceOrderItemAddRequest;
|
||||||
|
import com.cultural.heritage.model.dto.order.BookingOrderQueryRequest;
|
||||||
import com.cultural.heritage.model.entity.*;
|
import com.cultural.heritage.model.entity.*;
|
||||||
import com.cultural.heritage.model.vo.cartService.CartExperienceGoodVO;
|
import com.cultural.heritage.model.vo.cartService.CartExperienceGoodVO;
|
||||||
import com.cultural.heritage.model.vo.cartService.CartExperienceVO;
|
import com.cultural.heritage.model.vo.cartService.CartExperienceVO;
|
||||||
|
import com.cultural.heritage.model.vo.cartService.CartExperienceVOPlus;
|
||||||
import com.cultural.heritage.service.common.CommonService;
|
import com.cultural.heritage.service.common.CommonService;
|
||||||
import com.cultural.heritage.service.good.CartExperienceService;
|
import com.cultural.heritage.service.good.CartExperienceService;
|
||||||
import com.cultural.heritage.service.good.GoodService;
|
import com.cultural.heritage.service.good.GoodService;
|
||||||
|
import com.cultural.heritage.service.order.PendingServiceGoodService;
|
||||||
import com.cultural.heritage.service.order.PendingServiceOrderService;
|
import com.cultural.heritage.service.order.PendingServiceOrderService;
|
||||||
import com.cultural.heritage.service.user.UserService;
|
import com.cultural.heritage.service.user.UserService;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
@ -54,6 +57,10 @@ public class CartExperienceServiceImpl extends ServiceImpl<CartExperienceMapper,
|
||||||
private PendingServiceOrderService pendingServiceOrderService;
|
private PendingServiceOrderService pendingServiceOrderService;
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private PendingServiceGoodService pendingServiceGoodService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新购物车的商品属性
|
* 更新购物车的商品属性
|
||||||
*/
|
*/
|
||||||
|
@ -246,4 +253,85 @@ public class CartExperienceServiceImpl extends ServiceImpl<CartExperienceMapper,
|
||||||
return cartExperiences.stream().map(CartExperience::getId).toList();
|
return cartExperiences.stream().map(CartExperience::getId).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 封装成CartExperienceVOPlus
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<CartExperienceVOPlus> packageToCartExperienceVOPlusList(List<CartExperienceVO> cartExperienceVOList) {
|
||||||
|
|
||||||
|
List<PendingServiceGood> pendingServiceGoodList = commonService.findByFieldInTargetField(cartExperienceVOList, pendingServiceGoodService, CartExperienceVO::getGoodId, "goodId");
|
||||||
|
|
||||||
|
List<PendingServiceOrder> pendingServiceOrderList = commonService.findByFieldInTargetField(pendingServiceGoodList, pendingServiceOrderService, PendingServiceGood::getId, "pendingId");
|
||||||
|
|
||||||
|
// 封装Map集合(键:服务类商品待处理id,值:预约人数)
|
||||||
|
Map<Long, Integer> countMap = new HashMap<>();
|
||||||
|
for (PendingServiceOrder pendingServiceOrder : pendingServiceOrderList) {
|
||||||
|
Long pendingId = pendingServiceOrder.getPendingId();
|
||||||
|
Integer quantity = pendingServiceOrder.getQuantity();
|
||||||
|
Integer currentNumber = countMap.get(pendingId);
|
||||||
|
countMap.put(pendingId, currentNumber == null ? quantity : currentNumber + quantity);
|
||||||
|
}
|
||||||
|
// 封装Map集合(键:预约情况,值:剩余可预约人数)
|
||||||
|
Map<String, Integer> bookingNumberMap = new HashMap<>();
|
||||||
|
for (PendingServiceGood pendingServiceGood : pendingServiceGoodList) {
|
||||||
|
Long pendingId = pendingServiceGood.getId();
|
||||||
|
Integer count = countMap.get(pendingId);
|
||||||
|
Long goodId = pendingServiceGood.getGoodId();
|
||||||
|
String reservationDate = pendingServiceGood.getReservationDate();
|
||||||
|
String timeSlot = pendingServiceGood.getTimeSlot();
|
||||||
|
BookingOrderQueryRequest bookingOrderQueryRequest = new BookingOrderQueryRequest(goodId, reservationDate, timeSlot);
|
||||||
|
Integer maxNumber = pendingServiceGood.getMaxNumber();
|
||||||
|
bookingNumberMap.put(bookingOrderQueryRequest.toString(), count == null ? maxNumber : maxNumber - count);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cartExperienceVOList.stream().map(cartExperienceVO -> {
|
||||||
|
CartExperienceVOPlus cartExperienceVOPlus = new CartExperienceVOPlus();
|
||||||
|
BeanUtils.copyProperties(cartExperienceVO, cartExperienceVOPlus);
|
||||||
|
Long goodId = cartExperienceVO.getGoodId();
|
||||||
|
String reservationDate = cartExperienceVO.getReservationDate();
|
||||||
|
String timeSlot = cartExperienceVO.getTimeSlot();
|
||||||
|
BookingOrderQueryRequest bookingOrderQueryRequest = new BookingOrderQueryRequest(goodId, reservationDate, timeSlot);
|
||||||
|
Integer restNumber = bookingNumberMap.get(bookingOrderQueryRequest.toString());
|
||||||
|
cartExperienceVOPlus.setRestNumber(restNumber);
|
||||||
|
return cartExperienceVOPlus;
|
||||||
|
}).toList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取Map集合(键:预约情况,值:剩余预约人数)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Map<String, Integer> getRestNumberMap(List<CartExperienceVO> cartExperienceVOList) {
|
||||||
|
List<PendingServiceGood> pendingServiceGoodList = commonService.findByFieldInTargetField(cartExperienceVOList, pendingServiceGoodService, CartExperienceVO::getGoodId, "goodId");
|
||||||
|
|
||||||
|
List<PendingServiceOrder> pendingServiceOrderList = commonService.findByFieldInTargetField(pendingServiceGoodList, pendingServiceOrderService, PendingServiceGood::getId, "pendingId");
|
||||||
|
|
||||||
|
// 封装Map集合(键:服务类商品待处理id,值:预约人数)
|
||||||
|
Map<Long, Integer> countMap = new HashMap<>();
|
||||||
|
for (PendingServiceOrder pendingServiceOrder : pendingServiceOrderList) {
|
||||||
|
Long pendingId = pendingServiceOrder.getPendingId();
|
||||||
|
Integer quantity = pendingServiceOrder.getQuantity();
|
||||||
|
Integer currentNumber = countMap.get(pendingId);
|
||||||
|
countMap.put(pendingId, currentNumber == null ? quantity : currentNumber + quantity);
|
||||||
|
}
|
||||||
|
// 封装Map集合(键:预约情况,值:剩余可预约人数)
|
||||||
|
Map<String, Integer> bookingNumberMap = new HashMap<>();
|
||||||
|
for (PendingServiceGood pendingServiceGood : pendingServiceGoodList) {
|
||||||
|
Long pendingId = pendingServiceGood.getId();
|
||||||
|
Integer count = countMap.get(pendingId);
|
||||||
|
Long goodId = pendingServiceGood.getGoodId();
|
||||||
|
String reservationDate = pendingServiceGood.getReservationDate();
|
||||||
|
String timeSlot = pendingServiceGood.getTimeSlot();
|
||||||
|
BookingOrderQueryRequest bookingOrderQueryRequest = new BookingOrderQueryRequest(goodId, reservationDate, timeSlot);
|
||||||
|
Integer maxNumber = pendingServiceGood.getMaxNumber();
|
||||||
|
bookingNumberMap.put(bookingOrderQueryRequest.toString(), count == null ? maxNumber : maxNumber - count);
|
||||||
|
}
|
||||||
|
return bookingNumberMap;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user