// Code generated by goctl. DO NOT EDIT.
// goctls v1.10.1

package handler

import (
	"net/http"

	ChatRoomMember "wechat-api/internal/handler/ChatRoomMember"
	Message "wechat-api/internal/handler/Message"
	Msg "wechat-api/internal/handler/Msg"
	UsageDetail "wechat-api/internal/handler/UsageDetail"
	UsageTotal "wechat-api/internal/handler/UsageTotal"
	User "wechat-api/internal/handler/User"
	WechatServer "wechat-api/internal/handler/WechatServer"
	WorkPhone "wechat-api/internal/handler/WorkPhone"
	Wx "wechat-api/internal/handler/Wx"
	Wxhook "wechat-api/internal/handler/Wxhook"
	agent "wechat-api/internal/handler/agent"
	agent_base "wechat-api/internal/handler/agent_base"
	aliyun_avatar "wechat-api/internal/handler/aliyun_avatar"
	allocagent "wechat-api/internal/handler/allocagent"
	api_key "wechat-api/internal/handler/api_key"
	avatar "wechat-api/internal/handler/avatar"
	base "wechat-api/internal/handler/base"
	batch_msg "wechat-api/internal/handler/batch_msg"
	category "wechat-api/internal/handler/category"
	chatrecords "wechat-api/internal/handler/chatrecords"
	chatsession "wechat-api/internal/handler/chatsession"
	contact "wechat-api/internal/handler/contact"
	credit_balance "wechat-api/internal/handler/credit_balance"
	credit_usage "wechat-api/internal/handler/credit_usage"
	dashboard "wechat-api/internal/handler/dashboard"
	department "wechat-api/internal/handler/department"
	employee "wechat-api/internal/handler/employee"
	employee_config "wechat-api/internal/handler/employee_config"
	fastgpt "wechat-api/internal/handler/fastgpt"
	label "wechat-api/internal/handler/label"
	label_relationship "wechat-api/internal/handler/label_relationship"
	label_tagging "wechat-api/internal/handler/label_tagging"
	message_records "wechat-api/internal/handler/message_records"
	openapi "wechat-api/internal/handler/openapi"
	pay_recharge "wechat-api/internal/handler/pay_recharge"
	sop_node "wechat-api/internal/handler/sop_node"
	sop_stage "wechat-api/internal/handler/sop_stage"
	sop_task "wechat-api/internal/handler/sop_task"
	token "wechat-api/internal/handler/token"
	tutorial "wechat-api/internal/handler/tutorial"
	whatsapp "wechat-api/internal/handler/whatsapp"
	whatsapp_channel "wechat-api/internal/handler/whatsapp_channel"
	work_experience "wechat-api/internal/handler/work_experience"
	wp_wecom "wechat-api/internal/handler/wp_wecom"
	wxcard "wechat-api/internal/handler/wxcard"
	wxcarduser "wechat-api/internal/handler/wxcarduser"
	wxcardvisit "wechat-api/internal/handler/wxcardvisit"
	xiaoice "wechat-api/internal/handler/xiaoice"
	xunji "wechat-api/internal/handler/xunji"
	"wechat-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:    "/init/database",
				Handler: base.InitDatabaseHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/server/create",
					Handler: WechatServer.CreateServerHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/server/update",
					Handler: WechatServer.UpdateServerHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/server/delete",
					Handler: WechatServer.DeleteServerHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/server/list",
					Handler: WechatServer.GetServerListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/server",
					Handler: WechatServer.GetServerByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/wx/create",
					Handler: Wx.CreateWxHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/check",
					Handler: Wx.CheckWxHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/update",
					Handler: Wx.UpdateWxHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/updateBlockAndAllowList",
					Handler: Wx.UpdateBlockAndAllowListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/delete",
					Handler: Wx.DeleteWxHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/list",
					Handler: Wx.GetWxListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/selectList",
					Handler: Wx.GetSelectWxListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/getWxAllowBlockList",
					Handler: Wx.GetWxAllowBlockListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx",
					Handler: Wx.GetWxByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/batchDelete",
					Handler: agent.BatchDeleteAgentDataHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/upload",
					Handler: agent.UploadAgentDataHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/create",
					Handler: agent.CreateAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/update",
					Handler: agent.UpdateAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/delete",
					Handler: agent.DeleteAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/list",
					Handler: agent.GetAgentListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent",
					Handler: agent.GetAgentByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/collection/list",
					Handler: agent.GetAgentCollectionListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/collection/detail",
					Handler: agent.GetAgentCollectionInfoHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/list",
					Handler: agent.GetAgentDataListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/detail",
					Handler: agent.GetAgentDataDetailHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/create",
					Handler: agent.CreateAgentDataHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/update",
					Handler: agent.UpdateAgentDataHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent/data/delete",
					Handler: agent.DeleteAgentDataHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/create",
					Handler: label_relationship.CreateLabelRelationshipHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/update",
					Handler: label_relationship.UpdateLabelRelationshipHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/update_contact_labels",
					Handler: label_relationship.UpdateLabelRelationshipsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/batch_update_contact_labels",
					Handler: label_relationship.BatchUpdateLabelRelationshipsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/delete",
					Handler: label_relationship.DeleteLabelRelationshipHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/list",
					Handler: label_relationship.GetLabelRelationshipListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship",
					Handler: label_relationship.GetLabelRelationshipByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/setWhatsappContactLabel",
					Handler: label_relationship.SetWhatsappContactLabelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_relationship/setWhatsappContactBatchLabel",
					Handler: label_relationship.SetWhatsappContactBatchLabelHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/wxhook/sendTextMsg",
				Handler: Wxhook.SendTextMsgHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/wxhook/refreshLoginQR",
					Handler: Wxhook.RefreshLoginQRHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wxhook/logout",
					Handler: Wxhook.LogoutHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wxhook/terminateThisWeChat",
					Handler: Wxhook.TerminateThisWeChatHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wxhook/getFriendsAndGroups",
					Handler: Wxhook.GetFriendsAndGroupsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wxhook/sendPicMsg",
					Handler: Wxhook.SendPicMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wxhook/sendPicMsgLocal",
					Handler: Wxhook.SendPicMsgLocalHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/contact/create",
					Handler: contact.CreateContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/update",
					Handler: contact.UpdateContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/delete",
					Handler: contact.DeleteContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/list",
					Handler: contact.GetContactListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact",
					Handler: contact.GetContactByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/addNewFriend",
					Handler: contact.AddNewFriendHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/changeBlockList",
					Handler: contact.ChangeBlockListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/importWhatsappContact",
					Handler: contact.ImportWhatsappContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/getWhatsappContactList",
					Handler: contact.GetWhatsappContactListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/createWhatsappContact",
					Handler: contact.CreateWhatsappContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/updateWhatsappContact",
					Handler: contact.UpdateWhatsappContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/deleteWhatsappContact",
					Handler: contact.DeleteWhatsappContactHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/contact/getWhatsappContact",
					Handler: contact.GetWhatsappContactHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/message/create",
					Handler: Message.CreateMessageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message/update",
					Handler: Message.UpdateMessageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message/delete",
					Handler: Message.DeleteMessageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message/list",
					Handler: Message.GetMessageListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message",
					Handler: Message.GetMessageByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/label/create",
					Handler: label.CreateLabelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label/update",
					Handler: label.UpdateLabelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label/delete",
					Handler: label.DeleteLabelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label/list",
					Handler: label.GetLabelListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label/select_list",
					Handler: label.GetLabelSelectListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label/batch_select_list",
					Handler: label.GetLabelBatchSelectListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label/contacts",
					Handler: label.GetLabelContactsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label",
					Handler: label.GetLabelByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/label_tagging/create",
					Handler: label_tagging.CreateLabelTaggingHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_tagging/update",
					Handler: label_tagging.UpdateLabelTaggingHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_tagging/delete",
					Handler: label_tagging.DeleteLabelTaggingHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_tagging/list",
					Handler: label_tagging.GetLabelTaggingListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/label_tagging",
					Handler: label_tagging.GetLabelTaggingByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/api/sop_task/list",
				Handler: sop_task.GetApiSopTaskListHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/create",
					Handler: sop_task.CreateSopTaskHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/update",
					Handler: sop_task.UpdateSopTaskHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/delete",
					Handler: sop_task.DeleteSopTaskHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/list",
					Handler: sop_task.GetSopTaskListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/record_list",
					Handler: sop_task.GetSopTaskRecordListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task",
					Handler: sop_task.GetSopTaskByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/detail",
					Handler: sop_task.GetSopTaskDetailHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/publish",
					Handler: sop_task.PublishSopTaskHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/start",
					Handler: sop_task.SopTaskStartHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/stop",
					Handler: sop_task.SopTaskStopHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/copy",
					Handler: sop_task.SopTaskCopyHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/message_var",
					Handler: sop_task.GetSopMessageVarHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/outline",
					Handler: sop_task.GetSopTaskOutlineHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/test_node",
					Handler: sop_task.TestNodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/generate_ai_answer",
					Handler: sop_task.GenerateAiAnswerHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/api/sop_stage/list",
				Handler: sop_stage.GetApiSopStageListHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/create",
					Handler: sop_stage.CreateSopStageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/update",
					Handler: sop_stage.UpdateSopStageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/delete",
					Handler: sop_stage.DeleteSopStageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/list",
					Handler: sop_stage.GetSopStageListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage",
					Handler: sop_stage.GetSopStageByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/detail",
					Handler: sop_stage.GetSopStageDetailHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/move",
					Handler: sop_stage.MoveSopStageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_stage/copy",
					Handler: sop_stage.SopStageCopyHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/api/sop_node/list",
				Handler: sop_node.GetApiSopNodeListHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/sop_node/create",
					Handler: sop_node.CreateSopNodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_node/update",
					Handler: sop_node.UpdateSopNodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_node/delete",
					Handler: sop_node.DeleteSopNodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_node/list",
					Handler: sop_node.GetSopNodeListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_node/detail",
					Handler: sop_node.GetSopNodeDetailHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/message_records/create",
					Handler: message_records.CreateMessageRecordsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message_records/update",
					Handler: message_records.UpdateMessageRecordsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message_records/delete",
					Handler: message_records.DeleteMessageRecordsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message_records/list",
					Handler: message_records.GetMessageRecordsListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/message_records",
					Handler: message_records.GetMessageRecordsByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/chatroom_member/list",
					Handler: ChatRoomMember.GetChatroomMemberListHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/api/user/login",
				Handler: User.DoApiUserLoginHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/user/login",
				Handler: User.DoGptsUserLoginHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/user/info",
				Handler: User.GetGptsUserInfoHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/user/update",
				Handler: User.UpdateGptsUserInfoHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/user/balance",
				Handler: User.GetGptsUserBalanceHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/user/password",
				Handler: User.UpdateGptsUserPwdHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/user/vip",
					Handler: User.GetApiUserVipHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodGet,
					Path:    "/user/info",
					Handler: User.GetUserInfoHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/contact/getContactByWxid",
				Handler: openapi.OpenapiGetContactByWxidHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/contact/getContactList",
				Handler: openapi.OpenapiGetContactListHandler(serverCtx),
			},
		},
		rest.WithPrefix("/openapi"),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/create",
					Handler: batch_msg.CreateBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/update",
					Handler: batch_msg.UpdateBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/delete",
					Handler: batch_msg.DeleteBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/list",
					Handler: batch_msg.GetBatchMsgListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg",
					Handler: batch_msg.GetBatchMsgByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/stop",
					Handler: batch_msg.StopBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/getWhatcappBatchMsgList",
					Handler: batch_msg.GetWhatcappBatchMsgListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/createWhatcappBatchMsg",
					Handler: batch_msg.CreateWhatcappBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/updateWhatcappBatchMsg",
					Handler: batch_msg.UpdateWhatcappBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/getWhatcappBatchMsg",
					Handler: batch_msg.GetWhatcappBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/removeWhatcappBatchMsg",
					Handler: batch_msg.RemoveWhatcappBatchMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/getWhatcappBatchMsgHistory",
					Handler: batch_msg.GetWhatcappBatchMsgHistoryHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/batch_msg/sendBatchMsgText",
					Handler: batch_msg.SendBatchMsgTextHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/msg/create",
					Handler: Msg.CreateMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/msg/update",
					Handler: Msg.UpdateMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/msg/delete",
					Handler: Msg.DeleteMsgHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/msg/list",
					Handler: Msg.GetMsgListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/msg",
					Handler: Msg.GetMsgByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/api/employee/list",
				Handler: employee.GetApiEmployeeListHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/api/employee/detail",
				Handler: employee.GetApiEmployeeDetailHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/employee/search",
				Handler: employee.GetEmployeeSearchHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/employee/search/test",
				Handler: employee.GetEmployeeSearchTestHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/employee/detail",
				Handler: employee.GetEmployeeDetailHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/employee/create",
					Handler: employee.CreateEmployeeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/employee/update",
					Handler: employee.UpdateEmployeeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/employee/delete",
					Handler: employee.DeleteEmployeeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/employee/list",
					Handler: employee.GetEmployeeListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/employee",
					Handler: employee.GetEmployeeByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/work_experience/create",
					Handler: work_experience.CreateWorkExperienceHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/work_experience/update",
					Handler: work_experience.UpdateWorkExperienceHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/work_experience/delete",
					Handler: work_experience.DeleteWorkExperienceHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/work_experience/list",
					Handler: work_experience.GetWorkExperienceListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/work_experience",
					Handler: work_experience.GetWorkExperienceByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/tutorial/create",
					Handler: tutorial.CreateTutorialHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/tutorial/update",
					Handler: tutorial.UpdateTutorialHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/tutorial/delete",
					Handler: tutorial.DeleteTutorialHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/tutorial/list",
					Handler: tutorial.GetTutorialListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/tutorial",
					Handler: tutorial.GetTutorialByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodGet,
					Path:    "/employee_config/list",
					Handler: employee_config.GetEmployeeListConfigHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/token/check",
				Handler: token.CheckTokenHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/token/third/create",
					Handler: token.CreateTokenHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/token/third/update",
					Handler: token.UpdateTokenHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/token/third/delete",
					Handler: token.DeleteTokenHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/token/third/list",
					Handler: token.GetTokenListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/token/api/list",
					Handler: token.GetApiTokenListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/token/third/detail",
					Handler: token.GetTokenByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/token/third/clear",
					Handler: token.ClearTokenByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/category/list",
				Handler: category.GetCategoryListHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/category",
				Handler: category.GetCategoryByIdHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/api/category/list",
				Handler: category.GetApiCategoryListHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/category/create",
					Handler: category.CreateCategoryHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/category/update",
					Handler: category.UpdateCategoryHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/category/delete",
					Handler: category.DeleteCategoryHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/agent_base/create",
					Handler: agent_base.CreateAgentBaseHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent_base/update",
					Handler: agent_base.UpdateAgentBaseHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent_base/delete",
					Handler: agent_base.DeleteAgentBaseHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent_base/list",
					Handler: agent_base.GetAgentBaseListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/agent_base",
					Handler: agent_base.GetAgentBaseByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/gpts/chat/submit",
				Handler: chatrecords.GptsSubmitApiChatHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/chat/message",
				Handler: chatrecords.GptsGetApiMessageHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/chat/session",
				Handler: chatrecords.GptsGetApiSessionHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/chat/session/delete",
				Handler: chatrecords.GptsDeleteApiSessionHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/gpts/chat/session/rename",
				Handler: chatrecords.GptsRenameApiSessionHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/chat/create",
					Handler: chatrecords.SubmitApiChatHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/chat/answer",
					Handler: chatrecords.AnswerApiChatHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/chat/list",
					Handler: chatrecords.GetApiChatListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/chat/recommmend",
					Handler: chatrecords.GetApiRecommendChatHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/chat_records/create",
					Handler: chatrecords.CreateChatRecordsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_records/update",
					Handler: chatrecords.UpdateChatRecordsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_records/delete",
					Handler: chatrecords.DeleteChatRecordsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_records/list",
					Handler: chatrecords.GetChatRecordsListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_records",
					Handler: chatrecords.GetChatRecordsByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/session/list",
					Handler: chatsession.GetApiSessionListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/session/update",
					Handler: chatsession.UpdateApiSessionHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/session/delete",
					Handler: chatsession.DeleteApiSessionHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/chat_session/create",
					Handler: chatsession.CreateChatSessionHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_session/update",
					Handler: chatsession.UpdateChatSessionHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_session/delete",
					Handler: chatsession.DeleteChatSessionHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_session/list",
					Handler: chatsession.GetChatSessionListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/chat_session",
					Handler: chatsession.GetChatSessionByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/card/detail",
					Handler: wxcard.GetApiWxCardDetailHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/api/card/qrcode",
				Handler: wxcard.GetApiWxCardQrcodeHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/wx_card/create",
					Handler: wxcard.CreateWxCardHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card/update",
					Handler: wxcard.UpdateWxCardHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card/delete",
					Handler: wxcard.DeleteWxCardHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card/list",
					Handler: wxcard.GetWxCardListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card",
					Handler: wxcard.GetWxCardByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/user/update",
					Handler: wxcarduser.UpdateApiWxCardUserHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_user/create",
					Handler: wxcarduser.CreateWxCardUserHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_user/update",
					Handler: wxcarduser.UpdateWxCardUserHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_user/delete",
					Handler: wxcarduser.DeleteWxCardUserHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_user/list",
					Handler: wxcarduser.GetWxCardUserListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_user",
					Handler: wxcarduser.GetWxCardUserByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/card/visit",
					Handler: wxcardvisit.SubmitApiWxCardVisitHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/card/visit/history",
					Handler: wxcardvisit.GetApiWxCardVisitListHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_visit/create",
					Handler: wxcardvisit.CreateWxCardVisitHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_visit/update",
					Handler: wxcardvisit.UpdateWxCardVisitHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_visit/delete",
					Handler: wxcardvisit.DeleteWxCardVisitHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_visit/list",
					Handler: wxcardvisit.GetWxCardVisitListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx_card_visit",
					Handler: wxcardvisit.GetWxCardVisitByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Miniprogram},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api/avatar/config",
					Handler: avatar.GetApiAvatarConfigHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/avatar/sendText",
					Handler: avatar.SendApiAvatarTextHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/avatar/stop",
					Handler: avatar.StopApiAvatarHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/avatar/sts",
					Handler: avatar.GetAcsResponseHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api/avatar/signature",
					Handler: avatar.GetSignatureResponseHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/aliyun_avatar/create",
					Handler: aliyun_avatar.CreateAliyunAvatarHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/aliyun_avatar/update",
					Handler: aliyun_avatar.UpdateAliyunAvatarHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/aliyun_avatar/delete",
					Handler: aliyun_avatar.DeleteAliyunAvatarHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/aliyun_avatar/list",
					Handler: aliyun_avatar.GetAliyunAvatarListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/aliyun_avatar",
					Handler: aliyun_avatar.GetAliyunAvatarByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/workphone/wxaccount/refresh",
					Handler: WorkPhone.WxRefreshHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/workphone/Qwaccount/refresh",
					Handler: WorkPhone.QwRefreshHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/usage_detail/list",
					Handler: UsageDetail.GetUsageDetailListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/usage_detail",
					Handler: UsageDetail.GetUsageDetailHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/usage_total/list",
					Handler: UsageTotal.GetUsageTotalListHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent/create",
					Handler: allocagent.CreateAllocAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent/update",
					Handler: allocagent.UpdateAllocAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent/delete",
					Handler: allocagent.DeleteAllocAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent/list",
					Handler: allocagent.GetAllocAgentListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent",
					Handler: allocagent.GetAllocAgentByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent/query",
					Handler: allocagent.QueryAllocAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/alloc_agent/alloc",
					Handler: allocagent.DoAllocAgentHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/api/xiaoice/signature",
				Handler: xiaoice.SignatureGenHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/api/xiaoice/message",
				Handler: xiaoice.GptbotsMessageHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/api/xiaoice/chat",
				Handler: xiaoice.GptbotsChatHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/dashboard/charts",
					Handler: dashboard.GetChartsHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/dashboard/wx",
					Handler: dashboard.GetWxsHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/credit_balance/create",
					Handler: credit_balance.CreateCreditBalanceHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_balance/update",
					Handler: credit_balance.UpdateCreditBalanceHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_balance/delete",
					Handler: credit_balance.DeleteCreditBalanceHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_balance/list",
					Handler: credit_balance.GetCreditBalanceListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_balance",
					Handler: credit_balance.GetCreditBalanceByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_balance/operate",
					Handler: credit_balance.OperateCreditBalanceHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/credit_usage/create",
					Handler: credit_usage.CreateCreditUsageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_usage/update",
					Handler: credit_usage.UpdateCreditUsageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_usage/delete",
					Handler: credit_usage.DeleteCreditUsageHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_usage/list",
					Handler: credit_usage.GetCreditUsageListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/credit_usage",
					Handler: credit_usage.GetCreditUsageByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/pay_recharge/create",
					Handler: pay_recharge.CreatePayRechargeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay_recharge/update",
					Handler: pay_recharge.UpdatePayRechargeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay_recharge/delete",
					Handler: pay_recharge.DeletePayRechargeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay_recharge/list",
					Handler: pay_recharge.GetPayRechargeListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/pay_recharge",
					Handler: pay_recharge.GetPayRechargeByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/create",
					Handler: whatsapp.CreateWhatsappHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/update",
					Handler: whatsapp.UpdateWhatsappHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/delete",
					Handler: whatsapp.DeleteWhatsappHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/list",
					Handler: whatsapp.GetWhatsappListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp",
					Handler: whatsapp.GetWhatsappByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/sendCode",
					Handler: whatsapp.SendWhatsappCodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/submitCode",
					Handler: whatsapp.SubmitWhatsappCodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/getAutomation",
					Handler: whatsapp.GetAutomationHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/setAutomation",
					Handler: whatsapp.SetAutomationHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/getQrcode",
					Handler: whatsapp.GetQrcodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/createQrcode",
					Handler: whatsapp.CreateQrcodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/removeQrcode",
					Handler: whatsapp.RemoveQrcodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/updateQrcode",
					Handler: whatsapp.UpdateQrcodeHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/getBusinessInfo",
					Handler: whatsapp.GetBusinessInfoHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/setBusinessInfo",
					Handler: whatsapp.SetBusinessInfoHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/registerPhoneNumber",
					Handler: whatsapp.RegisterPhoneNumberHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/deregisterPhoneNumber",
					Handler: whatsapp.DeregisterPhoneNumberHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/updateAgent",
					Handler: whatsapp.UpdateAgentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/getAllowBlockList",
					Handler: whatsapp.GetAllowBlockListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/updateAllowAndBlockList",
					Handler: whatsapp.UpdateAllowAndBlockListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/updateAgentApi",
					Handler: whatsapp.UpdateAgentApiHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/createTemplate",
					Handler: whatsapp.CreateWhatsappTemplateHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/listTemplate",
					Handler: whatsapp.ListWhatsappTemplateHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/removeTemplate",
					Handler: whatsapp.RemoveWhatsappTemplateHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/editTemplate",
					Handler: whatsapp.EditWhatsappTemplateHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp/getTemplate",
					Handler: whatsapp.GetWhatsappTemplateHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp_channel/create",
					Handler: whatsapp_channel.CreateWhatsappChannelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp_channel/update",
					Handler: whatsapp_channel.UpdateWhatsappChannelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp_channel/delete",
					Handler: whatsapp_channel.DeleteWhatsappChannelHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp_channel/list",
					Handler: whatsapp_channel.GetWhatsappChannelListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp_channel/search",
					Handler: whatsapp_channel.GetWhatsappChannelSearchHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/whatsapp_channel",
					Handler: whatsapp_channel.GetWhatsappChannelByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodPost,
				Path:    "/wp/wecom/send_msg",
				Handler: wp_wecom.SendMsgHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/wp/wecom/send_msg_by_chan",
				Handler: wp_wecom.SendMsgByChanHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/xunji/create",
					Handler: xunji.CreateXunjiHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/xunji/update",
					Handler: xunji.UpdateXunjiHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/xunji/delete",
					Handler: xunji.DeleteXunjiHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/xunji/list",
					Handler: xunji.GetXunjiListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/xunji",
					Handler: xunji.GetXunjiByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				Method:  http.MethodGet,
				Path:    "/api/fastgpt/set_token",
				Handler: fastgpt.SetTokenHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/api/fastgpt/create",
				Handler: fastgpt.CreateFastgptHandler(serverCtx),
			},
		},
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/department/create",
					Handler: department.CreateDepartmentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/department/update",
					Handler: department.UpdateDepartmentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/department/delete",
					Handler: department.DeleteDepartmentHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/department/list",
					Handler: department.GetDepartmentListHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/department",
					Handler: department.GetDepartmentByIdHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	server.AddRoutes(
		rest.WithMiddlewares(
			[]rest.Middleware{serverCtx.Authority},
			[]rest.Route{
				{
					Method:  http.MethodPost,
					Path:    "/api_key/create",
					Handler: api_key.CreateApiKeyHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api_key/update",
					Handler: api_key.UpdateApiKeyHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api_key/delete",
					Handler: api_key.DeleteApiKeyHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/api_key/list",
					Handler: api_key.GetApiKeyListHandler(serverCtx),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)
}
