Files
2021-11-02 10:02:52 +08:00

82 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package role
import (
model2 "TenantServe/app/common/model"
"TenantServe/serve/logger"
"TenantServe/app/controller"
"TenantServe/app/model"
"TenantServe/app/service"
"TenantServe/serve/orm"
"TenantServe/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}}
}
}