81 lines
2.2 KiB
Go
Executable File
81 lines
2.2 KiB
Go
Executable File
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
|
|
}
|