diff --git a/cmd/open_im_api/main.go b/cmd/open_im_api/main.go index 7134127a1..6768191a8 100644 --- a/cmd/open_im_api/main.go +++ b/cmd/open_im_api/main.go @@ -47,8 +47,8 @@ func main() { //group related routing group groupRouterGroup := r.Group("/group") { - groupRouterGroup.POST("/create_group", group.CreateGroup) - groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) + groupRouterGroup.POST("/create_group", group.CreateGroup) //1 + groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1 groupRouterGroup.POST("join_group", group.JoinGroup) groupRouterGroup.POST("/quit_group", group.QuitGroup) groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) diff --git a/internal/api/group/group.go b/internal/api/group/group.go index 688686112..8905b641d 100644 --- a/internal/api/group/group.go +++ b/internal/api/group/group.go @@ -7,6 +7,7 @@ import ( "Open_IM/pkg/common/token_verify" "Open_IM/pkg/grpc-etcdv3/getcdv3" rpc "Open_IM/pkg/proto/group" + open_im_sdk "Open_IM/pkg/proto/sdk_ws" "Open_IM/pkg/utils" "context" "github.com/gin-gonic/gin" @@ -382,8 +383,8 @@ func JoinGroup(c *gin.Context) { return } resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} + log.NewInfo(req.OperationID, "JoinGroup api return", RpcResp.String()) c.JSON(http.StatusOK, resp) - log.NewInfo("JoinGroup api return", RpcResp.String()) } func QuitGroup(c *gin.Context) { @@ -394,7 +395,7 @@ func QuitGroup(c *gin.Context) { return } req := &rpc.QuitGroupReq{} - utils.CopyStructFields(req, params) + utils.CopyStructFields(req, ¶ms) var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -413,8 +414,8 @@ func QuitGroup(c *gin.Context) { return } resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} + log.NewInfo(req.OperationID, "QuitGroup api return", RpcResp.String()) c.JSON(http.StatusOK, resp) - log.NewInfo("QuitGroup api return", RpcResp.String()) } func SetGroupInfo(c *gin.Context) { @@ -424,8 +425,9 @@ func SetGroupInfo(c *gin.Context) { c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()}) return } - req := &rpc.SetGroupInfoReq{} - utils.CopyStructFields(req, params) + req := &rpc.SetGroupInfoReq{GroupInfo: &open_im_sdk.GroupInfo{}} + utils.CopyStructFields(req.GroupInfo, ¶ms.Group) + req.OperationID = params.OperationID var ok bool ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token")) if !ok { @@ -443,7 +445,7 @@ func SetGroupInfo(c *gin.Context) { c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": "call rpc server failed"}) return } - resp := api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg} + resp := api.SetGroupInfoResp{CommResp: api.CommResp{ErrCode: RpcResp.CommonResp.ErrCode, ErrMsg: RpcResp.CommonResp.ErrMsg}} c.JSON(http.StatusOK, resp) log.NewInfo(req.OperationID, "SetGroupInfo api return ", resp) } diff --git a/internal/rpc/group/group.go b/internal/rpc/group/group.go index f759bc903..615e69efa 100644 --- a/internal/rpc/group/group.go +++ b/internal/rpc/group/group.go @@ -478,11 +478,10 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq) } func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) (*pbGroup.QuitGroupResp, error) { - log.NewError("QuitGroup args ", req.String()) - + log.NewError(req.OperationID, "QuitGroup args ", req.String()) _, err := imdb.GetGroupMemberInfoByGroupIDAndUserID(req.GroupID, req.OpUserID) if err != nil { - log.NewError(req.OperationID, "GetGroupMemberInfoByGroupIDAndUserID failed", err.Error(), req.GroupID, req.OpUserID) + log.NewError(req.OperationID, "GetGroupMemberInfoByGroupIDAndUserID failed ", err.Error(), req.GroupID, req.OpUserID) return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } @@ -499,7 +498,7 @@ func (s *groupServer) QuitGroup(ctx context.Context, req *pbGroup.QuitGroupReq) } chat.MemberLeaveNotification(req) - log.NewInfo(req.OperationID, "rpc QuitGroup return ") + log.NewInfo(req.OperationID, "rpc QuitGroup return ", pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}) return &pbGroup.QuitGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil } @@ -513,7 +512,7 @@ func hasAccess(req *pbGroup.SetGroupInfoReq) bool { return false } - if groupUserInfo.RoleLevel == constant.GroupAdmin { + if groupUserInfo.RoleLevel == constant.GroupOwner || groupUserInfo.RoleLevel == constant.GroupAdmin { return true } return false @@ -522,7 +521,7 @@ func hasAccess(req *pbGroup.SetGroupInfoReq) bool { func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInfoReq) (*pbGroup.SetGroupInfoResp, error) { log.NewInfo(req.OperationID, "SetGroupInfo args ", req.String()) if !hasAccess(req) { - log.NewError(req.OperationID, "no access ") + log.NewError(req.OperationID, "no access ", req) return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil } @@ -551,13 +550,14 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf utils.CopyStructFields(&groupInfo, req.GroupInfo) err = imdb.SetGroupInfo(groupInfo) if err != nil { - return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil + log.NewError(req.OperationID, "SetGroupInfo failed ", err.Error(), groupInfo) + return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil } if changedType != 0 { chat.GroupInfoChangedNotification(req.OperationID, req.OpUserID, req.GroupInfo.GroupID, changedType) } - log.NewInfo("SetGroupInfo rpc return ", pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{}}) + log.NewInfo(req.OperationID, "SetGroupInfo rpc return ", pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{}}) return &pbGroup.SetGroupInfoResp{CommonResp: &pbGroup.CommonResp{}}, nil } diff --git a/pkg/base_info/group_api_struct.go b/pkg/base_info/group_api_struct.go index bcc657e43..b232f389c 100644 --- a/pkg/base_info/group_api_struct.go +++ b/pkg/base_info/group_api_struct.go @@ -1,6 +1,7 @@ package base_info import ( + imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model" open_im_sdk "Open_IM/pkg/proto/sdk_ws" ) @@ -135,7 +136,7 @@ type QuitGroupResp struct { } type SetGroupInfoReq struct { - open_im_sdk.GroupInfo + imdb.Group OperationID string `json:"operationID" binding:"required"` } type SetGroupInfoResp struct { diff --git a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go index 70be7a2bc..0c25a7003 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go +++ b/pkg/common/db/mysql_model/im_mysql_model/group_member_model.go @@ -79,7 +79,7 @@ func GetGroupMemberInfoByGroupIDAndUserID(groupID, userID string) (*GroupMember, return nil, err } var groupMember GroupMember - err = dbConn.Table("group_member").Where("group_id=? and user_id=? limit 1", groupID, userID).Find(&groupMember).Error + err = dbConn.Table("group_member").Where("group_id=? and user_id=? ", groupID, userID).Limit(1).Find(&groupMember).Error if err != nil { return nil, err } @@ -91,7 +91,7 @@ func DeleteGroupMemberByGroupIDAndUserID(groupID, userID string) error { if err != nil { return err } - err = dbConn.Table("group_member").Where("group_id=? and user_id=? limit 1", groupID, userID).Delete(&GroupMember{}).Error + err = dbConn.Table("group_member").Where("group_id=? and user_id=? ", groupID, userID).Delete(&GroupMember{}).Error if err != nil { return err } 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 cc53a8036..12c809c28 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 @@ -52,6 +52,6 @@ func SetGroupInfo(groupInfo Group) error { if err != nil { return err } - err = dbConn.Table("friend_request").Where("group_id=?", groupInfo.GroupID).Update(&groupInfo).Error + err = dbConn.Table("group").Where("group_id=?", groupInfo.GroupID).Update(&groupInfo).Error return err } diff --git a/pkg/common/db/mysql_model/im_mysql_model/model_struct.go b/pkg/common/db/mysql_model/im_mysql_model/model_struct.go index e53b02222..8c228cae0 100644 --- a/pkg/common/db/mysql_model/im_mysql_model/model_struct.go +++ b/pkg/common/db/mysql_model/im_mysql_model/model_struct.go @@ -63,17 +63,19 @@ type FriendRequest struct { //} // open_im_sdk.GroupInfo (OwnerUserID , MemberCount )> imdb.Group type Group struct { - GroupID string `gorm:"column:group_id;primaryKey;"` - GroupName string `gorm:"column:name"` - Notification string `gorm:"column:notification"` - Introduction string `gorm:"column:introduction"` - FaceUrl string `gorm:"column:face_url"` + //`json:"operationID" binding:"required"` + //`protobuf:"bytes,1,opt,name=GroupID" json:"GroupID,omitempty"` `json:"operationID" binding:"required"` + GroupID string `gorm:"column:group_id;primaryKey;" json:"groupID" binding:"required"` + GroupName string `gorm:"column:name" json:"groupName"` + Notification string `gorm:"column:notification" json:"notification"` + Introduction string `gorm:"column:introduction" json:"introduction"` + FaceUrl string `gorm:"column:face_url" json:"faceUrl"` CreateTime time.Time `gorm:"column:create_time"` Status int32 `gorm:"column:status"` CreatorUserID string `gorm:"column:creator_user_id"` GroupType int32 `gorm:"column:group_type"` - Ex string `gorm:"column:ex"` + Ex string `gorm:"column:ex" json:"ex"` } //message GroupMemberFullInfo {