package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"github.com/gin-middleware/xxl-job-executor"
	"github.com/xxl-job/xxl-job-executor-go"
	"github.com/xxl-job/xxl-job-executor-go/example/task"
	"log"
)

func main() {
	fmt.Println("hello world")
	//log.Println()
	exec := xxl.NewExecutor(
		xxl.ServerAddr("http://49.234.19.130:20061/xxl-job-admin/"),
		//xxl.ServerAddr("http://b2luck.cn:20061/xxl-job-admin/"),
		xxl.AccessToken(""),             //请求令牌(默认为空)
		xxl.ExecutorIp("49.234.19.130"), //可自动获取
		xxl.ExecutorPort("9999"),        //默认9999(非必填)
		xxl.RegistryKey("golang-jobs"),  //执行器名称
		xxl.SetLogger(&logger{}),        //自定义日志
	)
	exec.Init()

	r := gin.Default()
	xxl_job_executor_gin.XxlJobMux(r, exec)

	//注册gin的handler
	r.GET("ping", func(cxt *gin.Context) {
		cxt.JSON(200, "pong")
	})

	//注册任务handler
	exec.RegTask("task.test", task.Test)
	exec.RegTask("task.test2", task.Test2)
	exec.RegTask("task.panic", task.Panic)

	log.Fatal(r.Run(":" + "9999"))

	////设置日志查看handler
	//exec.LogHandler(func(req *xxl.LogReq) *xxl.LogRes {
	//	return &xxl.LogRes{Code: 200, Msg: "", Content: xxl.LogResContent{
	//		FromLineNum: req.FromLineNum,
	//		ToLineNum:   2,
	//		LogContent:  "这个是自定义日志handler",
	//		IsEnd:       true,
	//	}}
	//})
	//注册任务handler
	//fmt.Println("==================开始注册任务===============")
	//exec.RegTask("task.test", task.Test)
	//exec.RegTask("task.test2", task.Test2)
	//exec.RegTask("task.panic", task.Panic)
	//log.Fatal(exec.Run())

}

//xxl.Logger接口实现
type logger struct{}

func (l *logger) Info(format string, a ...interface{}) {
	fmt.Println(fmt.Sprintf("自定义日志 - "+format, a...))
}

func (l *logger) Error(format string, a ...interface{}) {
	log.Println(fmt.Sprintf("自定义日志 - "+format, a...))
}