Closed wangzhenzhenzhen closed 1 month ago
现象
在 group/api_manager.go中 如下代码是移除群成员的代码
// 移除群成员 func (m Manager) removeMember(c wkhttp.Context) { err := c.CheckLoginRoleIsSuperAdmin() if err != nil { c.ResponseError(err) return } c.Request.URL.Path = fmt.Sprintf("/v1/groups/%s/members", c.Param("group_no")) m.ctx.GetHttpRoute().HandleContext(c) } 这一行代码会走另外的一个接口或者方法吧 c.Request.URL.Path = fmt.Sprintf("/v1/groups/%s/members", c.Param("group_no")) 到了 group/api.go 的 func (g Group) memberRemove(c wkhttp.Context) 方法里有个判断我觉的是不是有问题。
if c.CheckLoginRole() == nil { loginMember, err = g.db.QueryMemberWithUID(operator, groupNo)。。。。。
这里的if c.CheckLoginRole() == nil 是不是应该是 !=nil 因为后面代码有 for _, member := range deleteMembers { if loginMember.Role == int(common.GroupMemberRoleManager) 。。。。。
loginMember此时是 nil 。 loginMember.Role 就会报错。
已修复,更新下main分支
现象
在 group/api_manager.go中 如下代码是移除群成员的代码
// 移除群成员 func (m Manager) removeMember(c wkhttp.Context) { err := c.CheckLoginRoleIsSuperAdmin() if err != nil { c.ResponseError(err) return } c.Request.URL.Path = fmt.Sprintf("/v1/groups/%s/members", c.Param("group_no")) m.ctx.GetHttpRoute().HandleContext(c) } 这一行代码会走另外的一个接口或者方法吧 c.Request.URL.Path = fmt.Sprintf("/v1/groups/%s/members", c.Param("group_no")) 到了 group/api.go 的 func (g Group) memberRemove(c wkhttp.Context) 方法里有个判断我觉的是不是有问题。
if c.CheckLoginRole() == nil { loginMember, err = g.db.QueryMemberWithUID(operator, groupNo)。。。。。
这里的if c.CheckLoginRole() == nil 是不是应该是 !=nil 因为后面代码有 for _, member := range deleteMembers { if loginMember.Role == int(common.GroupMemberRoleManager) 。。。。。
loginMember此时是 nil 。 loginMember.Role 就会报错。