mirror of
https://github.com/yangjian102621/geekai.git
synced 2026-02-19 12:54:28 +08:00
65 lines
1.8 KiB
Go
65 lines
1.8 KiB
Go
package service
|
||
|
||
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
// * Copyright 2023 The Geek-AI Authors. All rights reserved.
|
||
// * Use of this source code is governed by a Apache-2.0 license
|
||
// * that can be found in the LICENSE file.
|
||
// * @Author yangjian102621@163.com
|
||
// * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
import (
|
||
"context"
|
||
"geekai/core/types"
|
||
logger2 "geekai/logger"
|
||
|
||
"github.com/xxl-job/xxl-job-executor-go"
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
var logger = logger2.GetLogger()
|
||
|
||
type XXLJobExecutor struct {
|
||
executor xxl.Executor
|
||
db *gorm.DB
|
||
}
|
||
|
||
func NewXXLJobExecutor(config *types.AppConfig, db *gorm.DB) *XXLJobExecutor {
|
||
if !config.XXLConfig.Enabled {
|
||
logger.Info("XXL-JOB service is disabled")
|
||
return nil
|
||
}
|
||
|
||
exec := xxl.NewExecutor(
|
||
xxl.ServerAddr(config.XXLConfig.ServerAddr),
|
||
xxl.AccessToken(config.XXLConfig.AccessToken), //请求令牌(默认为空)
|
||
xxl.ExecutorIp(config.XXLConfig.ExecutorIp), //可自动获取
|
||
xxl.ExecutorPort(config.XXLConfig.ExecutorPort), //默认9999(非必填)
|
||
xxl.RegistryKey(config.XXLConfig.RegistryKey), //执行器名称
|
||
xxl.SetLogger(&customLogger{}), //自定义日志
|
||
)
|
||
exec.Init()
|
||
return &XXLJobExecutor{executor: exec, db: db}
|
||
}
|
||
|
||
func (e *XXLJobExecutor) Run() error {
|
||
e.executor.RegTask("ClearOrders", e.ClearOrders)
|
||
return e.executor.Run()
|
||
}
|
||
|
||
// ClearOrders 清理未支付的订单,如果没有抛出异常则表示执行成功
|
||
func (e *XXLJobExecutor) ClearOrders(cxt context.Context, param *xxl.RunReq) (msg string) {
|
||
logger.Info("执行清理未支付订单...")
|
||
|
||
return "success"
|
||
}
|
||
|
||
type customLogger struct{}
|
||
|
||
func (l *customLogger) Info(format string, a ...interface{}) {
|
||
logger.Debugf(format, a...)
|
||
}
|
||
|
||
func (l *customLogger) Error(format string, a ...interface{}) {
|
||
logger.Errorf(format, a...)
|
||
}
|