yl 59d31d4b47 feat: 添加我的课程模块功能
- 新增我的课程列表API接口
- 支持按学习状态筛选(全部/学习中/已完结)
- 支持分页查询
- 包含课程基本信息、学习进度等数据
- 添加Apifox接口文档配置指南

文件变更:
- server/api/admin/mycourse/mycourse.go - API接口定义
- server/internal/controller/admin/mycourse/mycourse.go - 控制器层
- server/internal/service/mycourse.go - 服务层(模拟数据)
- server/internal/router/admin.go - 路由配置
- docs/apifox_config.md - 接口文档
2025-07-28 15:30:04 +08:00

1.8 KiB
Raw Blame History

定时任务

目录

  • 实现接口
  • 一个例子
  • 更多

在实际的项目开发中定时任务几乎成为不可或缺的一部分。HotGo为定时任务提供一个方便的后台操作界面让您能够轻松地进行在线启停、修改和立即执行等操作。这样的设计可以极大地改善您在使用定时任务过程中的体验让整个过程更加顺畅、高效。

实现接口

  • 为了提供高度的扩展性,定时任务在设计上采用了接口化的思路。只需要实现以下接口,您就可以在任何地方注册和使用定时任务功能,从而实现更大的灵活性和可扩展性。
// Cron 定时任务接口
type Cron interface {
    // GetName 获取任务名称
    GetName() string
    // Execute 执行任务
	Execute(ctx context.Context, parser *Parser) (err error)
}

一个例子

定时任务的文件结构可以根据具体需要进行调整,以下是一个常见的参考结构:

  • 文件路径server/internal/crons/test.go
package crons

import (
	"context"
	"hotgo/internal/library/cron"
	"time"
)

func init() {
	cron.Register(Test)
}

// Test 测试任务(无参数)
var Test = &cTest{name: "test"}

type cTest struct {
	name string
}

func (c *cTest) GetName() string {
	return c.name
}

// Execute 执行任务
func (c *cTest) Execute(ctx context.Context, parser *cron.Parser) (err error) {
	parser.Logger.Infof(ctx, "cron test Execute:%v", time.Now()) // 记录任务调度日志
	return
}

继续在后台系统设置-定时任务-添加任务,填写的任务名称需要和上面的名称保持一致,再进行简单的策略配置以后,一个后台可控的定时任务就添加好了!

更多

定时任务源码路径server/internal/library/cron/cron.go

更多文档请参考:https://goframe.org/pages/viewpage.action?pageId=1114187