Files
open-im-server/pkg/common/db/relation/group_model.go
T

99 lines
2.7 KiB
Go
Raw Normal View History

2023-01-28 13:19:36 +08:00
package relation
2021-05-26 19:32:30 +08:00
2021-06-28 15:32:26 +08:00
import (
2022-09-02 02:01:42 +08:00
"Open_IM/pkg/common/constant"
2022-01-15 15:25:12 +08:00
"Open_IM/pkg/utils"
2022-02-07 19:42:09 +08:00
"fmt"
2022-09-02 02:01:42 +08:00
2021-06-28 15:32:26 +08:00
"time"
)
2021-05-26 19:32:30 +08:00
2023-01-04 17:22:55 +08:00
func InsertIntoGroup(groupInfo Group) error {
2021-12-26 18:47:11 +08:00
if groupInfo.GroupName == "" {
groupInfo.GroupName = "Group Chat"
2021-05-26 19:32:30 +08:00
}
2021-12-26 18:47:11 +08:00
groupInfo.CreateTime = time.Now()
2022-07-14 11:50:58 +08:00
if groupInfo.NotificationUpdateTime.Unix() < 0 {
groupInfo.NotificationUpdateTime = utils.UnixSecondToTime(0)
}
2023-01-11 16:23:16 +08:00
err := GroupDB.Create(groupInfo).Error
2021-05-26 19:32:30 +08:00
if err != nil {
return err
}
return nil
}
2023-01-04 17:22:55 +08:00
func TakeGroupInfoByGroupID(groupID string) (*Group, error) {
var groupInfo Group
2023-01-11 16:23:16 +08:00
err := GroupDB.Where("group_id=?", groupID).Take(&groupInfo).Error
2023-01-04 10:12:20 +08:00
return &groupInfo, err
}
2023-01-04 17:22:55 +08:00
func GetGroupInfoByGroupID(groupID string) (*Group, error) {
var groupInfo Group
2023-01-11 16:23:16 +08:00
err := GroupDB.Where("group_id=?", groupID).Take(&groupInfo).Error
2022-08-12 18:37:51 +08:00
return &groupInfo, err
2021-05-26 19:32:30 +08:00
}
2023-01-04 17:22:55 +08:00
func SetGroupInfo(groupInfo Group) error {
2023-01-11 16:23:16 +08:00
return GroupDB.Where("group_id=?", groupInfo.GroupID).Updates(&groupInfo).Error
2021-05-26 19:32:30 +08:00
}
2022-01-25 19:18:04 +08:00
2022-08-12 18:37:51 +08:00
type GroupWithNum struct {
2023-01-04 17:22:55 +08:00
Group
2022-08-12 18:37:51 +08:00
MemberCount int `gorm:"column:num"`
}
2022-09-13 15:27:00 +08:00
func GetGroupsByName(groupName string, pageNumber, showNumber int32) ([]GroupWithNum, int64, error) {
2022-08-12 18:37:51 +08:00
var groups []GroupWithNum
2022-09-13 15:27:00 +08:00
var count int64
2023-01-11 16:23:16 +08:00
sql := GroupDB.Select("groups.*, (select count(*) from group_members where group_members.group_id=groups.group_id) as num").
2022-09-13 15:27:00 +08:00
Where(" name like ? and status != ?", fmt.Sprintf("%%%s%%", groupName), constant.GroupStatusDismissed)
if err := sql.Count(&count).Error; err != nil {
return nil, 0, err
}
err := sql.Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&groups).Error
return groups, count, err
2022-01-25 19:18:04 +08:00
}
2022-08-12 18:37:51 +08:00
func GetGroups(pageNumber, showNumber int) ([]GroupWithNum, error) {
var groups []GroupWithNum
2023-01-11 16:23:16 +08:00
if err := GroupDB.Select("groups.*, (select count(*) from group_members where group_members.group_id=groups.group_id) as num").
2022-08-12 18:37:51 +08:00
Limit(showNumber).Offset(showNumber * (pageNumber - 1)).Find(&groups).Error; err != nil {
2022-01-25 19:18:04 +08:00
return groups, err
}
2022-01-26 18:43:01 +08:00
return groups, nil
}
2022-01-27 18:31:31 +08:00
func OperateGroupStatus(groupId string, groupStatus int32) error {
2023-01-04 17:22:55 +08:00
group := Group{
2022-01-27 18:31:31 +08:00
GroupID: groupId,
2022-02-28 17:20:40 +08:00
Status: groupStatus,
2022-01-27 18:31:31 +08:00
}
2022-01-26 18:43:01 +08:00
if err := SetGroupInfo(group); err != nil {
return err
}
return nil
}
2023-01-04 17:22:55 +08:00
func GetGroupsCountNum(group Group) (int32, error) {
2022-07-14 12:08:28 +08:00
var count int64
2023-01-11 16:23:16 +08:00
if err := GroupDB.Where(" name like ? ", fmt.Sprintf("%%%s%%", group.GroupName)).Count(&count).Error; err != nil {
2022-01-27 01:08:02 +08:00
return 0, err
}
2022-07-14 12:08:28 +08:00
return int32(count), nil
2022-01-27 01:08:02 +08:00
}
2022-01-27 18:31:31 +08:00
2022-03-29 18:36:24 +08:00
func UpdateGroupInfoDefaultZero(groupID string, args map[string]interface{}) error {
2023-01-11 16:23:16 +08:00
return GroupDB.Where("group_id = ? ", groupID).Updates(args).Error
2022-03-29 09:34:45 +08:00
}
2022-04-29 18:53:33 +08:00
2022-08-09 16:38:33 +08:00
func GetGroupIDListByGroupType(groupType int) ([]string, error) {
var groupIDList []string
2023-01-11 16:23:16 +08:00
if err := GroupDB.Where("group_type = ? ", groupType).Pluck("group_id", &groupIDList).Error; err != nil {
2022-08-09 16:38:33 +08:00
return nil, err
}
return groupIDList, nil
}