Files
junhong_cmp_fiber/internal/routes/admin.go
break d52be16802
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m15s
feat(资产钱包自动续费): 新增全局配置、每日扫描续购与可靠复机
- 新增单行配置表 tb_asset_auto_renewal_config 与尝试记录表 tb_asset_auto_renewal_attempt(迁移 000229/000230)
- 每日按上海自然日扫描,窗口内以同一资产钱包可用余额续购当前主套餐,资金/订单/套餐/审计同一事务闭合
- 唯一键保证每资产每日至多一次尝试,占位中断由后续扫描收敛,当日不重试
- 四类失败原因向客户与店铺各投递每日至多一条站内通知,并注册通知类型与个人客户白名单
- 续费成功后按条件经 Outbox 可靠投递复机,新增恢复扫描只查询回填,不使用即发即弃调用
- 配置读写仅超级管理员与平台账号,保存记录操作者、前后值快照并登记统一审计
- tasks 7.1–7.15 全部验证通过(本机隔离 PostgreSQL/Redis,零外部渠道调用)
2026-09-17 16:39:26 +08:00

192 lines
7.8 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/bootstrap"
"github.com/break/junhong_cmp_fiber/pkg/openapi"
)
// RegisterAdminRoutes 注册管理后台相关路由
func RegisterAdminRoutes(router fiber.Router, handlers *bootstrap.Handlers, middlewares *bootstrap.Middlewares, doc *openapi.Generator, basePath string) {
// 认证路由已迁移到 /api/auth参见 RegisterAuthRoutes
authGroup := router.Group("", middlewares.AdminAuth)
if handlers.Account != nil {
registerAccountRoutes(authGroup, handlers.Account, doc, basePath)
}
if handlers.Role != nil {
registerRoleRoutes(authGroup, handlers.Role, doc, basePath)
}
if handlers.Permission != nil {
registerPermissionRoutes(authGroup, handlers.Permission, doc, basePath)
}
// 店铺负责人批量交接与导入的静态路径必须先于 /shops/:id 注册,否则会被动态参数吞掉。
if handlers.BusinessUserGroup != nil {
registerShopBusinessOwnerBatchRoute(authGroup, handlers.BusinessUserGroup, doc, basePath)
}
if handlers.ShopBusinessOwnerImport != nil {
registerShopBusinessOwnerImportRoutes(authGroup, handlers.ShopBusinessOwnerImport, doc, basePath)
}
// 手机号资产关联的静态路径必须先于 DELETE /:id 注册,避免导入任务路径被动态主键吞掉。
if handlers.PhoneAssetAssociation != nil {
registerPhoneAssetAssociationRoutes(authGroup, handlers.PhoneAssetAssociation, doc, basePath)
}
if handlers.Shop != nil {
registerShopRoutes(authGroup, handlers.Shop, doc, basePath)
}
if handlers.ShopRole != nil {
registerShopRoleRoutes(authGroup, handlers.ShopRole, doc, basePath)
}
if handlers.ShopCommission != nil {
registerShopCommissionRoutes(authGroup, handlers.ShopCommission, doc, basePath)
}
if handlers.WithdrawalQualification != nil {
registerWithdrawalQualificationRoutes(authGroup, handlers.WithdrawalQualification, doc, basePath)
}
if handlers.Shop != nil {
registerShopDetailRoute(authGroup, handlers.Shop, doc, basePath)
}
if handlers.CommissionWithdrawal != nil {
registerCommissionWithdrawalRoutes(authGroup, handlers.CommissionWithdrawal, doc, basePath)
}
if handlers.CommissionWithdrawalSetting != nil {
registerCommissionWithdrawalSettingRoutes(authGroup, handlers.CommissionWithdrawalSetting, doc, basePath)
}
if handlers.Enterprise != nil {
registerEnterpriseRoutes(authGroup, handlers.Enterprise, doc, basePath)
}
if handlers.EnterpriseCard != nil {
registerEnterpriseCardRoutes(authGroup, handlers.EnterpriseCard, doc, basePath)
}
if handlers.EnterpriseDevice != nil {
registerEnterpriseDeviceRoutes(authGroup, handlers.EnterpriseDevice, doc, basePath)
}
if handlers.Authorization != nil {
registerAuthorizationRoutes(authGroup, handlers.Authorization, doc, basePath)
}
if handlers.IotCard != nil {
registerIotCardRoutes(authGroup, handlers.IotCard, handlers.IotCardImport, doc, basePath)
}
if handlers.ExportTask != nil {
registerExportTaskRoutes(authGroup, handlers.ExportTask, doc, basePath)
}
if handlers.Notification != nil {
registerNotificationRoutes(authGroup, handlers.Notification, doc, basePath)
}
if handlers.H5PopupConfiguration != nil {
registerH5PopupConfigurationRoutes(authGroup, handlers.H5PopupConfiguration, doc, basePath)
}
if handlers.Device != nil {
registerDeviceRoutes(authGroup, handlers.Device, handlers.DeviceImport, doc, basePath)
}
if handlers.AssetLifecycle != nil {
registerAssetLifecycleRoutes(authGroup, handlers.AssetLifecycle, doc, basePath)
}
if handlers.AssetAllocationRecord != nil {
registerAssetAllocationRecordRoutes(authGroup, handlers.AssetAllocationRecord, doc, basePath)
}
if handlers.Storage != nil {
registerStorageRoutes(authGroup, handlers.Storage, doc, basePath)
}
if handlers.Carrier != nil {
registerCarrierRoutes(authGroup, handlers.Carrier, doc, basePath)
}
if handlers.PackageSeries != nil {
registerPackageSeriesRoutes(authGroup, handlers.PackageSeries, doc, basePath)
}
if handlers.Package != nil {
registerPackageRoutes(authGroup, handlers.Package, doc, basePath)
}
if handlers.PackageUsage != nil {
registerPackageUsageRoutes(authGroup, handlers.PackageUsage, doc, basePath)
}
if handlers.PackageTrafficAlert != nil {
registerPackageTrafficAlertRoutes(authGroup, handlers.PackageTrafficAlert, doc, basePath)
}
if handlers.AssetAutoRenewal != nil {
registerAssetAutoRenewalRoutes(authGroup, handlers.AssetAutoRenewal, doc, basePath)
}
if handlers.ShopPackageBatchAllocation != nil {
registerShopPackageBatchAllocationRoutes(authGroup, handlers.ShopPackageBatchAllocation, doc, basePath)
}
if handlers.ShopPackageBatchPricing != nil {
registerShopPackageBatchPricingRoutes(authGroup, handlers.ShopPackageBatchPricing, doc, basePath)
}
if handlers.ShopSeriesGrant != nil {
registerShopSeriesGrantRoutes(authGroup, handlers.ShopSeriesGrant, doc, basePath)
}
if handlers.AdminOrder != nil {
registerAdminOrderRoutes(authGroup, handlers.AdminOrder, doc, basePath)
}
if handlers.AdminExchange != nil {
registerAdminExchangeRoutes(authGroup, handlers.AdminExchange, doc, basePath)
}
if handlers.PollingConfig != nil {
registerPollingConfigRoutes(authGroup, handlers.PollingConfig, doc, basePath)
}
if handlers.PollingConcurrency != nil {
registerPollingConcurrencyRoutes(authGroup, handlers.PollingConcurrency, doc, basePath)
}
if handlers.PollingMonitoring != nil {
registerPollingMonitoringRoutes(authGroup, handlers.PollingMonitoring, doc, basePath)
}
if handlers.PollingAlert != nil {
registerPollingAlertRoutes(authGroup, handlers.PollingAlert, doc, basePath)
}
if handlers.PollingCleanup != nil {
registerPollingCleanupRoutes(authGroup, handlers.PollingCleanup, doc, basePath)
}
if handlers.PollingManualTrigger != nil {
registerPollingManualTriggerRoutes(authGroup, handlers.PollingManualTrigger, doc, basePath)
}
if handlers.PollingPriority != nil {
registerPollingPriorityRoutes(authGroup, handlers.PollingPriority, doc, basePath)
}
if handlers.Asset != nil {
registerAssetRoutes(authGroup, handlers.Asset, handlers.AssetWallet, doc, basePath)
registerPackageExpiryRoutes(authGroup, handlers.Asset, doc, basePath)
}
if handlers.WechatConfig != nil {
registerWechatConfigRoutes(authGroup, handlers.WechatConfig, doc, basePath)
}
if handlers.PaymentMerchant != nil {
registerPaymentMerchantRoutes(authGroup, handlers.PaymentMerchant, doc, basePath)
}
if handlers.EmployeeCollection != nil {
registerEmployeeCollectionRoutes(authGroup, handlers.EmployeeCollection, doc, basePath)
registerEmployeeCollectionBillRoutes(authGroup, handlers.EmployeeCollection, doc, basePath)
registerEmployeeCollectionApplicationRoutes(authGroup, handlers.EmployeeCollection, doc, basePath)
}
if handlers.AgentRecharge != nil {
registerAgentSelfRechargePaymentMethodRoutes(authGroup, handlers.AgentRecharge, doc, basePath)
registerAgentRechargeRoutes(authGroup, handlers.AgentRecharge, doc, basePath)
}
if handlers.Refund != nil {
registerRefundRoutes(authGroup, handlers.Refund, doc, basePath)
}
if handlers.OrderPackageInvalidate != nil {
registerOrderPackageInvalidateRoutes(authGroup, handlers.OrderPackageInvalidate, doc, basePath)
}
if handlers.AssetPackageBatchOrder != nil {
registerAssetPackageBatchOrderRoutes(authGroup, handlers.AssetPackageBatchOrder, doc, basePath)
}
if handlers.BusinessUserGroup != nil {
registerBusinessUserGroupRoutes(authGroup, handlers.BusinessUserGroup, doc, basePath)
}
if handlers.SuperAdmin != nil {
registerSuperAdminRoutes(authGroup, handlers.SuperAdmin, doc, basePath)
}
if handlers.SystemConfig != nil {
registerSystemConfigRoutes(authGroup, handlers.SystemConfig, doc, basePath)
}
if handlers.Audit != nil {
registerAuditRoutes(authGroup, handlers.Audit, doc, basePath)
}
if handlers.WeCom != nil {
registerWeComRoutes(authGroup, handlers.WeCom, doc, basePath)
}
}