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
 | |
| } |