修复订单列表排序与活动时间刷新
This commit is contained in:
@@ -22,7 +22,7 @@ public interface ReservationOrderMapper extends BaseMapper<ReservationOrderEntit
|
||||
SELECT o.*
|
||||
FROM workflow_reservation_order o
|
||||
WHERE o.hotel_id = #{hotelId}
|
||||
AND o.order_visibility != #{hiddenSystemVisibility}
|
||||
AND o.order_visibility = #{visibleVisibility}
|
||||
<if test="orderStatus != null and orderStatus != ''">
|
||||
AND o.order_status = #{orderStatus}
|
||||
</if>
|
||||
@@ -56,7 +56,7 @@ public interface ReservationOrderMapper extends BaseMapper<ReservationOrderEntit
|
||||
)
|
||||
</if>
|
||||
ORDER BY
|
||||
COALESCE(o.latest_activity_at, o.updated_at) DESC,
|
||||
o.latest_activity_at DESC,
|
||||
o.updated_at DESC,
|
||||
o.id DESC
|
||||
</script>
|
||||
@@ -68,6 +68,6 @@ public interface ReservationOrderMapper extends BaseMapper<ReservationOrderEntit
|
||||
@Param("groupCode") String groupCode,
|
||||
@Param("confirmationNumber") String confirmationNumber,
|
||||
@Param("keyword") String keyword,
|
||||
@Param("hiddenSystemVisibility") String hiddenSystemVisibility,
|
||||
@Param("visibleVisibility") String visibleVisibility,
|
||||
@Param("sourceMessageIds") List<Long> sourceMessageIds);
|
||||
}
|
||||
|
||||
@@ -453,7 +453,7 @@ public class MybatisReservationAiWorkflowRepository implements ReservationAiWork
|
||||
trim(request.groupCode()),
|
||||
trim(request.confirmationNumber()),
|
||||
trim(request.keyword()),
|
||||
ReservationOrderVisibility.HIDDEN_SYSTEM.name(),
|
||||
ReservationOrderVisibility.VISIBLE.name(),
|
||||
sourceMessageIds);
|
||||
return new ReservationPageSnapshot<>(
|
||||
page.getRecords().stream().map(this::toAiQueryOrderSnapshot).toList(),
|
||||
@@ -788,11 +788,12 @@ public class MybatisReservationAiWorkflowRepository implements ReservationAiWork
|
||||
public boolean updateOperaOperationAfterAttempt(
|
||||
String hotelId,
|
||||
Long operationId,
|
||||
Long orderId,
|
||||
String operationStatus,
|
||||
Long lastAttemptId,
|
||||
String lastErrorMessage,
|
||||
LocalDateTime now) {
|
||||
return operaOperationMapper.update(null, Wrappers.<ReservationOperaOperationEntity>lambdaUpdate()
|
||||
boolean updated = operaOperationMapper.update(null, Wrappers.<ReservationOperaOperationEntity>lambdaUpdate()
|
||||
.set(ReservationOperaOperationEntity::getOperationStatus, operationStatus)
|
||||
.set(ReservationOperaOperationEntity::getLastAttemptId, lastAttemptId)
|
||||
.set(ReservationOperaOperationEntity::getLastErrorMessage, lastErrorMessage)
|
||||
@@ -800,6 +801,10 @@ public class MybatisReservationAiWorkflowRepository implements ReservationAiWork
|
||||
.setSql("attempt_count = attempt_count + 1")
|
||||
.eq(ReservationOperaOperationEntity::getHotelId, hotelId)
|
||||
.eq(ReservationOperaOperationEntity::getId, operationId)) > 0;
|
||||
if (updated) {
|
||||
touchOrderLatestActivity(hotelId, orderId, now);
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -248,6 +248,7 @@ public interface ReservationAiWorkflowRepository {
|
||||
boolean updateOperaOperationAfterAttempt(
|
||||
String hotelId,
|
||||
Long operationId,
|
||||
Long orderId,
|
||||
String operationStatus,
|
||||
Long lastAttemptId,
|
||||
String lastErrorMessage,
|
||||
|
||||
@@ -500,6 +500,7 @@ public class ReservationTaskWorkflowServiceImpl implements ReservationTaskWorkfl
|
||||
workflowRepository.updateOperaOperationAfterAttempt(
|
||||
task.hotelId(),
|
||||
operation.id(),
|
||||
task.orderId(),
|
||||
operationStatus,
|
||||
attemptId,
|
||||
errorMessage,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
-- M002 前端订单列表排序优化:订单自身维护最近业务活动时间,避免列表查询每次聚合全量任务。
|
||||
ALTER TABLE workflow_reservation_order
|
||||
ADD COLUMN latest_activity_at DATETIME(6) NULL COMMENT '订单最近业务活动 UTC 时间,用于订单列表最新活动排序';
|
||||
ADD COLUMN latest_activity_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '订单最近业务活动 UTC 时间,用于订单列表最新活动排序';
|
||||
|
||||
-- 历史数据回填:优先取订单更新时间和所属任务最新来源/创建时间中的较大值。
|
||||
UPDATE workflow_reservation_order
|
||||
@@ -19,4 +19,4 @@ SET latest_activity_at = GREATEST(
|
||||
|
||||
-- 订单列表按可见性和最新活动时间倒序分页。
|
||||
CREATE INDEX idx_reservation_order_visibility_activity
|
||||
ON workflow_reservation_order (hotel_id, order_visibility, latest_activity_at, id);
|
||||
ON workflow_reservation_order (hotel_id, order_visibility, latest_activity_at DESC, updated_at DESC, id DESC);
|
||||
|
||||
Reference in New Issue
Block a user