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

108 lines
2.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package cmd
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2023 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package cmd
import (
"context"
"fmt"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcmd"
"github.com/gogf/gf/v2/os/gres"
"hotgo/internal/library/casbin"
)
var (
Tools = &gcmd.Command{
Name: "tools",
Brief: "常用工具",
Description: ``,
Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
args := parser.GetOptAll()
g.Log().Debugf(ctx, "tools args:%v", args)
if len(args) == 0 {
err = gerror.New("tools args cannot be empty.")
return
}
method, ok := args["m"]
if !ok {
err = gerror.New("tools method cannot be empty.")
return
}
switch method {
case "casbin":
err = handleCasbin(ctx, args)
case "gres":
err = handleGRes(ctx, args)
default:
err = gerror.Newf("tools method[%v] does not exist", method)
}
if err == nil {
g.Log().Info(ctx, "tools exec successful!")
}
return
},
}
)
// handleCasbin casbin.
func handleCasbin(ctx context.Context, args map[string]string) (err error) {
a1, ok := args["a1"]
if !ok {
err = gerror.New("casbin args cannot be empty.")
return
}
casbin.InitEnforcer(ctx)
switch a1 {
case "clear":
err = casbin.Clear(ctx)
case "refresh":
err = casbin.Refresh(ctx)
default:
err = gerror.Newf("casbin a1 is invalid, a1:%v", a1)
}
return
}
func handleGRes(ctx context.Context, args map[string]string) (err error) {
a1, ok := args["a1"]
if !ok {
err = gerror.New("gres args cannot be empty.")
return
}
switch a1 {
case "dump":
gres.Dump()
case "content":
path, ok := args["a2"]
if !ok {
err = gerror.New("缺少查看文件路径参数:`a2`")
return
}
if !gres.Contains(path) {
err = gerror.Newf("没有找到资源文件:%v", path)
return
}
content := string(gres.GetContent(path))
if len(content) == 0 {
err = gerror.Newf("没有找到资源文件内容,请确认传入`a2`参数是一个文件a2:%v", path)
return
}
fmt.Println("以下是资源文件内容:")
fmt.Println(content)
default:
err = gerror.Newf("handleGRes a1 is invalid, a1:%v", a1)
}
return
}