|
|
@@ -196,14 +196,105 @@ public class LawyerConsultationOrderServiceImpl extends ServiceImpl<LawyerConsul
|
|
|
return R.fail("新增失败");
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 编辑咨询订单
|
|
|
+ * <p>
|
|
|
+ * 编辑前会进行以下校验:
|
|
|
+ * 1. 参数校验:订单ID不能为空
|
|
|
+ * 2. 订单存在性校验:订单必须存在
|
|
|
+ * 3. 订单状态校验:已完成的订单不允许修改关键信息
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @param consultationOrder 咨询订单
|
|
|
+ * @return 编辑结果
|
|
|
+ */
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public R<LawyerConsultationOrder> editConsultationOrder(LawyerConsultationOrder consultationOrder) {
|
|
|
- log.info("LawyerConsultationOrderServiceImpl.editConsultationOrder?consultationOrder={}", consultationOrder);
|
|
|
+ Integer orderId = consultationOrder.getId();
|
|
|
+ log.info("开始编辑咨询订单,订单ID={}", orderId);
|
|
|
+
|
|
|
+ // 参数校验:订单ID不能为空
|
|
|
+ if (orderId == null) {
|
|
|
+ log.warn("编辑咨询订单失败:订单ID为空");
|
|
|
+ return R.fail("订单ID不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询订单信息,验证订单是否存在
|
|
|
+ LawyerConsultationOrder existingOrder = consultationOrderMapper.selectById(orderId);
|
|
|
+ if (existingOrder == null) {
|
|
|
+ log.warn("编辑咨询订单失败:订单不存在,订单ID={}", orderId);
|
|
|
+ return R.fail("订单不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 记录修改前的订单状态
|
|
|
+ Integer oldOrderStatus = existingOrder.getOrderStatus();
|
|
|
+ Integer oldPaymentStatus = existingOrder.getPaymentStatus();
|
|
|
+ Integer newOrderStatus = consultationOrder.getOrderStatus();
|
|
|
+ Integer newPaymentStatus = consultationOrder.getPaymentStatus();
|
|
|
+
|
|
|
+ log.info("编辑咨询订单,订单ID={}, 订单编号={}, 原订单状态={}, 新订单状态={}, 原支付状态={}, 新支付状态={}",
|
|
|
+ orderId, existingOrder.getOrderNumber(), oldOrderStatus, newOrderStatus,
|
|
|
+ oldPaymentStatus, newPaymentStatus);
|
|
|
+
|
|
|
+ // 订单状态校验:已完成的订单不允许修改关键信息(订单状态、支付状态、订单金额等)
|
|
|
+ Integer completedStatus = LawyerStatusEnum.COMPLETE.getStatus(); // 3:已完成
|
|
|
+ if (completedStatus.equals(oldOrderStatus)) {
|
|
|
+ // 如果订单已完成,只允许修改评价相关字段(rating, comment)
|
|
|
+ if (newOrderStatus != null && !newOrderStatus.equals(oldOrderStatus)) {
|
|
|
+ log.warn("编辑咨询订单失败:订单已完成,不允许修改订单状态,订单ID={}, 订单编号={}",
|
|
|
+ orderId, existingOrder.getOrderNumber());
|
|
|
+ return R.fail("订单已完成,不允许修改订单状态");
|
|
|
+ }
|
|
|
+ if (newPaymentStatus != null && !newPaymentStatus.equals(oldPaymentStatus)) {
|
|
|
+ log.warn("编辑咨询订单失败:订单已完成,不允许修改支付状态,订单ID={}, 订单编号={}",
|
|
|
+ orderId, existingOrder.getOrderNumber());
|
|
|
+ return R.fail("订单已完成,不允许修改支付状态");
|
|
|
+ }
|
|
|
+ if (consultationOrder.getOrderAmount() != null &&
|
|
|
+ !consultationOrder.getOrderAmount().equals(existingOrder.getOrderAmount())) {
|
|
|
+ log.warn("编辑咨询订单失败:订单已完成,不允许修改订单金额,订单ID={}, 订单编号={}",
|
|
|
+ orderId, existingOrder.getOrderNumber());
|
|
|
+ return R.fail("订单已完成,不允许修改订单金额");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 已取消的订单不允许修改为其他状态(除非是管理员操作,这里暂不限制)
|
|
|
+ Integer cancelStatus = LawyerStatusEnum.CANCEL.getStatus(); // 4:已取消
|
|
|
+ if (cancelStatus.equals(oldOrderStatus) && newOrderStatus != null &&
|
|
|
+ !cancelStatus.equals(newOrderStatus)) {
|
|
|
+ log.warn("编辑咨询订单警告:订单已取消,尝试修改订单状态,订单ID={}, 订单编号={}, 原状态={}, 新状态={}",
|
|
|
+ orderId, existingOrder.getOrderNumber(), oldOrderStatus, newOrderStatus);
|
|
|
+ // 这里可以根据业务需求决定是否允许,暂时允许修改
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果订单状态从待支付变为已支付,需要更新支付时间
|
|
|
+ Integer waitPayStatus = LawyerStatusEnum.WAIT_PAY.getStatus(); // 0:待支付
|
|
|
+ if (waitPayStatus.equals(oldOrderStatus) && newOrderStatus != null &&
|
|
|
+ !waitPayStatus.equals(newOrderStatus) && newPaymentStatus != null && newPaymentStatus == 1) {
|
|
|
+ if (consultationOrder.getPaymentTime() == null) {
|
|
|
+ consultationOrder.setPaymentTime(new Date());
|
|
|
+ log.info("订单状态从待支付变为已支付,自动设置支付时间,订单ID={}, 订单编号={}",
|
|
|
+ orderId, existingOrder.getOrderNumber());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置更新时间
|
|
|
+ consultationOrder.setUpdatedTime(new Date());
|
|
|
+
|
|
|
+ // 执行更新操作
|
|
|
boolean result = this.updateById(consultationOrder);
|
|
|
if (result) {
|
|
|
- return R.data(consultationOrder);
|
|
|
+ log.info("编辑咨询订单成功,订单ID={}, 订单编号={}, 原订单状态={}, 新订单状态={}",
|
|
|
+ orderId, existingOrder.getOrderNumber(), oldOrderStatus, newOrderStatus);
|
|
|
+ // 重新查询更新后的订单信息
|
|
|
+ LawyerConsultationOrder updatedOrder = consultationOrderMapper.selectById(orderId);
|
|
|
+ return R.data(updatedOrder != null ? updatedOrder : consultationOrder);
|
|
|
+ } else {
|
|
|
+ log.error("编辑咨询订单失败:数据库更新失败,订单ID={}, 订单编号={}",
|
|
|
+ orderId, existingOrder.getOrderNumber());
|
|
|
+ return R.fail("修改失败");
|
|
|
}
|
|
|
- return R.fail("修改失败");
|
|
|
}
|
|
|
|
|
|
/**
|