diff --git a/business/jxstore/event/event.go b/business/jxstore/event/event.go index 6331321f5..9c16c94e2 100644 --- a/business/jxstore/event/event.go +++ b/business/jxstore/event/event.go @@ -451,6 +451,49 @@ func DeleteMessageGroup(ctx *jxcontext.Context, groupID int, userID string, flag return errCode, err } +func TransferMessageGroupMaster(ctx *jxcontext.Context, groupID int, userID string) (err error) { + var ( + db = dao.GetDB() + messageGroup = &model.MessageGroup{ + GroupID: groupID, + } + ) + if err = dao.GetEntity(db, messageGroup, "GroupID"); err != nil { + return err + } + if messageGroup.UserID != ctx.GetUserID() { + return fmt.Errorf("只有群主才能转让群主!") + } + //群主换成选的那个人 + messageGroup.UserID = userID + messageGroup.LastOperator = ctx.GetUserName() + //之前那个群成员换成之前的群主 + messageGroupMembers, err := dao.GetMessageGroupMembers(db, groupID, 0, userID) + if err != nil && len(messageGroupMembers) == 0 { + return err + } + messageGroupMember := messageGroupMembers[0] + messageGroupMember.MemberUserID = ctx.GetUserID() + messageGroupMember.LastOperator = ctx.GetUserName() + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + if _, err = dao.UpdateEntity(db, messageGroup, "UserID", "LastOperator"); err != nil { + dao.Rollback(db) + return err + } + if _, err = dao.UpdateEntity(db, messageGroupMember, "MemberUserID", "LastOperator"); err != nil { + dao.Rollback(db) + return err + } + dao.Commit(db) + return err +} + func SendSysMessage(ctx *jxcontext.Context, imMessageRecord *model.ImMessageRecord) (err error) { var ( db = dao.GetDB() diff --git a/controllers/event_controller.go b/controllers/event_controller.go index 5052ab8be..0d1e95991 100644 --- a/controllers/event_controller.go +++ b/controllers/event_controller.go @@ -385,6 +385,7 @@ func (c *EventController) DeleteMessageGroup() { // @router /TransferMessageGroupMaster [post] func (c *EventController) TransferMessageGroupMaster() { c.callTransferMessageGroupMaster(func(params *tEventTransferMessageGroupMasterParams) (retVal interface{}, errCode string, err error) { + err = event.TransferMessageGroupMaster(params.Ctx, params.GroupID, params.UserID) return retVal, "", err }) }