| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package models
- type Message struct {
- Model
- KefuId string `gorm:"size:50 not null default:'' index:'idx_kefu_id'" json:"kefu_id"`
- VisitorId string `gorm:"size:50 not null default:'' index:'idx_visitor_id'" json:"visitor_id"`
- Content string `gorm:"size:2048 not null default:''" json:"content"`
- MesType string `gorm:"default:'visitor'" json:"mes_type"`
- Status string `gorm:"not null default:'unread'" json:"status"`
- }
- func CreateMessage(kefu_id string, visitor_id string, content string, mes_type string) {
- v := &Message{
- KefuId: kefu_id,
- VisitorId: visitor_id,
- Content: content,
- MesType: mes_type,
- Status: "unread",
- }
- DB.Create(v)
- }
- //func FindMessageByVisitorId(visitor_id string) []Message {
- // var messages []Message
- // DB.Where("visitor_id=?", visitor_id).Order("id asc").Find(&messages)
- // return messages
- //}
- func FindMessagesByVisitorAndKefuId(visitorId, kefuId string) []Message {
- var messages []Message
- DB.Where("visitor_id=? AND kefu_id=?", visitorId, kefuId).Order("id asc").Find(&messages)
- return messages
- }
- //修改消息状态
- func ReadMessageByVisitorId(visitor_id string) {
- message := &Message{
- Status: "read",
- }
- DB.Model(&message).Where("visitor_id=?", visitor_id).Updates(message)
- }
- //获取未读数
- func FindUnreadMessageNumByVisitorId(visitor_id string) int64 {
- var count int64
- DB.Where("visitor_id=? and status=?", visitor_id, "unread").Count(&count)
- return count
- }
- //查询最后一条消息
- func FindLastMessage(visitorIds []string) []Message {
- var messages []Message
- //subQuery := DB.
- // Table("message").
- // Where(" visitor_id in (? )", visitorIds).
- // Order("id desc").
- // Limit(1024).
- // SubQuery()
- //DB.Raw("SELECT ANY_VALUE(visitor_id) visitor_id,ANY_VALUE(id) id,ANY_VALUE(content) content FROM ? message_alia GROUP BY visitor_id", subQuery).Scan(&messages)
- //DB.Select("ANY_VALUE(visitor_id) visitor_id,MAX(ANY_VALUE(id)) id,ANY_VALUE(content) content").Group("visitor_id").Find(&messages)
- return messages
- }
- //查询条数
- func CountMessage() int64 {
- var count int64
- DB.Model(&Message{}).Count(&count)
- return count
- }
|