yunzer_go/server/models/program.go
2025-10-27 23:13:08 +08:00

161 lines
4.9 KiB
Go

package models
import (
"time"
"github.com/beego/beego/v2/client/orm"
)
// ProgramCategory 程序分类模型
type ProgramCategory struct {
CategoryId int `orm:"column(category_id);auto" json:"category_id"`
CategoryName string `orm:"column(category_name);size(100)" json:"category_name"`
CategoryDesc string `orm:"column(category_desc);size(500);null" json:"category_desc"`
ParentId int `orm:"column(parent_id);default(0)" json:"parent_id"`
SortOrder int `orm:"column(sort_order);default(0)" json:"sort_order"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);auto_now" json:"update_time"`
}
// TableName 设置表名
func (c *ProgramCategory) TableName() string {
return "yz_program_category"
}
// ProgramInfo 程序信息模型
type ProgramInfo struct {
ProgramId int `orm:"column(program_id);auto" json:"program_id"`
CategoryId int `orm:"column(category_id)" json:"category_id"`
ProgramName string `orm:"column(program_name);size(200)" json:"program_name"`
ProgramDesc string `orm:"column(program_desc);type(text);null" json:"program_desc"`
JumpUrl string `orm:"column(jump_url);size(1000)" json:"jump_url"`
IconUrl string `orm:"column(icon_url);size(1000);null" json:"icon_url"`
Version string `orm:"column(version);size(50);null" json:"version"`
Status int8 `orm:"column(status);default(1)" json:"status"`
SortOrder int `orm:"column(sort_order);default(0)" json:"sort_order"`
CreateTime time.Time `orm:"column(create_time);type(datetime);auto_now_add" json:"create_time"`
UpdateTime time.Time `orm:"column(update_time);type(datetime);auto_now" json:"update_time"`
// 关联的分类信息
Category *ProgramCategory `orm:"-" json:"category,omitempty"`
}
// TableName 设置表名
func (p *ProgramInfo) TableName() string {
return "yz_program_info"
}
// GetAllProgramCategories 获取所有程序分类
func GetAllProgramCategories() ([]*ProgramCategory, error) {
o := orm.NewOrm()
var categories []*ProgramCategory
_, err := o.QueryTable("yz_program_category").OrderBy("SortOrder").All(&categories)
return categories, err
}
// GetProgramCategoryById 根据ID获取程序分类
func GetProgramCategoryById(id int) (*ProgramCategory, error) {
o := orm.NewOrm()
category := &ProgramCategory{CategoryId: id}
err := o.Read(category, "CategoryId")
if err == orm.ErrNoRows {
return nil, err
}
return category, nil
}
// AddProgramCategory 添加新程序分类
func AddProgramCategory(category *ProgramCategory) (int64, error) {
o := orm.NewOrm()
id, err := o.Insert(category)
return id, err
}
// UpdateProgramCategory 更新程序分类
func UpdateProgramCategory(category *ProgramCategory) error {
o := orm.NewOrm()
_, err := o.Update(category)
return err
}
// DeleteProgramCategory 删除程序分类
func DeleteProgramCategory(id int) error {
o := orm.NewOrm()
_, err := o.Delete(&ProgramCategory{CategoryId: id})
return err
}
// GetAllProgramInfos 获取所有程序信息
func GetAllProgramInfos() ([]*ProgramInfo, error) {
o := orm.NewOrm()
var programs []*ProgramInfo
_, err := o.QueryTable("yz_program_info").OrderBy("SortOrder").All(&programs)
// 加载关联的分类信息
if err == nil && len(programs) > 0 {
for _, program := range programs {
if category, err := GetProgramCategoryById(program.CategoryId); err == nil {
program.Category = category
}
}
}
return programs, err
}
// GetProgramInfoById 根据ID获取程序信息
func GetProgramInfoById(id int) (*ProgramInfo, error) {
o := orm.NewOrm()
program := &ProgramInfo{ProgramId: id}
err := o.Read(program, "ProgramId")
if err == orm.ErrNoRows {
return nil, err
}
// 加载关联的分类信息
if err == nil {
if category, err := GetProgramCategoryById(program.CategoryId); err == nil {
program.Category = category
}
}
return program, nil
}
// AddProgramInfo 添加新程序信息
func AddProgramInfo(program *ProgramInfo) (int64, error) {
o := orm.NewOrm()
id, err := o.Insert(program)
return id, err
}
// UpdateProgramInfo 更新程序信息
func UpdateProgramInfo(program *ProgramInfo) error {
o := orm.NewOrm()
_, err := o.Update(program)
return err
}
// DeleteProgramInfo 删除程序信息
func DeleteProgramInfo(id int) error {
o := orm.NewOrm()
_, err := o.Delete(&ProgramInfo{ProgramId: id})
return err
}
// GetProgramInfosByCategoryId 根据分类ID获取程序信息
func GetProgramInfosByCategoryId(categoryId int) ([]*ProgramInfo, error) {
o := orm.NewOrm()
var programs []*ProgramInfo
_, err := o.QueryTable("yz_program_info").Filter("CategoryId", categoryId).OrderBy("SortOrder").All(&programs)
// 加载关联的分类信息
if err == nil && len(programs) > 0 {
for _, program := range programs {
if category, err := GetProgramCategoryById(program.CategoryId); err == nil {
program.Category = category
}
}
}
return programs, err
}