package role import ( "SciencesServer/app/api/controller" model2 "SciencesServer/app/common/model" "SciencesServer/serve/logger" "SciencesServer/app/api/model" "SciencesServer/app/service" "SciencesServer/serve/orm" "SciencesServer/utils" "gorm.io/gorm" ) type User struct{ *controller.Platform } type UserHandle func(session *service.Session) *User // List 列表信息 func (c *User) List(uid uint64) ([]*model.SysRoleUserInfo, error) { mSysRole := model.NewSysRole() out, err := mSysRole.UserRole(uid) if err != nil { return nil, err } return out, nil } // Bind 绑定角色 func (c *User) Bind(uid uint64, roleIDs []uint64) error { mSysUserRole := model.NewSysUserRole() return orm.GetDB().Transaction(func(tx *gorm.DB) error { err := model2.DeleteWhere(mSysUserRole.SysUserRole, []*model2.ModelWhere{model2.NewWhere("uid", uid)}, tx) if err != nil { return err } roles := make([]*model2.SysUserRole, 0) obj := make([]string, 0) mark := make(map[uint64]uint64, 0) for _, v := range roleIDs { if _, has := mark[v]; has { continue } obj = append(obj, utils.UintToString(v)) roles = append(roles, &model2.SysUserRole{ UID: uid, RoleID: v, }) mark[v] = v } if err = model2.Creates(mSysUserRole.SysUserRole, roles, tx); err != nil { return err } go utils.TryCatch(func() { permission := service.NewPermission(obj)(c.TenantKey, utils.UintToString(uid)) if _, err = permission.DeleteRolesForUser(false); err != nil { logger.ErrorF("删除用户【%d】角色权限错误:%v", uid, err) return } if _, err = permission.AddRoleForUser(); err != nil { logger.ErrorF("添加用户【%d】角色权限错误:%v", uid, err) return } }) return nil }) } func NewUser() UserHandle { return func(session *service.Session) *User { return &User{Platform: &controller.Platform{Session: session}} } }