修复来源消息列表酒店参数鉴权

This commit is contained in:
andy
2026-07-16 11:45:58 +07:00
parent 5c0a5d21d0
commit 93ecfb08a9
4 changed files with 90 additions and 16 deletions

View File

@@ -55,20 +55,25 @@ public class SourceMessageController {
*/
@GetMapping
public SourceMessagePageResult<SourceMessageSummaryResponse> list(
@RequestParam(required = false) String hotelId,
@RequestParam(required = false) String externalMessageId,
@RequestParam(required = false) String externalConversationId,
@RequestParam(name = "hotel_id", required = false) String hotelId,
@RequestParam(name = "hotelId", required = false) String legacyHotelId,
@RequestParam(name = "external_message_id", required = false) String externalMessageId,
@RequestParam(name = "externalMessageId", required = false) String legacyExternalMessageId,
@RequestParam(name = "external_conversation_id", required = false) String externalConversationId,
@RequestParam(name = "externalConversationId", required = false) String legacyExternalConversationId,
@RequestParam(required = false) String captureStatus,
@RequestParam(required = false) Integer pageNum,
@RequestParam(required = false) Integer pageSize) {
@RequestParam(name = "page_num", required = false) Integer pageNum,
@RequestParam(name = "pageNum", required = false) Integer legacyPageNum,
@RequestParam(name = "page_size", required = false) Integer pageSize,
@RequestParam(name = "pageSize", required = false) Integer legacyPageSize) {
authorizationService.requirePermission(PlatformPermissionCode.SOURCE_MESSAGE_READ.name());
return queryService.query(new SourceMessageQueryRequest(
hotelId,
externalMessageId,
externalConversationId,
firstText(hotelId, legacyHotelId),
firstText(externalMessageId, legacyExternalMessageId),
firstText(externalConversationId, legacyExternalConversationId),
captureStatus,
pageNum,
pageSize
firstInteger(pageNum, legacyPageNum),
firstInteger(pageSize, legacyPageSize)
));
}
@@ -119,6 +124,20 @@ public class SourceMessageController {
return value != null && !value.trim().isEmpty();
}
/**
* 优先使用当前规范 snake_case 参数,兼容早期 camelCase 查询参数。
*/
private String firstText(String first, String second) {
return hasText(first) ? first : second;
}
/**
* 优先使用当前规范 snake_case 分页参数,兼容早期 camelCase 查询参数。
*/
private Integer firstInteger(Integer first, Integer second) {
return first == null ? second : first;
}
/**
* 按 SourceMessage 实际归属酒店校验当前用户访问权,避免跨酒店按 ID 读取摘要。
*/