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

import (
	"net/http"

	ChatRoomMember "wechat-api/internal/handler/ChatRoomMember"
	Message "wechat-api/internal/handler/Message"
	Msg "wechat-api/internal/handler/Msg"
	User "wechat-api/internal/handler/User"
	WechatServer "wechat-api/internal/handler/WechatServer"
	Wx "wechat-api/internal/handler/Wx"
	Wxhook "wechat-api/internal/handler/Wxhook"
	agent "wechat-api/internal/handler/agent"
	base "wechat-api/internal/handler/base"
	batch_msg "wechat-api/internal/handler/batch_msg"
	contact "wechat-api/internal/handler/contact"
	employee "wechat-api/internal/handler/employee"
	employee_config "wechat-api/internal/handler/employee_config"
	label "wechat-api/internal/handler/label"
	label_relationship "wechat-api/internal/handler/label_relationship"
	message_records "wechat-api/internal/handler/message_records"
	openapi "wechat-api/internal/handler/openapi"
	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"
	work_experience "wechat-api/internal/handler/work_experience"
	"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/delete",
					Handler: Wx.DeleteWxHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/wx/list",
					Handler: Wx.GetWxListHandler(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/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),
				},
			}...,
		),
		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/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),
				},
			}...,
		),
		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),
				},
			}...,
		),
		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/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:    "/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),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	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),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)

	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.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),
				},
			}...,
		),
		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.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/create",
				Handler: token.CreateTokenHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/token/update",
				Handler: token.UpdateTokenHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/token/delete",
				Handler: token.DeleteTokenHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/token/list",
				Handler: token.GetTokenListHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/token",
				Handler: token.GetTokenByIdHandler(serverCtx),
			},
			{
				Method:  http.MethodPost,
				Path:    "/token/check",
				Handler: token.CheckTokenHandler(serverCtx),
			},
		},
	)
}