| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.tcm.training.admin.app.notice.service.AppSystemNoticeDispatchCommand; |
| | | import com.tcm.training.admin.app.notice.service.AppSystemNoticeDispatchService; |
| | | import com.tcm.training.admin.app.notice.service.AppSystemNoticeType; |
| | | import com.tcm.training.admin.common.DateTimes; |
| | | import com.tcm.training.admin.common.PageResponse; |
| | | import com.tcm.training.admin.common.PhoneMasker; |
| | |
| | | import java.net.URLEncoder; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.LinkedHashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | public class PointsExchangeAppService { |
| | | |
| | | private final PointsExchangeOrderMapper pointsExchangeOrderMapper; |
| | | private final PointsExchangeOrderItemMapper pointsExchangeOrderItemMapper; |
| | | private final AppSystemNoticeDispatchService appSystemNoticeDispatchService; |
| | | |
| | | public PointsExchangeAppService(PointsExchangeOrderMapper pointsExchangeOrderMapper, |
| | | PointsExchangeOrderItemMapper pointsExchangeOrderItemMapper) { |
| | | PointsExchangeOrderItemMapper pointsExchangeOrderItemMapper, |
| | | AppSystemNoticeDispatchService appSystemNoticeDispatchService) { |
| | | this.pointsExchangeOrderMapper = pointsExchangeOrderMapper; |
| | | this.pointsExchangeOrderItemMapper = pointsExchangeOrderItemMapper; |
| | | this.appSystemNoticeDispatchService = appSystemNoticeDispatchService; |
| | | } |
| | | |
| | | public PageResponse<PointsExchangeOrderListItemVO> pageOrders(int page, |
| | |
| | | order.setTrackingNo(request.getTrackingNo().trim()); |
| | | order.setShippedAt(now); |
| | | pointsExchangeOrderMapper.updateById(order); |
| | | dispatchOrderShippedNotice(order); |
| | | } |
| | | |
| | | @Transactional |
| | |
| | | item.setShippedAt(now); |
| | | pointsExchangeOrderItemMapper.updateById(item); |
| | | refreshOrderStatus(item.getOrderId(), request.getTrackingNo().trim(), now); |
| | | dispatchOrderShippedNotice(requireOrder(item.getOrderId())); |
| | | } |
| | | |
| | | /** |
| | | * 在订单发货后为诊所用户发送订单状态更新通知。 |
| | | */ |
| | | private void dispatchOrderShippedNotice(PointsExchangeOrder order) { |
| | | if (order == null || order.getId() == null || order.getClinicAppUserId() == null) { |
| | | return; |
| | | } |
| | | AppSystemNoticeDispatchCommand command = new AppSystemNoticeDispatchCommand(); |
| | | command.setAppUserId(order.getClinicAppUserId()); |
| | | command.setNoticeTypeCode(AppSystemNoticeType.ORDER_STATUS_UPDATE); |
| | | command.setTitle("订单状态更新"); |
| | | command.setContent("您的礼品兑换订单已发货"); |
| | | command.setReferenceType("POINTS_EXCHANGE_ORDER_SHIPPED"); |
| | | command.setReferenceId(order.getId()); |
| | | command.setRequireUserSetting(Boolean.TRUE); |
| | | Map<String, String> payload = new LinkedHashMap<String, String>(); |
| | | payload.put("orderId", String.valueOf(order.getId())); |
| | | payload.put("orderNo", defaultText(order.getOrderNo())); |
| | | payload.put("trackingNo", defaultText(order.getTrackingNo())); |
| | | command.setPayload(payload); |
| | | appSystemNoticeDispatchService.createAndPush(command); |
| | | } |
| | | |
| | | @Transactional |