session_group.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package models
  2. import (
  3. "database/sql/driver"
  4. "encoding/json"
  5. "fmt"
  6. "strings"
  7. "time"
  8. "github.com/rotisserie/eris"
  9. )
  10. type Member2 struct {
  11. UserId string `json:"user_id"` // UserId 用户ID
  12. Identity uint `json:"identity"` // Identity 身份
  13. }
  14. type MembersJson json.RawMessage
  15. func (j MembersJson) Value() (driver.Value, error) {
  16. if len(j) == 0 {
  17. return nil, nil
  18. }
  19. return json.RawMessage(j).MarshalJSON()
  20. }
  21. func (j *MembersJson) Scan(value any) error {
  22. bytes, ok := value.([]byte)
  23. if !ok {
  24. return eris.New(fmt.Sprint("Failed to unmarshal JSONB value:", value))
  25. }
  26. (*j) = MembersJson(bytes)
  27. return nil
  28. }
  29. func (j *MembersJson) ToSlice() []Member2 {
  30. var ms []Member2
  31. _ = json.Unmarshal(*j, &ms)
  32. return ms
  33. }
  34. func NewMembers(ms []Member2) MembersJson {
  35. j, _ := json.Marshal(ms)
  36. return j
  37. }
  38. type SessionGroup struct {
  39. ID string `gorm:"column:id;primary_key"`
  40. ChildId string `gorm:"column:child_id;NOT NULL"` // 孩子ID
  41. IsFamilyGroup *int `gorm:"column:is_family_group;default:1;NOT NULL"` // 是否是家庭群 1:默认(是)-1:否
  42. Members MembersJson `gorm:"column:members"` // 成员信息
  43. CreatedAt time.Time `gorm:"column:created_at;default:CURRENT_TIMESTAMP;NOT NULL"`
  44. UpdatedAt time.Time `gorm:"column:updated_at;default:CURRENT_TIMESTAMP;NOT NULL"` // 更新时间
  45. }
  46. func (m *SessionGroup) TableName() string {
  47. return "tb_session_group"
  48. }
  49. func IsSessionGroup(id string) bool {
  50. return strings.Contains(id, "GROUP_")
  51. }