diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index b9e21ed24..f9923aa6c 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -130,20 +130,30 @@ func ImMessage(userID string, ws *websocket.Conn) (err error) { //接受消息 业务逻辑 broadcast <- s if s.GroupID != 0 { - //发聊天消息时,这个组所有的成员包括创建者都在userIDs里 - userIDs := []string{} - if results, err := dao.GetMessageGroups(db, "", s.GroupID, 0, true, ""); err == nil { - for _, v := range results { - userIDs = append(userIDs, v.UserID) - for _, vv := range v.MessageGroupMembers { - userIDs = append(userIDs, vv.UserID) + if s.GroupID != model.SysGroupID { + //发聊天消息时,这个组所有的成员包括创建者都在userIDs里 + userIDs := []string{} + if results, err := dao.GetMessageGroups(db, "", s.GroupID, 0, true, ""); err == nil { + for _, v := range results { + userIDs = append(userIDs, v.UserID) + for _, vv := range v.MessageGroupMembers { + userIDs = append(userIDs, vv.UserID) + } } } - } - //如果这些人不在这个组的ws池子里就打上未读标记 - for _, v := range userIDs { - if wsClient.ClientsHeart[v] == nil { - messageGroupReads, _ := dao.GetMessageGroupRead(db, v, s.GroupID) + //如果这些人不在这个组的ws池子里就打上未读标记 + for _, v := range userIDs { + if wsClient.ClientsHeart[v] == nil { + messageGroupReads, _ := dao.GetMessageGroupRead(db, v, s.GroupID) + for _, vv := range messageGroupReads { + vv.UnReadCount++ + dao.UpdateEntity(db, vv, "UnReadCount") + } + } + } + } else { + if wsClient.ClientsHeart[s.ToUserID] == nil { + messageGroupReads, _ := dao.GetMessageGroupRead(db, s.ToUserID, s.GroupID) for _, vv := range messageGroupReads { vv.UnReadCount++ dao.UpdateEntity(db, vv, "UnReadCount") diff --git a/business/model/dao/event.go b/business/model/dao/event.go index 1d4c9fd88..fa131f37e 100644 --- a/business/model/dao/event.go +++ b/business/model/dao/event.go @@ -142,7 +142,7 @@ func GetOperateEvents(db *DaoDB, name string, apiFunctions []string, operateType return operateEventExt, totalCount, err } -func GetImMessageRecord(db *DaoDB, groupID int, userID string, storeID, vendorID int, fromTime, toTime time.Time, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { +func GetImMessageRecord(db *DaoDB, groupID int, userID, toUserID string, storeID, vendorID int, fromTime, toTime time.Time, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) { var msg []*model.ImMessageRecord sql := ` SELECT SQL_CALC_FOUND_ROWS * @@ -155,6 +155,10 @@ func GetImMessageRecord(db *DaoDB, groupID int, userID string, storeID, vendorID if groupID != 0 { sql += " AND group_id = ?" sqlParams = append(sqlParams, groupID) + if groupID == model.SysGroupID { + sql += " AND to_user_id = ?" + sqlParams = append(sqlParams, toUserID) + } } if userID != "" { sql += " AND user_id = ?" diff --git a/controllers/event_controller.go b/controllers/event_controller.go index 6e0391886..20a94abd6 100644 --- a/controllers/event_controller.go +++ b/controllers/event_controller.go @@ -93,7 +93,7 @@ func (c *EventController) TestWebsocket() { func (c *EventController) GetImMessageRecord() { c.callGetImMessageRecord(func(params *tEventGetImMessageRecordParams) (retVal interface{}, errCode string, err error) { var db = dao.GetDB() - retVal, err = dao.GetImMessageRecord(db, params.GroupID, "", 0, -1, utils.Str2Time(params.FromTime), utils.Str2Time(params.ToTime), params.Offset, params.PageSize) + retVal, err = dao.GetImMessageRecord(db, params.GroupID, "", params.Ctx.GetUserID(), 0, -1, utils.Str2Time(params.FromTime), utils.Str2Time(params.ToTime), params.Offset, params.PageSize) //清除此用户组所有的未读标记 if messageGroupReads, err := dao.GetMessageGroupRead(db, params.Ctx.GetUserID(), params.GroupID); err == nil { for _, v := range messageGroupReads {