diff --git a/business/model/dao/event.go b/business/model/dao/event.go index 1bf094215..0892a1794 100644 --- a/business/model/dao/event.go +++ b/business/model/dao/event.go @@ -230,3 +230,22 @@ func GetMessageGroupMembers(db *DaoDB, groupID int, memberUserID string) (messag err = GetRows(db, &messageGroupMembers, sql, sqlParams) return messageGroupMembers, err } + +//得到某个用户所在所有群组 +func GetUserMessageGroups(db *DaoDB, userID string) (messageGroup []*model.MessageGroup, err error) { + sql := ` + SELECT group_id + FROM message_group + WHERE deleted_at = ? AND user_id = ? + UNION + SELECT group_id + FROM message_group_member + WHERE deleted_at = ? AND user_id = ? + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, userID, + utils.DefaultTimeValue, userID, + } + err = GetRows(db, &messageGroup, sql, sqlParams) + return messageGroup, err +} diff --git a/controllers/event_controller.go b/controllers/event_controller.go index d0cfeddcd..554d66dde 100644 --- a/controllers/event_controller.go +++ b/controllers/event_controller.go @@ -86,12 +86,15 @@ func (c *EventController) TestWebsocket() { } defer ws.Close() var ( - // userID = c.GetString("userID") + userID = c.GetString("userID") msgMap = make(map[int]*model.ImMessageRecord) groupID int ) //将当前客户端放入map中 - // clients[vendorOrderID] = append(clients[vendorOrderID], ws) + messageGroups, _ := dao.GetUserMessageGroups(dao.GetDB(), userID) + for _, v := range messageGroups { + clients[v.GroupID] = append(clients[v.GroupID], ws) + } db := dao.GetDB() if globals.IsProductEnv() { @@ -111,7 +114,6 @@ func (c *EventController) TestWebsocket() { for { //接收客户端的消息 err := ws.ReadJSON(&s) - clients[s.GroupID] = append(clients[s.GroupID], ws) if err != nil { globals.SugarLogger.Debugf("页面可能断开啦 ws.ReadJSON error: %v", err.Error()) index := 0 @@ -130,9 +132,10 @@ func (c *EventController) TestWebsocket() { //接受消息 业务逻辑 msgMap[s.GroupID] = s broadcast <- msgMap - dao.WrapAddIDCULDEntity(s, "") - dao.CreateEntity(db, s) - // fmt.Println("接受到从页面上反馈回来的信息 ", utils.Format4Output(s, false)) + go func() { + dao.WrapAddIDCULDEntity(s, "") + dao.CreateEntity(db, s) + }() } } }