mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-12-03 10:52:33 +08:00
fix bugs
This commit is contained in:
parent
0c7f7e32fe
commit
12709dade3
@ -77,6 +77,11 @@ func NewGinRouter(discov discoveryregistry.SvcDiscoveryRegistry, rdb redis.Unive
|
|||||||
userRouterGroup.POST("/subscribe_users_status", ParseToken, u.SubscriberStatus)
|
userRouterGroup.POST("/subscribe_users_status", ParseToken, u.SubscriberStatus)
|
||||||
userRouterGroup.POST("/get_users_status", ParseToken, u.GetUserStatus)
|
userRouterGroup.POST("/get_users_status", ParseToken, u.GetUserStatus)
|
||||||
userRouterGroup.POST("/get_subscribe_users_status", ParseToken, u.GetSubscribeUsersStatus)
|
userRouterGroup.POST("/get_subscribe_users_status", ParseToken, u.GetSubscribeUsersStatus)
|
||||||
|
|
||||||
|
userRouterGroup.POST("/process_user_command_add", ParseToken, u.ProcessUserCommandAdd)
|
||||||
|
userRouterGroup.POST("/process_user_command_delete", ParseToken, u.ProcessUserCommandDelete)
|
||||||
|
userRouterGroup.POST("/process_user_command_update", ParseToken, u.ProcessUserCommandUpdate)
|
||||||
|
userRouterGroup.POST("/process_user_command_get", ParseToken, u.ProcessUserCommandGet)
|
||||||
}
|
}
|
||||||
// friend routing group
|
// friend routing group
|
||||||
friendRouterGroup := r.Group("/friend", ParseToken)
|
friendRouterGroup := r.Group("/friend", ParseToken)
|
||||||
|
|||||||
@ -200,4 +200,22 @@ func (u *UserApi) GetSubscribeUsersStatus(c *gin.Context) {
|
|||||||
a2r.Call(user.UserClient.GetSubscribeUsersStatus, u.Client, c)
|
a2r.Call(user.UserClient.GetSubscribeUsersStatus, u.Client, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get
|
// ProcessUserCommandAdd user general function add
|
||||||
|
func (u *UserApi) ProcessUserCommandAdd(c *gin.Context) {
|
||||||
|
a2r.Call(user.UserClient.ProcessUserCommandAdd, u.Client, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandDelete user general function delete
|
||||||
|
func (u *UserApi) ProcessUserCommandDelete(c *gin.Context) {
|
||||||
|
a2r.Call(user.UserClient.ProcessUserCommandDelete, u.Client, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandUpdate user general function update
|
||||||
|
func (u *UserApi) ProcessUserCommandUpdate(c *gin.Context) {
|
||||||
|
a2r.Call(user.UserClient.ProcessUserCommandUpdate, u.Client, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandGet user general function get
|
||||||
|
func (u *UserApi) ProcessUserCommandGet(c *gin.Context) {
|
||||||
|
a2r.Call(user.UserClient.ProcessUserCommandGet, u.Client, c)
|
||||||
|
}
|
||||||
|
|||||||
@ -200,6 +200,5 @@ func CallbackAfterRevokeMsg(ctx context.Context, req *pbchat.RevokeMsgReq) error
|
|||||||
if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackAfterRevokeMsg); err != nil {
|
if err := http.CallBackPostReturn(ctx, config.Config.Callback.CallbackUrl, callbackReq, resp, config.Config.Callback.CallbackAfterRevokeMsg); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
utils.StructFieldNotNilReplace(req, resp)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@ -334,3 +334,48 @@ func (s *userServer) GetSubscribeUsersStatus(ctx context.Context,
|
|||||||
}
|
}
|
||||||
return &pbuser.GetSubscribeUsersStatusResp{StatusList: onlineStatusList}, nil
|
return &pbuser.GetSubscribeUsersStatusResp{StatusList: onlineStatusList}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandAdd user general function add
|
||||||
|
func (s *userServer) ProcessUserCommandAdd(ctx context.Context, req *pbuser.ProcessUserCommandAddReq) (*pbuser.ProcessUserCommandAddResp, error) {
|
||||||
|
// Assuming you have a method in s.UserDatabase to add a user command
|
||||||
|
err := s.UserDatabase.AddUserCommand(ctx, req.UserID, req.Type, req.Uuid, req.Value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbuser.ProcessUserCommandAddResp{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandDelete user general function delete
|
||||||
|
func (s *userServer) ProcessUserCommandDelete(ctx context.Context, req *pbuser.ProcessUserCommandDeleteReq) (*pbuser.ProcessUserCommandDeleteResp, error) {
|
||||||
|
// Assuming you have a method in s.UserDatabase to delete a user command
|
||||||
|
err := s.UserDatabase.DeleteUserCommand(ctx, req.UserID, req.Type, req.Uuid)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbuser.ProcessUserCommandDeleteResp{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandUpdate user general function update
|
||||||
|
func (s *userServer) ProcessUserCommandUpdate(ctx context.Context, req *pbuser.ProcessUserCommandUpdateReq) (*pbuser.ProcessUserCommandUpdateResp, error) {
|
||||||
|
// Assuming you have a method in s.UserDatabase to update a user command
|
||||||
|
err := s.UserDatabase.UpdateUserCommand(ctx, req.UserID, req.Type, req.Uuid, req.Value)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &pbuser.ProcessUserCommandUpdateResp{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ProcessUserCommandGet user general function get
|
||||||
|
func (s *userServer) ProcessUserCommandGet(ctx context.Context, req *pbuser.ProcessUserCommandGetReq) (*pbuser.ProcessUserCommandGetResp, error) {
|
||||||
|
// Fetch user commands from the database
|
||||||
|
commands, err := s.UserDatabase.GetUserCommands(ctx, req.UserID, req.Type)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// The commands variable is already a map[string]string, so you can directly return it
|
||||||
|
return &pbuser.ProcessUserCommandGetResp{UuidValue: commands}, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -68,6 +68,12 @@ type UserDatabase interface {
|
|||||||
GetUserStatus(ctx context.Context, userIDs []string) ([]*user.OnlineStatus, error)
|
GetUserStatus(ctx context.Context, userIDs []string) ([]*user.OnlineStatus, error)
|
||||||
// SetUserStatus Set the user status and store the user status in redis
|
// SetUserStatus Set the user status and store the user status in redis
|
||||||
SetUserStatus(ctx context.Context, userID string, status, platformID int32) error
|
SetUserStatus(ctx context.Context, userID string, status, platformID int32) error
|
||||||
|
|
||||||
|
//CRUD user command
|
||||||
|
AddUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error
|
||||||
|
DeleteUserCommand(ctx context.Context, userID string, Type int32, UUID string) error
|
||||||
|
UpdateUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error
|
||||||
|
GetUserCommands(ctx context.Context, userID string, Type int32) (map[string]string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type userDatabase struct {
|
type userDatabase struct {
|
||||||
@ -227,3 +233,16 @@ func (u *userDatabase) GetUserStatus(ctx context.Context, userIDs []string) ([]*
|
|||||||
func (u *userDatabase) SetUserStatus(ctx context.Context, userID string, status, platformID int32) error {
|
func (u *userDatabase) SetUserStatus(ctx context.Context, userID string, status, platformID int32) error {
|
||||||
return u.cache.SetUserStatus(ctx, userID, status, platformID)
|
return u.cache.SetUserStatus(ctx, userID, status, platformID)
|
||||||
}
|
}
|
||||||
|
func (u *userDatabase) AddUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error {
|
||||||
|
return u.userDB.AddUserCommand(ctx, userID, Type, UUID, value)
|
||||||
|
}
|
||||||
|
func (u *userDatabase) DeleteUserCommand(ctx context.Context, userID string, Type int32, UUID string) error {
|
||||||
|
return u.userDB.DeleteUserCommand(ctx, userID, Type, UUID)
|
||||||
|
}
|
||||||
|
func (u *userDatabase) UpdateUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error {
|
||||||
|
return u.userDB.UpdateUserCommand(ctx, userID, Type, UUID, value)
|
||||||
|
}
|
||||||
|
func (u *userDatabase) GetUserCommands(ctx context.Context, userID string, Type int32) (map[string]string, error) {
|
||||||
|
commands, err := u.userDB.GetUserCommands(ctx, userID, Type)
|
||||||
|
return commands, err
|
||||||
|
}
|
||||||
|
|||||||
@ -73,6 +73,67 @@ func (u *UserMgo) CountTotal(ctx context.Context, before *time.Time) (count int6
|
|||||||
return mgoutil.Count(ctx, u.coll, bson.M{"create_time": bson.M{"$lt": before}})
|
return mgoutil.Count(ctx, u.coll, bson.M{"create_time": bson.M{"$lt": before}})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UserCommand struct {
|
||||||
|
UserID string `bson:"userID"`
|
||||||
|
Type int32 `bson:"type"`
|
||||||
|
Commands map[string]string `bson:"commands"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *UserMgo) AddUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error {
|
||||||
|
collection := u.coll.Database().Collection("userCommands")
|
||||||
|
|
||||||
|
filter := bson.M{"userID": userID, "type": Type}
|
||||||
|
update := bson.M{"$set": bson.M{"commands." + UUID: value}}
|
||||||
|
options := options.Update().SetUpsert(true)
|
||||||
|
|
||||||
|
_, err := collection.UpdateOne(ctx, filter, update, options)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (u *UserMgo) DeleteUserCommand(ctx context.Context, userID string, Type int32, UUID string) error {
|
||||||
|
collection := u.coll.Database().Collection("userCommands")
|
||||||
|
|
||||||
|
filter := bson.M{"userID": userID, "type": Type}
|
||||||
|
update := bson.M{"$unset": bson.M{"commands." + UUID: ""}}
|
||||||
|
|
||||||
|
_, err := collection.UpdateOne(ctx, filter, update)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (u *UserMgo) UpdateUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error {
|
||||||
|
collection := u.coll.Database().Collection("userCommands")
|
||||||
|
|
||||||
|
// Create a filter to identify the document
|
||||||
|
filter := bson.M{"userID": userID, "type": Type}
|
||||||
|
|
||||||
|
// Create an update statement to set the new value for the command
|
||||||
|
update := bson.M{"$set": bson.M{"commands." + UUID: value}}
|
||||||
|
|
||||||
|
// Perform the update operation
|
||||||
|
_, err := collection.UpdateOne(ctx, filter, update)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (u *UserMgo) GetUserCommands(ctx context.Context, userID string, Type int32) (map[string]string, error) {
|
||||||
|
collection := u.coll.Database().Collection("userCommands")
|
||||||
|
|
||||||
|
filter := bson.M{"userID": userID, "type": Type}
|
||||||
|
var result UserCommand
|
||||||
|
err := collection.FindOne(ctx, filter).Decode(&result)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return result.Commands, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (u *UserMgo) CountRangeEverydayTotal(ctx context.Context, start time.Time, end time.Time) (map[string]int64, error) {
|
func (u *UserMgo) CountRangeEverydayTotal(ctx context.Context, start time.Time, end time.Time) (map[string]int64, error) {
|
||||||
pipeline := bson.A{
|
pipeline := bson.A{
|
||||||
bson.M{
|
bson.M{
|
||||||
|
|||||||
@ -60,4 +60,9 @@ type UserModelInterface interface {
|
|||||||
CountTotal(ctx context.Context, before *time.Time) (count int64, err error)
|
CountTotal(ctx context.Context, before *time.Time) (count int64, err error)
|
||||||
// 获取范围内用户增量
|
// 获取范围内用户增量
|
||||||
CountRangeEverydayTotal(ctx context.Context, start time.Time, end time.Time) (map[string]int64, error)
|
CountRangeEverydayTotal(ctx context.Context, start time.Time, end time.Time) (map[string]int64, error)
|
||||||
|
//CRUD user command
|
||||||
|
AddUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error
|
||||||
|
DeleteUserCommand(ctx context.Context, userID string, Type int32, UUID string) error
|
||||||
|
UpdateUserCommand(ctx context.Context, userID string, Type int32, UUID string, value string) error
|
||||||
|
GetUserCommands(ctx context.Context, userID string, Type int32) (map[string]string, error)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user