Browse Source

修改bug

yjp 1 year ago
parent
commit
b4907eac01
1 changed files with 75 additions and 20 deletions
  1. 75 20
      convenient/domain/auth/auth.go

+ 75 - 20
convenient/domain/auth/auth.go

@@ -117,8 +117,8 @@ func (simple *Simple) init(i *infrastructure.Infrastructure) {
 
 	permissionGroupEntities := make([]any, 0)
 	permissionEntities := make([]any, 0)
-	permissionGroupIDs := make([]string, 0)
 	permissionIDs := make([]string, 0)
+	permissionInGroup := make(map[string][]string)
 
 	for permissionGroupName, permissions := range permissionGroups {
 		permissionInGroupIDs := make([]string, 0)
@@ -127,25 +127,30 @@ func (simple *Simple) init(i *infrastructure.Infrastructure) {
 			permissionID := strutils.SimpleUUID()
 			permissionInGroupIDs = append(permissionInGroupIDs, permissionID)
 			permissionEntities = append(permissionEntities, permission.Entity{
-				Base:         entity.Base{ID: permissionID},
-				Name:         perm[0],
-				Description:  perm[0],
-				Resource:     perm[1],
-				Action:       perm[2],
-				UserIDFields: entity.UserIDFields{CreateUserID: adminUserID},
+				Base:        entity.Base{ID: permissionID},
+				Name:        perm[0],
+				Description: perm[0],
+				Resource:    perm[1],
+				Action:      perm[2],
+				UserIDFields: entity.UserIDFields{
+					CreateUserID:     adminUserID,
+					LastUpdateUserID: adminUserID,
+				},
 			})
 		}
 
 		permissionIDs = append(permissionIDs, permissionInGroupIDs...)
 
 		permissionGroupID := strutils.SimpleUUID()
-		permissionGroupIDs = append(permissionGroupIDs, permissionGroupID)
+		permissionInGroup[permissionGroupID] = permissionInGroupIDs
 		permissionGroupEntities = append(permissionGroupEntities, permission_group.Entity{
-			Base:          entity.Base{ID: permissionGroupID},
-			Name:          permissionGroupName,
-			Description:   permissionGroupName,
-			PermissionIDs: permissionInGroupIDs,
-			UserIDFields:  entity.UserIDFields{CreateUserID: adminUserID},
+			Base:        entity.Base{ID: permissionGroupID},
+			Name:        permissionGroupName,
+			Description: permissionGroupName,
+			UserIDFields: entity.UserIDFields{
+				CreateUserID:     adminUserID,
+				LastUpdateUserID: adminUserID,
+			},
 		})
 	}
 
@@ -159,16 +164,17 @@ func (simple *Simple) init(i *infrastructure.Infrastructure) {
 		UserName: adminUserName,
 		Password: encryptedAdminUserPassword,
 		Name:     adminUserName,
-		RoleIDs:  []string{adminRoleID},
 	}
 
 	adminRoleEntity := &role.Entity{
-		Base:          entity.Base{ID: adminRoleID},
-		Name:          adminRoleName,
-		Description:   adminRoleName,
-		UserIDs:       []string{adminUserID},
-		PermissionIDs: permissionIDs,
-		UserIDFields:  entity.UserIDFields{CreateUserID: adminUserID},
+		Base:        entity.Base{ID: adminRoleID},
+		Name:        adminRoleName,
+		Description: adminRoleName,
+		UserIDs:     []string{adminUserID},
+		UserIDFields: entity.UserIDFields{
+			CreateUserID:     adminUserID,
+			LastUpdateUserID: adminUserID,
+		},
 	}
 
 	err = database.Transaction(dbExecutor, func(tx database.Executor) error {
@@ -196,6 +202,55 @@ func (simple *Simple) init(i *infrastructure.Infrastructure) {
 			return err
 		}
 
+		// 关联权限组和权限
+		permissionGroupAndPermissionTableRows := make([]sql.TableRow, 0)
+		for permissionGroupID, permissionInGroupIDs := range permissionInGroup {
+			for _, permissionInGroupID := range permissionInGroupIDs {
+				tableRow := sql.NewTableRow().
+					Add(domain.RelationColumnName(&permission_group.Entity{}), permissionGroupID).
+					Add(domain.RelationColumnName(&permission.Entity{}), permissionInGroupID)
+
+				permissionGroupAndPermissionTableRows = append(permissionGroupAndPermissionTableRows, *tableRow)
+			}
+		}
+
+		err = database.InsertBatch(tx, &sql.InsertBatchExecuteParams{
+			TableName:     domain.RelationTableName(simple.Schema, &permission_group.Entity{}, &permission.Entity{}),
+			TableRowBatch: permissionGroupAndPermissionTableRows,
+		})
+		if err != nil {
+			return err
+		}
+
+		// 关联管理员角色和权限
+		roleAndPermissionTableRows := make([]sql.TableRow, 0)
+		for _, permissionID := range permissionIDs {
+			tableRow := sql.NewTableRow().
+				Add(domain.RelationColumnName(&role.Entity{}), adminRoleID).
+				Add(domain.RelationColumnName(&permission.Entity{}), permissionID)
+
+			roleAndPermissionTableRows = append(roleAndPermissionTableRows, *tableRow)
+		}
+
+		err = database.InsertBatch(tx, &sql.InsertBatchExecuteParams{
+			TableName:     domain.RelationTableName(simple.Schema, &role.Entity{}, &permission.Entity{}),
+			TableRowBatch: roleAndPermissionTableRows,
+		})
+		if err != nil {
+			return err
+		}
+
+		// 关联管理员用户和管理员角色
+		err = database.Insert(tx, &sql.InsertExecuteParams{
+			TableName: domain.RelationTableName(simple.Schema, &user.Entity{}, &role.Entity{}),
+			TableRow: sql.NewTableRow().
+				Add(domain.RelationColumnName(&user.Entity{}), adminUserID).
+				Add(domain.RelationColumnName(&role.Entity{}), adminRoleID),
+		})
+		if err != nil {
+			return err
+		}
+
 		return nil
 	})
 	if err != nil {