package immessageser import ( "91porn-server/common/log" "91porn-server/common/stderr" "91porn-server/models/cache/immessagedata" "91porn-server/models/commod" "91porn-server/models/v/imgroupmembermod" "91porn-server/models/v/immessagemod" "time" "go.mongodb.org/mongo-driver/bson" ) type AppQueryListReq struct { GroupId int64 `json:"groupId" form:"groupId" binding:"required"` commod.Page } type AppListRes struct { Total int64 `json:"total"` HasNext bool `json:"hasNext"` List []*immessagemod.ImMessageInfo `json:"list"` } // GetList 获取列表 func (p *AppQueryListReq) GetList() AppListRes { var res AppListRes var err error filter := bson.M{ "groupId": p.GroupId, } sort := bson.D{{"_id", -1}} // 获取列表 var data []immessagemod.ImMessage data, res.Total, res.HasNext, err = immessagemod.GetList(filter, int64(p.Skip()), int64(p.Limit()), sort) if err != nil { log.Error("获取im消息列表数据错误", log.Any("Params", *p), log.E(err)) return res } res.List = immessagedata.FormatAppDataList(data) return res } type SendReq struct { GroupId int64 `json:"groupId" form:"groupId" binding:"required"` // 群组id Content string `json:"content" form:"content"` // 消息内容 Image string `json:"image" form:"image"` // 图片 } // Create 发布数据 func (p *SendReq) Create(uid uint64) error { // 判断是否是群成员 member, err := imgroupmembermod.GetInfoByCond(bson.M{"groupId": p.GroupId, "uid": uid}) if err != nil { log.Error("发送群组消息失败", log.Any("params", *p), log.E(err)) return stderr.NewCustomErr(stderr.Failure, "发送失败") } if member.ID.IsZero() || member.Status == 2 { return stderr.NewCustomErr(stderr.Failure, "发送失败,您还未加入群组") } if member.Status == 0 { return stderr.NewCustomErr(stderr.Failure, "发送失败,您已经被该群禁言") } data := immessagemod.ImMessage{ GroupId: p.GroupId, Uid: uid, Content: p.Content, Image: p.Image, CreatedAt: time.Now(), } // 创建数据 if _, err = immessagemod.Insert(nil, data); err != nil { return err } return nil }