chatroom_manager.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package services
  2. import (
  3. "github.com/jinzhu/gorm"
  4. "lzyd-message-api/models"
  5. )
  6. func ChatRoomList(db *gorm.DB, r *models.ChatRoomListReq) (err error, list interface{}, total int) {
  7. var roomList []models.ChatRoomListRes
  8. var count models.Count
  9. sql := `SELECT id,room_id,name,url,cover,intro,category,with_graphic,with_chatroom as with_chat_room,state,
  10. start_time,end_time,sender_name,sender_avatar,view_count,created_at,updated_at FROM live_entity
  11. WHERE name like ? AND if("" = ?, true, category = ?) AND is_delete=0 ORDER BY created_at desc`
  12. sqlCount := `SELECT COUNT(*) as count FROM live_entity
  13. WHERE name like ? AND if("" = ?, true, category = ?) AND is_delete=0`
  14. limit := r.PageSize
  15. offset := r.PageSize * (r.Page - 1)
  16. err = db.Raw(sql, "%" + r.Name+"%", r.Category, r.Category).Limit(limit).Offset(offset).Find(&roomList).Error
  17. if err != nil {
  18. return err, list, total
  19. }
  20. err = db.Raw(sqlCount, "%" + r.Name+ "%", r.Category, r.Category).Find(&count).Error
  21. if err != nil {
  22. return err, list, total
  23. }
  24. return err, roomList, count.Count
  25. }
  26. func ChatroomDetail(db *gorm.DB, roomId string) (err error, data interface{}) {
  27. var room []models.ChatRoomListRes
  28. sqlRoom := `SELECT id,room_id,name,url,cover,intro,category,with_graphic,with_chatroom as with_chat_room,state,
  29. start_time,end_time,sender_name,sender_avatar,view_count,created_at,updated_at
  30. FROM live_entity WHERE room_id = ?`
  31. err = db.Raw(sqlRoom, roomId).Find(&room).Error
  32. return err, room[0]
  33. }
  34. func ChatroomView(db *gorm.DB, roomId string) (err error) {
  35. var count models.ViewCount
  36. sqlRoom := `SELECT view_count FROM live_entity WHERE room_id = ?`
  37. err = db.Raw(sqlRoom, roomId).Find(&count).Error
  38. if err != nil {
  39. return err
  40. }
  41. sql := `UPDATE live_entity SET view_count=? WHERE room_id = ?`
  42. err = db.Exec(sql, count.ViewCount+1, roomId).Error
  43. return err
  44. }
  45. func ChatroomClassification(db *gorm.DB, t string) (err error, list interface{}) {
  46. var classification []*models.ChatRoomClassificationRes
  47. sql := `SELECT id,name,created_at,updated_at FROM live_classification WHERE is_delete=0 AND type =?`
  48. err = db.Raw(sql, t).Find(&classification).Error
  49. return err, classification
  50. }
  51. func GraphicList(db *gorm.DB, roomId string) (err error, list interface{}) {
  52. var GraphficListRes []models.GraphicListDataRes
  53. var GraphicListDetail []models.GraphicDetail
  54. sqlGraphicMaster := `SELECT lg.graphic_id,le.sender_name,le.sender_avatar,lg.created_at,lg.updated_at FROM live_graphictext lg
  55. LEFT JOIN live_entity le ON le.room_id = lg.live_id WHERE lg.live_id = ? AND lg.is_delete=0 ORDER BY created_at desc`
  56. sqlCraphicDetail := `SELECT lg.graphic_id,lf.id,lf.type,lf.content,lf.created_at,lf.updated_at FROM live_graphictext lg
  57. LEFT JOIN live_fragment lf ON lf.graphic_id = lg.graphic_id WHERE lg.live_id = ? AND lf.is_delete=0 ORDER BY created_at desc`
  58. err = db.Raw(sqlGraphicMaster, roomId).Find(&GraphficListRes).Error
  59. if err != nil {
  60. return err, list
  61. }
  62. err = db.Raw(sqlCraphicDetail, roomId).Find(&GraphicListDetail).Error
  63. if err != nil {
  64. return err, list
  65. }
  66. var data []interface{}
  67. for _, item := range GraphficListRes {
  68. for _, child := range GraphicListDetail {
  69. if item.GraphicId == child.GraphicId {
  70. // 判断 图文直播是否有oss视频,有需私有读取
  71. //if strings.Contains(child.Content, "oss-cn-hangzhou.aliyuncs.com") && item.type == 3 {
  72. // objKey := strings.Replace(child.Content, "https://health-live.oss-cn-hangzhou.aliyuncs.com/", "", 1)
  73. // child.Content = utils.GetVideoSignedURL(objKey)
  74. // child.Content = child.Content + "," + utils.GetSnapVideoSignedURL(objKey)
  75. //}
  76. item.List = append(item.List, child)
  77. }
  78. }
  79. data = append(data, item)
  80. }
  81. return err, data
  82. }