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

205 lines
5.1 KiB
Go
Raw Normal View History

2023-01-28 13:19:36 +08:00
package relation
2021-05-26 19:32:30 +08:00
import (
2023-01-16 20:14:26 +08:00
"Open_IM/pkg/common/config"
2021-12-28 21:17:41 +08:00
"Open_IM/pkg/common/constant"
"Open_IM/pkg/utils"
"fmt"
2023-01-13 14:35:58 +08:00
"gorm.io/gorm"
2021-05-26 19:32:30 +08:00
"time"
)
2023-01-16 20:14:26 +08:00
func InitManager() {
for k, v := range config.Config.Manager.AppManagerUid {
_, err := GetUserByUserID(v)
if err != nil {
} else {
continue
}
var appMgr User
appMgr.UserID = v
if k == 0 {
appMgr.Nickname = config.Config.Manager.AppSysNotificationName
} else {
appMgr.Nickname = "AppManager" + utils.IntToString(k+1)
}
appMgr.AppMangerLevel = constant.AppAdmin
err = UserRegister(appMgr)
if err != nil {
fmt.Println("AppManager insert error ", err.Error(), appMgr)
} else {
fmt.Println("AppManager insert ", appMgr)
}
}
2023-01-13 14:35:58 +08:00
}
2023-01-04 17:22:55 +08:00
func UserRegister(user User) error {
2021-12-27 16:48:05 +08:00
user.CreateTime = time.Now()
2021-12-28 21:17:41 +08:00
if user.AppMangerLevel == 0 {
user.AppMangerLevel = constant.AppOrdinaryUsers
}
2021-12-29 09:36:48 +08:00
if user.Birth.Unix() < 0 {
user.Birth = utils.UnixSecondToTime(0)
}
2023-01-11 16:23:16 +08:00
err := UserDB.Table("users").Create(&user).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 GetAllUser() ([]User, error) {
var userList []User
2023-01-11 16:23:16 +08:00
err := UserDB.Table("users").Find(&userList).Error
2022-04-28 10:46:21 +08:00
return userList, err
}
2023-01-04 17:22:55 +08:00
func TakeUserByUserID(userID string) (*User, error) {
var user User
2023-01-11 16:23:16 +08:00
err := UserDB.Table("users").Where("user_id=?", userID).Take(&user).Error
2023-01-04 10:12:20 +08:00
if err != nil {
return nil, err
}
return &user, nil
}
2023-01-04 17:22:55 +08:00
func GetUserByUserID(userID string) (*User, error) {
var user User
2023-01-11 16:23:16 +08:00
err := UserDB.Table("users").Where("user_id=?", userID).Take(&user).Error
2021-05-26 19:32:30 +08:00
if err != nil {
return nil, err
}
return &user, nil
}
2023-01-04 17:22:55 +08:00
func GetUsersByUserIDList(userIDList []string) ([]*User, error) {
var userList []*User
2023-01-11 16:23:16 +08:00
err := UserDB.Table("users").Where("user_id in (?)", userIDList).Find(&userList).Error
2022-08-12 18:37:51 +08:00
return userList, err
}
2022-03-25 18:46:27 +08:00
func GetUserNameByUserID(userID string) (string, error) {
2023-01-04 17:22:55 +08:00
var user User
2023-01-11 16:23:16 +08:00
err := UserDB.Table("users").Select("name").Where("user_id=?", userID).First(&user).Error
2022-03-25 18:46:27 +08:00
if err != nil {
return "", err
}
2022-03-28 16:59:15 +08:00
return user.Nickname, nil
2022-03-25 18:46:27 +08:00
}
2023-01-04 17:22:55 +08:00
func UpdateUserInfo(user User) error {
2023-01-11 16:23:16 +08:00
return UserDB.Where("user_id=?", user.UserID).Updates(&user).Error
2022-06-16 12:41:31 +08:00
}
2023-01-04 17:22:55 +08:00
func UpdateUserInfoByMap(user User, m map[string]interface{}) error {
2023-01-11 16:23:16 +08:00
err := UserDB.Where("user_id=?", user.UserID).Updates(m).Error
2021-12-27 16:48:05 +08:00
return err
2021-05-26 19:32:30 +08:00
}
2021-12-17 14:28:43 +08:00
2021-12-27 16:48:05 +08:00
func SelectAllUserID() ([]string, error) {
var resultArr []string
2023-01-11 16:23:16 +08:00
err := UserDB.Pluck("user_id", &resultArr).Error
2021-12-17 14:28:43 +08:00
if err != nil {
2021-12-27 16:48:05 +08:00
return nil, err
2021-12-17 14:28:43 +08:00
}
2021-12-27 16:48:05 +08:00
return resultArr, nil
2021-12-17 14:28:43 +08:00
}
2021-09-26 14:26:45 +08:00
2021-12-27 16:48:05 +08:00
func SelectSomeUserID(userIDList []string) ([]string, error) {
2021-12-29 18:09:55 +08:00
var resultArr []string
2023-01-11 16:23:16 +08:00
err := UserDB.Pluck("user_id", &resultArr).Error
2021-09-26 14:26:45 +08:00
if err != nil {
2021-12-27 16:48:05 +08:00
return nil, err
2021-12-17 14:28:43 +08:00
}
2021-12-29 18:09:55 +08:00
return resultArr, nil
2021-12-17 14:28:43 +08:00
}
2022-01-24 01:40:49 +08:00
2023-01-04 17:22:55 +08:00
func GetUsers(showNumber, pageNumber int32) ([]User, error) {
var users []User
2023-01-11 16:23:16 +08:00
err := UserDB.Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error
2022-01-24 01:40:49 +08:00
if err != nil {
return users, err
}
2022-01-25 19:18:04 +08:00
return users, err
}
2022-10-28 15:42:37 +08:00
func AddUser(userID string, phoneNumber string, name string, email string, gender int32, faceURL string, birth string) error {
_birth, err := utils.TimeStringToTime(birth)
if err != nil {
return err
2022-08-14 22:53:41 +08:00
}
2023-01-04 17:22:55 +08:00
user := User{
2022-09-02 02:01:42 +08:00
UserID: userID,
Nickname: name,
FaceURL: faceURL,
Gender: gender,
PhoneNumber: phoneNumber,
Birth: _birth,
Email: email,
Ex: "",
CreateTime: time.Now(),
2022-01-25 19:18:04 +08:00
}
2023-01-11 16:23:16 +08:00
result := UserDB.Create(&user)
2022-01-27 01:08:02 +08:00
return result.Error
2022-01-25 19:18:04 +08:00
}
2022-08-26 17:51:01 +08:00
func UsersIsBlock(userIDList []string) (inBlockUserIDList []string, err error) {
2023-01-11 16:23:16 +08:00
err = BlackListDB.Where("uid in (?) and end_disable_time > now()", userIDList).Pluck("uid", &inBlockUserIDList).Error
2022-08-26 17:51:01 +08:00
return inBlockUserIDList, err
2022-01-25 19:18:04 +08:00
}
2022-01-26 18:43:01 +08:00
type BlockUserInfo struct {
2023-01-04 17:22:55 +08:00
User User
2022-01-26 18:43:01 +08:00
BeginDisableTime time.Time
2022-01-27 01:08:02 +08:00
EndDisableTime time.Time
2022-01-26 18:43:01 +08:00
}
2023-01-04 17:22:55 +08:00
func GetUserByName(userName string, showNumber, pageNumber int32) ([]User, error) {
var users []User
2023-01-11 16:23:16 +08:00
err := UserDB.Where(" name like ?", fmt.Sprintf("%%%s%%", userName)).Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error
2022-02-08 20:24:59 +08:00
return users, err
}
2023-01-04 17:22:55 +08:00
func GetUsersByNameAndID(content string, showNumber, pageNumber int32) ([]User, int64, error) {
var users []User
2022-09-06 20:35:32 +08:00
var count int64
2023-01-11 16:23:16 +08:00
db := UserDB.Where(" name like ? or user_id = ? ", fmt.Sprintf("%%%s%%", content), content)
2022-09-06 20:35:32 +08:00
if err := db.Count(&count).Error; err != nil {
return nil, 0, err
}
err := db.Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error
return users, count, err
}
2022-09-19 11:52:03 +08:00
func GetUserIDsByEmailAndID(phoneNumber, email string) ([]string, error) {
if phoneNumber == "" && email == "" {
return nil, nil
}
2023-01-11 16:23:16 +08:00
db := UserDB
2022-09-19 11:52:03 +08:00
if phoneNumber != "" {
db = db.Where("phone_number = ? ", phoneNumber)
}
if email != "" {
db = db.Where("email = ? ", email)
}
var userIDList []string
err := db.Pluck("user_id", &userIDList).Error
return userIDList, err
}
2022-08-30 23:23:53 +08:00
func GetUsersCount(userName string) (int32, error) {
2022-07-14 12:08:28 +08:00
var count int64
2023-01-11 16:23:16 +08:00
if err := UserDB.Where(" name like ? ", fmt.Sprintf("%%%s%%", userName)).Count(&count).Error; err != nil {
2022-02-08 20:24:59 +08:00
return 0, err
}
2022-07-14 12:08:28 +08:00
return int32(count), nil
2022-02-08 20:24:59 +08:00
}
func GetBlockUsersNumCount() (int32, error) {
2022-07-14 12:08:28 +08:00
var count int64
2023-01-11 16:23:16 +08:00
if err := BlackListDB.Count(&count).Error; err != nil {
2022-01-25 19:18:04 +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
}