2025-07-25 16:52:32 +08:00

143 lines
4.1 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 sys
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2025 HotGo CLI
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
// @AutoGenerate Version 2.17.8
package sys
import (
"context"
"fmt"
"hotgo/internal/dao"
"hotgo/internal/library/contexts"
"hotgo/internal/library/hgorm/handler"
"hotgo/internal/library/hgorm/hook"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/convert"
"hotgo/utility/excel"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/util/gconv"
)
type sSysLessonSection struct{}
func NewSysLessonSection() *sSysLessonSection {
return &sSysLessonSection{}
}
func init() {
service.RegisterSysLessonSection(NewSysLessonSection())
}
// Model 课程章节ORM模型
func (s *sSysLessonSection) Model(ctx context.Context, option ...*handler.Option) *gdb.Model {
return handler.Model(dao.LessonSection.Ctx(ctx), option...)
}
// List 获取课程章节列表
func (s *sSysLessonSection) List(ctx context.Context, in *sysin.LessonSectionListInp) (list []*sysin.LessonSectionListModel, totalCount int, err error) {
mod := s.Model(ctx)
// 字段过滤
mod = mod.Fields(sysin.LessonSectionListModel{})
// 查询id
if in.Id > 0 {
mod = mod.Where(dao.LessonSection.Columns().Id, in.Id)
}
// 分页
mod = mod.Page(in.Page, in.PerPage)
// 排序
mod = mod.OrderDesc(dao.LessonSection.Columns().Id)
// 操作人摘要信息
mod = mod.Hook(hook.MemberSummary)
// 查询数据
if err = mod.ScanAndCount(&list, &totalCount, false); err != nil {
err = gerror.Wrap(err, "获取课程章节列表失败,请稍后重试!")
return
}
return
}
// Export 导出课程章节
func (s *sSysLessonSection) Export(ctx context.Context, in *sysin.LessonSectionListInp) (err error) {
list, totalCount, err := s.List(ctx, in)
if err != nil {
return
}
// 字段的排序是依据tags的字段顺序如果你不想使用默认的排序方式可以直接定义 tags = []string{"字段名称", "字段名称2", ...}
tags, err := convert.GetEntityDescTags(sysin.LessonSectionExportModel{})
if err != nil {
return
}
var (
fileName = "导出课程章节-" + gctx.CtxId(ctx)
sheetName = fmt.Sprintf("索引条件共%v行,共%v页,当前导出是第%v页,本页共%v行", totalCount, form.CalPageCount(totalCount, in.PerPage), in.Page, len(list))
exports []sysin.LessonSectionExportModel
)
if err = gconv.Scan(list, &exports); err != nil {
return
}
err = excel.ExportByStructs(ctx, tags, exports, fileName, sheetName)
return
}
// Edit 修改/新增课程章节
func (s *sSysLessonSection) Edit(ctx context.Context, in *sysin.LessonSectionEditInp) (err error) {
return g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) (err error) {
// 修改
if in.Id > 0 {
in.UpdatedBy = contexts.GetUserId(ctx)
if _, err = s.Model(ctx).
Fields(sysin.LessonSectionUpdateFields{}).
WherePri(in.Id).Data(in).Update(); err != nil {
err = gerror.Wrap(err, "修改课程章节失败,请稍后重试!")
}
return
}
// 新增
in.CreatedBy = contexts.GetUserId(ctx)
if _, err = s.Model(ctx, &handler.Option{FilterAuth: false}).
Fields(sysin.LessonSectionInsertFields{}).
Data(in).OmitEmptyData().Insert(); err != nil {
err = gerror.Wrap(err, "新增课程章节失败,请稍后重试!")
}
return
})
}
// Delete 删除课程章节
func (s *sSysLessonSection) Delete(ctx context.Context, in *sysin.LessonSectionDeleteInp) (err error) {
if _, err = s.Model(ctx).WherePri(in.Id).Unscoped().Delete(); err != nil {
err = gerror.Wrap(err, "删除课程章节失败,请稍后重试!")
return
}
return
}
// View 获取课程章节指定信息
func (s *sSysLessonSection) View(ctx context.Context, in *sysin.LessonSectionViewInp) (res *sysin.LessonSectionViewModel, err error) {
if err = s.Model(ctx).WherePri(in.Id).Hook(hook.MemberSummary).Scan(&res); err != nil {
err = gerror.Wrap(err, "获取课程章节信息,请稍后重试!")
return
}
return
}