修复:管理员默认商户与账户设置
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/clause"
|
||||
)
|
||||
|
||||
type UserService struct {
|
||||
@@ -96,17 +97,30 @@ func (s *UserService) Create(username, password, nickname, role string, merchant
|
||||
if err := tx.Create(user).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
if role == model.RoleAdmin && s.tenant != nil {
|
||||
var selfMerchant model.Merchant
|
||||
if err := tx.Where("code = ?", model.MerchantCodeSelfOperated).First(&selfMerchant).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
member := model.MerchantMember{MerchantID: selfMerchant.ID, UserID: user.ID, Role: model.MemberRoleOwner, Status: user.Status, IsDefault: true}
|
||||
if err := tx.Clauses(clause.OnConflict{
|
||||
Columns: []clause.Column{{Name: "merchant_id"}, {Name: "user_id"}},
|
||||
DoUpdates: clause.Assignments(map[string]interface{}{
|
||||
"role": model.MemberRoleOwner, "status": user.Status, "is_default": true,
|
||||
}),
|
||||
}).Create(&member).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if s.tenant != nil && merchantID != 0 {
|
||||
memberRole := model.MemberRoleOperator
|
||||
if role == model.RoleAdmin {
|
||||
memberRole = model.MemberRoleOwner
|
||||
}
|
||||
member := model.MerchantMember{
|
||||
MerchantID: merchantID,
|
||||
UserID: user.ID,
|
||||
Role: memberRole,
|
||||
Status: user.Status,
|
||||
IsDefault: role == model.RoleAdmin,
|
||||
IsDefault: false,
|
||||
}
|
||||
if err := tx.Create(&member).Error; err != nil {
|
||||
return err
|
||||
@@ -180,8 +194,8 @@ func (s *UserService) ListMerchantAccountGroups(page, size int) ([]MerchantMembe
|
||||
return groups, total, nil
|
||||
}
|
||||
|
||||
// CreatePlatformAdmin creates an account with platform-only privileges. It
|
||||
// deliberately does not assign the account to any merchant.
|
||||
// CreatePlatformAdmin creates an account with platform privileges and the
|
||||
// hidden self-operated merchant context required by merchant-side routes.
|
||||
func (s *UserService) CreatePlatformAdmin(username, password, nickname string) (*model.User, error) {
|
||||
return s.Create(username, password, nickname, model.RoleAdmin, 0)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user