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

2.3 KiB
Raw Blame History

模块辅助说明

目录

  • 模块结构
  • 获取模块信息
  • 插件路由规则

模块结构

  • 文件路径server/internal/library/addons/module.go
// Skeleton 模块骨架
type Skeleton struct {
    Label       string      `json:"label"`       // 标识
    Name        string      `json:"name"`        // 名称
    Group       int         `json:"group"`       // 分组
    Logo        string      `json:"logo"`        // logo
    Brief       string      `json:"brief"`       // 简介
    Description string      `json:"description"` // 详细描述
    Author      string      `json:"author"`      // 作者
    Version     string      `json:"version"`     // 版本号
    RootPath    string      `json:"rootPath"`    // 根路径
    View        *gview.View `json:"view"`        // 模板引擎
}

func (s *Skeleton) GetModule() Module {
	return GetModule(s.Name)
}

// Module 插件模块
type Module interface {
    Start(option *Option) (err error)          // 启动模块
    Stop() (err error)                         // 停止模块
    Ctx() context.Context                      // 上下文
    GetSkeleton() *Skeleton                    // 获取模块
    Install(ctx context.Context) (err error)   // 安装模块
    Upgrade(ctx context.Context) (err error)   // 更新模块
    UnInstall(ctx context.Context) (err error) // 卸载模块
}

获取模块信息

  • 在插件模块内
package main

import (
	"fmt"
	"hotgo/addons/hgexample/global"
)

func test()  {
	fmt.Printf("当前插件模块是:%+v", global.GetSkeleton())
}
  • 在插件模块外
package main

import (
	"context"
	"fmt"
	"hotgo/internal/library/addons"
	"hotgo/internal/library/contexts"
)

func test(ctx context.Context)  {
	fmt.Printf("当前是否为插件请求:%v", contexts.IsAddonRequest(ctx))
	if contexts.IsAddonRequest(ctx) {
		fmt.Printf("当前插件名称:%v", contexts.GetAddonName(ctx))
		fmt.Printf("当前插件信息:%v", addons.GetModule(contexts.GetAddonName(ctx)))
	}
}
  • 更多辅助方法请参考插件功能库server/internal/library/addons

插件路由规则

  • 如果你不喜欢现在的路由风格,可以自行调整。修改位置在:\server\internal\library\addons\addons.go的RouterPrefix方法。
  • 注意调整后如web前端页面中如有之前的路由风格也需同步修改。