// Code generated by goctl. DO NOT EDIT.
// goctl 1.10.1

package handler

import (
	"net/http"

	ai "sundynix-micro-go/app/plant/api/internal/handler/ai"
	banner "sundynix-micro-go/app/plant/api/internal/handler/banner"
	callback "sundynix-micro-go/app/plant/api/internal/handler/callback"
	complete "sundynix-micro-go/app/plant/api/internal/handler/complete"
	config "sundynix-micro-go/app/plant/api/internal/handler/config"
	exchange "sundynix-micro-go/app/plant/api/internal/handler/exchange"
	legacy "sundynix-micro-go/app/plant/api/internal/handler/legacy"
	myPlant "sundynix-micro-go/app/plant/api/internal/handler/myPlant"
	ocr "sundynix-micro-go/app/plant/api/internal/handler/ocr"
	post "sundynix-micro-go/app/plant/api/internal/handler/post"
	topic "sundynix-micro-go/app/plant/api/internal/handler/topic"
	userProfile "sundynix-micro-go/app/plant/api/internal/handler/userProfile"
	wiki "sundynix-micro-go/app/plant/api/internal/handler/wiki"
	"sundynix-micro-go/app/plant/api/internal/svc"

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

func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
	server.AddRoutes(
		[]rest.Route{
			{
				// AI问答
				Method:  http.MethodPost,
				Path:    "/ai/chat",
				Handler: ai.AiChatHandler(serverCtx),
			},
			{
				// 聊天历史
				Method:  http.MethodGet,
				Path:    "/ai/history",
				Handler: ai.GetAiChatHistoryHandler(serverCtx),
			},
			{
				// 清空聊天历史
				Method:  http.MethodPost,
				Path:    "/ai/history/clear",
				Handler: ai.ClearAiChatHistoryHandler(serverCtx),
			},
			{
				// 删除聊天历史
				Method:  http.MethodPost,
				Path:    "/ai/history/delete",
				Handler: ai.DeleteAiChatHistoryHandler(serverCtx),
			},
			{
				// 今日AI额度
				Method:  http.MethodGet,
				Path:    "/ai/quota",
				Handler: ai.GetAiChatQuotaHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 微信支付回调
				Method:  http.MethodPost,
				Path:    "/callback/wechatpay",
				Handler: callback.WechatPayCallbackHandler(serverCtx),
			},
			{
				// 微信媒体安全回调
				Method:  http.MethodPost,
				Path:    "/callback/mediaCheck",
				Handler: legacy.MediaCheckCallbackHandler(serverCtx),
			},
		},
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// AI聊天历史
				Method:  http.MethodPost,
				Path:    "/ai/history",
				Handler: complete.GetAiChatHistoryHandler(serverCtx),
			},
			{
				// 徽章配置树
				Method:  http.MethodGet,
				Path:    "/config/badge/tree",
				Handler: complete.GetBadgeConfigTreeHandler(serverCtx),
			},
			{
				// 等级配置详情
				Method:  http.MethodGet,
				Path:    "/config/level/:id",
				Handler: complete.GetLevelConfigDetailHandler(serverCtx),
			},
			{
				// 兑换商品详情
				Method:  http.MethodGet,
				Path:    "/exchange/item/:id",
				Handler: complete.GetExchangeItemDetailHandler(serverCtx),
			},
			{
				// 完成养护任务
				Method:  http.MethodPost,
				Path:    "/my/completeTask",
				Handler: complete.CompleteTaskHandler(serverCtx),
			},
			{
				// 百科分类详情
				Method:  http.MethodGet,
				Path:    "/wiki/class/:id",
				Handler: complete.GetWikiClassDetailHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建徽章配置
				Method:  http.MethodPost,
				Path:    "/config/badge/create",
				Handler: config.CreateBadgeConfigHandler(serverCtx),
			},
			{Method: http.MethodPost, Path: "/config/badge/add", Handler: config.CreateBadgeConfigHandler(serverCtx)},
			{
				// 删除徽章配置
				Method:  http.MethodPost,
				Path:    "/config/badge/delete",
				Handler: config.DeleteBadgeConfigHandler(serverCtx),
			},
			{Method: http.MethodGet, Path: "/config/badge/delete", Handler: legacy.BadgeConfigDeleteHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/config/badge/find", Handler: legacy.BadgeConfigDetailHandler(serverCtx)},
			{
				// 徽章配置列表
				Method:  http.MethodPost,
				Path:    "/config/badge/list",
				Handler: config.GetBadgeConfigListHandler(serverCtx),
			},
			{
				// 更新徽章配置
				Method:  http.MethodPost,
				Path:    "/config/badge/update",
				Handler: config.UpdateBadgeConfigHandler(serverCtx),
			},
			{
				// 创建等级配置
				Method:  http.MethodPost,
				Path:    "/config/level/create",
				Handler: config.CreateLevelConfigHandler(serverCtx),
			},
			{Method: http.MethodPost, Path: "/config/level/add", Handler: config.CreateLevelConfigHandler(serverCtx)},
			{
				// 删除等级配置
				Method:  http.MethodPost,
				Path:    "/config/level/delete",
				Handler: config.DeleteLevelConfigHandler(serverCtx),
			},
			{
				// 等级配置列表
				Method:  http.MethodPost,
				Path:    "/config/level/list",
				Handler: config.GetLevelConfigListHandler(serverCtx),
			},
			{Method: http.MethodGet, Path: "/config/level/list", Handler: config.GetLevelConfigListHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/config/level/detail", Handler: legacy.LevelConfigDetailHandler(serverCtx)},
			{
				// 更新等级配置
				Method:  http.MethodPost,
				Path:    "/config/level/update",
				Handler: config.UpdateLevelConfigHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建兑换商品
				Method:  http.MethodPost,
				Path:    "/exchange/item/create",
				Handler: exchange.CreateExchangeItemHandler(serverCtx),
			},
			{
				// 删除兑换商品
				Method:  http.MethodPost,
				Path:    "/exchange/item/delete",
				Handler: exchange.DeleteExchangeItemHandler(serverCtx),
			},
			{
				// 更新兑换商品
				Method:  http.MethodPost,
				Path:    "/exchange/item/update",
				Handler: exchange.UpdateExchangeItemHandler(serverCtx),
			},
			{
				// 兑换商品列表
				Method:  http.MethodPost,
				Path:    "/exchange/list",
				Handler: exchange.GetExchangeItemListHandler(serverCtx),
			},
			{
				// 我的兑换记录
				Method:  http.MethodPost,
				Path:    "/exchange/myOrders",
				Handler: exchange.GetMyExchangeOrdersHandler(serverCtx),
			},
			{
				// 发起兑换
				Method:  http.MethodPost,
				Path:    "/exchange/order",
				Handler: exchange.CreateExchangeOrderHandler(serverCtx),
			},
			{
				// 管理端订单列表
				Method:  http.MethodPost,
				Path:    "/exchange/order/list",
				Handler: exchange.GetExchangeOrderListHandler(serverCtx),
			},
			{
				// 更新订单状态
				Method:  http.MethodPost,
				Path:    "/exchange/order/update",
				Handler: exchange.UpdateExchangeOrderHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 植物详情
				Method:  http.MethodGet,
				Path:    "/my/:id",
				Handler: myPlant.GetPlantDetailHandler(serverCtx),
			},
			{
				// 添加养护计划
				Method:  http.MethodPost,
				Path:    "/my/carePlan",
				Handler: myPlant.AddCarePlanHandler(serverCtx),
			},
			{
				// 添加养护记录
				Method:  http.MethodPost,
				Path:    "/my/careRecord",
				Handler: myPlant.AddCareRecordHandler(serverCtx),
			},
			{
				// 创建植物
				Method:  http.MethodPost,
				Path:    "/my/create",
				Handler: myPlant.CreatePlantHandler(serverCtx),
			},
			{
				// 删除植物
				Method:  http.MethodPost,
				Path:    "/my/delete",
				Handler: myPlant.DeletePlantHandler(serverCtx),
			},
			{
				// 删除养护计划
				Method:  http.MethodPost,
				Path:    "/my/deletePlan",
				Handler: myPlant.DeleteCarePlanHandler(serverCtx),
			},
			{
				// 添加成长记录
				Method:  http.MethodPost,
				Path:    "/my/growthRecord",
				Handler: myPlant.AddGrowthRecordHandler(serverCtx),
			},
			{
				// 我的植物列表
				Method:  http.MethodPost,
				Path:    "/my/list",
				Handler: myPlant.GetMyPlantListHandler(serverCtx),
			},
			{
				// 今日养护任务
				Method:  http.MethodGet,
				Path:    "/my/todayTask",
				Handler: myPlant.GetTodayTaskListHandler(serverCtx),
			},
			{
				// 更新植物
				Method:  http.MethodPost,
				Path:    "/my/update",
				Handler: myPlant.UpdatePlantHandler(serverCtx),
			},
			{
				// 快捷养护
				Method:  http.MethodPost,
				Path:    "/my/quickCare",
				Handler: myPlant.QuickCareHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// OCR植物识别
				Method:  http.MethodPost,
				Path:    "/ocr/classify",
				Handler: ocr.OcrClassifyHandler(serverCtx),
			},
			{
				// 删除识别记录
				Method:  http.MethodPost,
				Path:    "/ocr/deleteLog",
				Handler: ocr.DeleteClassifyLogHandler(serverCtx),
			},
			{
				// 我的识别记录
				Method:  http.MethodGet,
				Path:    "/ocr/myLog",
				Handler: ocr.GetMyClassifyLogHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 帖子详情
				Method:  http.MethodGet,
				Path:    "/post/:id",
				Handler: post.GetPostDetailHandler(serverCtx),
			},
			{
				// 评论帖子
				Method:  http.MethodPost,
				Path:    "/post/comment",
				Handler: post.CommentPostHandler(serverCtx),
			},
			{
				// 发布帖子
				Method:  http.MethodPost,
				Path:    "/post/create",
				Handler: post.CreatePostHandler(serverCtx),
			},
			{
				// 删除帖子
				Method:  http.MethodPost,
				Path:    "/post/delete",
				Handler: post.DeletePostHandler(serverCtx),
			},
			{
				// 点赞帖子
				Method:  http.MethodPost,
				Path:    "/post/like",
				Handler: post.LikePostHandler(serverCtx),
			},
			{
				// 帖子列表
				Method:  http.MethodPost,
				Path:    "/post/list",
				Handler: post.GetPostListHandler(serverCtx),
			},
			{
				// 我的帖子
				Method:  http.MethodPost,
				Path:    "/post/my",
				Handler: post.GetMyPostListHandler(serverCtx),
			},
			{
				// 收藏帖子
				Method:  http.MethodPost,
				Path:    "/post/star",
				Handler: post.StarPostHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 话题详情
				Method:  http.MethodGet,
				Path:    "/topic/:id",
				Handler: topic.GetTopicDetailHandler(serverCtx),
			},
			{
				// 创建话题
				Method:  http.MethodPost,
				Path:    "/topic/create",
				Handler: topic.CreateTopicHandler(serverCtx),
			},
			{
				// 删除话题
				Method:  http.MethodPost,
				Path:    "/topic/delete",
				Handler: topic.DeleteTopicHandler(serverCtx),
			},
			{
				// 话题列表
				Method:  http.MethodGet,
				Path:    "/topic/list",
				Handler: topic.GetTopicListHandler(serverCtx),
			},
			{
				// 更新话题
				Method:  http.MethodPost,
				Path:    "/topic/update",
				Handler: topic.UpdateTopicHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 我的徽章
				Method:  http.MethodGet,
				Path:    "/profile/badge",
				Handler: userProfile.GetMyBadgesHandler(serverCtx),
			},
			{
				// 获取用户资料
				Method:  http.MethodGet,
				Path:    "/profile/info",
				Handler: userProfile.GetUserProfileHandler(serverCtx),
			},
			{Method: http.MethodGet, Path: "/profile/detail", Handler: userProfile.GetUserProfileHandler(serverCtx)},
			{
				// 我的收藏
				Method:  http.MethodPost,
				Path:    "/profile/star",
				Handler: userProfile.GetMyStarsHandler(serverCtx),
			},
			{
				// 更新用户资料
				Method:  http.MethodPost,
				Path:    "/profile/update",
				Handler: userProfile.UpdateUserProfileHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 百科详情
				Method:  http.MethodGet,
				Path:    "/wiki/:id",
				Handler: wiki.GetWikiDetailHandler(serverCtx),
			},
			{
				// 创建百科分类
				Method:  http.MethodPost,
				Path:    "/wiki/class/create",
				Handler: wiki.CreateWikiClassHandler(serverCtx),
			},
			{
				// 删除百科分类
				Method:  http.MethodPost,
				Path:    "/wiki/class/delete",
				Handler: wiki.DeleteWikiClassHandler(serverCtx),
			},
			{
				// 百科分类列表
				Method:  http.MethodGet,
				Path:    "/wiki/class/list",
				Handler: wiki.GetWikiClassListHandler(serverCtx),
			},
			{
				// 更新百科分类
				Method:  http.MethodPost,
				Path:    "/wiki/class/update",
				Handler: wiki.UpdateWikiClassHandler(serverCtx),
			},
			{
				// 创建百科
				Method:  http.MethodPost,
				Path:    "/wiki/create",
				Handler: wiki.CreateWikiHandler(serverCtx),
			},
			{
				// 删除百科
				Method:  http.MethodPost,
				Path:    "/wiki/delete",
				Handler: wiki.DeleteWikiHandler(serverCtx),
			},
			{
				// 百科列表
				Method:  http.MethodPost,
				Path:    "/wiki/list",
				Handler: wiki.GetWikiListHandler(serverCtx),
			},
			{
				// 收藏/取消收藏百科
				Method:  http.MethodPost,
				Path:    "/wiki/star",
				Handler: wiki.ToggleWikiStarHandler(serverCtx),
			},
			{
				// 更新百科
				Method:  http.MethodPost,
				Path:    "/wiki/update",
				Handler: wiki.UpdateWikiHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{
				// 创建Banner
				Method:  http.MethodPost,
				Path:    "/banner/create",
				Handler: banner.CreateBannerHandler(serverCtx),
			},
			{
				// 删除Banner
				Method:  http.MethodPost,
				Path:    "/banner/delete",
				Handler: banner.DeleteBannerHandler(serverCtx),
			},
			{
				// 更新Banner
				Method:  http.MethodPost,
				Path:    "/banner/update",
				Handler: banner.UpdateBannerHandler(serverCtx),
			},
			{
				// Banner列表（管理端）
				Method:  http.MethodPost,
				Path:    "/banner/list",
				Handler: banner.GetBannerListHandler(serverCtx),
			},
			{
				// 启用的Banner列表（客户端）
				Method:  http.MethodGet,
				Path:    "/banner/activeList",
				Handler: banner.GetActiveBannerListHandler(serverCtx),
			},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)

	server.AddRoutes(
		[]rest.Route{
			{Method: http.MethodPost, Path: "/add", Handler: myPlant.CreatePlantHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/page", Handler: myPlant.GetMyPlantListHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/detail", Handler: legacy.PlantDetailHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/update", Handler: myPlant.UpdatePlantHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/deletePlant", Handler: myPlant.DeletePlantHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/deletePlan", Handler: myPlant.DeleteCarePlanHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/plan/add", Handler: myPlant.AddCarePlanHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/plan/delete", Handler: legacy.DeletePlanHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/todayTask", Handler: myPlant.GetTodayTaskListHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/completeTask", Handler: complete.CompleteTaskHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/growth/add", Handler: myPlant.AddGrowthRecordHandler(serverCtx)},

			{Method: http.MethodPost, Path: "/wiki/add", Handler: wiki.CreateWikiHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki/page", Handler: legacy.WikiPageHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/wiki/detail", Handler: legacy.WikiDetailHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki/uploadImg", Handler: legacy.WikiUploadImgHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki/sync-qdrant", Handler: legacy.WikiSyncQdrantHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki/delete-qdrant", Handler: legacy.WikiDeleteQdrantHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/wiki/star", Handler: legacy.WikiStarHandler(serverCtx)},

			{Method: http.MethodPost, Path: "/wiki-class/add", Handler: wiki.CreateWikiClassHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki-class/update", Handler: wiki.UpdateWikiClassHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki-class/page", Handler: wiki.GetWikiClassListHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/wiki-class/delete", Handler: wiki.DeleteWikiClassHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/wiki-class/list", Handler: wiki.GetWikiClassListHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/wiki-class/detail", Handler: complete.GetWikiClassDetailHandler(serverCtx)},

			{Method: http.MethodPost, Path: "/post/publish", Handler: post.CreatePostHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/post/page", Handler: legacy.PostPageHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/post/myPost", Handler: legacy.MyPostPageHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/post/like", Handler: legacy.LikePostHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/post/star", Handler: legacy.StarPostHandler(serverCtx)},

			{Method: http.MethodPost, Path: "/topic/add", Handler: topic.CreateTopicHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/topic/page", Handler: topic.GetTopicListHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/topic/detail", Handler: legacy.TopicDetailHandler(serverCtx)},

			{Method: http.MethodPost, Path: "/classify/plant", Handler: ocr.OcrClassifyHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/classify/myClassifyLog", Handler: ocr.GetMyClassifyLogHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/classify/deleteClassifyLog", Handler: ocr.DeleteClassifyLogHandler(serverCtx)},

			{Method: http.MethodGet, Path: "/exchange/list", Handler: exchange.GetExchangeItemListHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/exchange/detail", Handler: legacy.ExchangeItemDetailHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/exchange/redeem", Handler: exchange.CreateExchangeOrderHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/exchange/orders", Handler: exchange.GetMyExchangeOrdersHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/exchange/item/list", Handler: exchange.GetExchangeItemListHandler(serverCtx)},

			{Method: http.MethodGet, Path: "/chat/history", Handler: ai.GetAiChatHistoryHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/chat/history/delete", Handler: ai.DeleteAiChatHistoryHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/chat/history/clear", Handler: ai.ClearAiChatHistoryHandler(serverCtx)},
			{Method: http.MethodGet, Path: "/chat/quota", Handler: ai.GetAiChatQuotaHandler(serverCtx)},
			{Method: http.MethodPost, Path: "/chat/sync", Handler: legacy.AiChatSyncHandler(serverCtx)},

			// 快捷养护（旧版兼容）
			{Method: http.MethodPost, Path: "/quickCare", Handler: myPlant.QuickCareHandler(serverCtx)},
		},
		rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
		rest.WithPrefix("/api/plant"),
	)
}
