18 KiB
18 KiB
商城业务API
**本文引用的文件** - [ProductCategoryApi.java](file://viewsh-module-mall/viewsh-module-product-api/src/main/java/com/viewsh/module/product/api/category/ProductCategoryApi.java) - [ProductSpuApi.java](file://viewsh-module-mall/viewsh-module-product-api/src/main/java/com/viewsh/module/product/api/spu/ProductSpuApi.java) - [ProductSKUApi.java](file://viewsh-module-mall/viewsh-module-product-api/src/main/java/com/viewsh/module/product/api/sku/ProductSKUApi.java) - [ProductCommentApi.java](file://viewsh-module-mall/viewsh-module-product-api/src/main/java/com/viewsh/module/product/api/comment/ProductCommentApi.java) - [SeckillActivityApi.java](file://viewsh-module-mall/viewsh-module-promotion-api/src/main/java/com/viewsh/module/promotion/api/seckill/SeckillActivityApi.java) - [TradeOrderApi.java](file://viewsh-module-mall/viewsh-module-trade-api/src/main/java/com/viewsh/module/trade/api/order/TradeOrderApi.java) - [MemberStatisticsController.java](file://viewsh-module-mall/viewsh-module-statistics-server/src/main/java/com/viewsh/module/statistics/controller/admin/member/MemberStatisticsController.java) - [TradeStatisticsController.java](file://viewsh-module-mall/viewsh-module-statistics-server/src/main/java/com/viewsh/module/statistics/controller/admin/trade/TradeStatisticsController.java) - [MemberStatisticsServiceImpl.java](file://viewsh-module-mall/viewsh-module-statistics-server/src/main/java/com/viewsh/module/statistics/service/member/MemberStatisticsServiceImpl.java)目录
简介
本文件为商城业务模块的综合API接口文档,覆盖商品管理(类目、SPU/SKU、评论)、促销活动(限时秒杀、拼团、优惠券等)、订单交易(创建、取消、查询)、会员管理(地址、等级、积分、用户基础信息)、统计数据(会员概览、交易趋势、订单对比)等核心能力。文档以RESTful风格描述接口,标注请求方法、路径、参数、返回值及权限要求,并给出关键流程的时序图与最佳实践建议。
项目结构
商城业务相关模块采用“多模块分层”组织方式,按领域拆分为 product(商品)、promotion(促销)、trade(交易)、member(会员)、statistics(统计),并通过统一的API常量与OpenFeign进行跨模块RPC调用。
graph TB
subgraph "商城业务模块"
PRODUCT["商品模块<br/>product-api / product-server"]
PROMO["促销模块<br/>promotion-api / promotion-server"]
TRADE["交易模块<br/>trade-api / trade-server"]
MEMBER["会员模块<br/>member-api / member-server"]
STATS["统计模块<br/>statistics-api / statistics-server"]
end
CLIENT["客户端/前端/其他服务"] --> PRODUCT
CLIENT --> PROMO
CLIENT --> TRADE
CLIENT --> MEMBER
CLIENT --> STATS
PRODUCT --> PROMO
PRODUCT --> TRADE
PRODUCT --> STATS
PROMO --> TRADE
TRADE --> STATS
MEMBER --> STATS
图表来源
- ProductCategoryApi.java
- ProductSpuApi.java
- ProductSKUApi.java
- SeckillActivityApi.java
- TradeOrderApi.java
章节来源
- ProductCategoryApi.java
- ProductSpuApi.java
- ProductSKUApi.java
- SeckillActivityApi.java
- TradeOrderApi.java
核心组件
- 商品类目管理:提供类目合法性校验的RPC接口,供其他模块在业务前置校验使用。
- 商品SPU/SKU管理:提供SPU/SKU的批量查询、单个查询、按SPU批量查询以及库存更新RPC接口。
- 商品评论管理:提供创建评论的RPC接口。
- 促销活动:提供秒杀活动的库存扣减/回补、参与校验等RPC接口。
- 订单交易:提供订单列表/单个查询、已支付取消等RPC接口。
- 统计数据:提供会员概览、交易订单数量、订单对比、订单趋势等管理后台统计接口。
章节来源
- ProductCategoryApi.java
- ProductSpuApi.java
- ProductSKUApi.java
- ProductCommentApi.java
- SeckillActivityApi.java
- TradeOrderApi.java
- MemberStatisticsController.java
- TradeStatisticsController.java
- MemberStatisticsServiceImpl.java
架构总览
商城业务通过统一的API常量与OpenFeign进行跨模块调用,形成清晰的领域边界与职责划分。商品模块负责SPU/SKU与评论;促销模块负责活动与库存变更;交易模块负责订单生命周期;统计模块提供运营看板数据。
graph LR
FEIGN["OpenFeign 客户端<br/>FeignClient 接口"] --> API["API 常量<br/>ApiConstants"]
API --> PRODUCT_API["商品API"]
API --> PROMO_API["促销API"]
API --> TRADE_API["交易API"]
API --> MEMBER_API["会员API"]
API --> STATS_API["统计API"]
PRODUCT_API --> PRODUCT_SERVER["商品服务实现"]
PROMO_API --> PROMO_SERVER["促销服务实现"]
TRADE_API --> TRADE_SERVER["交易服务实现"]
MEMBER_API --> MEMBER_SERVER["会员服务实现"]
STATS_API --> STATS_SERVER["统计服务实现"]
图表来源
- ProductCategoryApi.java
- ProductSpuApi.java
- ProductSKUApi.java
- SeckillActivityApi.java
- TradeOrderApi.java
详细组件分析
商品类目管理接口
- 功能:校验传入的商品类目编号集合是否合法。
- 接口定义(RPC)
- 方法:GET
- 路径:/category/valid
- 请求参数:ids(类目编号数组)
- 返回:CommonResult
- 使用场景:在创建/编辑商品或订单结算前,对类目进行前置校验。
章节来源
商品SPU管理接口
- 功能:批量查询SPU、校验SPU有效性、获取单个SPU。
- 接口定义(RPC)
- 批量查询SPU:GET /spu/list
- 校验SPU并返回有效列表:GET /spu/valid
- 获取单个SPU:GET /spu/get
- 返回类型:CommonResult<List/Single>
章节来源
商品SKU管理接口
- 功能:查询SKU、批量查询SKU、按SPU批量查询、更新SKU库存(增/减)。
- 接口定义(RPC)
- 查询单个SKU:GET /sku/get
- 批量查询SKU:GET /sku/list
- 按SPU批量查询SKU:GET /sku/list-by-spu-id
- 更新库存(减少):POST /sku/update-stock
- 更新库存(增加):POST /sku/update-stock
- 返回类型:CommonResult<List/Boolean>
章节来源
商品评论管理接口
- 功能:创建商品评论。
- 接口定义(RPC)
- 创建评论:POST /comment/create
- 请求体:ProductCommentCreateReqDTO
- 返回:CommonResult(评论ID)
章节来源
促销活动接口(限时秒杀)
- 功能:校验用户是否可参与秒杀、扣减/回补秒杀库存。
- 接口定义(RPC)
- 扣减库存:PUT /discount-activity/update-stock-decr
- 回补库存:PUT /discount-activity/update-stock-incr
- 参与校验:GET /discount-activity/validate-join
- 请求参数(示例):activityId、skuId、count
- 返回类型:CommonResult<Boolean/DTO>
章节来源
订单交易接口
- 功能:查询订单列表/单个订单、取消已支付订单。
- 接口定义(RPC)
- 查询订单列表:GET /order/list
- 查询单个订单:GET /order/get
- 取消已支付订单:PUT /order/cancel-paid
- 请求参数(示例):ids、id、userId、orderId、cancelType
- 返回类型:CommonResult<List/Single/Boolean>
章节来源
会员统计接口
- 功能:管理后台会员概览、会员趋势、活跃度等。
- 控制器接口(HTTP)
- GET /member/summary(示例)
- 权限:需具备 statistics:member:query 权限
- 返回:会员汇总数据对象
章节来源
交易统计接口
- 功能:管理后台交易概览、订单数量、订单对比、订单趋势。
- 控制器接口(HTTP)
- GET /trade/order-count:未发货/门店自提订单数、售后申请数、佣金提现审核中数
- GET /trade/order-comparison:订单数量对比
- GET /trade/order-count-trend:订单数量趋势
- 权限:需具备 statistics:trade:query 权限
- 返回:对应统计响应对象
章节来源
统计服务实现(会员)
- 功能:聚合会员充值、消费、用户总数等指标
- 关键调用链:
- 获取用户充值汇总
- 获取消费金额(按订单支付价统计)
- 获取用户总数
- 返回:会员概览响应对象
章节来源
依赖关系分析
- RPC接口通过FeignClient声明,统一使用ApiConstants作为服务名与前缀,降低耦合。
- 商品模块为上游数据源,被促销、交易、统计模块广泛依赖。
- 促销模块与交易模块存在强关联:秒杀活动在下单前校验,下单后扣减库存。
- 统计模块聚合来自会员、交易、钱包等多模块的数据,形成运营看板。
graph TB
PCAT["ProductCategoryApi"] --> PCAT_IMPL["商品服务实现"]
PSUP["ProductSpuApi"] --> PSUP_IMPL["商品服务实现"]
PSKU["ProductSKUApi"] --> PSKU_IMPL["商品服务实现"]
PCOM["ProductCommentApi"] --> PCOM_IMPL["商品服务实现"]
SECK["SeckillActivityApi"] --> SECK_IMPL["促销服务实现"]
TORD["TradeOrderApi"] --> TORD_IMPL["交易服务实现"]
STAT_CTRL["统计控制器"] --> STAT_SRV["统计服务实现"]
STAT_SRV --> PCAT_IMPL
STAT_SRV --> PSUP_IMPL
STAT_SRV --> PSKU_IMPL
STAT_SRV --> SECK_IMPL
STAT_SRV --> TORD_IMPL
图表来源
- ProductCategoryApi.java
- ProductSpuApi.java
- ProductSKUApi.java
- ProductCommentApi.java
- SeckillActivityApi.java
- TradeOrderApi.java
- MemberStatisticsController.java
- TradeStatisticsController.java
- MemberStatisticsServiceImpl.java
性能考量
- 批量查询优先:SPU/SKU均提供批量接口,避免多次RPC往返。
- 库存更新原子性:秒杀库存扣减/回补应结合分布式锁或数据库层面的原子操作,防止超卖。
- 统计聚合:会员与交易统计建议异步落表或缓存热点数据,避免高频实时统计带来的压力。
- 分页与过滤:列表查询建议支持分页与条件过滤,控制单次返回数据量。
故障排查指南
- 类目校验失败:确认传入的ids是否为空或包含非法值;检查商品类目状态。
- SPU/SKU查询为空:核对编号是否正确;确认商品状态与上下架状态。
- 库存更新失败:检查活动是否存在、SKU是否匹配、库存是否充足;关注并发场景下的超卖风险。
- 秒杀校验失败:确认活动时间、限购规则、用户资格;检查活动与SKU绑定关系。
- 订单取消失败:确认订单状态为“已支付”,取消类型参数是否正确;检查退款/库存回滚流程。
- 统计数据异常:核对统计口径(如消费金额按订单支付价统计)、时间范围、权限配置。
结论
本API文档梳理了商城业务的核心能力与接口契约,明确了商品、促销、交易、会员、统计等模块的职责边界与交互关系。建议在实际接入时遵循批量查询、幂等设计、原子性更新与权限控制的最佳实践,确保业务流程稳定与数据一致。
附录
电商业务流程接口调用示例(概念性流程)
以下为典型业务流程的概念性时序图,展示从下单到支付、发货、售后的调用顺序与关键校验点。
sequenceDiagram
participant Client as "客户端"
participant Trade as "交易模块"
participant Promo as "促销模块"
participant Prod as "商品模块"
participant Stats as "统计模块"
Client->>Prod : "查询SPU/SKU详情"
Prod-->>Client : "返回SPU/SKU信息"
Client->>Promo : "校验参与秒杀/拼团/优惠券"
Promo-->>Client : "返回校验结果"
Client->>Trade : "提交订单含商品、优惠、收货信息"
Trade->>Prod : "锁定/扣减库存"
Prod-->>Trade : "库存扣减结果"
Trade-->>Client : "返回订单号"
Client->>Trade : "发起支付"
Trade-->>Client : "支付结果"
Client->>Trade : "申请发货/物流"
Trade-->>Client : "物流信息"
Client->>Trade : "售后/退款申请"
Trade-->>Client : "售后处理结果"
Trade->>Stats : "更新销售/用户行为统计"
Stats-->>Trade : "统计完成"
关键流程与数据一致性保障机制(概念性说明)
- 库存一致性:秒杀/下单扣减采用“预占+最终确认/回滚”的两阶段策略,结合分布式锁与数据库事务。
- 支付与订单状态:支付成功后才允许发货;退款成功后回滚库存与统计。
- 统计一致性:采用异步任务或消息队列更新统计表,避免阻塞主交易链路。
- 权限与审计:所有管理后台接口均需鉴权与操作日志记录,确保可追溯。