From 9082882cab84b679b6c691d685ffddf872a2f697 Mon Sep 17 00:00:00 2001 From: chen-xin-zhi <3588068430@qq.com> Date: Thu, 6 Feb 2025 13:07:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=86=E5=95=86=E5=93=81?= =?UTF-8?q?=E7=B1=BB=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/good/CouponController.java | 3 +- .../controller/good/GoodController.java | 19 ++++++- .../controller/order/OrderController.java | 53 ++++++++++++++----- .../model/entity/AppointmentDate.java | 5 -- .../heritage/model/entity/TimePeriod.java | 4 -- .../cultural/heritage/model/entity/User.java | 3 -- .../heritage/model/entity/UserCoupon.java | 1 - .../model/vo/coupon/UserCouponVO.java | 1 - .../mapper/AppointmentDateMapper.xml | 4 +- 9 files changed, 62 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/cultural/heritage/controller/good/CouponController.java b/src/main/java/com/cultural/heritage/controller/good/CouponController.java index 11a0815..92db996 100644 --- a/src/main/java/com/cultural/heritage/controller/good/CouponController.java +++ b/src/main/java/com/cultural/heritage/controller/good/CouponController.java @@ -277,7 +277,7 @@ public class CouponController { /** - * 小程序端用户查看优惠券 + * 小程序端用户根据状态查看优惠券 * @param commonStringRequest 优惠券状态 * @return 当前用户拥有的优惠券列表 */ @@ -396,6 +396,7 @@ public class CouponController { Long userId = loginUser.getId(); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("userId", userId); + queryWrapper.eq("status", "可用"); List userCouponList = userCouponService.list(queryWrapper); userCouponList = userCouponList.stream().filter(userCoupon -> userCoupon.getCouponVO().getStatus().equals("可用")).toList(); diff --git a/src/main/java/com/cultural/heritage/controller/good/GoodController.java b/src/main/java/com/cultural/heritage/controller/good/GoodController.java index 347da08..250f6e1 100644 --- a/src/main/java/com/cultural/heritage/controller/good/GoodController.java +++ b/src/main/java/com/cultural/heritage/controller/good/GoodController.java @@ -484,9 +484,10 @@ public class GoodController { ServiceGoodVO serviceGoodVO = new ServiceGoodVO(); BeanUtils.copyProperties(good, serviceGoodVO); Long goodVOId = serviceGoodVO.getId(); + // 获取预约日期表和预约时间段表合并的结果集 List appointmentDateTimePeriodVOList = appointmentDateService.queryAppointmentDateDetailById(goodVOId); List appointmentDateVOList = new ArrayList<>(); - // 封装预约日期和预约时间段 + // 封装服务类商品的预约日期和预约时间段 Map> timeMap = new HashMap<>(); Map dateMap = new HashMap<>(); for (AppointmentDateTimePeriodVO appointmentDateTimePeriodVO : appointmentDateTimePeriodVOList) { @@ -510,7 +511,23 @@ public class GoodController { Set dateIds = dateMap.keySet(); for (Long dateId : dateIds) { AppointmentDateVO appointmentDateVO = dateMap.get(dateId); + // 筛序掉已过期的预约日期 + String specificDate = appointmentDateVO.getSpecificDate(); + String today = DateUtil.today(); + int result = DateUtil.compare(DateUtil.parse(specificDate), DateUtil.parse(today)); + if (result < 0) continue; List timePeriodVOList = timeMap.get(dateId); + if (result == 0) { + timePeriodVOList = timePeriodVOList.stream().filter(timePeriodVO -> { + String startTime = timePeriodVO.getTimeSlot().split("-")[0]; + String currentTime = DateUtil.format(DateUtil.date(), "HH:mm"); + + Date startDate = DateUtil.parse(startTime, "HH:mm"); + Date currentDate = DateUtil.parse(currentTime, "HH:mm"); + return startDate.after(currentDate); + }).toList(); + if (timePeriodVOList.isEmpty()) continue; + } appointmentDateVO.setTimePeriodVOList(timePeriodVOList); appointmentDateVOList.add(appointmentDateVO); } diff --git a/src/main/java/com/cultural/heritage/controller/order/OrderController.java b/src/main/java/com/cultural/heritage/controller/order/OrderController.java index a443467..f5736f7 100644 --- a/src/main/java/com/cultural/heritage/controller/order/OrderController.java +++ b/src/main/java/com/cultural/heritage/controller/order/OrderController.java @@ -74,7 +74,6 @@ public class OrderController { - @Resource private GoodService goodService; @@ -86,11 +85,11 @@ public class OrderController { /** - * 用户通过购物车创建订单 + * 小程序端用户创建常规类商品购物车订单 */ @PostMapping("/add/cart") @Transactional(rollbackFor = Exception.class) - @Operation(summary = "用户通过购物车创建订单", description = "参数:购物车订单创建请求体,权限:所有人,方法名:addCartOrder") + @Operation(summary = "小程序端用户创建常规类商品购物车订单", description = "参数:购物车订单创建请求体,权限:所有人,方法名:addCartOrder") public BaseResponse addCartOrder(@RequestBody CartOrderAddRequest cartOrderAddRequest, HttpServletRequest request) { if (cartOrderAddRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); @@ -99,7 +98,6 @@ public class OrderController { User loginUser = userService.getLoginUser(request); Long userId = loginUser.getId(); - // 封装成订单创建请求体 OrderMainInfoAddRequest orderMainInfoAddRequest = new OrderMainInfoAddRequest(); BeanUtils.copyProperties(cartOrderAddRequest, orderMainInfoAddRequest); @@ -158,19 +156,32 @@ public class OrderController { orderMainInfoAddRequest.setOrderItemMainInfoAddRequestList(orderItemMainInfoAddRequestList); // 创建通用订单(常规类和服务类商品) Long orderId = orderService.createCommonOrder(orderMainInfoAddRequest, userId, true, cartIds); + + // 延迟检查订单状态信息 + MultiDelayMessage msg = new MultiDelayMessage<>(orderId, + 10000L, 10000L, 10000L, 15000L, 15000L, 30000L, 30000L, 60000L, 60000L, 120000L, 300000L, 600000L, 600000L); + // 10000L, 10000L, 10000L, 15000L, 15000L, 30000L, 30000L, 60000L, 60000L, 120000L, 300000L, 600000L, 600000L + int delayValue = msg.removeNextDelay().intValue(); + rabbitTemplate.convertAndSend(MqConstant.DELAY_EXCHANGE, + MqConstant.DELAY_ORDER_ROUTING_KEY, msg, message -> { + // 添加延迟消息属性 + message.getMessageProperties().setDelay(delayValue); + return message; + }); + return ResultUtils.success(orderId); } /** - * 小程序端创建用户订单 + * 小程序端用户创建常规类商品订单 * @param orderMainInfoAddRequest 订单创建请求体 * @return 是否创建成功 */ @PostMapping("/add") @Transactional(rollbackFor = Exception.class) - @Operation(summary = "小程序端创建用户订单", description = "参数:订单创建请求体,权限:所有人,方法名:addOrder") + @Operation(summary = "小程序端用户创建常规类商品订单", description = "参数:订单创建请求体,权限:所有人,方法名:addOrder") public BaseResponse addOrder(@RequestBody OrderMainInfoAddRequest orderMainInfoAddRequest, HttpServletRequest request) { if (orderMainInfoAddRequest == null) { throw new BusinessException(ErrorCode.PARAMS_ERROR); @@ -203,7 +214,7 @@ public class OrderController { /** - * 分页查询所有订单(包括订单明细) + * Web端管理员分页查询订单 * @param orderQueryRequest 订单查询请求体 * @return 订单列表信息 */ @@ -224,13 +235,29 @@ public class OrderController { BeanUtils.copyProperties(order, orderVO); return orderVO; }).toList(); - orderVOS.forEach(orderVO -> { + + + // 封装map集合(键:订单id, 值:订单明细列表) + Map> map = new HashMap<>(); + List orderItemsList = orderItemService.list(); + for (OrderItems orderItems : orderItemsList) { + Long orderId = orderItems.getOrderId(); + + List orderItemsArrayList = map.get(orderId); + if (orderItemsArrayList == null) { + orderItemsArrayList = new ArrayList<>(); + } + orderItemsArrayList.add(orderItems); + map.put(orderId, orderItemsArrayList); + } + + for (OrderVO orderVO : orderVOS) { Long id = orderVO.getId(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("orderId", id); - List list = orderItemService.list(queryWrapper); - orderVO.setOrderItemList(list); - }); + List orderItemsTempList = map.get(id); + orderVO.setOrderItemList(orderItemsTempList); + } + + Page orderVOPage = new Page<>(); orderVOPage.setRecords(orderVOS); orderVOPage.setTotal(page.getTotal()); diff --git a/src/main/java/com/cultural/heritage/model/entity/AppointmentDate.java b/src/main/java/com/cultural/heritage/model/entity/AppointmentDate.java index 6fe8368..c8aa115 100644 --- a/src/main/java/com/cultural/heritage/model/entity/AppointmentDate.java +++ b/src/main/java/com/cultural/heritage/model/entity/AppointmentDate.java @@ -53,11 +53,6 @@ public class AppointmentDate implements Serializable { */ private Date updateTime; - /** - * 是否删除 - */ - private Integer isDelete; - @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/cultural/heritage/model/entity/TimePeriod.java b/src/main/java/com/cultural/heritage/model/entity/TimePeriod.java index 3cae487..44d9a1e 100644 --- a/src/main/java/com/cultural/heritage/model/entity/TimePeriod.java +++ b/src/main/java/com/cultural/heritage/model/entity/TimePeriod.java @@ -57,10 +57,6 @@ public class TimePeriod implements Serializable { */ private Date updateTime; - /** - * 是否删除 - */ - private Integer isDelete; @Serial private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/cultural/heritage/model/entity/User.java b/src/main/java/com/cultural/heritage/model/entity/User.java index 6b5f61a..7d90036 100644 --- a/src/main/java/com/cultural/heritage/model/entity/User.java +++ b/src/main/java/com/cultural/heritage/model/entity/User.java @@ -17,9 +17,6 @@ import java.util.Date; */ @TableName(value = "user") @Data -//@Builder -//@AllArgsConstructor -//@NoArgsConstructor public class User implements Serializable { /** * 用户编号 diff --git a/src/main/java/com/cultural/heritage/model/entity/UserCoupon.java b/src/main/java/com/cultural/heritage/model/entity/UserCoupon.java index 66353b8..1efb55b 100644 --- a/src/main/java/com/cultural/heritage/model/entity/UserCoupon.java +++ b/src/main/java/com/cultural/heritage/model/entity/UserCoupon.java @@ -39,7 +39,6 @@ public class UserCoupon implements Serializable { private CouponVO couponVO; - /** * 创建时间 */ diff --git a/src/main/java/com/cultural/heritage/model/vo/coupon/UserCouponVO.java b/src/main/java/com/cultural/heritage/model/vo/coupon/UserCouponVO.java index 33f97a1..6b5a8f1 100644 --- a/src/main/java/com/cultural/heritage/model/vo/coupon/UserCouponVO.java +++ b/src/main/java/com/cultural/heritage/model/vo/coupon/UserCouponVO.java @@ -21,7 +21,6 @@ public class UserCouponVO implements Serializable { */ @TableField(typeHandler = JacksonTypeHandler.class) private CouponVO couponVO; - diff --git a/src/main/resources/mapper/AppointmentDateMapper.xml b/src/main/resources/mapper/AppointmentDateMapper.xml index b2c696d..2fb1599 100644 --- a/src/main/resources/mapper/AppointmentDateMapper.xml +++ b/src/main/resources/mapper/AppointmentDateMapper.xml @@ -6,13 +6,13 @@ \ No newline at end of file