fix(筛选契约): 去重汇总/品牌库/查询ASIN 列表与导出接口 @RequestParam 显式 snake_case(page_size/group_id/data_value/shop_name/start_date/end_date),与前端 asin-filter 序列化对齐——修复全站筛选/分页不生效(前端snake vs 后端裸camel全不匹配)

This commit is contained in:
2026-09-06 22:47:53 +08:00
parent 66082af52a
commit 35bed42b73
3 changed files with 30 additions and 30 deletions
@@ -78,16 +78,16 @@ public class DedupeTotalDataController {
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "查询成功", content = @Content(schema = @Schema(implementation = DedupeTotalDataPageVo.class))) @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "查询成功", content = @Content(schema = @Schema(implementation = DedupeTotalDataPageVo.class)))
}) })
public ApiResponse<DedupeTotalDataPageVo> page( public ApiResponse<DedupeTotalDataPageVo> page(
@Parameter(description = "页码") @RequestParam(defaultValue = "1") Long page, @Parameter(description = "页码") @RequestParam(name = "page", defaultValue = "1") Long page,
@Parameter(description = "每页数量") @RequestParam(defaultValue = "15") Long pageSize, @Parameter(description = "每页数量") @RequestParam(name = "page_size", defaultValue = "15") Long pageSize,
@Parameter(description = "数据值模糊搜索关键字") @RequestParam(required = false) String keyword, @Parameter(description = "数据值模糊搜索关键字") @RequestParam(name = "keyword", required = false) String keyword,
@Parameter(description = "用户名模糊搜索关键字") @RequestParam(required = false) String username, @Parameter(description = "用户名模糊搜索关键字") @RequestParam(name = "username", required = false) String username,
@Parameter(description = "开始日期(包含)") @Parameter(description = "开始日期(包含)")
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @RequestParam(name = "start_date", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
@Parameter(description = "结束日期(包含)") @Parameter(description = "结束日期(包含)")
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(name = "end_date", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate,
@Parameter(description = "分组 ID") @RequestParam(required = false) Long groupId, @Parameter(description = "分组 ID") @RequestParam(name = "group_id", required = false) Long groupId,
@Parameter(description = "国家代码(如 DE、UK") @RequestParam(required = false) String country, @Parameter(description = "国家代码(如 DE、UK") @RequestParam(name = "country", required = false) String country,
HttpServletRequest request) { HttpServletRequest request) {
RequestOperator operator = requireDedupeTotalDataAccess(request); RequestOperator operator = requireDedupeTotalDataAccess(request);
return ApiResponse.success(dedupeTotalDataService.page( return ApiResponse.success(dedupeTotalDataService.page(
@@ -97,13 +97,13 @@ public class DedupeTotalDataController {
@GetMapping("/export") @GetMapping("/export")
@Operation(summary = "导出总数据", description = "按上传用户名和创建日期导出当前用户可访问的总数据;跨自然月时按月生成 XLSX 并打包为 ZIP。") @Operation(summary = "导出总数据", description = "按上传用户名和创建日期导出当前用户可访问的总数据;跨自然月时按月生成 XLSX 并打包为 ZIP。")
public ResponseEntity<StreamingResponseBody> export( public ResponseEntity<StreamingResponseBody> export(
@Parameter(description = "用户名模糊搜索关键字") @RequestParam(required = false) String username, @Parameter(description = "用户名模糊搜索关键字") @RequestParam(name = "username", required = false) String username,
@Parameter(description = "开始日期(包含)") @Parameter(description = "开始日期(包含)")
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate, @RequestParam(name = "start_date", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate startDate,
@Parameter(description = "结束日期(包含)") @Parameter(description = "结束日期(包含)")
@RequestParam(required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate, @RequestParam(name = "end_date", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate endDate,
@Parameter(description = "分组 ID") @RequestParam(required = false) Long groupId, @Parameter(description = "分组 ID") @RequestParam(name = "group_id", required = false) Long groupId,
@Parameter(description = "国家代码(如 DE、UK") @RequestParam(required = false) String country, @Parameter(description = "国家代码(如 DE、UK") @RequestParam(name = "country", required = false) String country,
HttpServletRequest request) { HttpServletRequest request) {
if (startDate != null && endDate != null && startDate.isAfter(endDate)) { if (startDate != null && endDate != null && startDate.isAfter(endDate)) {
throw new BusinessException(400, "invalid export date range"); throw new BusinessException(400, "invalid export date range");
@@ -60,12 +60,12 @@ public class InvalidAsinDataController {
@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "查询成功", content = @Content(schema = @Schema(implementation = InvalidAsinDataPageVo.class))) @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "查询成功", content = @Content(schema = @Schema(implementation = InvalidAsinDataPageVo.class)))
}) })
public ApiResponse<InvalidAsinDataPageVo> page( public ApiResponse<InvalidAsinDataPageVo> page(
@Parameter(description = "页码") @RequestParam(defaultValue = "1") Long page, @Parameter(description = "页码") @RequestParam(name = "page", defaultValue = "1") Long page,
@Parameter(description = "每页数量") @RequestParam(defaultValue = "15") Long pageSize, @Parameter(description = "每页数量") @RequestParam(name = "page_size", defaultValue = "15") Long pageSize,
@Parameter(description = "模糊搜索关键字") @RequestParam(required = false) String keyword, @Parameter(description = "模糊搜索关键字") @RequestParam(name = "keyword", required = false) String keyword,
@Parameter(description = "ASIN 模糊搜索") @RequestParam(required = false) String dataValue, @Parameter(description = "ASIN 模糊搜索") @RequestParam(name = "data_value", required = false) String dataValue,
@Parameter(description = "品牌模糊搜索") @RequestParam(required = false) String brand, @Parameter(description = "品牌模糊搜索") @RequestParam(name = "brand", required = false) String brand,
@Parameter(description = "分组 ID") @RequestParam(required = false) Long groupId, @Parameter(description = "分组 ID") @RequestParam(name = "group_id", required = false) Long groupId,
HttpServletRequest request) { HttpServletRequest request) {
RequestOperator operator = requireInvalidAsinDataAccess(request); RequestOperator operator = requireInvalidAsinDataAccess(request);
return ApiResponse.success(invalidAsinDataService.page( return ApiResponse.success(invalidAsinDataService.page(
@@ -54,12 +54,12 @@ public class QueryAsinController {
@Operation(summary = "分页查询 ASIN") @Operation(summary = "分页查询 ASIN")
public ApiResponse<QueryAsinPageVo> page( public ApiResponse<QueryAsinPageVo> page(
HttpServletRequest request, HttpServletRequest request,
@Parameter(description = "页码") @RequestParam(defaultValue = "1") Long page, @Parameter(description = "页码") @RequestParam(name = "page", defaultValue = "1") Long page,
@Parameter(description = "每页数量") @RequestParam(defaultValue = "15") Long pageSize, @Parameter(description = "每页数量") @RequestParam(name = "page_size", defaultValue = "15") Long pageSize,
@Parameter(description = "分组ID") @RequestParam(required = false) Long groupId, @Parameter(description = "分组ID") @RequestParam(name = "group_id", required = false) Long groupId,
@Parameter(description = "店铺名") @RequestParam(required = false) String shopName, @Parameter(description = "店铺名") @RequestParam(name = "shop_name", required = false) String shopName,
@Parameter(description = "商品 ASIN") @RequestParam(required = false) String asin, @Parameter(description = "商品 ASIN") @RequestParam(name = "asin", required = false) String asin,
@Parameter(description = "国家代码(DE/UK/FR/IT/ES)") @RequestParam(required = false) String country) { @Parameter(description = "国家代码(DE/UK/FR/IT/ES)") @RequestParam(name = "country", required = false) String country) {
AdminUserEntity operator = requireOperator(request); AdminUserEntity operator = requireOperator(request);
return ApiResponse.success(queryAsinService.page( return ApiResponse.success(queryAsinService.page(
page, page,
@@ -76,10 +76,10 @@ public class QueryAsinController {
@Operation(summary = "导出查询 ASIN") @Operation(summary = "导出查询 ASIN")
public ResponseEntity<byte[]> export( public ResponseEntity<byte[]> export(
HttpServletRequest request, HttpServletRequest request,
@Parameter(description = "分组ID") @RequestParam(required = false) Long groupId, @Parameter(description = "分组ID") @RequestParam(name = "group_id", required = false) Long groupId,
@Parameter(description = "店铺名") @RequestParam(required = false) String shopName, @Parameter(description = "店铺名") @RequestParam(name = "shop_name", required = false) String shopName,
@Parameter(description = "商品 ASIN") @RequestParam(required = false) String asin, @Parameter(description = "商品 ASIN") @RequestParam(name = "asin", required = false) String asin,
@Parameter(description = "国家代码(DE/UK/FR/IT/ES)") @RequestParam(required = false) String country) { @Parameter(description = "国家代码(DE/UK/FR/IT/ES)") @RequestParam(name = "country", required = false) String country) {
AdminUserEntity operator = requireOperator(request); AdminUserEntity operator = requireOperator(request);
byte[] bytes = queryAsinService.export(groupId, shopName, asin, country, byte[] bytes = queryAsinService.export(groupId, shopName, asin, country,
operator.getId(), isSuper(operator)); operator.getId(), isSuper(operator));
@@ -106,7 +106,7 @@ public class QueryAsinController {
public ApiResponse<QueryAsinImportStartVo> importExcel( public ApiResponse<QueryAsinImportStartVo> importExcel(
HttpServletRequest request, HttpServletRequest request,
@Parameter(description = "xlsx/xls 文件", required = true) @RequestParam("file") MultipartFile file, @Parameter(description = "xlsx/xls 文件", required = true) @RequestParam("file") MultipartFile file,
@Parameter(description = "Excel 未提供分组时使用的分组ID") @RequestParam(required = false) Long groupId) { @Parameter(description = "Excel 未提供分组时使用的分组ID") @RequestParam(name = "group_id", required = false) Long groupId) {
AdminUserEntity operator = requireOperator(request); AdminUserEntity operator = requireOperator(request);
return ApiResponse.success("开始导入", return ApiResponse.success("开始导入",
queryAsinService.startImport(file, groupId, operator.getId(), isSuper(operator))); queryAsinService.startImport(file, groupId, operator.getId(), isSuper(operator)));