// Code generated by goctl. DO NOT EDIT.
package handler

import (
	"net/http"

	admin_agent "qnc-server/app/main/api/internal/handler/admin_agent"
	admin_auth "qnc-server/app/main/api/internal/handler/admin_auth"
	admin_feature "qnc-server/app/main/api/internal/handler/admin_feature"
	admin_menu "qnc-server/app/main/api/internal/handler/admin_menu"
	admin_notification "qnc-server/app/main/api/internal/handler/admin_notification"
	admin_order "qnc-server/app/main/api/internal/handler/admin_order"
	admin_platform_user "qnc-server/app/main/api/internal/handler/admin_platform_user"
	admin_product "qnc-server/app/main/api/internal/handler/admin_product"
	admin_promotion "qnc-server/app/main/api/internal/handler/admin_promotion"
	admin_query "qnc-server/app/main/api/internal/handler/admin_query"
	admin_role "qnc-server/app/main/api/internal/handler/admin_role"
	admin_user "qnc-server/app/main/api/internal/handler/admin_user"
	agent "qnc-server/app/main/api/internal/handler/agent"
	app "qnc-server/app/main/api/internal/handler/app"
	auth "qnc-server/app/main/api/internal/handler/auth"
	notification "qnc-server/app/main/api/internal/handler/notification"
	pay "qnc-server/app/main/api/internal/handler/pay"
	product "qnc-server/app/main/api/internal/handler/product"
	query "qnc-server/app/main/api/internal/handler/query"
	user "qnc-server/app/main/api/internal/handler/user"
	"qnc-server/app/main/api/internal/svc"

	"github.com/zeromicro/go-zero/rest"
)

func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/agent-commission-deduction/list",
				Handler: admin_agent.AdminGetAgentCommissionDeductionListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-commission/list",
				Handler: admin_agent.AdminGetAgentCommissionListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-link/list",
				Handler: admin_agent.AdminGetAgentLinkListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-membership-config/list",
				Handler: admin_agent.AdminGetAgentMembershipConfigListHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/agent-membership-config/update",
				Handler: admin_agent.AdminUpdateAgentMembershipConfigHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-membership-recharge-order/list",
				Handler: admin_agent.AdminGetAgentMembershipRechargeOrderListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-platform-deduction/list",
				Handler: admin_agent.AdminGetAgentPlatformDeductionListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-production-config/list",
				Handler: admin_agent.AdminGetAgentProductionConfigListHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/agent-production-config/update",
				Handler: admin_agent.AdminUpdateAgentProductionConfigHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-reward/list",
				Handler: admin_agent.AdminGetAgentRewardListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/agent-withdrawal/list",
				Handler: admin_agent.AdminGetAgentWithdrawalListHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_agent.AdminGetAgentListHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/admin/agent"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 登录
				Method:  http.MethodPost,
				Path:    "/login",
				Handler: admin_auth.AdminLoginHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/admin/auth"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_feature.AdminCreateFeatureHandler(serverCtx),
			},
			{
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_feature.AdminDeleteFeatureHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_feature.AdminGetFeatureDetailHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_feature.AdminGetFeatureListHandler(serverCtx),
			},
			{
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_feature.AdminUpdateFeatureHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/admin/feature"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 获取所有菜单(树形结构)
				Method:  http.MethodGet,
				Path:    "/all",
				Handler: admin_menu.GetMenuAllHandler(serverCtx),
			},
			{
				// 创建菜单
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_menu.CreateMenuHandler(serverCtx),
			},
			{
				// 删除菜单
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_menu.DeleteMenuHandler(serverCtx),
			},
			{
				// 获取菜单详情
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_menu.GetMenuDetailHandler(serverCtx),
			},
			{
				// 获取菜单列表
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_menu.GetMenuListHandler(serverCtx),
			},
			{
				// 更新菜单
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_menu.UpdateMenuHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/menu"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_notification.AdminCreateNotificationHandler(serverCtx),
			},
			{
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_notification.AdminDeleteNotificationHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_notification.AdminGetNotificationDetailHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_notification.AdminGetNotificationListHandler(serverCtx),
			},
			{
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_notification.AdminUpdateNotificationHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/admin/notification"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建订单
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_order.AdminCreateOrderHandler(serverCtx),
			},
			{
				// 删除订单
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_order.AdminDeleteOrderHandler(serverCtx),
			},
			{
				// 获取订单详情
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_order.AdminGetOrderDetailHandler(serverCtx),
			},
			{
				// 获取订单列表
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_order.AdminGetOrderListHandler(serverCtx),
			},
			{
				// 订单退款
				Method:  http.MethodPost,
				Path:    "/refund/:id",
				Handler: admin_order.AdminRefundOrderHandler(serverCtx),
			},
			{
				// 更新订单
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_order.AdminUpdateOrderHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/order"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_platform_user.AdminCreatePlatformUserHandler(serverCtx),
			},
			{
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_platform_user.AdminDeletePlatformUserHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_platform_user.AdminGetPlatformUserDetailHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_platform_user.AdminGetPlatformUserListHandler(serverCtx),
			},
			{
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_platform_user.AdminUpdatePlatformUserHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/platform_user"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_product.AdminCreateProductHandler(serverCtx),
			},
			{
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_product.AdminDeleteProductHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_product.AdminGetProductDetailHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/feature/list/:product_id",
				Handler: admin_product.AdminGetProductFeatureListHandler(serverCtx),
			},
			{
				Method:  http.MethodPut,
				Path:    "/feature/update/:product_id",
				Handler: admin_product.AdminUpdateProductFeaturesHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_product.AdminGetProductListHandler(serverCtx),
			},
			{
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_product.AdminUpdateProductHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/admin/product"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建推广链接
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_promotion.CreatePromotionLinkHandler(serverCtx),
			},
			{
				// 删除推广链接
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_promotion.DeletePromotionLinkHandler(serverCtx),
			},
			{
				// 获取推广链接详情
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_promotion.GetPromotionLinkDetailHandler(serverCtx),
			},
			{
				// 获取推广链接列表
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_promotion.GetPromotionLinkListHandler(serverCtx),
			},
			{
				// 更新推广链接
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_promotion.UpdatePromotionLinkHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/promotion/link"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 记录链接点击
				Method:  http.MethodGet,
				Path:    "/record/:path",
				Handler: admin_promotion.RecordLinkClickHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/admin/promotion/link"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 获取推广历史记录
				Method:  http.MethodGet,
				Path:    "/history",
				Handler: admin_promotion.GetPromotionStatsHistoryHandler(serverCtx),
			},
			{
				// 获取推广总统计
				Method:  http.MethodGet,
				Path:    "/total",
				Handler: admin_promotion.GetPromotionStatsTotalHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/promotion/stats"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 更新清理配置
				Method:  http.MethodPut,
				Path:    "/cleanup/config",
				Handler: admin_query.AdminUpdateQueryCleanupConfigHandler(serverCtx),
			},
			{
				// 获取清理配置列表
				Method:  http.MethodGet,
				Path:    "/cleanup/configs",
				Handler: admin_query.AdminGetQueryCleanupConfigListHandler(serverCtx),
			},
			{
				// 获取清理详情列表
				Method:  http.MethodGet,
				Path:    "/cleanup/details/:log_id",
				Handler: admin_query.AdminGetQueryCleanupDetailListHandler(serverCtx),
			},
			{
				// 获取清理日志列表
				Method:  http.MethodGet,
				Path:    "/cleanup/logs",
				Handler: admin_query.AdminGetQueryCleanupLogListHandler(serverCtx),
			},
			{
				// 获取查询详情
				Method:  http.MethodGet,
				Path:    "/detail/:order_id",
				Handler: admin_query.AdminGetQueryDetailByOrderIdHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/query"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建角色
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_role.CreateRoleHandler(serverCtx),
			},
			{
				// 删除角色
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_role.DeleteRoleHandler(serverCtx),
			},
			{
				// 获取角色详情
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_role.GetRoleDetailHandler(serverCtx),
			},
			{
				// 获取角色列表
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_role.GetRoleListHandler(serverCtx),
			},
			{
				// 更新角色
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_role.UpdateRoleHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/role"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建用户
				Method:  http.MethodPost,
				Path:    "/create",
				Handler: admin_user.AdminCreateUserHandler(serverCtx),
			},
			{
				// 删除用户
				Method:  http.MethodDelete,
				Path:    "/delete/:id",
				Handler: admin_user.AdminDeleteUserHandler(serverCtx),
			},
			{
				// 获取用户详情
				Method:  http.MethodGet,
				Path:    "/detail/:id",
				Handler: admin_user.AdminGetUserDetailHandler(serverCtx),
			},
			{
				// 用户信息
				Method:  http.MethodGet,
				Path:    "/info",
				Handler: admin_user.AdminUserInfoHandler(serverCtx),
			},
			{
				// 获取用户列表
				Method:  http.MethodGet,
				Path:    "/list",
				Handler: admin_user.AdminGetUserListHandler(serverCtx),
			},
			{
				// 更新用户
				Method:  http.MethodPut,
				Path:    "/update/:id",
				Handler: admin_user.AdminUpdateUserHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/admin/user"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/promotion/qrcode",
				Handler: agent.GetAgentPromotionQrcodeHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/agent"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/info",
				Handler: agent.GetAgentInfoHandler(serverCtx),
			},
			{
				Method:  http.MethodGet,
				Path:    "/revenue",
				Handler: agent.GetAgentRevenueInfoHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/agent"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					Method:  http.MethodGet,
					Path:    "/audit/status",
					Handler: agent.GetAgentAuditStatusHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/generating_link",
					Handler: agent.GeneratingLinkHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/product_config",
					Handler: agent.GetAgentProductConfigHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/real_name",
					Handler: agent.AgentRealNameHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/subordinate/contribution/detail",
					Handler: agent.GetAgentSubordinateContributionDetailHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/subordinate/list",
					Handler: agent.GetAgentSubordinateListHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/agent"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/membership/save_user_config",
					Handler: agent.SaveAgentMembershipUserConfigHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/membership/user_config",
					Handler: agent.GetAgentMembershipProductConfigHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/agent"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					Method:  http.MethodGet,
					Path:    "/commission",
					Handler: agent.GetAgentCommissionHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/membership/activate",
					Handler: agent.ActivateAgentMembershipHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/rewards",
					Handler: agent.GetAgentRewardsHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/withdrawal",
					Handler: agent.GetAgentWithdrawalHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/withdrawal",
					Handler: agent.AgentWithdrawalHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/agent"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.AuthInterceptor},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/apply",
					Handler: agent.ApplyForAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/link",
					Handler: agent.GetLinkDataHandler(serverCtx),
				},
			}...,
		),
		rest.WithPrefix("/api/v1/agent"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/app/version",
				Handler: app.GetAppVersionHandler(serverCtx),
			},
			{
				// 心跳检测接口
				Method:  http.MethodGet,
				Path:    "/health/check",
				Handler: app.HealthCheckHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 发起人脸认证
				Method:  http.MethodPost,
				Path:    "/face/init",
				Handler: auth.InitFaceVerifyHandler(serverCtx),
			},
			{
				// 查询人脸认证结果
				Method:  http.MethodPost,
				Path:    "/face/result",
				Handler: auth.GetFaceVerifyResultHandler(serverCtx),
			},
			{
				// 第三方拒绝授权
				Method:  http.MethodPost,
				Path:    "/rejectAuthorization",
				Handler: auth.RejectAuthorizationHandler(serverCtx),
			},
			{
				// get mobile verify code
				Method:  http.MethodPost,
				Path:    "/sendSms",
				Handler: auth.SendSmsHandler(serverCtx),
			},
			{
				// 短信授权
				Method:  http.MethodPost,
				Path:    "/smsAuthorization",
				Handler: auth.SmsAuthorizationHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/auth"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// get notifications
				Method:  http.MethodGet,
				Path:    "/notification/list",
				Handler: notification.GetNotificationsHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/pay/alipay/callback",
				Handler: pay.AlipayCallbackHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/pay/wechat/callback",
				Handler: pay.WechatPayCallbackHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/pay/wechat/refund_callback",
				Handler: pay.WechatPayRefundCallbackHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/pay/check",
					Handler: pay.PaymentCheckHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay/iap_callback",
					Handler: pay.IapCallbackHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay/payment",
					Handler: pay.PaymentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay/query_check",
					Handler: pay.QueryPaymentCheckHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					Method:  http.MethodGet,
					Path:    "/:id",
					Handler: product.GetProductByIDHandler(serverCtx),
				},
				{
					Method:  http.MethodGet,
					Path:    "/en/:product_en",
					Handler: product.GetProductByEnHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1/product"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/app_en/:product_en",
				Handler: product.GetProductAppByEnHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1/product"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.AuthInterceptor},
			[]rest.Route{
				{
					// query service agent
					Method:  http.MethodPost,
					Path:    "/query/service_agent/:product",
					Handler: query.QueryServiceAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/query/service_app/:product",
					Handler: query.QueryServiceAppHandler(serverCtx),
				},
			}...,
		),
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					// query service
					Method:  http.MethodPost,
					Path:    "/query/service/:product",
					Handler: query.QueryServiceHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.UserAuthInterceptor},
			[]rest.Route{
				{
					// 确认查询状态
					Method:  http.MethodPost,
					Path:    "/query/confirm_state",
					Handler: query.ConfirmQueryStateHandler(serverCtx),
				},
				{
					// 生成分享链接
					Method:  http.MethodPost,
					Path:    "/query/generate_share_link",
					Handler: query.QueryGenerateShareLinkHandler(serverCtx),
				},
				{
					// 查询列表
					Method:  http.MethodGet,
					Path:    "/query/list",
					Handler: query.QueryListHandler(serverCtx),
				},
				{
					// 查询详情 按订单号 付款查询时
					Method:  http.MethodGet,
					Path:    "/query/orderId/:order_id",
					Handler: query.QueryDetailByOrderIdHandler(serverCtx),
				},
				{
					// 查询详情 按订单号
					Method:  http.MethodGet,
					Path:    "/query/orderNo/:order_no",
					Handler: query.QueryDetailByOrderNoHandler(serverCtx),
				},
				{
					// 获取查询临时订单
					Method:  http.MethodGet,
					Path:    "/query/provisional_order/:id",
					Handler: query.QueryProvisionalOrderHandler(serverCtx),
				},
				{
					// 补查
					Method:  http.MethodPost,
					Path:    "/query/recheck/:query_id",
					Handler: query.QueryRecheckHandler(serverCtx),
				},
				{
					// 重试查询
					Method:  http.MethodPost,
					Path:    "/query/retry/:id",
					Handler: query.QueryRetryHandler(serverCtx),
				},
				{
					// 更新查询数据
					Method:  http.MethodPost,
					Path:    "/query/update_data",
					Handler: query.UpdateQueryDataHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 查询示例
				Method:  http.MethodGet,
				Path:    "/query/example",
				Handler: query.QueryExampleHandler(serverCtx),
			},
			{
				// 查询详情
				Method:  http.MethodGet,
				Path:    "/query/share/:id",
				Handler: query.QueryShareDetailHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/query/single/test",
				Handler: query.QuerySingleTestHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// mobile code login
				Method:  http.MethodPost,
				Path:    "/user/mobileCodeLogin",
				Handler: user.MobileCodeLoginHandler(serverCtx),
			},
			{
				// wechat mini auth
				Method:  http.MethodPost,
				Path:    "/user/wxMiniAuth",
				Handler: user.WxMiniAuthHandler(serverCtx),
			},
			{
				// wechat h5 auth
				Method:  http.MethodPost,
				Path:    "/user/wxh5Auth",
				Handler: user.WxH5AuthHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.AuthInterceptor},
			[]rest.Route{
				{
					// 绑定手机号
					Method:  http.MethodPost,
					Path:    "/user/bindMobile",
					Handler: user.BindMobileHandler(serverCtx),
				},
			}...,
		),
		rest.WithPrefix("/api/v1"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/user/cancelOut",
				Handler: user.CancelOutHandler(serverCtx),
			},
			{
				// get user info
				Method:  http.MethodGet,
				Path:    "/user/detail",
				Handler: user.DetailHandler(serverCtx),
			},
			{
				// get new token
				Method:  http.MethodPost,
				Path:    "/user/getToken",
				Handler: user.GetTokenHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.JwtAuth.AccessSecret),
		rest.WithPrefix("/api/v1"),
	)
}
