From 77327f59b9898ae4e98434c53f49d146b2490c33 Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 30 Aug 2022 16:53:15 +0800 Subject: [PATCH] cms --- internal/cms_api/router.go | 4 +- internal/cms_api/statistics/statistics.go | 10 +-- internal/cms_api/user/user.go | 7 +- internal/rpc/group/group.go | 11 ++-- internal/rpc/user/user.go | 65 ++++++++++++------- pkg/cms_api_struct/user.go | 8 +-- .../mysql_model/im_mysql_model/group_model.go | 2 +- .../mysql_model/im_mysql_model/user_model.go | 6 +- 8 files changed, 66 insertions(+), 47 deletions(-) diff --git a/internal/cms_api/router.go b/internal/cms_api/router.go index 60f61650f..b49df0e7f 100644 --- a/internal/cms_api/router.go +++ b/internal/cms_api/router.go @@ -44,11 +44,11 @@ func NewGinRouter() *gin.Engine { userRouterGroup.POST("/add_user", user.AddUser) userRouterGroup.POST("/unblock_user", user.UnblockUser) userRouterGroup.POST("/block_user", user.BlockUser) - userRouterGroup.GET("/get_block_users", user.GetBlockUsers) + userRouterGroup.POST("/get_block_users", user.GetBlockUsers) } messageCMSRouterGroup := r2.Group("/message") { - messageCMSRouterGroup.GET("/get_chat_logs", messageCMS.GetChatLogs) + messageCMSRouterGroup.POST("/get_chat_logs", messageCMS.GetChatLogs) } return baseRouter } diff --git a/internal/cms_api/statistics/statistics.go b/internal/cms_api/statistics/statistics.go index ccfe97020..f8cc80717 100644 --- a/internal/cms_api/statistics/statistics.go +++ b/internal/cms_api/statistics/statistics.go @@ -29,7 +29,7 @@ func GetMessagesStatistics(c *gin.Context) { reqPb.OperationID = utils.OperationIDGenerator() log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, &req) - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName, reqPb.OperationID) + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) if etcdConn == nil { errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(reqPb.OperationID, errMsg) @@ -83,7 +83,7 @@ func GetUserStatistics(c *gin.Context) { reqPb.OperationID = utils.OperationIDGenerator() log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, &req) - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName, reqPb.OperationID) + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) if etcdConn == nil { errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(reqPb.OperationID, errMsg) @@ -146,7 +146,7 @@ func GetGroupStatistics(c *gin.Context) { reqPb.OperationID = utils.OperationIDGenerator() log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, &req) - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName, reqPb.OperationID) + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) if etcdConn == nil { errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(reqPb.OperationID, errMsg) @@ -203,7 +203,7 @@ func GetActiveUser(c *gin.Context) { reqPb.OperationID = utils.OperationIDGenerator() log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, req) - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName, reqPb.OperationID) + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) if etcdConn == nil { errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(reqPb.OperationID, errMsg) @@ -237,7 +237,7 @@ func GetActiveGroup(c *gin.Context) { reqPb.OperationID = utils.OperationIDGenerator() log.NewInfo(reqPb.OperationID, utils.GetSelfFuncName(), "req: ", req) utils.CopyStructFields(&reqPb.StatisticsReq, req) - etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImStatisticsName, reqPb.OperationID) + etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImAdminCMSName, reqPb.OperationID) if etcdConn == nil { errMsg := reqPb.OperationID + "getcdv3.GetDefaultConn == nil" log.NewError(reqPb.OperationID, errMsg) diff --git a/internal/cms_api/user/user.go b/internal/cms_api/user/user.go index 84d2b12db..dff3a853f 100644 --- a/internal/cms_api/user/user.go +++ b/internal/cms_api/user/user.go @@ -47,13 +47,12 @@ func AddUser(c *gin.Context) { func BlockUser(c *gin.Context) { var ( - req cms_api_struct.BlockUserRequest - // resp cms_api_struct.BlockUserResponse + req cms_api_struct.BlockUserRequest reqPb pb.BlockUserReq ) if err := c.BindJSON(&req); err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": err.Error()}) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } reqPb.OperationID = utils.OperationIDGenerator() @@ -84,7 +83,7 @@ func UnblockUser(c *gin.Context) { ) if err := c.BindJSON(&req); err != nil { log.NewError(req.OperationID, "BindJSON failed ", err.Error()) - c.JSON(http.StatusBadRequest, gin.H{"errCode": 500, "errMsg": err.Error()}) + c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } reqPb.OperationID = utils.OperationIDGenerator() diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index 9b43c33e9..d1569883b 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -1341,15 +1341,20 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* resp := &pbGroup.GetGroupsResp{ CommonResp: &pbGroup.CommonResp{}, CMSGroups: []*pbGroup.CMSGroup{}, - Pagination: &open_im_sdk.ResponsePagination{}, + Pagination: &open_im_sdk.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber}, } if req.GroupID != "" { groupInfoDB, err := imdb.GetGroupInfoByGroupID(req.GroupID) - if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) { + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return resp, nil + } log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID) resp.CommonResp.ErrCode = constant.ErrDB.ErrCode resp.CommonResp.ErrMsg = err.Error() return resp, nil + } else { + } resp.GroupNum = 1 groupInfo := &open_im_sdk.GroupInfo{} @@ -1388,8 +1393,6 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (* return resp, nil } } - resp.Pagination.CurrentPage = req.Pagination.PageNumber - resp.Pagination.ShowNumber = req.Pagination.ShowNumber log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetGroups resp", resp.String()) return resp, nil } diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 18f07260c..2f96a4759 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -22,8 +22,8 @@ import ( "strconv" "strings" - "github.com/jinzhu/gorm" "google.golang.org/grpc" + "gorm.io/gorm" ) type userServer struct { @@ -550,15 +550,19 @@ func (s *userServer) SyncJoinedGroupMemberNickname(userID string, newNickname, o func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pbUser.GetUsersResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp := &pbUser.GetUsersResp{CommonResp: &pbUser.CommonResp{}} + resp := &pbUser.GetUsersResp{CommonResp: &pbUser.CommonResp{}, Pagination: &sdkws.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber}} if req.UserID != "" { userDB, err := imdb.GetUserByUserID(req.UserID) - if err != nil && errors.Is(err, gorm.ErrRecordNotFound) { + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return resp, nil + } log.NewError(req.OperationID, utils.GetSelfFuncName(), req.UserID, err.Error()) resp.CommonResp.ErrCode = constant.ErrDB.ErrCode resp.CommonResp.ErrMsg = constant.ErrDB.ErrMsg return resp, nil } + user := pbUser.CmsUser{User: &sdkws.UserInfo{}} utils.CopyStructFields(&user.User, userDB) resp.UserList = append(resp.UserList, &user) @@ -621,7 +625,6 @@ func (s *userServer) GetUsers(ctx context.Context, req *pbUser.GetUsersReq) (*pb v.IsBlock = true } } - resp.Pagination = &sdkws.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber} log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String()) return resp, nil } @@ -655,7 +658,7 @@ func (s *userServer) BlockUser(ctx context.Context, req *pbUser.BlockUserReq) (* func (s *userServer) UnBlockUser(ctx context.Context, req *pbUser.UnBlockUserReq) (*pbUser.UnBlockUserResp, error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp := &pbUser.UnBlockUserResp{} + resp := &pbUser.UnBlockUserResp{CommonResp: &pbUser.CommonResp{}} err := imdb.UnBlockUser(req.UserID) if err != nil { log.NewError(req.OperationID, utils.GetSelfFuncName(), "unBlockUser", err.Error()) @@ -667,15 +670,40 @@ func (s *userServer) UnBlockUser(ctx context.Context, req *pbUser.UnBlockUserReq return resp, nil } -func (s *userServer) GetBlockUsers(ctx context.Context, req *pbUser.GetBlockUsersReq) (*pbUser.GetBlockUsersResp, error) { +func (s *userServer) GetBlockUsers(ctx context.Context, req *pbUser.GetBlockUsersReq) (resp *pbUser.GetBlockUsersResp, err error) { log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String()) - resp := &pbUser.GetBlockUsersResp{} - blockUsers, err := imdb.GetBlockUsers(req.Pagination.ShowNumber, req.Pagination.PageNumber) - if err != nil { - log.Error(req.OperationID, utils.GetSelfFuncName(), "GetBlockUsers", err.Error(), req.Pagination.ShowNumber, req.Pagination.PageNumber) - resp.CommonResp.ErrCode = constant.ErrDB.ErrCode - resp.CommonResp.ErrMsg = err.Error() - return resp, nil + resp = &pbUser.GetBlockUsersResp{CommonResp: &pbUser.CommonResp{}, Pagination: &sdkws.ResponsePagination{ShowNumber: req.Pagination.ShowNumber, CurrentPage: req.Pagination.PageNumber}} + var blockUsers []imdb.BlockUserInfo + if req.UserID != "" { + blockUser, err := imdb.GetBlockUserByID(req.UserID) + if err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return resp, nil + } + log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.UserID) + resp.CommonResp.ErrCode = constant.ErrDB.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + blockUsers = append(blockUsers, blockUser) + resp.UserNums = 1 + } else { + blockUsers, err = imdb.GetBlockUsers(req.Pagination.ShowNumber, req.Pagination.PageNumber) + if err != nil { + log.Error(req.OperationID, utils.GetSelfFuncName(), "GetBlockUsers", err.Error(), req.Pagination.ShowNumber, req.Pagination.PageNumber) + resp.CommonResp.ErrCode = constant.ErrDB.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + + nums, err := imdb.GetBlockUsersNumCount() + if err != nil { + log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetBlockUsersNumCount failed", err.Error()) + resp.CommonResp.ErrCode = constant.ErrDB.ErrCode + resp.CommonResp.ErrMsg = err.Error() + return resp, nil + } + resp.UserNums = nums } for _, v := range blockUsers { resp.BlockUsers = append(resp.BlockUsers, &pbUser.BlockUser{ @@ -691,17 +719,6 @@ func (s *userServer) GetBlockUsers(ctx context.Context, req *pbUser.GetBlockUser EndDisableTime: (v.EndDisableTime).String(), }) } - resp.Pagination = &sdkws.ResponsePagination{} - resp.Pagination.ShowNumber = req.Pagination.ShowNumber - resp.Pagination.CurrentPage = req.Pagination.PageNumber - nums, err := imdb.GetBlockUsersNumCount() - if err != nil { - log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetBlockUsersNumCount failed", err.Error()) - resp.CommonResp.ErrCode = constant.ErrDB.ErrCode - resp.CommonResp.ErrMsg = err.Error() - return resp, nil - } - resp.UserNums = nums log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp) return resp, nil } diff --git a/pkg/cms_api_struct/user.go b/pkg/cms_api_struct/user.go index b994d07e0..5de29cc32 100644 --- a/pkg/cms_api_struct/user.go +++ b/pkg/cms_api_struct/user.go @@ -18,7 +18,7 @@ type UserResponse struct { } type AddUserRequest struct { - OperationID string `json:"operationID"` + OperationID string `json:"operationID" binding:"required"` PhoneNumber string `json:"phoneNumber" binding:"required"` UserId string `json:"userID" binding:"required"` Name string `json:"name" binding:"required"` @@ -38,7 +38,7 @@ type BlockUser struct { } type BlockUserRequest struct { - OperationID string `json:"operationID"` + OperationID string `json:"operationID" binding:"required"` UserID string `json:"userID" binding:"required"` EndDisableTime string `json:"endDisableTime" binding:"required"` } @@ -47,7 +47,7 @@ type BlockUserResponse struct { } type UnblockUserRequest struct { - OperationID string `json:"operationID"` + OperationID string `json:"operationID" binding:"required"` UserID string `json:"userID" binding:"required"` } @@ -55,7 +55,7 @@ type UnBlockUserResponse struct { } type GetBlockUsersRequest struct { - OperationID string `json:"operationID"` + OperationID string `json:"operationID" binding:"required"` RequestPagination } diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_model.go index aa4ef29b9..2def46596 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_model.go @@ -80,7 +80,7 @@ func OperateGroupStatus(groupId string, groupStatus int32) error { func GetGroupsCountNum(group db.Group) (int32, error) { var count int64 - if err := db.DB.MysqlDB.DefaultGormDB().Table("groups").Where(fmt.Sprintf(" name like '%%%s%%' ", group.GroupName)).Count(&count).Error; err != nil { + if err := db.DB.MysqlDB.DefaultGormDB().Table("groups").Where(" name like '%%%s%%' ", group.GroupName).Count(&count).Error; err != nil { return 0, err } return int32(count), nil diff --git a/pkg/common/db/mysql_model/im_mysql_model/user_model.go b/pkg/common/db/mysql_model/im_mysql_model/user_model.go index d328e311e..c4023c404 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/user_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/user_model.go @@ -199,7 +199,7 @@ type BlockUserInfo struct { EndDisableTime time.Time } -func GetBlockUserById(userId string) (BlockUserInfo, error) { +func GetBlockUserByID(userId string) (BlockUserInfo, error) { var blockUserInfo BlockUserInfo blockUser := db.BlackList{ UserId: userId, @@ -254,13 +254,13 @@ func GetBlockUsers(showNumber, pageNumber int32) ([]BlockUserInfo, error) { func GetUserByName(userName string, showNumber, pageNumber int32) ([]db.User, error) { var users []db.User - err := db.DB.MysqlDB.DefaultGormDB().Table("users").Where(fmt.Sprintf(" name like '%%%s%%' ", userName)).Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error + err := db.DB.MysqlDB.DefaultGormDB().Table("users").Where(" name like '%%%s%%' ", userName).Limit(int(showNumber)).Offset(int(showNumber * (pageNumber - 1))).Find(&users).Error return users, err } func GetUsersCount(nickname string) (int32, error) { var count int64 - if err := db.DB.MysqlDB.DefaultGormDB().Table("users").Where(fmt.Sprintf(" name like '%%%s%%' ", nickname)).Count(&count).Error; err != nil { + if err := db.DB.MysqlDB.DefaultGormDB().Table("users").Where(" name like '%%%s%%' ", nickname).Count(&count).Error; err != nil { return 0, err } return int32(count), nil