Merge remote-tracking branch 'origin/tuoyun' into tuoyun

This commit is contained in:
Gordon 2021-12-30 09:30:59 +08:00
commit 43a690c8cf
7 changed files with 31 additions and 26 deletions

View File

@ -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)

View File

@ -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, &params)
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, &params.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)
}

View File

@ -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
}

View File

@ -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 {

View File

@ -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
}

View File

@ -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
}

View File

@ -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 {