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 ///