feat add tenant users
This commit is contained in:
72
backend/app/services/tenant.go
Normal file
72
backend/app/services/tenant.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"quyun/v2/database/models"
|
||||
"quyun/v2/pkg/consts"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// @provider
|
||||
type tenant struct{}
|
||||
|
||||
func (t *tenant) ContainsUserID(ctx context.Context, tenantID, userID int64) (*models.User, error) {
|
||||
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
||||
|
||||
_, err := query.Where(tbl.TenantID.Eq(tenantID), tbl.UserID.Eq(userID)).First()
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "ContainsUserID failed, tenantID: %d, userID: %d", tenantID, userID)
|
||||
}
|
||||
|
||||
return User.FindByID(ctx, userID)
|
||||
}
|
||||
|
||||
// AddUser
|
||||
func (t *tenant) AddUser(ctx context.Context, tenantID, userID int64) error {
|
||||
tenantUser := &models.TenantUser{
|
||||
TenantID: tenantID,
|
||||
UserID: userID,
|
||||
}
|
||||
|
||||
if err := tenantUser.Create(ctx); err != nil {
|
||||
return errors.Wrapf(err, "AddUser failed, tenantID: %d, userID: %d", tenantID, userID)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RemoveUser
|
||||
func (t *tenant) RemoveUser(ctx context.Context, tenantID, userID int64) error {
|
||||
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
||||
tenantUser, err := query.Where(tbl.TenantID.Eq(tenantID), tbl.UserID.Eq(userID)).First()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "RemoveUser failed to find, tenantID: %d, userID: %d", tenantID, userID)
|
||||
}
|
||||
|
||||
_, err = tenantUser.Delete(ctx)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "RemoveUser failed to delete, tenantID: %d, userID: %d", tenantID, userID)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetUserRole
|
||||
func (t *tenant) SetUserRole(ctx context.Context, tenantID, userID int64, role ...consts.TenantUserRole) error {
|
||||
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
||||
tenantUser, err := query.Where(tbl.TenantID.Eq(tenantID), tbl.UserID.Eq(userID)).First()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "SetUserRole failed to find, tenantID: %d, userID: %d", tenantID, userID)
|
||||
}
|
||||
|
||||
tenantUser.Role = role
|
||||
if _, err := tenantUser.Update(ctx); err != nil {
|
||||
return errors.Wrapf(err, "SetUserRole failed to update, tenantID: %d, userID: %d", tenantID, userID)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Users
|
||||
func (t *tenant) Users(ctx context.Context, tenantID int64) ([]*models.User, int64, error) {
|
||||
return nil, 0, nil
|
||||
}
|
||||
Reference in New Issue
Block a user