media.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package models
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "strconv"
  6. "strings"
  7. "time"
  8. )
  9. type MediaType string
  10. type SendStatus string
  11. const (
  12. Video MediaType = "video"
  13. Audio MediaType = "audio"
  14. UNSEND SendStatus = "UNSEND"
  15. SEND SendStatus = "SEND"
  16. )
  17. func (m *Media) ToView() *ESMedia {
  18. return &ESMedia{
  19. MediaId: m.Id,
  20. AuthorId: m.AuthorId,
  21. AuthorName: m.AuthorName,
  22. MediaType: m.MediaType,
  23. Src: m.Src,
  24. MediaName: m.MediaName,
  25. SourceType: m.SourceType,
  26. MediaPlayMilliseconds: m.MediaPlayMilliseconds,
  27. PermissionIds: m.PermissionIds,
  28. PublishedTime: m.PublishedTime.Format(time.DateTime),
  29. }
  30. }
  31. type ESMedia struct {
  32. MediaId int `json:"mediaId"`
  33. AuthorId int `json:"authorId"`
  34. AuthorName string `json:"authorName"`
  35. CoverSrc string `json:"coverSrc"`
  36. MediaType MediaType `json:"mediaType"`
  37. Src string `json:"src"`
  38. MediaName string `json:"mediaName"`
  39. SourceType string `json:"sourceType"`
  40. MediaPlayMilliseconds int `json:"mediaPlayMilliseconds"`
  41. PermissionIds string `json:"permissionIds"`
  42. PublishedTime string `json:"publishedTime"`
  43. }
  44. type Media struct {
  45. Id int `orm:"pk;auto" description:"id"`
  46. AuthorId int `description:"author_id"`
  47. AuthorName string `description:"author_name"`
  48. CoverSrc string `description:"cover_src"`
  49. MediaType MediaType `description:"media_type"`
  50. Src string `description:"src"`
  51. MediaName string `description:"media_name"`
  52. SourceType string `description:"source_type"`
  53. MediaPlayMilliseconds int `description:"media_play_milliseconds"`
  54. PermissionIds string `description:"permission_ids"`
  55. PublishedTime time.Time `description:"published_time"`
  56. SendStatus SendStatus `json:"sendStatus"`
  57. Deleted int `description:"deleted"`
  58. CreatedTime time.Time `description:"created_time"`
  59. UpdatedTime time.Time `description:"updated_time"`
  60. }
  61. func InsertMedia(m *Media) (err error) {
  62. tx, err := orm.NewOrm().Begin()
  63. if err != nil {
  64. return
  65. }
  66. if err != nil {
  67. fmt.Printf("%v", err)
  68. return
  69. }
  70. defer func() {
  71. if r := recover(); r != nil {
  72. _ = tx.Rollback()
  73. return
  74. }
  75. if err != nil {
  76. _ = tx.Rollback()
  77. } else {
  78. _ = tx.Commit()
  79. }
  80. }()
  81. insertId, err := tx.Insert(m)
  82. if err != nil {
  83. _ = tx.Rollback()
  84. return
  85. }
  86. m.Id = int(insertId)
  87. permissionMappingList := make([]*MediaPermissionMapping, 0)
  88. ids := strings.Split(m.PermissionIds, ",")
  89. for _, item := range ids {
  90. x, _ := strconv.Atoi(item)
  91. permissionMappingList = append(permissionMappingList, &MediaPermissionMapping{
  92. MediaId: m.Id,
  93. MediaType: m.MediaType,
  94. PermissionId: x,
  95. CreatedTime: time.Now(),
  96. })
  97. }
  98. _, err = tx.InsertMulti(500, permissionMappingList)
  99. return
  100. }
  101. func DeleteMedia(m *Media) (err error) {
  102. o := orm.NewOrm()
  103. if err != nil {
  104. return err
  105. }
  106. tx, err := o.Begin()
  107. if err != nil {
  108. fmt.Printf("%v", err)
  109. return
  110. }
  111. defer func() {
  112. if r := recover(); r != nil {
  113. _ = tx.Rollback()
  114. return
  115. }
  116. }()
  117. err = DeleteMappingsById(m.Id)
  118. if err != nil {
  119. _ = tx.Rollback()
  120. return
  121. }
  122. _, err = o.Update(m, "deleted")
  123. if err != nil {
  124. _ = tx.Rollback()
  125. return
  126. }
  127. _ = tx.Commit()
  128. return
  129. }
  130. func UpdateMedia(m *Media) (updateId int64, err error) {
  131. o := orm.NewOrm()
  132. if err != nil {
  133. return 0, err
  134. }
  135. tx, err := o.Begin()
  136. if err != nil {
  137. fmt.Printf("%v", err)
  138. return
  139. }
  140. defer func() {
  141. if r := recover(); r != nil {
  142. _ = tx.Rollback()
  143. return
  144. }
  145. }()
  146. err = DeleteMappingsById(m.Id)
  147. if err != nil {
  148. _ = tx.Rollback()
  149. return
  150. }
  151. updateId, err = o.Update(m, "author_id", "author_name", "")
  152. if err != nil {
  153. _ = tx.Rollback()
  154. return
  155. }
  156. ids := strings.Split(m.PermissionIds, ",")
  157. for _, item := range ids {
  158. x, _ := strconv.Atoi(item)
  159. mapping := &MediaPermissionMapping{
  160. MediaId: m.Id,
  161. MediaType: m.MediaType,
  162. PermissionId: x,
  163. CreatedTime: time.Now(),
  164. }
  165. _, err = o.Insert(mapping)
  166. if err != nil {
  167. _ = tx.Rollback()
  168. return
  169. }
  170. }
  171. _ = tx.Commit()
  172. return
  173. }