后端真实接口清单
本文档为前后端对接的唯一事实来源,由后端 Controller 扫描生成。
整理日期:2026-06-05
关键约定(摘自 server-snack/src/main/java/com/snack/server/config/SaTokenConfig.java):
- 用户端白名单:
/api/user/login;需登录:/api/user/**、/api/cart/**、/api/orders/**、/api/seckill/buy、/api/coupons/*/receive、/api/user/coupons
- 管理端白名单:
/api/admin/login、/api/admin/captcha;其余 /api/admin/** 均需登录
- 响应统一封装
Result<T>:{code, message, data}。前端 axios 拦截器在 code===200 时直接返回 data(已解包)
一、用户端接口(/api/...)
1. 用户鉴权
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| POST |
/api/user/login |
{username, password} |
{token, userId, nickname} |
白名单 |
| POST |
/api/user/register |
TODO 业务模块未实现注册(由 UserAuthController 暂代) |
— |
待确认 |
现状:用户端没有 profile 公开接口,登录后只能用 token 调其他接口。注册入口需另作设计。
2. 商品(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/product/{id} |
路径:id |
ProductDetailVO(含 skuList) |
公开 |
| GET |
/api/product/list |
query:categoryIds(逗号分隔)、orderBy(sales_desc/price_asc/price_desc/create_desc)、limit |
List<ProductListVO> |
公开 |
| GET |
/api/product/hot |
query:limit |
List<ProductListVO> |
公开 |
| GET |
/api/product/new |
query:limit |
List<ProductListVO> |
公开 |
注意:用户端没有 keyword 搜索接口,需确认是否走 categoryIds 或单独 /api/search — 当前不存在。
3. 分类(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/category/tree |
— |
List<CategoryTreeVO>(树形) |
公开 |
4. 轮播图(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/banner |
— |
List<BannerVO> |
公开 |
5. 公告(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/notice/list |
— |
List<NoticeVO> |
公开 |
| GET |
/api/notice/{id} |
路径:id |
NoticeVO(自动 +1 viewCount) |
公开 |
6. 购物车(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/cart |
— |
CartVO{items, totalCount, selectedCount, totalAmount, selectedAmount, allSelected} |
登录 |
| POST |
/api/cart |
CartAddReq{productId, skuId, quantity} |
void |
登录 |
| PUT |
/api/cart/quantity |
CartUpdateReq{skuId, quantity} |
void |
登录 |
| PUT |
/api/cart/{skuId}/selected |
query:selected(0/1) |
void |
登录 |
| PUT |
/api/cart/all-selected |
query:selected(0/1) |
void |
登录 |
| DELETE |
/api/cart/{skuId} |
路径:skuId |
void |
登录 |
| DELETE |
/api/cart |
body:List<Long>(skuIds 批量) |
void |
登录 |
| DELETE |
/api/cart/all |
— |
void |
登录 |
| GET |
/api/cart/count |
— |
Integer(商品总件数) |
登录 |
CartItemVO 关键字段:id/productId/productName/productImage/skuId/skuName/skuImage/price/quantity/subtotal/stock/selected/productStatus
7. 收货地址(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/address |
— |
List<AddressVO> |
登录 |
| GET |
/api/address/default |
— |
AddressVO |
登录 |
| GET |
/api/address/{id} |
路径:id |
AddressVO |
登录 |
| POST |
/api/address |
AddressSaveReq |
Long(新 ID) |
登录 |
| PUT |
/api/address |
AddressSaveReq(带 id) |
void |
登录 |
| DELETE |
/api/address/{id} |
路径:id |
void |
登录 |
| PUT |
/api/address/{id}/default |
路径:id |
void |
登录 |
AddressSaveReq 字段:receiver、phone(^1[3-9]\d{9}$)、province、city、district、detail、tag、isDefault(0/1)
AddressVO 额外返回 fullAddress(省市区+详细 拼接)
8. 订单(用户端)— 路径是 /api/orders(复数,非 order)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| POST |
/api/orders |
OrderSubmitReq{items[{skuId, quantity}], addressId, couponId?, remark?} |
{orderNo} |
登录 |
| GET |
/api/orders/{id} |
路径:id |
OrderDetailVO |
登录 |
| GET |
/api/orders |
query:current/size/status?/keyword? |
Page<OrderDetailVO> |
登录 |
| POST |
/api/orders/{id}/pay |
路径:id |
void |
登录 |
| POST |
/api/orders/{id}/cancel |
路径:id |
void |
登录 |
| POST |
/api/orders/{id}/receive |
路径:id |
void |
登录 |
| POST |
/api/orders/{id}/refund |
路径:id + query:reason? |
void |
登录 |
OrderDetailVO 关键字段:id/orderNo/totalAmount/freightAmount/discountAmount/couponAmount/payAmount/status+statusText+statusTagType(Element Plus tag 类型)/receiverName/receiverPhone/receiverAddress/trackingCompany/trackingNo/payTime/deliverTime/receiveTime/payChannel+payChannelText/items+totalQuantity
9. 优惠券(用户端)— 路径是 /api/coupons(复数)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/coupons |
— |
List<CouponVO>(可领取列表,含已领取标记) |
公开 |
| POST |
/api/coupons/{id}/receive |
路径:id |
Long(领取记录 ID) |
登录 |
| GET |
/api/user/coupons |
query:status?(0未使用/1已使用/2过期/3作废) |
List<UserCouponVO> |
登录 |
10. 收藏(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/favorite |
query:current/size |
Page<FavoriteVO> |
登录 |
| POST |
/api/favorite/{productId} |
路径:productId |
void |
登录 |
| DELETE |
/api/favorite/{favoriteId} |
路径:favoriteId |
void |
登录 |
| DELETE |
/api/favorite/product/{productId} |
路径:productId |
void |
登录 |
| GET |
/api/favorite/check |
query:productId |
Boolean |
登录 |
| GET |
/api/favorite/count |
— |
Long |
登录 |
11. 抢购(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| GET |
/api/seckill/activities |
— |
List<SeckillActivityVO>(进行中/即将开始) |
公开 |
| GET |
/api/seckill/activities/{id} |
路径:id |
SeckillActivityVO(含 products) |
公开 |
| POST |
/api/seckill/buy |
SeckillBuyReq{activityId, skuId, quantity} |
{orderNo}(排队号/订单号) |
登录 |
| GET |
/api/seckill/result/{orderNo} |
路径:orderNo |
SeckillResultVO{orderNo, status(0排队/1成功/2失败), statusText, message?, mainOrderId?} |
登录 |
SeckillActivityVO 关键字段:id/name/cover/startTime/endTime/status(0未开始/1进行中/2已结束)+statusText/countdownSeconds/description/products
SeckillProductVO 关键字段:id/activityId/productId/productName/productImage/skuId/skuName/originPrice/seckillPrice/discount/seckillStock/remainStock/soldPercent/perLimit
12. 客服聊天(用户端)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| POST |
/api/chat/session |
— |
ChatSessionDetailVO(创建/恢复) |
登录 |
| GET |
/api/chat/sessions |
— |
List<ChatSessionVO>(我的会话) |
登录 |
| GET |
/api/chat/session/{id} |
路径:id |
ChatSessionDetailVO |
登录 |
| GET |
/api/chat/session/{id}/messages |
query:afterSeq?、limit(默认50) |
List<ChatMessageVO> |
登录 |
| POST |
/api/chat/session/{id}/message |
ChatSendMessageReq |
ChatMessageVO |
登录 |
| PUT |
/api/chat/session/{id}/ack |
ChatAckReq |
void |
登录 |
| PUT |
/api/chat/session/{id}/close |
路径:id |
void |
登录 |
| GET |
/api/chat/admin/online |
— |
Boolean |
登录 |
| POST |
/api/chat/heartbeat |
— |
void |
登录 |
13. 文件上传(用户端 + 管理端通用)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| POST |
/api/file/upload |
multipart:file + query:bizType(avatar/product/banner/notice/chat/common,默认 common) |
FileUploadVO{id, name, url, path, size, contentType, bizType, createTime} |
登录 |
| DELETE |
/api/file/{id} |
路径:id |
void |
登录 |
二、管理端接口(/api/admin/...)
1. 管理员鉴权
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| POST |
/api/admin/login |
AdminLoginReq |
LoginVO |
白名单 |
| GET |
/api/admin/captcha |
— |
CaptchaVO(推测) |
白名单 |
| POST |
/api/admin/logout |
— |
void |
登录 |
| GET |
/api/admin/info |
— |
AdminVO(当前登录管理员) |
登录 |
| PUT |
/api/admin/password |
ChangePasswordReq |
void |
登录 |
| GET |
/api/admin/page |
query:AdminPageReq |
Page<AdminVO> |
登录 |
| GET |
/api/admin/{id} |
路径:id |
AdminVO |
登录 |
| POST |
/api/admin |
AdminSaveReq |
Long |
登录 + super_admin |
| PUT |
/api/admin |
AdminSaveReq |
void |
登录 + super_admin |
| DELETE |
/api/admin/{id} |
路径:id |
void |
登录 + super_admin |
| PUT |
/api/admin/{id}/password/reset |
路径:id + query:newPassword |
void |
登录 + super_admin |
| PUT |
/api/admin/{id}/status/{status} |
路径:id/status |
void |
登录 + super_admin |
| POST |
/api/admin/avatar/upload |
multipart:file |
FileUploadVO |
登录 |
2. 用户管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/user/page |
Page<UserVO> |
登录 |
| GET |
/api/admin/user/{id} |
UserVO |
登录 |
| POST |
/api/admin/user |
Long |
登录 |
| PUT |
/api/admin/user |
void |
登录 |
| DELETE |
/api/admin/user/{id} |
void |
登录 |
| PUT |
/api/admin/user/{id}/password/reset |
void |
登录 |
| PUT |
/api/admin/user/{id}/status/{status} |
void |
登录 |
| GET |
/api/admin/user/{id}/orders |
Page<OrderDetailVO> |
登录 |
3. 商品分类
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/category/tree |
List<CategoryTreeVO> |
登录 |
| GET |
/api/admin/category/children |
List<Category> |
登录 |
| GET |
/api/admin/category/options |
List<CategoryOptionVO> |
登录 |
| GET |
/api/admin/category/{id} |
Category |
登录 |
| POST |
/api/admin/category |
Long |
登录 |
| PUT |
/api/admin/category |
void |
登录 |
| DELETE |
/api/admin/category/{id} |
void |
登录 |
| PUT |
/api/admin/category/{id}/status/{status} |
void |
登录 |
| PUT |
/api/admin/category/{id}/sort/{sort} |
void |
登录 |
| POST |
/api/admin/category/{id}/icon |
FileUploadVO |
登录 |
4. 商品管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/product/page |
Page<ProductListVO> |
登录 |
| GET |
/api/admin/product/{id} |
ProductDetailVO |
登录 |
| POST |
/api/admin/product |
Long |
登录 |
| PUT |
/api/admin/product |
void |
登录 |
| DELETE |
/api/admin/product/{id} |
void |
登录 |
| PUT |
/api/admin/product/{id}/status/{status} |
void |
登录 |
| PUT |
/api/admin/product/{id}/hot/{isHot} |
void |
登录 |
| PUT |
/api/admin/product/{id}/new/{isNew} |
void |
登录 |
| PUT |
/api/admin/product/stock/adjust |
void(StockAdjustReq) |
登录 |
5. 轮播图管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/banner/page |
Page<BannerVO> |
登录 |
| GET |
/api/admin/banner/{id} |
BannerVO |
登录 |
| POST |
/api/admin/banner |
Long |
登录 |
| PUT |
/api/admin/banner |
void |
登录 |
| DELETE |
/api/admin/banner/{id} |
void |
登录 |
| PUT |
/api/admin/banner/{id}/status/{status} |
void |
登录 |
| PUT |
/api/admin/banner/{id}/sort/{sort} |
void |
登录 |
6. 公告管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/notice/page |
Page<NoticeVO> |
登录 |
| GET |
/api/admin/notice/{id} |
NoticeVO |
登录 |
| POST |
/api/admin/notice |
Long |
登录 |
| PUT |
/api/admin/notice |
void |
登录 |
| DELETE |
/api/admin/notice/{id} |
void |
登录 |
| PUT |
/api/admin/notice/{id}/status/{status} |
void |
登录 |
| PUT |
/api/admin/notice/{id}/top/{isTop} |
void |
登录 |
7. 订单管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/order/page |
Page<OrderDetailVO> |
登录 |
| GET |
/api/admin/order/{id} |
OrderDetailVO |
登录 |
| POST |
/api/admin/order/{id}/deliver |
void(company, trackingNo) |
登录 |
| POST |
/api/admin/order/{id}/cancel |
void(reason) |
登录 |
8. 抢购管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/seckill/page |
Page<SeckillActivity> |
登录 |
| POST |
/api/admin/seckill |
Long |
登录 + super_admin |
| PUT |
/api/admin/seckill |
void |
登录 + super_admin |
| DELETE |
/api/admin/seckill/{id} |
void |
登录 + super_admin |
| PUT |
/api/admin/seckill/{id}/end |
void |
登录 + super_admin |
| POST |
/api/admin/seckill/{id}/warmup |
void |
登录 + super_admin |
| POST |
/api/admin/seckill/product |
Long |
登录 + super_admin |
| DELETE |
/api/admin/seckill/product/{id} |
void |
登录 + super_admin |
9. 优惠券管理
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/coupon/page |
Page<CouponVO> |
登录 |
| GET |
/api/admin/coupon/{id} |
CouponVO |
登录 |
| POST |
/api/admin/coupon |
Long |
登录 |
| PUT |
/api/admin/coupon |
void |
登录 |
| DELETE |
/api/admin/coupon/{id} |
void |
登录 |
| PUT |
/api/admin/coupon/{id}/status/{status} |
void |
登录 |
| PUT |
/api/admin/coupon/{id}/status |
void(兼容旧前端) |
登录 |
| GET |
/api/admin/coupon/record/page |
Page<UserCouponVO> |
登录 |
| GET |
/api/admin/coupon/{id}/records |
Page<UserCouponVO> |
登录 |
10. 客服聊天(管理端)
| 方法 |
路径 |
出参 |
鉴权 |
| GET |
/api/admin/chat/session/page |
Page<ChatSessionVO> |
登录 |
| GET |
/api/admin/chat/session/{id} |
ChatSessionDetailVO |
登录 |
| POST |
/api/admin/chat/session/{id}/accept |
ChatSessionVO |
登录 |
| POST |
/api/admin/chat/session/{id}/transfer |
ChatSessionVO(toAdminId) |
登录 |
| PUT |
/api/admin/chat/session/{id}/status/{status} |
void |
登录 |
| PUT |
/api/admin/chat/session/{id}/close |
void |
登录 |
| GET |
/api/admin/chat/session/{id}/messages |
List<ChatMessageVO> |
登录 |
| POST |
/api/admin/chat/session/{id}/message |
ChatMessageVO |
登录 |
| PUT |
/api/admin/chat/session/{id}/ack |
void |
登录 |
| GET |
/api/admin/chat/quick-reply/list |
List<QuickReplyVO> |
登录 |
| GET |
/api/admin/chat/quick-reply/{id} |
QuickReplyVO |
登录 |
| POST |
/api/admin/chat/quick-reply |
Long |
登录 |
| PUT |
/api/admin/chat/quick-reply |
void |
登录 |
| DELETE |
/api/admin/chat/quick-reply/{id} |
void |
登录 |
| POST |
/api/admin/chat/heartbeat |
void |
登录 |
| GET |
/api/admin/chat/admin/online/count |
Long |
登录 |
11. 支付回调(沙箱)
| 方法 |
路径 |
入参 |
出参 |
鉴权 |
| POST |
/api/payment/alipay/notify |
orderId/payChannel?/payTradeNo? |
String |
公开 |
| POST |
/api/payment/alipay/refund/notify |
orderId/refundTradeNo? |
String |
公开 |
三、与前端 api 现状的差异(摘录)
web-snack src/api/index.ts 当前(已淘汰/需改):
| 当前路径 |
实际后端 |
备注 |
/user/login(已脱 /api) |
POST /api/user/login |
缺少 /api 前缀,且 request 工具应该统一加前缀 |
/user/profile |
不存在 |
改为从 LoginResp 中保存 userId/nickname 到 store,登录后通过其他接口取信息 |
/banner/list |
GET /api/banner |
路径不同 |
/category/list |
GET /api/category/tree |
返回结构是树形,不是平铺 |
/product/list?categoryId&keyword&isHot&isNew |
GET /api/product/list?categoryIds&orderBy&limit |
不支持 keyword/isHot/isNew 参数;categoryId 改 categoryIds;无搜索接口 |
/product/detail/{id} |
GET /api/product/{id} |
路径差 /api 前缀 |
/cart/list |
GET /api/cart |
列表嵌套在 CartVO.items,结构不一样 |
/cart/add |
POST /api/cart |
路径不同 |
/cart/update(body 含 id+quantity+selected) |
PUT /api/cart/quantity(只改数量)+ PUT /api/cart/{skuId}/selected |
拆成两个接口 |
/cart/delete/{id} |
DELETE /api/cart/{skuId}(用 skuId 不是 cart item id) |
标识符不同 |
/address/list、/address/default |
GET /api/address、GET /api/address/default |
✓ 路径一致(只差前缀) |
/order/list |
GET /api/orders |
路径是 orders(复数) |
/order/create |
POST /api/orders |
路径不同;返回结构是 {orderNo} 不是完整 Order |
/order/detail/{id} |
GET /api/orders/{id} |
路径是 orders |
/coupon/list |
GET /api/coupons |
路径是 coupons(复数) |
/notice/list |
GET /api/notice/list |
✓ |
/seckill/list |
GET /api/seckill/activities |
路径不同 |
admin-snack 现状(基本 OK,主要差异点)
| 模块 |
现状(可能) |
后端实际 |
备注 |
| auth |
auth/login、auth/captcha |
/api/admin/login、/api/admin/captcha |
应确认是否存在 auth/ 子目录,或直接 /admin |
| chat |
见 admin |
见 admin |
✓ |
| coupon |
coupon/list |
/api/admin/coupon/page |
用 page 而非 list |
| order |
order/list |
/api/admin/order/page |
同上 |
| seckill |
seckill/list |
/api/admin/seckill/page |
同上 |
| product |
product/list |
/api/admin/product/page |
同上 |
| notice |
notice/list |
/api/admin/notice/page |
同上 |
| file |
/file/upload |
POST /api/file/upload(multipart,bizType) |
✓ 路径一致 |
| user |
user/list |
/api/admin/user/page |
同上 |
四、关键 VO 字段速查(给前端写 TS 类型用)
ProductListVO
id, name, categoryId, categoryName, brand, mainImage,
minPrice, maxPrice, totalStock, sales, status, isHot, isNew, createTime
ProductDetailVO
id, name, categoryId, categoryName, brand, mainImage, subImages[],
detail, originPrice, minPrice, sales, viewCount, status, isHot, isNew,
skuList: ProductSkuVO[], createTime
ProductSkuVO
id, productId, skuName, image, price, stock, sales, weight, sort
CartVO
items: CartItemVO[], totalCount, selectedCount,
totalAmount, selectedAmount, allSelected
CartItemVO
id, productId, productName, productImage, skuId, skuName, skuImage,
price, quantity, subtotal, stock, selected, productStatus
OrderDetailVO
id, orderNo, userId, username, totalAmount, freightAmount, discountAmount,
couponAmount, payAmount, status, statusText, statusTagType,
receiverName, receiverPhone, receiverAddress, remark,
trackingCompany, trackingNo,
payTime, deliverTime, receiveTime, cancelTime, createTime,
payChannel, payChannelText, payTradeNo, refundTradeNo, refundTime, refundReason,
items: OrderItemVO[], totalQuantity
SeckillActivityVO
id, name, cover, startTime, endTime, status(0未开始/1进行中/2已结束), statusText,
countdownSeconds, description, products: SeckillProductVO[]
SeckillProductVO
id, activityId, productId, productName, productImage, skuId, skuName,
originPrice, seckillPrice, discount, seckillStock, remainStock, soldPercent, perLimit
AddressVO
id, receiver, phone, province, city, district, detail, tag, isDefault, fullAddress, createTime
BannerVO
id, title, image, linkType(0无/1商品/2分类/3外链), linkValue, sort,
status(0下线/1上线), startTime, endTime, createTime, updateTime
NoticeVO
id, title, content(HTML), type(0普通/1重要/2活动), isTop, status,
startTime, endTime, viewCount, publisherId, createTime, updateTime
CategoryTreeVO
id, name, parentId, level(1/2/3), sort, icon, status, children: CategoryTreeVO[], createTime
CouponVO
id, name, type(0满减/1折扣/2无门槛), typeText, amount, minAmount, maxDiscount,
total(发放总量,-1不限量), remain, received, perLimit,
status(0未上线/1已上线/2已结束), statusText,
startTime, endTime, validDays, description, createTime, updateTime
UserCouponVO
id, userId, username, nickname, couponId, couponName, couponType,
status(0未使用/1已使用/2过期/3作废), statusText, orderId,
receiveTime, useTime, expireTime
FileUploadVO
id, name, url(直接用), path, size, contentType, bizType, createTime
ChatSessionVO
id, sessionNo, userId, username, nickname, avatar,
adminId, adminName, status(0待处理/1处理中/2已解决/3关闭), statusText,
unreadCount(视角相关), lastMessage, lastTime, createTime
ChatSessionDetailVO
session: ChatSessionVO, userSeq, adminSeq, closeTime
ChatMessageVO
id, sessionId, seq(会话内递增), senderId, senderType(0用户/1客服/2系统),
type(text/image/file/product/system), content, extra(JSON), isRecalled, createTime
FavoriteVO
id, productId, productName, productMainImage, minPrice, productStatus, createTime