Files
junhong_cmp_fiber/internal/routes/order.go
邹进 eb9f12d160
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m34s
feat: 后台订单按平台、代理商、在线支付拆分列表与导出
- 新增 GET /orders/platform、/orders/agent、/orders/online,类别由路径固定,参数、响应、权限同原订单列表
- 新增导出场景 order_platform、order_agent、order_online,筛选与表头同 order
- 类别按钱从哪来划分:客户端下单为在线支付;后台代理钱包扣款(含平台代扣)为代理商;其余后台订单为平台
- 列表与导出共用 internal/query/ordercategory 的类别条件
- 企业账号访问订单列表、详情、购买预检改为无权限,修复其可看到全部订单的问题
- 原订单列表与 order 导出场景保留不变

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:53:24 +09:00

148 lines
7.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package routes
import (
"github.com/gofiber/fiber/v2"
"github.com/break/junhong_cmp_fiber/internal/handler/admin"
"github.com/break/junhong_cmp_fiber/internal/handler/callback"
"github.com/break/junhong_cmp_fiber/internal/model/dto"
"github.com/break/junhong_cmp_fiber/pkg/openapi"
)
// registerAdminOrderRoutes 注册后台订单路由
func registerAdminOrderRoutes(router fiber.Router, handler *admin.OrderHandler, doc *openapi.Generator, basePath string) {
Register(router, doc, basePath, "POST", "/orders", handler.Create, RouteSpec{
Summary: "创建订单",
Tags: []string{"订单管理"},
Input: new(dto.CreateAdminOrderRequest),
Output: new(dto.OrderResponse),
Auth: true,
})
Register(router, doc, basePath, "GET", "/orders", handler.List, RouteSpec{
Summary: "获取订单列表",
Description: "平台订单、代理商订单、在线支付订单全部返回;按类别查看请用 `/orders/platform`、`/orders/agent`、`/orders/online`。代理账号只看到买家是本店铺的订单。企业账号无权访问。",
Tags: []string{"订单管理"},
Input: new(dto.OrderListRequest),
Output: new(dto.OrderListResponse),
Auth: true,
})
// 按类别拆分的列表是静态路径,必须注册在 /orders/:id 之前,否则会被当作订单 ID 解析。
Register(router, doc, basePath, "GET", "/orders/platform", handler.ListPlatform, RouteSpec{
Summary: "获取平台订单列表",
Description: "平台订单:后台下单且不走代理钱包(线下支付),含平台自营、赠送、平台代购代理名下的卡。查询参数、分页、响应结构、权限与数据范围与 `GET /orders` 相同,只额外固定订单类别,不接收类别参数。代理账号只看到买家是本店铺的订单。企业账号无权访问。",
Tags: []string{"订单管理"},
Input: new(dto.OrderListRequest),
Output: new(dto.OrderListResponse),
Auth: true,
})
Register(router, doc, basePath, "GET", "/orders/agent", handler.ListAgent, RouteSpec{
Summary: "获取代理商订单列表",
Description: "代理商订单:后台下单且从代理钱包扣款,含代理自购、代理给下级购买、平台代扣代理钱包、代理 OpenAPI 下单。查询参数、分页、响应结构、权限与数据范围与 `GET /orders` 相同,只额外固定订单类别,不接收类别参数。代理账号只看到买家是本店铺的订单。企业账号无权访问。",
Tags: []string{"订单管理"},
Input: new(dto.OrderListRequest),
Output: new(dto.OrderListResponse),
Auth: true,
})
Register(router, doc, basePath, "GET", "/orders/online", handler.ListOnline, RouteSpec{
Summary: "获取在线支付订单列表",
Description: "在线支付订单:个人客户在客户端下的全部订单,含微信、支付宝、卡钱包支付、自动续费、自动购买与待支付订单。查询参数、分页、响应结构、权限与数据范围与 `GET /orders` 相同,只额外固定订单类别,不接收类别参数。代理账号只看到买家是本店铺的订单。企业账号无权访问。在线支付订单的买家是个人客户,代理账号调用结果为空。",
Tags: []string{"订单管理"},
Input: new(dto.OrderListRequest),
Output: new(dto.OrderListResponse),
Auth: true,
})
Register(router, doc, basePath, "GET", "/orders/:id", handler.Get, RouteSpec{
Summary: "获取订单详情",
Description: "企业账号无权访问。",
Tags: []string{"订单管理"},
Input: new(dto.GetOrderRequest),
Output: new(dto.OrderDetailResponse),
Auth: true,
})
Register(router, doc, basePath, "POST", "/orders/:id/cancel", handler.Cancel, RouteSpec{
Summary: "取消订单",
Tags: []string{"订单管理"},
Input: new(dto.CancelOrderRequest),
Output: nil,
Auth: true,
})
Register(router, doc, basePath, "POST", "/orders/purchase-check", handler.PurchaseCheck, RouteSpec{
Summary: "套餐购买预检",
Description: "企业账号无权访问。",
Tags: []string{"订单管理"},
Input: new(dto.PurchaseCheckRequest),
Output: new(dto.PurchaseCheckResponse),
Auth: true,
})
}
// registerCarrierCallbackRoutes 注册运营商业务回调路由。
func registerCarrierCallbackRoutes(router fiber.Router, handler *callback.CTCCRealnameHandler, doc *openapi.Generator, basePath string) {
Register(router, doc, basePath, "POST", "/carriers/ctcc/realname", handler.Realname, RouteSpec{
Summary: "电信实名结果回调",
Description: "接收电信 XML 实名补录结果,固定返回运营商成功应答。",
Tags: []string{"运营商回调"},
Input: nil,
Output: nil,
Auth: false,
})
}
// registerCMCCCallbackRoutes 注册中国移动实名回调路由。
func registerCMCCCallbackRoutes(router fiber.Router, handler *callback.CMCCRealnameHandler, doc *openapi.Generator, basePath string) {
Register(router, doc, basePath, "POST", "/carriers/cmcc/realname", handler.Realname, RouteSpec{
Summary: "移动实名结果回调", Description: "接收中国移动 JSON 实名成功结果,固定返回运营商成功应答。",
Tags: []string{"运营商回调"}, Input: nil, Output: nil, Auth: false,
})
}
// registerCUCCRealnameCallbackRoutes 注册中国联通实名成功回调路由。
func registerCUCCRealnameCallbackRoutes(router fiber.Router, handler *callback.CUCCRealnameHandler, doc *openapi.Generator, basePath string) {
Register(router, doc, basePath, "POST", "/carriers/cucc/realname", handler.Realname, RouteSpec{
Summary: "联通实名结果回调", Description: "接收中国联通嵌套 JSON 实名成功结果,固定返回运营商成功应答。",
Tags: []string{"运营商回调"}, Input: nil, Output: nil, Auth: false,
})
}
// registerCUCCCallbackRoutes 注册中国联通解除实名回调路由。
func registerCUCCCallbackRoutes(router fiber.Router, handler *callback.CUCCRealnameRemovalHandler, doc *openapi.Generator, basePath string) {
Register(router, doc, basePath, "POST", "/carriers/cucc/realname/remove", handler.Remove, RouteSpec{
Summary: "联通解除实名回调", Description: "识别中国联通解除实名 JSON,仅留痕且不修改本地实名事实。",
Tags: []string{"运营商回调"}, Input: nil, Output: nil, Auth: false,
})
}
// registerPaymentCallbackRoutes 注册支付回调路由
func registerPaymentCallbackRoutes(router fiber.Router, handler *callback.PaymentHandler, doc *openapi.Generator, basePath string) {
Register(router, doc, basePath, "POST", "/wechat-pay", handler.WechatPayCallback, RouteSpec{
Summary: "微信支付回调",
Tags: []string{"支付回调"},
Input: nil,
Output: nil,
Auth: false,
})
Register(router, doc, basePath, "POST", "/alipay", handler.AlipayCallback, RouteSpec{
Summary: "支付宝回调",
Tags: []string{"支付回调"},
Input: nil,
Output: nil,
Auth: false,
})
Register(router, doc, basePath, "POST", "/fuiou-pay", handler.FuiouPayCallback, RouteSpec{
Summary: "富友支付回调",
Tags: []string{"支付回调"},
Input: nil,
Output: nil,
Auth: false,
})
}