feat: tenant-scoped routing and portal navigation

This commit is contained in:
2026-01-08 21:30:46 +08:00
parent f3aa92078a
commit 3e095c57f3
52 changed files with 1111 additions and 670 deletions

View File

@@ -31,7 +31,7 @@ var genreMap = map[string]string{
"Qinqiang": "秦腔",
}
func (s *creator) Apply(ctx context.Context, userID int64, form *creator_dto.ApplyForm) error {
func (s *creator) Apply(ctx context.Context, tenantID, userID int64, form *creator_dto.ApplyForm) error {
if userID == 0 {
return errorx.ErrUnauthorized
}
@@ -72,8 +72,8 @@ func (s *creator) Apply(ctx context.Context, userID int64, form *creator_dto.App
return nil
}
func (s *creator) Dashboard(ctx context.Context, userID int64) (*creator_dto.DashboardStats, error) {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) Dashboard(ctx context.Context, tenantID, userID int64) (*creator_dto.DashboardStats, error) {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return nil, err
}
@@ -107,10 +107,11 @@ func (s *creator) Dashboard(ctx context.Context, userID int64) (*creator_dto.Das
func (s *creator) ListContents(
ctx context.Context,
tenantID int64,
userID int64,
filter *creator_dto.CreatorContentListFilter,
) (*requests.Pager, error) {
tid, err := s.getTenantID(ctx, userID)
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return nil, err
}
@@ -248,8 +249,8 @@ func (s *creator) ListContents(
}, nil
}
func (s *creator) CreateContent(ctx context.Context, userID int64, form *creator_dto.ContentCreateForm) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) CreateContent(ctx context.Context, tenantID, userID int64, form *creator_dto.ContentCreateForm) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -321,11 +322,12 @@ func (s *creator) CreateContent(ctx context.Context, userID int64, form *creator
func (s *creator) UpdateContent(
ctx context.Context,
tenantID int64,
userID int64,
id int64,
form *creator_dto.ContentUpdateForm,
) error {
tid, err := s.getTenantID(ctx, userID)
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -451,8 +453,8 @@ func (s *creator) UpdateContent(
})
}
func (s *creator) DeleteContent(ctx context.Context, userID, id int64) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) DeleteContent(ctx context.Context, tenantID, userID, id int64) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -472,8 +474,8 @@ func (s *creator) DeleteContent(ctx context.Context, userID, id int64) error {
return nil
}
func (s *creator) GetContent(ctx context.Context, userID, id int64) (*creator_dto.ContentEditDTO, error) {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) GetContent(ctx context.Context, tenantID, userID, id int64) (*creator_dto.ContentEditDTO, error) {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return nil, err
}
@@ -548,10 +550,11 @@ func (s *creator) GetContent(ctx context.Context, userID, id int64) (*creator_dt
func (s *creator) ListOrders(
ctx context.Context,
tenantID int64,
userID int64,
filter *creator_dto.CreatorOrderListFilter,
) ([]creator_dto.Order, error) {
tid, err := s.getTenantID(ctx, userID)
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return nil, err
}
@@ -634,8 +637,8 @@ func (s *creator) ListOrders(
return data, nil
}
func (s *creator) ProcessRefund(ctx context.Context, userID, id int64, form *creator_dto.RefundForm) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) ProcessRefund(ctx context.Context, tenantID, userID, id int64, form *creator_dto.RefundForm) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -738,8 +741,8 @@ func (s *creator) ProcessRefund(ctx context.Context, userID, id int64, form *cre
return errorx.ErrBadRequest.WithMsg("无效的操作")
}
func (s *creator) GetSettings(ctx context.Context, userID int64) (*creator_dto.Settings, error) {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) GetSettings(ctx context.Context, tenantID, userID int64) (*creator_dto.Settings, error) {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return nil, err
}
@@ -758,8 +761,8 @@ func (s *creator) GetSettings(ctx context.Context, userID int64) (*creator_dto.S
}, nil
}
func (s *creator) UpdateSettings(ctx context.Context, userID int64, form *creator_dto.Settings) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) UpdateSettings(ctx context.Context, tenantID, userID int64, form *creator_dto.Settings) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -782,8 +785,8 @@ func (s *creator) UpdateSettings(ctx context.Context, userID int64, form *creato
return err
}
func (s *creator) ListPayoutAccounts(ctx context.Context, userID int64) ([]creator_dto.PayoutAccount, error) {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) ListPayoutAccounts(ctx context.Context, tenantID, userID int64) ([]creator_dto.PayoutAccount, error) {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return nil, err
}
@@ -806,8 +809,8 @@ func (s *creator) ListPayoutAccounts(ctx context.Context, userID int64) ([]creat
return data, nil
}
func (s *creator) AddPayoutAccount(ctx context.Context, userID int64, form *creator_dto.PayoutAccount) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) AddPayoutAccount(ctx context.Context, tenantID, userID int64, form *creator_dto.PayoutAccount) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -827,8 +830,8 @@ func (s *creator) AddPayoutAccount(ctx context.Context, userID int64, form *crea
return nil
}
func (s *creator) RemovePayoutAccount(ctx context.Context, userID, id int64) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) RemovePayoutAccount(ctx context.Context, tenantID, userID, id int64) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -842,8 +845,8 @@ func (s *creator) RemovePayoutAccount(ctx context.Context, userID, id int64) err
return nil
}
func (s *creator) Withdraw(ctx context.Context, userID int64, form *creator_dto.WithdrawForm) error {
tid, err := s.getTenantID(ctx, userID)
func (s *creator) Withdraw(ctx context.Context, tenantID, userID int64, form *creator_dto.WithdrawForm) error {
tid, err := s.getTenantID(ctx, tenantID, userID)
if err != nil {
return err
}
@@ -920,7 +923,7 @@ func (s *creator) Withdraw(ctx context.Context, userID int64, form *creator_dto.
// Helpers
func (s *creator) getTenantID(ctx context.Context, userID int64) (int64, error) {
func (s *creator) getTenantID(ctx context.Context, tenantID, userID int64) (int64, error) {
if userID == 0 {
return 0, errorx.ErrUnauthorized
}
@@ -934,5 +937,8 @@ func (s *creator) getTenantID(ctx context.Context, userID int64) (int64, error)
}
return 0, errorx.ErrDatabaseError.WithCause(err)
}
if tenantID > 0 && t.ID != tenantID {
return 0, errorx.ErrPermissionDenied.WithMsg("无权限访问该租户")
}
return t.ID, nil
}