group rpc

This commit is contained in:
wangchuxiao
2022-01-26 18:43:01 +08:00
parent 3f911ab437
commit b992faa468
16 changed files with 1015 additions and 447 deletions
+21
View File
@@ -107,6 +107,13 @@ const (
IsUnreadCount = "unreadCount"
IsConversationUpdate = "conversationUpdate"
IsSenderSync = "senderSync"
//GroupStatus
GroupOk = 0
GroupBanChat = 1
GroupDisband = 2
GroupBaned = 3
GroupBanPrivateChat = 4
)
var ContentType2PushContent = map[int64]string{
@@ -139,3 +146,17 @@ const (
)
const FriendAcceptTip = "You have successfully become friends, so start chatting"
func GroupIsBanChat(status int32) bool {
if status != GroupBanChat {
return false
}
return true
}
func GroupIsBanPrivateChat(status int32) bool {
if status != GroupBanPrivateChat {
return false
}
return true
}
@@ -1,6 +1,7 @@
package im_mysql_model
import (
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
"Open_IM/pkg/utils"
"time"
@@ -53,19 +54,20 @@ func SetGroupInfo(groupInfo db.Group) error {
if err != nil {
return err
}
dbConn.LogMode(true)
err = dbConn.Table("groups").Where("group_id=?", groupInfo.GroupID).Update(&groupInfo).Error
return err
}
func GetGroupByName(groupName string) (db.Group, error) {
func GetGroupsByName(groupName string, pageNumber, showNumber int32) ([]db.Group, error) {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
var group db.Group
var groups []db.Group
if err != nil {
return group, err
return groups, err
}
dbConn.LogMode(true)
err = dbConn.Table("groups").Where("group_id=?", groupName).Find(&group).Error
return group, err
err = dbConn.Table("groups").Where("name=?", groupName).Limit(showNumber).Offset(showNumber*(pageNumber-1)).Find(&groups).Error
return groups, err
}
func GetGroups(pageNumber, showNumber int) ([]db.Group, error) {
@@ -75,8 +77,58 @@ func GetGroups(pageNumber, showNumber int) ([]db.Group, error) {
return groups, err
}
dbConn.LogMode(true)
err = dbConn.Table("groups").Limit(showNumber).Offset(showNumber*(pageNumber-1)).Find(&groups).Error
if err != nil {
if err = dbConn.Table("groups").Limit(showNumber).Offset(showNumber*(pageNumber-1)).Find(&groups).Error; err != nil {
return groups, err
}
return groups, nil
}
func BanGroupChat(groupId string) error {
var group db.Group
group.Status = constant.GroupBanChat
if err := SetGroupInfo(group); err != nil {
return err
}
return nil
}
func BanPrivateChat(groupId string) error {
var group db.Group
group.Status = constant.GroupBanPrivateChat
if err := SetGroupInfo(group); err != nil {
return err
}
return nil
}
func DeleteGroup(groupId string) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(true)
var group db.Group
if err := dbConn.Table("groups").Where("").Delete(&group).Error; err != nil {
return err
}
return nil
}
func SetGroupMaster(userId, groupId string) error {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
}
dbConn.LogMode(true)
groupMember := db.GroupMember{
UserID: userId,
GroupID: groupId,
}
updateInfo := db.GroupMember{
RoleLevel:constant.GroupOwner,
}
if err := dbConn.Find(&groupMember).Update(updateInfo).Error; err != nil {
return err
}
return nil
}
@@ -180,6 +180,10 @@ func UserIsBlock(userId string) (bool, error) {
}
func BlockUser(userId, endDisableTime string) error {
user, err := GetUserByUserID(userId)
if err != nil || user.UserID=="" {
return err
}
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
if err != nil {
return err
@@ -191,18 +195,18 @@ func BlockUser(userId, endDisableTime string) error {
if end.Before(time.Now()) {
return constant.ErrDB
}
var user db.BlackList
dbConn.Table("black_list").Where("uid=?", userId).First(&user)
if user.UserId != "" {
dbConn.Model(&user).Where("uid=?", user.UserId).Update("end_disable_time", end)
var blockUser db.BlackList
dbConn.Table("black_list").Where("uid=?", userId).First(&blockUser)
if blockUser.UserId != "" {
dbConn.Model(&blockUser).Where("uid=?", blockUser.UserId).Update("end_disable_time", end)
return nil
}
user = db.BlackList{
blockUser = db.BlackList{
UserId: userId,
BeginDisableTime: time.Now(),
EndDisableTime: end,
}
result := dbConn.Create(&user)
result := dbConn.Create(&blockUser)
return result.Error
}
@@ -212,38 +216,64 @@ func UnBlockUser(userId string) error {
return err
}
dbConn.LogMode(true)
fmt.Println(userId)
result := dbConn.Where("uid=?", userId).Delete(&db.BlackList{})
return result.Error
}
func GetBlockUsersID(showNumber, pageNumber int32) ([]string, error) {
type BlockUserInfo struct {
User db.Users
BeginDisableTime time.Time
EndDisableTime time.Time
}
func GetBlockUserById(userId string) (BlockUserInfo, error) {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
var blockUsers []db.BlackList
var blockUserIds []string
var blockUserInfo BlockUserInfo
blockUser := db.BlackList{
UserId:userId,
}
if err != nil {
return blockUserIds, err
return blockUserInfo, err
}
if err = dbConn.Find(&blockUser).Error; err != nil{
return blockUserInfo, err
}
user := db.Users{
UserID:blockUser.UserId,
}
if err := dbConn.Find(&user).Error; err != nil {
return blockUserInfo, err
}
blockUserInfo.User.UserID = user.UserID
blockUserInfo.User.FaceURL = user.UserID
blockUserInfo.User.Nickname = user.Nickname
return blockUserInfo, nil
}
func GetBlockUsers(showNumber, pageNumber int32) ([]BlockUserInfo, error) {
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
var blockUserInfos []BlockUserInfo
var blockUsers []db.BlackList
if err != nil {
return blockUserInfos, err
}
dbConn.LogMode(true)
err = dbConn.Limit(showNumber).Offset(showNumber*(pageNumber-1)).Find(&blockUsers).Error
if err != nil {
return blockUserIds, err
for _, blockUser := range blockUsers {
var user db.Users
if err := dbConn.Table("users").Where("user_id=?", blockUser.UserId).First(&user).Error; err == nil{
blockUserInfos = append(blockUserInfos, BlockUserInfo{
User: db.Users{
UserID: user.UserID,
Nickname: user.Nickname,
FaceURL: user.FaceURL,
},
BeginDisableTime: blockUser.BeginDisableTime,
EndDisableTime: blockUser.EndDisableTime,
})
}
}
for _, v := range blockUsers {
blockUserIds = append(blockUserIds, v.UserId)
}
return blockUserIds, err
}
func GetBlockUsers(userIds []string) ([]db.Users, error){
dbConn, err := db.DB.MysqlDB.DefaultGormDB()
var blockUsers []db.Users
if err != nil {
return blockUsers, err
}
dbConn.LogMode(true)
dbConn.Find(&blockUsers,userIds)
return blockUsers, err
return blockUserInfos, nil
}
func GetBlockUsersNumCount() (int, error) {