Files
dujiao-next/internal/app/httpserver/routes_admin.go
T

200 lines
11 KiB
Go

package httpserver
import (
"github.com/dujiao-next/internal/app/container"
"github.com/dujiao-next/internal/app/httpserver/middleware"
affiliatebootstrap "github.com/dujiao-next/internal/bootstrap/affiliate"
settingsbootstrap "github.com/dujiao-next/internal/bootstrap/settingshttp"
"github.com/dujiao-next/internal/config"
adproxytransport "github.com/dujiao-next/internal/modules/adproxy/transport/http"
affiliatetransport "github.com/dujiao-next/internal/modules/affiliate/transport/http"
apicredentialtransport "github.com/dujiao-next/internal/modules/apicredential/transport/http"
auditlogtransport "github.com/dujiao-next/internal/modules/auditlog/transport/http"
cardsecrettransport "github.com/dujiao-next/internal/modules/cardsecret/transport/http"
categoryhttp "github.com/dujiao-next/internal/modules/catalog/category/transport/http"
mappinghttp "github.com/dujiao-next/internal/modules/catalog/mapping/transport/http"
producthttp "github.com/dujiao-next/internal/modules/catalog/product/transport/http"
channelclienthttp "github.com/dujiao-next/internal/modules/channelclient/transport/http"
compliancetransport "github.com/dujiao-next/internal/modules/compliance/transport/http"
contenttransport "github.com/dujiao-next/internal/modules/content/transport/http"
coupontransport "github.com/dujiao-next/internal/modules/coupon/transport/http"
dashboardtransport "github.com/dujiao-next/internal/modules/dashboard/transport/http"
fulfillmenttransport "github.com/dujiao-next/internal/modules/fulfillment/transport/http"
giftcardtransport "github.com/dujiao-next/internal/modules/giftcard/transport/http"
adminauthtransport "github.com/dujiao-next/internal/modules/identity/adminauth/transport/http"
adminauthztransport "github.com/dujiao-next/internal/modules/identity/adminauthorization/transport/http"
adminusertransport "github.com/dujiao-next/internal/modules/identity/user/transport/http/admin"
memberleveltransport "github.com/dujiao-next/internal/modules/memberlevel/transport/http"
notificationtransport "github.com/dujiao-next/internal/modules/notification/transport/http"
ordertransport "github.com/dujiao-next/internal/modules/order/transport/http"
paymenttransport "github.com/dujiao-next/internal/modules/payment/transport/http"
procurementtransport "github.com/dujiao-next/internal/modules/procurement/transport/http"
promotiontransport "github.com/dujiao-next/internal/modules/promotion/transport/http"
reconciliationtransport "github.com/dujiao-next/internal/modules/reconciliation/transport/http"
resellertransport "github.com/dujiao-next/internal/modules/reseller/transport/http/admin"
settingstransport "github.com/dujiao-next/internal/modules/settings/transport/http"
siteconnectiontransport "github.com/dujiao-next/internal/modules/siteconnection/transport/http"
broadcasthttp "github.com/dujiao-next/internal/modules/telegram/broadcast/transport/http"
uploadtransport "github.com/dujiao-next/internal/modules/upload/transport/http"
wallettransport "github.com/dujiao-next/internal/modules/wallet/transport/http"
"github.com/dujiao-next/internal/platform/http/response"
systemtransport "github.com/dujiao-next/internal/platform/http/system"
"github.com/gin-gonic/gin"
"github.com/redis/go-redis/v9"
)
func registerAdminRoutes(
engine *gin.Engine,
apiV1 *gin.RouterGroup,
cfg *config.Config,
c *container.Container,
adminLoginHandler *adminauthtransport.AdminLoginHandler,
admin2FAHandler *adminauthtransport.Admin2FAHandler,
adminUser2FAHandler *adminauthtransport.AdminUser2FAHandler,
adminUserHandler *adminusertransport.AdminHandler,
adminAuthzHandler *adminauthztransport.AdminHandler,
adminFulfillmentHandler *fulfillmenttransport.AdminHandler,
adminOrderHandler *ordertransport.AdminHandler,
adminOrderRefundHandler *ordertransport.AdminRefundHandler,
adminContentHandler *contenttransport.AdminHandler,
adminDashboardHandler *dashboardtransport.AdminHandler,
adminMemberLevelHandler *memberleveltransport.AdminHandler,
adminApiCredentialHandler *apicredentialtransport.AdminHandler,
adminAuditLogHandler *auditlogtransport.AdminHandler,
adminCardSecretHandler *cardsecrettransport.AdminHandler,
adminCatalogCategoryHandler *categoryhttp.AdminCategoryHandler,
adminCatalogProductHandler *producthttp.AdminProductHandler,
adminCatalogProductMappingHandler *mappinghttp.AdminHandler,
adminCouponHandler *coupontransport.AdminHandler,
adminGiftCardHandler *giftcardtransport.AdminHandler,
adminPromotionHandler *promotiontransport.AdminHandler,
adminNotificationHandler *notificationtransport.AdminHandler,
adminProcurementHandler *procurementtransport.AdminHandler,
adminResellerManagementHandler *resellertransport.AdminManagementHandler,
adminResellerProfileDetailHandler *resellertransport.AdminProfileDetailHandler,
adminResellerSiteConfigHandler *resellertransport.AdminSiteConfigHandler,
adminResellerProductSettingHandler *resellertransport.AdminProductSettingHandler,
adminResellerOperationsHandler *resellertransport.AdminOperationsHandler,
adminResellerFinanceHandler *resellertransport.AdminFinanceHandler,
adminSettingsHandler *settingstransport.AdminHandler,
adminWalletHandler *wallettransport.AdminHandler,
adminPaymentHandler *paymenttransport.AdminHandler,
adminPaymentChannelHandler *paymenttransport.AdminChannelHandler,
redisClient *redis.Client,
adminLoginRule middleware.RateLimitRule,
) {
admin := apiV1.Group("/admin")
// 登录接口(无需鉴权)
adminauthtransport.RegisterAdminLoginAuthRoutes(admin, adminLoginHandler, middleware.RateLimitMiddleware(redisClient, adminLoginRule, middleware.KeyByIP))
adminauthtransport.RegisterAdmin2FAAuthRoutes(admin, admin2FAHandler, middleware.RateLimitMiddleware(redisClient, adminLoginRule, middleware.KeyByIP))
// 需要鉴权的接口
authorized := admin.Use(middleware.JWTAuthMiddleware(cfg.JWT.SecretKey, c.AdminStore), middleware.AdminRBACMiddleware(c.AuthzService))
// 支付/财务相关受保护子组:未确认合规声明时拦截
// 注:admin.Use(...) 已 mutate admin 自身,新 Group 继承 JWT + RBAC 中间件
paymentProtected := admin.Group("", middleware.PaymentComplianceRequired(c.ComplianceService))
// 合规声明
compliancetransport.RegisterAdminRoutes(authorized, compliancetransport.NewAdminHandler(c.ComplianceService))
// 仪表盘
dashboardtransport.RegisterAdminRoutes(authorized, adminDashboardHandler)
// 广告代理
adproxytransport.RegisterAdminRoutes(authorized, adproxytransport.NewAdminHandler(c.AdProxyService))
// 商品 / 分类管理
producthttp.RegisterAdminRoutes(authorized, adminCatalogProductHandler)
contenttransport.RegisterAdminRoutes(authorized, adminContentHandler)
categoryhttp.RegisterAdminRoutes(authorized, adminCatalogCategoryHandler)
// 设置管理
settingstransport.RegisterAdminRoutes(authorized, adminSettingsHandler)
settingstransport.RegisterAdminSMTPRoutes(authorized, settingsbootstrap.NewSMTPHandler(c, cfg))
settingstransport.RegisterAdminCaptchaRoutes(authorized, settingsbootstrap.NewCaptchaHandler(c, cfg))
settingstransport.RegisterAdminTelegramAuthRoutes(authorized, settingsbootstrap.NewTelegramAuthHandler(c, cfg))
settingstransport.RegisterAdminGoogleAuthRoutes(authorized, settingsbootstrap.NewGoogleAuthHandler(c, cfg))
notificationtransport.RegisterAdminRoutes(authorized, adminNotificationHandler)
settingstransport.RegisterAdminOrderEmailTemplateRoutes(authorized, settingstransport.NewOrderEmailTemplateHandler(c.SettingService))
settingstransport.RegisterAdminAffiliateRoutes(authorized, settingstransport.NewAffiliateHandler(c.SettingService))
settingstransport.RegisterAdminTelegramBotRoutes(authorized, settingstransport.NewTelegramBotHandler(c.SettingService))
adminauthtransport.RegisterAdminPasswordRoutes(authorized, adminLoginHandler)
// 系统信息与版本检测
systemtransport.RegisterAdminRoutes(authorized, systemtransport.NewAdminHandler(nil))
adminauthtransport.RegisterAdmin2FARoutes(authorized, admin2FAHandler)
// 推广返利
adminAffiliateHandler := affiliatebootstrap.NewAdminHandler(c)
affiliatetransport.RegisterAdminRoutes(authorized, adminAffiliateHandler)
affiliatetransport.RegisterAdminFinanceRoutes(paymentProtected, adminAffiliateHandler)
resellertransport.RegisterOperationsOverviewRoutes(authorized, adminResellerOperationsHandler)
resellertransport.RegisterManagementRoutes(authorized, adminResellerManagementHandler)
resellertransport.RegisterProfileDetailRoutes(authorized, adminResellerProfileDetailHandler)
resellertransport.RegisterSiteConfigRoutes(authorized, adminResellerSiteConfigHandler)
resellertransport.RegisterProductSettingRoutes(authorized, adminResellerProductSettingHandler)
resellertransport.RegisterOperationsFinanceRoutes(paymentProtected, adminResellerOperationsHandler)
resellertransport.RegisterFinanceRoutes(paymentProtected, adminResellerFinanceHandler)
// 权限管理
adminauthztransport.RegisterAdminRoutes(authorized, adminAuthzHandler)
auditlogtransport.RegisterAdminRoutes(authorized, adminAuditLogHandler)
authorized.GET("/authz/permissions/catalog", func(ctx *gin.Context) {
response.Success(ctx, buildAdminPermissionCatalog(engine))
})
// 文件上传
uploadtransport.RegisterAdminRoutes(authorized, uploadtransport.NewAdminHandler(c.UploadService, c.ContentMediaService))
// 订单管理
ordertransport.RegisterAdminRoutes(authorized, adminOrderHandler)
ordertransport.RegisterAdminRefundWriteRoutes(authorized, adminOrderRefundHandler)
ordertransport.RegisterAdminRefundRoutes(authorized, adminOrderRefundHandler)
fulfillmenttransport.RegisterAdminRoutes(authorized, adminFulfillmentHandler)
cardsecrettransport.RegisterAdminRoutes(authorized, adminCardSecretHandler)
giftcardtransport.RegisterAdminRoutes(authorized, adminGiftCardHandler)
// 优惠券与活动价
coupontransport.RegisterAdminRoutes(authorized, adminCouponHandler)
promotiontransport.RegisterAdminRoutes(authorized, adminPromotionHandler)
// 会员等级
memberleveltransport.RegisterAdminRoutes(authorized, adminMemberLevelHandler)
// 支付渠道与支付记录
paymenttransport.RegisterAdminChannelRoutes(paymentProtected, adminPaymentChannelHandler)
paymenttransport.RegisterAdminRoutes(paymentProtected, adminPaymentHandler)
// 用户管理
adminusertransport.RegisterAdminRoutes(authorized, adminUserHandler)
wallettransport.RegisterAdminRoutes(paymentProtected, adminWalletHandler)
adminauthtransport.RegisterAdminUser2FARoutes(authorized, adminUser2FAHandler)
// API 凭证审核管理
apicredentialtransport.RegisterAdminRoutes(authorized, adminApiCredentialHandler)
// 站点对接连接管理
siteconnectiontransport.RegisterAdminRoutes(authorized, siteconnectiontransport.NewAdminHandler(
c.SiteConnectionService,
c.ProductMappingService,
))
// 商品映射管理
mappinghttp.RegisterAdminRoutes(authorized, adminCatalogProductMappingHandler)
// 采购单管理
procurementtransport.RegisterAdminRoutes(authorized, adminProcurementHandler)
// 对账管理
reconciliationtransport.RegisterAdminRoutes(paymentProtected, reconciliationtransport.NewAdminHandler(c.ReconciliationService))
// 渠道客户端管理
channelclienthttp.RegisterAdminRoutes(authorized, channelclienthttp.NewAdminHandler(c.ChannelClientService))
// Telegram Bot 群发
broadcasthttp.RegisterAdminRoutes(authorized, broadcasthttp.NewAdminHandler(c.TelegramBroadcastService))
}