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

import (
	"net/http"

	Message "wechat-api/internal/handler/Message"
	WechatServer "wechat-api/internal/handler/WechatServer"
	Wx "wechat-api/internal/handler/Wx"
	Wxhook "wechat-api/internal/handler/Wxhook"
	base "wechat-api/internal/handler/base"
	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"
	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:    "/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/sendTextMsg",
					Handler: Wxhook.SendTextMsgHandler(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),
				},
			}...,
		),
		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",
					Handler: sop_task.GetSopTaskByIdHandler(serverCtx),
				},
				{
					Method:  http.MethodPost,
					Path:    "/sop_task/detail",
					Handler: sop_task.GetSopTaskDetailHandler(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",
					Handler: sop_node.GetSopNodeByIdHandler(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),
	)
}