| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- package busmodels
- import (
- orm "device-manage/common/global"
- "errors"
- "fmt"
- )
- //完整播放信息列表. 包括视频属性以及播放列表.
- type PlayList struct {
- BusPlayAttri `json:"playAttri"`
- VideoList []string `json:"videoList"`
- }
- //是bus_play_item 和 bus_play_attri 表的主表, 包含这两个表的外键.
- //在添加BusPlayMenu表数据的时候, 同时添加bus_play_attri表的数据, 删除 BusPlayMenu表数据的时候,删除BusPlayItem和BusPlayAttri表数据.
- //播放列表数据表
- type BusPlayMenu struct {
- MenuId int `json:"menuId" gorm:"primary_key;AUTO_INCREMENT"`
- MenuName string `json:"menuName" gorm:"size:128;"`
- Remark string `json:"remark" gorm:"size:128;"`
- CreateBy string `json:"createBy" gorm:"size:128;"`
- UpdateBy string `json:"updateBy" gorm:"size:128;"`
- BaseModel
- BusPlayAttri BusPlayAttri `gorm:"foreignKey:MenuId;REFERENCES bus_play_menu(menu_id) ON DELETE CASCADE ON UPDATE CASCADE"`
- }
- func (BusPlayMenu) TableName() string {
- return "bus_play_menu"
- }
- func (e *BusPlayMenu) Insert() (id int, err error) {
- // check 用户名
- var playAttri BusPlayAttri
- var count int64
- orm.Eloquent.Table(e.TableName()).Where("menu_name = ?", e.MenuName).Count(&count)
- if count > 0 {
- err = errors.New("播放列表 已存在!")
- return
- }
- //添加数据
- if err = orm.Eloquent.Table(e.TableName()).Create(&e).Error; err != nil {
- return
- }
- id = e.MenuId
- playAttri.MenuId = e.MenuId
- playAttri.Volume = 0
- playAttri.PlaySwitch = 0
- playAttri.StartTime = "06:00:00"
- playAttri.EndTime = "18:00:00"
- playAttri.Subtitle = ""
- playAttri.SubtitleLocation = ""
- playAttri.OwnerId = e.CreateBy
- //添加数据
- if err = orm.Eloquent.Table(playAttri.TableName()).Create(&playAttri).Error; err != nil {
- return
- }
- return
- }
- func (e *BusPlayMenu) Get() (BusPlayMenu, error) {
- var doc BusPlayMenu
- table := orm.Eloquent.Table(e.TableName())
- if e.MenuId != 0 {
- table = table.Where("menu_id = ?", e.MenuId)
- }
- if err := table.First(&doc).Error; err != nil {
- return doc, err
- }
- return doc, nil
- }
- //获取某个MenuId列表下面的所有的item
- func (e *BusPlayMenu) GetPlayMenuList() ([]BusPlayMenu, int, error) {
- var doc []BusPlayMenu
- table := orm.Eloquent.Table(e.TableName())
- var count int64
- if err := table.Find(&doc).Count(&count).Error; err != nil {
- return nil, 0, err
- }
- return doc, int(count), nil
- }
- func (e *BusPlayMenu) BatchDelete(id []int) (Result bool, err error) {
- if err = orm.Eloquent.Table(e.TableName()).Where("menu_id in (?)", id).Delete(&BusPlayMenu{}).Error; err != nil {
- return
- }
- Result = true
- return
- }
- func (e *BusPlayMenu) Update(id int) (update BusPlayMenu, err error) {
- if err = orm.Eloquent.Table(e.TableName()).First(&update, id).Error; err != nil {
- return
- }
- //参数1:是要修改的数据
- //参数2:是修改的数据
- if err = orm.Eloquent.Table(e.TableName()).Model(&update).Updates(&e).Error; err != nil {
- return
- }
- return
- }
- // item 表 以 menu表 menuId为外键, 当playmenu表删除 menuid的时候, item表所有包含此外键的数据全部被级联删除.
- // videoId也是外键, 是bus_video表的id, 当此表包含video_id外键的时候, bus_video表不可删除此视频
- //所有播放列表总的item表
- type BusPlayItem struct {
- ItemId int `json:"itemId" gorm:"primary_key;AUTO_INCREMENT"`
- MenuId int `json:"menuId" gorm:""`
- VideoId int `json:"videoId" gorm:""`
- CreateBy string `json:"createBy" gorm:"size:128;"`
- UpdateBy string `json:"updateBy" gorm:"size:128;"`
- BaseModel
- }
- type BusPlayItemValue struct {
- ItemId int `json:"itemId" gorm:"primary_key;AUTO_INCREMENT"`
- MenuId int `json:"menuId" gorm:""`
- VideoId int `json:"videoId" gorm:""`
- CreateBy string `json:"createBy" gorm:"size:128;"`
- UpdateBy string `json:"updateBy" gorm:"size:128;"`
- BaseModel
- VideoName string `json:"videoName" gorm:"size:128;"`
- Size string `json:"size" gorm:"size:128;"`
- VideoTime string `json:"videoTime" gorm:"size:128;"`
- }
- func (BusPlayItem) TableName() string {
- return "bus_play_item"
- }
- //获取某个MenuId列表下面的所有的item
- func (e *BusPlayItem) GetPlayList() ([]BusPlayItemValue, int, error) {
- var doc []BusPlayItemValue
- table := orm.Eloquent.Select("bus_play_item.*, bus_video.video_name, bus_video.size, bus_video.video_time").Table(e.TableName())
- table = table.Joins("inner join bus_video on bus_video.video_id = bus_play_item.video_id")
- if e.MenuId != 0 {
- table = table.Where("menu_id = ?", e.MenuId)
- }
- var count int64
- if err := table.Find(&doc).Count(&count).Error; err != nil {
- return nil, 0, err
- }
- return doc, int(count), nil
- }
- func (e *BusPlayItem) Insert() (id int, err error) {
- // check 用户名
- var count int64
- table := orm.Eloquent.Table(e.TableName())
- if e.MenuId != 0 {
- table = table.Where("menu_id = ?", e.MenuId)
- }
- if e.VideoId != 0 {
- table = table.Where("video_id = ?", e.VideoId)
- }
- table.Count(&count)
- fmt.Println(count)
- if count > 0 {
- err = errors.New("列表视频 已存在!")
- e.Delete(e.MenuId, e.VideoId)
- return
- }
- //添加数据
- if err = orm.Eloquent.Table(e.TableName()).Create(&e).Error; err != nil {
- return
- }
- id = e.ItemId
- return
- }
- //从列表批量移除视频
- func (e *BusPlayItem) BatchDelete(id []int) (Result bool, err error) {
- if err = orm.Eloquent.Table(e.TableName()).Where("item_id in (?)", id).Delete(&BusPlayItem{}).Error; err != nil {
- return
- }
- Result = true
- return
- }
- func (e *BusPlayItem) Delete(menuid int, vid int) (Result bool, err error) {
- if err = orm.Eloquent.Table(e.TableName()).Where("video_id = ? , menu_id = ?", vid, menuid).Delete(&BusPlayItem{}).Error; err != nil {
- return
- }
- Result = true
- return
- }
|