package routes import ( "github.com/break/junhong_cmp_fiber/internal/handler/admin" "github.com/break/junhong_cmp_fiber/internal/model/dto" "github.com/break/junhong_cmp_fiber/pkg/openapi" "github.com/gofiber/fiber/v2" ) func registerAdminExchangeRoutes(router fiber.Router, handler *admin.ExchangeHandler, doc *openapi.Generator, basePath string) { Register(router, doc, basePath, "POST", "/exchanges", handler.Create, RouteSpec{ Summary: "创建换货单", Description: "新资产存在有效手机号关联时拒绝(错误码 1202),提示先在后台解除该资产的手机号绑定;完整号码只在错误响应 data.phone 中返回,不进日志。" + "不再以“有人扫过码”拒绝。直接换货完成时清空旧资产的个人客户绑定并失效旧资产手机号关联(exchange_completed),均不迁移到新资产。", Tags: []string{"换货管理"}, Input: new(dto.CreateExchangeRequest), Output: new(dto.ExchangeOrderResponse), Auth: true, }) Register(router, doc, basePath, "GET", "/exchanges", handler.List, RouteSpec{ Summary: "获取换货单列表", Tags: []string{"换货管理"}, Input: new(dto.ExchangeListRequest), Output: new(dto.ExchangeListResponse), Auth: true, }) Register(router, doc, basePath, "GET", "/exchanges/:id", handler.Get, RouteSpec{ Summary: "获取换货单详情", Tags: []string{"换货管理"}, Input: new(dto.ExchangeIDRequest), Output: new(dto.ExchangeOrderResponse), Auth: true, }) Register(router, doc, basePath, "POST", "/exchanges/:id/ship", handler.Ship, RouteSpec{ Summary: "换货发货", Tags: []string{"换货管理"}, Input: new(dto.ExchangeShipParams), Output: new(dto.ExchangeOrderResponse), Auth: true, }) Register(router, doc, basePath, "POST", "/exchanges/:id/complete", handler.Complete, RouteSpec{ Summary: "确认换货完成", Description: "确认换货完成;仅超级管理员或平台用户可对迁移状态为 failed 的物流换货单重试," + "其他账号对 failed 单返回 403/1005;非 failed 单沿用既有完成权限。" + "新资产存在有效手机号关联时拒绝并停在已发货待确认,完整号码在错误响应 data.phone;后台解除后可重新确认。" + "完成时清空旧资产个人客户绑定并失效旧资产手机号关联,均不迁移到新资产。", Tags: []string{"换货管理"}, Input: new(dto.ExchangeIDRequest), Output: nil, Auth: true, }) Register(router, doc, basePath, "POST", "/exchanges/:id/cancel", handler.Cancel, RouteSpec{ Summary: "取消换货", Tags: []string{"换货管理"}, Input: new(dto.ExchangeCancelParams), Output: nil, Auth: true, }) Register(router, doc, basePath, "POST", "/exchanges/:id/renew", handler.Renew, RouteSpec{ Summary: "旧资产转新", Tags: []string{"换货管理"}, Input: new(dto.ExchangeIDRequest), Output: nil, Auth: true, }) }