|
|
@@ -206,14 +206,67 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
|
|
|
return R.fail("修改失败");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 删除咨询订单
|
|
|
+ * <p>
|
|
|
+ * 删除前会进行以下校验:
|
|
|
+ * 1. 参数校验:订单ID不能为空
|
|
|
+ * 2. 订单存在性校验:订单必须存在
|
|
|
+ * 3. 订单状态校验:进行中的订单不允许删除
|
|
|
+ * 4. 如果订单是待支付状态,会取消Redis中的支付超时计时器
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @param id 订单ID
|
|
|
+ * @return 删除结果
|
|
|
+ */
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public R<Boolean> deleteConsultationOrder(Integer id) {
|
|
|
- log.info("LawyerConsultationOrderServiceImpl.deleteConsultationOrder?id={}", id);
|
|
|
+ log.info("开始删除咨询订单,订单ID={}", id);
|
|
|
+
|
|
|
+ // 参数校验
|
|
|
+ if (id == null) {
|
|
|
+ log.warn("删除咨询订单失败:订单ID为空");
|
|
|
+ return R.fail("订单ID不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询订单信息
|
|
|
+ LawyerConsultationOrder order = consultationOrderMapper.selectById(id);
|
|
|
+ if (order == null) {
|
|
|
+ log.warn("删除咨询订单失败:订单不存在,订单ID={}", id);
|
|
|
+ return R.fail("订单不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 检查订单状态:进行中的订单不允许删除
|
|
|
+ Integer orderStatus = order.getOrderStatus();
|
|
|
+ Integer inProgressStatus = LawyerStatusEnum.USED.getStatus(); // 2:进行中
|
|
|
+ if (inProgressStatus.equals(orderStatus)) {
|
|
|
+ log.warn("删除咨询订单失败:订单进行中,不允许删除,订单ID={}, 订单编号={}",
|
|
|
+ id, order.getOrderNumber());
|
|
|
+ return R.fail("订单进行中,不允许删除");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果订单是待支付状态,取消Redis中的订单支付超时计时
|
|
|
+ Integer waitPayStatus = LawyerStatusEnum.WAIT_PAY.getStatus(); // 0:待支付
|
|
|
+ if (waitPayStatus.equals(orderStatus) && order.getOrderNumber() != null) {
|
|
|
+ try {
|
|
|
+ orderExpirationService.cancelOrderPaymentTimeout(order.getOrderNumber());
|
|
|
+ log.info("已取消订单支付超时计时,订单编号={}", order.getOrderNumber());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("取消订单支付超时计时失败,订单编号={}", order.getOrderNumber(), e);
|
|
|
+ // 继续执行删除操作,不因取消计时器失败而中断
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 执行删除操作
|
|
|
boolean result = this.removeById(id);
|
|
|
if (result) {
|
|
|
- return R.success("删除成功");
|
|
|
+ log.info("删除咨询订单成功,订单ID={}, 订单编号={}", id, order.getOrderNumber());
|
|
|
+ return R.data(true, "删除成功");
|
|
|
+ } else {
|
|
|
+ log.error("删除咨询订单失败:数据库操作失败,订单ID={}, 订单编号={}", id, order.getOrderNumber());
|
|
|
+ return R.fail("删除失败");
|
|
|
}
|
|
|
- return R.fail("删除失败");
|
|
|
}
|
|
|
|
|
|
/*@Override
|