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

157 lines
5.9 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-13 18:20:48 +08:00
"Open_IM/pkg/common/trace_log"
2021-12-29 11:02:55 +08:00
"Open_IM/pkg/utils"
2023-01-13 18:20:48 +08:00
"context"
2023-01-11 16:23:16 +08:00
"gorm.io/gorm"
2021-12-28 15:33:47 +08:00
"time"
2021-05-26 19:32:30 +08:00
)
2023-01-11 16:23:16 +08:00
var FriendRequestDB *gorm.DB
type FriendRequest struct {
FromUserID string `gorm:"column:from_user_id;primary_key;size:64"`
ToUserID string `gorm:"column:to_user_id;primary_key;size:64"`
HandleResult int32 `gorm:"column:handle_result"`
ReqMsg string `gorm:"column:req_msg;size:255"`
CreateTime time.Time `gorm:"column:create_time"`
HandlerUserID string `gorm:"column:handler_user_id;size:64"`
HandleMsg string `gorm:"column:handle_msg;size:255"`
HandleTime time.Time `gorm:"column:handle_time"`
Ex string `gorm:"column:ex;size:1024"`
2023-01-17 14:54:08 +08:00
DB *gorm.DB `gorm:"-"`
2023-01-11 16:23:16 +08:00
}
2023-01-13 18:20:48 +08:00
func NewFriendRequest(db *gorm.DB) *FriendRequest {
2023-01-17 14:54:08 +08:00
var fr FriendRequest
fr.DB = initModel(db, &fr)
return &fr
2023-01-13 18:20:48 +08:00
}
func (f *FriendRequest) Create(ctx context.Context, friends []*FriendRequest) (err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "friends", friends)
}()
2023-01-17 17:31:22 +08:00
return utils.Wrap(f.DB.Create(&friends).Error, "")
2023-01-13 18:20:48 +08:00
}
func (f *FriendRequest) Delete(ctx context.Context, fromUserID, toUserID string) (err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "fromUserID", fromUserID, "toUserID", toUserID)
}()
2023-01-17 17:31:22 +08:00
return utils.Wrap(f.DB.Where("from_user_id = ? and to_user_id = ?", fromUserID, toUserID).Delete(&FriendRequest{}).Error, "")
2023-01-13 18:20:48 +08:00
}
func (f *FriendRequest) UpdateByMap(ctx context.Context, ownerUserID string, args map[string]interface{}) (err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "ownerUserID", ownerUserID, "args", args)
}()
2023-01-17 14:54:08 +08:00
return utils.Wrap(f.DB.Where("owner_user_id = ?", ownerUserID).Updates(args).Error, "")
2023-01-13 18:20:48 +08:00
}
func (f *FriendRequest) Update(ctx context.Context, friends []*FriendRequest) (err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "friends", friends)
}()
2023-01-17 14:54:08 +08:00
return utils.Wrap(f.DB.Updates(&friends).Error, "")
2023-01-13 18:20:48 +08:00
}
func (f *FriendRequest) Find(ctx context.Context, ownerUserID string) (friends []*FriendRequest, err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "ownerUserID", ownerUserID, "friends", friends)
}()
2023-01-17 17:31:22 +08:00
return friends, utils.Wrap(f.DB.Where("owner_user_id = ?", ownerUserID).Find(&friends).Error, "")
2023-01-13 18:20:48 +08:00
}
2023-01-16 15:53:40 +08:00
func (f *FriendRequest) Take(ctx context.Context, fromUserID, toUserID string) (friend *FriendRequest, err error) {
2023-01-13 18:20:48 +08:00
friend = &FriendRequest{}
2023-01-16 15:53:40 +08:00
defer trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "fromUserID", fromUserID, "toUserID", toUserID, "friend", friend)
2023-01-17 17:31:22 +08:00
return friend, utils.Wrap(f.DB.Where("from_user_id = ? and to_user_id", fromUserID, toUserID).Take(friend).Error, "")
2023-01-11 16:23:16 +08:00
}
2021-05-26 19:32:30 +08:00
2023-01-16 15:53:40 +08:00
func (f *FriendRequest) FindToUserID(ctx context.Context, toUserID string) (friends []*FriendRequest, err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "toUserID", toUserID, "friends", friends)
}()
2023-01-17 14:54:08 +08:00
return friends, utils.Wrap(f.DB.Where("to_user_id = ?", toUserID).Find(&friends).Error, "")
2023-01-16 15:53:40 +08:00
}
func (f *FriendRequest) FindFromUserID(ctx context.Context, fromUserID string) (friends []*FriendRequest, err error) {
defer func() {
trace_log.SetCtxDebug(ctx, utils.GetSelfFuncName(), err, "fromUserID", fromUserID, "friends", friends)
}()
2023-01-17 14:54:08 +08:00
return friends, utils.Wrap(f.DB.Where("from_user_id = ?", fromUserID).Find(&friends).Error, "")
2023-01-16 15:53:40 +08:00
}
2021-12-26 18:47:11 +08:00
// who apply to add me
2023-01-04 17:22:55 +08:00
func GetReceivedFriendsApplicationListByUserID(ToUserID string) ([]FriendRequest, error) {
var usersInfo []FriendRequest
2023-01-11 16:23:16 +08:00
err := FriendRequestDB.Table("friend_requests").Where("to_user_id=?", ToUserID).Find(&usersInfo).Error
2021-05-26 19:32:30 +08:00
if err != nil {
return nil, err
}
return usersInfo, nil
}
2023-01-04 17:22:55 +08:00
// I apply to add somebody
func GetSendFriendApplicationListByUserID(FromUserID string) ([]FriendRequest, error) {
var usersInfo []FriendRequest
2023-01-11 16:23:16 +08:00
err := FriendRequestDB.Table("friend_requests").Where("from_user_id=?", FromUserID).Find(&usersInfo).Error
2021-06-28 15:32:26 +08:00
if err != nil {
return nil, err
}
return usersInfo, nil
}
2023-01-04 17:22:55 +08:00
// FromUserId apply to add ToUserID
func GetFriendApplicationByBothUserID(FromUserID, ToUserID string) (*FriendRequest, error) {
var friendRequest FriendRequest
2023-01-11 16:23:16 +08:00
err := FriendRequestDB.Table("friend_requests").Where("from_user_id=? and to_user_id=?", FromUserID, ToUserID).Take(&friendRequest).Error
2021-05-26 19:32:30 +08:00
if err != nil {
return nil, err
}
return &friendRequest, nil
}
2023-01-04 17:22:55 +08:00
func UpdateFriendApplication(friendRequest *FriendRequest) error {
2021-12-28 11:57:12 +08:00
friendRequest.CreateTime = time.Now()
2023-01-11 16:23:16 +08:00
return FriendRequestDB.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
2022-07-14 12:08:28 +08:00
friendRequest.FromUserID, friendRequest.ToUserID).Updates(&friendRequest).Error
2021-05-26 19:32:30 +08:00
}
2021-12-28 11:57:12 +08:00
2023-01-04 17:22:55 +08:00
func InsertFriendApplication(friendRequest *FriendRequest, args map[string]interface{}) error {
2023-01-11 16:23:16 +08:00
if err := FriendRequestDB.Table("friend_requests").Create(friendRequest).Error; err == nil {
2022-01-19 18:02:57 +08:00
return nil
}
2022-02-11 20:31:57 +08:00
//t := dbConn.Debug().Table("friend_requests").Where("from_user_id = ? and to_user_id = ?", friendRequest.FromUserID, friendRequest.ToUserID).Select("*").Updates(*friendRequest)
//if t.RowsAffected == 0 {
// return utils.Wrap(errors.New("RowsAffected == 0"), "no update")
//}
//return utils.Wrap(t.Error, "")
friendRequest.CreateTime = time.Now()
args["create_time"] = friendRequest.CreateTime
2023-01-11 16:23:16 +08:00
u := FriendRequestDB.Model(friendRequest).Updates(args)
2022-02-11 20:31:57 +08:00
//u := dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
// friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest)
//u := dbConn.Table("friend_requests").Where("from_user_id=? and to_user_id=?",
// friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest)
if u.RowsAffected != 0 {
return nil
2021-12-28 11:57:12 +08:00
}
2022-02-11 19:34:18 +08:00
2022-02-11 20:31:57 +08:00
if friendRequest.CreateTime.Unix() < 0 {
friendRequest.CreateTime = time.Now()
}
if friendRequest.HandleTime.Unix() < 0 {
friendRequest.HandleTime = utils.UnixSecondToTime(0)
}
2023-01-11 16:23:16 +08:00
err := FriendRequestDB.Table("friend_requests").Create(friendRequest).Error
2022-02-11 20:31:57 +08:00
if err != nil {
return err
}
return nil
2021-12-28 11:57:12 +08:00
}