package cmd

import (
	"context"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/net/ghttp"
	"github.com/gogf/gf/v2/os/gcmd"
	"link_homework/internal/controller/article"
	"link_homework/internal/controller/auth"
	"link_homework/internal/controller/clientPage"
	"link_homework/internal/controller/homework"
	"link_homework/internal/controller/live"
	"link_homework/internal/controller/record"
	"link_homework/internal/logic/middleware"
)

var (
	Main = gcmd.Command{
		Name:  "main",
		Usage: "main",
		Brief: "start http server",
		Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
			s := g.Server()
			//后台
			s.Group("/api", func(group *ghttp.RouterGroup) {
				// 登录接口
				group.POST("/login", auth.NewLoginController().Login)
				// 退出接口
				group.POST("/logout", auth.NewLoginController().Logout)
			})
			s.Group("/api/homework_manage", func(group *ghttp.RouterGroup) {
				group.Middleware(middleware.MiddlewareCORS)
				//group.Middleware(middleware.MiddlewareIsLogin)
				//gfToken.Middleware(ctx, group)
				//直接写接口,不用再分组
				group.POST("/getrecordlist", record.NewManageRecord().GetRecordList)
				group.POST("/getrecordbycondition", record.NewManageRecord().GetRecordByCondition)
				group.POST("/getdeptinfo", record.NewManageRecord().GetDeptInfo)
				group.POST("/getshopinfo", record.NewManageRecord().GetShopInfo)
				group.POST("/get-homework-list", homework.Homework().GetHomeworkList)
				group.POST("/get-homework", homework.Homework().GetHomework)
				group.POST("/add-homework", homework.Homework().AddHomework)
				group.POST("/edit-homework", homework.Homework().EditHomework)
				group.ALL("/get-article-list", article.Article().GetArticleList)
				group.ALL("/get-live-list", live.Live().GetLiveList)
			})
			//客户端
			s.Group("/api/homework_client", func(group *ghttp.RouterGroup) {
				group.Middleware(middleware.MiddlewareCORS)
				//group.Middleware(middleware.MiddlewareIsLogin)
				//gfToken.Middleware(ctx, group)
				//直接写接口,不用再分组
				group.POST("/gethomeworklist", clientPage.NewClientPage().GetHomeworkList)
				group.POST("/gethomeworkquestion", clientPage.NewClientPage().GetHomeworkQuestion)
				group.POST("/commithomework", clientPage.NewClientPage().CommitHomework)
			})
			s.Run()

			return nil
		},
	}
)