|
@@ -0,0 +1,85 @@
|
|
|
+package com.kxmall.web.controller.order.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.kxmall.common.enums.OrderStatusType;
|
|
|
+import com.kxmall.order.domain.KxOrderSnapshot;
|
|
|
+import com.kxmall.order.domain.bo.KxOrderSnapshotBo;
|
|
|
+import com.kxmall.order.domain.vo.KxOrderSnapshotVo;
|
|
|
+import com.kxmall.order.mapper.KxOrderSnapshotMapper;
|
|
|
+import com.kxmall.web.controller.order.service.IKxOrderSnapshotService;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 订单快照Service接口
|
|
|
+ *
|
|
|
+ * @author tea
|
|
|
+ * @date 2025-01-04
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
|
|
+public class KxOrderSnapshotServiceImpl implements IKxOrderSnapshotService {
|
|
|
+
|
|
|
+ private final KxOrderSnapshotMapper mapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean initOrderSnapshot(KxOrderSnapshotBo bo) {
|
|
|
+ KxOrderSnapshot kxOrderSnapshot = BeanUtil.toBean(bo, KxOrderSnapshot.class);
|
|
|
+ return mapper.insert(kxOrderSnapshot) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean addOrderSnapshotByOrderStatus(Long orderId, OrderStatusType orderStatus) {
|
|
|
+ return addOrderSnapshotByOrderStatus(orderId, orderStatus, null, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean addOrderSnapshotByOrderStatus(Long orderId, OrderStatusType orderStatus, String exceptionReason) {
|
|
|
+ return addOrderSnapshotByOrderStatus(orderId, orderStatus, exceptionReason, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean addOrderSnapshotByOrderStatus(Long orderId, OrderStatusType orderStatus, String exceptionReason, String remark) {
|
|
|
+ KxOrderSnapshot snapshot = convert(orderId, orderStatus, exceptionReason, remark);
|
|
|
+ return mapper.insert(snapshot) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean addOrderSnapshotByChangeRider(Long orderId, Long riderId) {
|
|
|
+ LambdaQueryWrapper<KxOrderSnapshot> lqw = new LambdaQueryWrapper<>();
|
|
|
+ lqw.eq(KxOrderSnapshot::getOrderId, orderId);
|
|
|
+ lqw.orderByDesc(KxOrderSnapshot::getSnapshotTime);
|
|
|
+ KxOrderSnapshot kxOrderSnapshot = mapper.selectOne(lqw);
|
|
|
+ kxOrderSnapshot.setId(null);
|
|
|
+ kxOrderSnapshot.setRiderId(riderId);
|
|
|
+ kxOrderSnapshot.setSnapshotTime(LocalDateTime.now());
|
|
|
+ kxOrderSnapshot.setSnapshotType((byte) 2);
|
|
|
+ return mapper.insert(kxOrderSnapshot) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<KxOrderSnapshotVo> queryByOrderId(Long orderId) {
|
|
|
+ LambdaQueryWrapper<KxOrderSnapshot> lqw = new LambdaQueryWrapper<>();
|
|
|
+ lqw.eq(KxOrderSnapshot::getOrderId, orderId);
|
|
|
+ lqw.orderByDesc(KxOrderSnapshot::getSnapshotTime);
|
|
|
+ return BeanUtil.copyToList(mapper.selectList(lqw), KxOrderSnapshotVo.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ private KxOrderSnapshot convert(Long orderId, OrderStatusType orderStatus, String exceptionReason, String remark) {
|
|
|
+ KxOrderSnapshot kxOrderSnapshot = new KxOrderSnapshot();
|
|
|
+ kxOrderSnapshot.setOrderId(orderId);
|
|
|
+ kxOrderSnapshot.setOrderStatus(orderStatus.getCode());
|
|
|
+ kxOrderSnapshot.setExceptionReason(exceptionReason);
|
|
|
+ kxOrderSnapshot.setRemark(remark);
|
|
|
+ kxOrderSnapshot.setSnapshotTime(LocalDateTime.now());
|
|
|
+ kxOrderSnapshot.setSnapshotType((byte) 1);
|
|
|
+ return kxOrderSnapshot;
|
|
|
+ }
|
|
|
+}
|