diff --git a/server/HoneyBox/src/HoneyBox.Api/Controllers/GoodsController.cs b/server/HoneyBox/src/HoneyBox.Api/Controllers/GoodsController.cs
index 4308ec42..0cea70d3 100644
--- a/server/HoneyBox/src/HoneyBox.Api/Controllers/GoodsController.cs
+++ b/server/HoneyBox/src/HoneyBox.Api/Controllers/GoodsController.cs
@@ -365,6 +365,89 @@ public class GoodsController : ControllerBase
#endregion
+ #region Legacy Box List Endpoints (兼容旧版前端)
+
+ ///
+ /// 获取箱号分页列表(兼容旧版前端)
+ ///
+ ///
+ /// GET /api/goodslist_count
+ ///
+ /// 返回箱号分页列表,用于一番赏换箱功能
+ /// 例如:商品有50箱,返回 ["1-10", "11-20", "21-30", "31-40", "41-50"]
+ ///
+ /// 商品ID
+ /// 箱号分页列表
+ [HttpGet("goodslist_count")]
+ [ProducesResponseType(typeof(ApiResponse>), StatusCodes.Status200OK)]
+ public async Task>> GetGoodsListCount(
+ [FromQuery(Name = "goods_id")] int goods_id = 0)
+ {
+ try
+ {
+ if (goods_id <= 0)
+ {
+ return ApiResponse>.Fail("商品ID不能为空");
+ }
+
+ var result = await _goodsService.GetBoxListAsync(goods_id);
+ return ApiResponse>.Success(result);
+ }
+ catch (InvalidOperationException ex)
+ {
+ _logger.LogWarning("Get goodslist_count failed: GoodsId={GoodsId}, Error={Error}", goods_id, ex.Message);
+ return ApiResponse>.Fail(ex.Message);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Failed to get goodslist_count: GoodsId={GoodsId}", goods_id);
+ return ApiResponse>.Fail("获取箱号列表失败");
+ }
+ }
+
+ ///
+ /// 获取箱号详情列表(兼容旧版前端)
+ ///
+ ///
+ /// GET /api/goodslist_content
+ ///
+ /// 返回指定页码范围内的箱子详情,包含每个箱子的奖品列表和剩余库存
+ ///
+ /// 商品ID
+ /// 页码(从0开始)
+ /// 排序方式:0=箱号升序, 1=箱号降序, 2=余量降序
+ /// 箱号详情列表
+ [HttpGet("goodslist_content")]
+ [ProducesResponseType(typeof(ApiResponse>), StatusCodes.Status200OK)]
+ public async Task>> GetGoodsListContent(
+ [FromQuery(Name = "goods_id")] int goods_id = 0,
+ [FromQuery(Name = "page_no")] int page_no = 0,
+ [FromQuery(Name = "sort")] int sort = 1)
+ {
+ try
+ {
+ if (goods_id <= 0)
+ {
+ return ApiResponse>.Fail("商品ID不能为空");
+ }
+
+ var result = await _goodsService.GetBoxDetailAsync(goods_id, page_no, sort);
+ return ApiResponse>.Success(result);
+ }
+ catch (InvalidOperationException ex)
+ {
+ _logger.LogWarning("Get goodslist_content failed: GoodsId={GoodsId}, Error={Error}", goods_id, ex.Message);
+ return ApiResponse>.Fail(ex.Message);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Failed to get goodslist_content: GoodsId={GoodsId}", goods_id);
+ return ApiResponse>.Fail("获取箱号详情失败");
+ }
+ }
+
+ #endregion
+
#region Infinite Goods Detail Endpoints
///