package dao import ( "context" "fmt" "git.x2erp.com/qdy/go-svc-configure/internal/tables" "github.com/jmoiron/sqlx" ) // CreateRole 创建角色 func CreateRole(ctx context.Context, tx *sqlx.Tx, roleID, name, description, creator string) (int64, error) { id := fmt.Sprintf("role.%s", roleID) query := ` INSERT INTO config_role (id, role_id, name, description, creator, created_at) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP) ` result, err := tx.ExecContext(ctx, query, id, roleID, name, description, creator) if err != nil { return -1, fmt.Errorf("创建角色失败: %v", err) } return ValidateResultRowsAffected(result, err, 1) } // GetRoleByRoleID 根据角色ID查询角色 func GetRoleByRoleID(ctx context.Context, db *sqlx.DB, roleID string) (*tables.RoleDB, error) { var role tables.RoleDB query := ` SELECT id, role_id, name, description, creator, created_at FROM config_role WHERE role_id = ? ` err := db.GetContext(ctx, &role, query, roleID) if err != nil { return nil, fmt.Errorf("查询角色失败: %v", err) } return &role, nil } // ListRoles 查询角色列表 func ListRoles(ctx context.Context, db *sqlx.DB) ([]tables.RoleDB, error) { var roles []tables.RoleDB query := ` SELECT id, role_id, name, description, creator, created_at FROM config_role ORDER BY created_at DESC ` err := db.SelectContext(ctx, &roles, query) if err != nil { return nil, fmt.Errorf("查询角色列表失败: %v", err) } return roles, nil } // UpdateRole 更新角色信息 func UpdateRole(ctx context.Context, tx *sqlx.Tx, roleID, name, description string) (int64, error) { query := ` UPDATE config_role SET name = ?, description = ? WHERE role_id = ? ` result, err := tx.ExecContext(ctx, query, name, description, roleID) if err != nil { return -1, fmt.Errorf("更新角色失败: %v", err) } return ValidateResultRowsAffected(result, err, 1) } // DeleteRole 删除角色 func DeleteRole(ctx context.Context, tx *sqlx.Tx, roleID string) (int64, error) { query := `DELETE FROM config_role WHERE role_id = ?` result, err := tx.ExecContext(ctx, query, roleID) if err != nil { return -1, fmt.Errorf("删除角色失败: %v", err) } return ValidateResultRowsAffected(result, err, 1) } // CheckRoleExists 检查角色是否存在 func CheckRoleExists(ctx context.Context, db *sqlx.DB, roleID string) (bool, error) { var count int query := `SELECT COUNT(*) FROM config_role WHERE role_id = ?` err := db.GetContext(ctx, &count, query, roleID) if err != nil { return false, fmt.Errorf("检查角色存在性失败: %v", err) } return count > 0, nil }