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

import (
	"net/http"

	ChatRoomMember "wechat-api/internal/handler/ChatRoomMember"
	Message "wechat-api/internal/handler/Message"
	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"
	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"
	"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/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/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.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),
				},
			}...,
		),
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
	)
}