实现多商户履约平台基础

This commit is contained in:
yml2213
2026-07-30 12:02:32 +08:00
parent dde6f2c269
commit 83429456a6
41 changed files with 5487 additions and 504 deletions
+28 -5
View File
@@ -14,12 +14,13 @@ import (
)
type AuthService struct {
db *gorm.DB
jwt *jwt.Manager
db *gorm.DB
jwt *jwt.Manager
tenant *TenantService
}
func NewAuthService(db *gorm.DB, jm *jwt.Manager) *AuthService {
return &AuthService{db: db, jwt: jm}
func NewAuthService(db *gorm.DB, jm *jwt.Manager, tenant *TenantService) *AuthService {
return &AuthService{db: db, jwt: jm, tenant: tenant}
}
type LoginResult struct {
@@ -72,6 +73,11 @@ func (s *AuthService) Register(username, password, nickname string) (*model.User
if err := s.db.Create(user).Error; err != nil {
return nil, err
}
if s.tenant != nil {
if err := s.tenant.EnsureSelfMember(user.ID, model.MemberRoleOperator, user.Status); err != nil {
return nil, err
}
}
return user, nil
}
@@ -87,6 +93,17 @@ func (s *AuthService) EnsureAdmin() error {
var count int64
s.db.Model(&model.User{}).Where("role = ?", model.RoleAdmin).Count(&count)
if count > 0 {
if s.tenant != nil {
var admins []model.User
if err := s.db.Where("role = ?", model.RoleAdmin).Find(&admins).Error; err != nil {
return err
}
for _, admin := range admins {
if err := s.tenant.EnsureSelfMember(admin.ID, model.MemberRoleOwner, admin.Status); err != nil {
return err
}
}
}
return nil
}
hash, err := bcrypt.GenerateFromPassword([]byte("admin123"), bcrypt.DefaultCost)
@@ -101,7 +118,13 @@ func (s *AuthService) EnsureAdmin() error {
Status: 1,
InviteCode: "ADMIN001",
}
return s.db.Create(admin).Error
if err := s.db.Create(admin).Error; err != nil {
return err
}
if s.tenant != nil {
return s.tenant.EnsureSelfMember(admin.ID, model.MemberRoleOwner, admin.Status)
}
return nil
}
func generateInviteCode() string {