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 }