161 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
						|
} |