123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- package models
- import (
- "fmt"
- "github.com/beego/beego/v2/client/orm"
- "strconv"
- "strings"
- "time"
- )
- type MediaType string
- type SendStatus string
- const (
- Video MediaType = "video"
- Audio MediaType = "audio"
- UNSEND SendStatus = "UNSEND"
- SEND SendStatus = "SEND"
- )
- func (m *Media) ToView() *ESMedia {
- return &ESMedia{
- MediaId: m.Id,
- AuthorId: m.AuthorId,
- AuthorName: m.AuthorName,
- MediaType: m.MediaType,
- Src: m.Src,
- MediaName: m.MediaName,
- SourceType: m.SourceType,
- MediaPlayMilliseconds: m.MediaPlayMilliseconds,
- PermissionIds: m.PermissionIds,
- PublishedTime: m.PublishedTime.Format(time.DateTime),
- }
- }
- type ESMedia struct {
- MediaId int `json:"mediaId"`
- AuthorId int `json:"authorId"`
- AuthorName string `json:"authorName"`
- CoverSrc string `json:"coverSrc"`
- MediaType MediaType `json:"mediaType"`
- Src string `json:"src"`
- MediaName string `json:"mediaName"`
- SourceType string `json:"sourceType"`
- MediaPlayMilliseconds int `json:"mediaPlayMilliseconds"`
- PermissionIds string `json:"permissionIds"`
- PublishedTime string `json:"publishedTime"`
- }
- type Media struct {
- Id int `orm:"pk;auto" description:"id"`
- AuthorId int `description:"author_id"`
- AuthorName string `description:"author_name"`
- CoverSrc string `description:"cover_src"`
- MediaType MediaType `description:"media_type"`
- Src string `description:"src"`
- MediaName string `description:"media_name"`
- SourceType string `description:"source_type"`
- MediaPlayMilliseconds int `description:"media_play_milliseconds"`
- PermissionIds string `description:"permission_ids"`
- PublishedTime time.Time `description:"published_time"`
- SendStatus SendStatus `json:"sendStatus"`
- Deleted int `description:"deleted"`
- CreatedTime time.Time `description:"created_time"`
- UpdatedTime time.Time `description:"updated_time"`
- }
- func InsertMedia(m *Media) (err error) {
- tx, err := orm.NewOrm().Begin()
- if err != nil {
- return
- }
- if err != nil {
- fmt.Printf("%v", err)
- return
- }
- defer func() {
- if r := recover(); r != nil {
- _ = tx.Rollback()
- return
- }
- if err != nil {
- _ = tx.Rollback()
- } else {
- _ = tx.Commit()
- }
- }()
- insertId, err := tx.Insert(m)
- if err != nil {
- _ = tx.Rollback()
- return
- }
- m.Id = int(insertId)
- permissionMappingList := make([]*MediaPermissionMapping, 0)
- ids := strings.Split(m.PermissionIds, ",")
- for _, item := range ids {
- x, _ := strconv.Atoi(item)
- permissionMappingList = append(permissionMappingList, &MediaPermissionMapping{
- MediaId: m.Id,
- MediaType: m.MediaType,
- PermissionId: x,
- CreatedTime: time.Now(),
- })
- }
- _, err = tx.InsertMulti(500, permissionMappingList)
- return
- }
- func DeleteMedia(m *Media) (err error) {
- o := orm.NewOrm()
- if err != nil {
- return err
- }
- tx, err := o.Begin()
- if err != nil {
- fmt.Printf("%v", err)
- return
- }
- defer func() {
- if r := recover(); r != nil {
- _ = tx.Rollback()
- return
- }
- }()
- err = DeleteMappingsById(m.Id)
- if err != nil {
- _ = tx.Rollback()
- return
- }
- _, err = o.Update(m, "deleted")
- if err != nil {
- _ = tx.Rollback()
- return
- }
- _ = tx.Commit()
- return
- }
- func UpdateMedia(m *Media) (updateId int64, err error) {
- o := orm.NewOrm()
- if err != nil {
- return 0, err
- }
- tx, err := o.Begin()
- if err != nil {
- fmt.Printf("%v", err)
- return
- }
- defer func() {
- if r := recover(); r != nil {
- _ = tx.Rollback()
- return
- }
- }()
- err = DeleteMappingsById(m.Id)
- if err != nil {
- _ = tx.Rollback()
- return
- }
- updateId, err = o.Update(m, "author_id", "author_name", "")
- if err != nil {
- _ = tx.Rollback()
- return
- }
- ids := strings.Split(m.PermissionIds, ",")
- for _, item := range ids {
- x, _ := strconv.Atoi(item)
- mapping := &MediaPermissionMapping{
- MediaId: m.Id,
- MediaType: m.MediaType,
- PermissionId: x,
- CreatedTime: time.Now(),
- }
- _, err = o.Insert(mapping)
- if err != nil {
- _ = tx.Rollback()
- return
- }
- }
- _ = tx.Commit()
- return
- }
|