diff --git a/go.mod b/go.mod index f2f56054d3..c93d5214e4 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( github.com/DATA-DOG/go-sqlmock v1.5.0 github.com/Masterminds/semver/v3 v3.1.1 - github.com/actiontech/dms v0.0.0-20240201081352-532b5fece9b5 + github.com/actiontech/dms v0.0.0-20240222054119-687fce156ab3 github.com/actiontech/java-sql-extractor v0.0.0-20231103015812-cdd5fc040f62 github.com/actiontech/mybatis-mapper-2-sql v0.5.1-0.20240119100929-4c4ddc90b1c2 github.com/agiledragon/gomonkey v2.0.2+incompatible diff --git a/go.sum b/go.sum index 213255003d..dcbf44a099 100644 --- a/go.sum +++ b/go.sum @@ -50,6 +50,8 @@ github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/actiontech/dms v0.0.0-20240201081352-532b5fece9b5 h1:DuCz1OdmRRTePNf/FmkYndbd0RtDhx+y54zLSi6tgN0= github.com/actiontech/dms v0.0.0-20240201081352-532b5fece9b5/go.mod h1:xhu4id1GnOt5Gip+xa+EGX9/0aKXxWIAn35VHE76kQQ= +github.com/actiontech/dms v0.0.0-20240222054119-687fce156ab3 h1:jjvW1Ci9yW096qOO0PGVvTUxDS2a3DiAl4krxjFsCmk= +github.com/actiontech/dms v0.0.0-20240222054119-687fce156ab3/go.mod h1:xhu4id1GnOt5Gip+xa+EGX9/0aKXxWIAn35VHE76kQQ= github.com/actiontech/java-sql-extractor v0.0.0-20231103015812-cdd5fc040f62 h1:JM7WnLzlvXOGE90KKd+aigi+qUDS+U5dLwQMNpTKZxE= github.com/actiontech/java-sql-extractor v0.0.0-20231103015812-cdd5fc040f62/go.mod h1:adDZHhAf2LRMx2h0JzofPXn12x2XlyQjVE116KXquwo= github.com/actiontech/mybatis-mapper-2-sql v0.5.1-0.20240119100929-4c4ddc90b1c2 h1:Txeii4CZzDNbvvtGoJSFNcBTHyLD0uR6Sd16waQZSxY= diff --git a/sqle/driver/mysql/mysql.go b/sqle/driver/mysql/mysql.go index f051ae9d24..9cbfba16b7 100644 --- a/sqle/driver/mysql/mysql.go +++ b/sqle/driver/mysql/mysql.go @@ -610,6 +610,7 @@ func (p *PluginProcessor) GetDriverMetas() (*driverV2.DriverMetas, error) { driverV2.OptionalModuleExtractTableFromSQL, driverV2.OptionalModuleEstimateSQLAffectRows, driverV2.OptionalModuleKillProcess, + driverV2.OptionalModuleProvision, }, }, nil } diff --git a/sqle/driver/mysql/sql_ops.go b/sqle/driver/mysql/sql_ops.go new file mode 100644 index 0000000000..7d4a86c0e9 --- /dev/null +++ b/sqle/driver/mysql/sql_ops.go @@ -0,0 +1,636 @@ +package mysql + +import ( + "context" + "fmt" + "strings" + + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" + "github.com/actiontech/sqle/sqle/driver/mysql/util" + "github.com/pingcap/parser" + "github.com/pingcap/parser/ast" +) + +// GetSQLOp 获取sql中涉及的对象操作,sql可以是单条语句,也可以是多条语句 +// GetSQLOp 目前实现的对象的最小粒度只到表级别,考虑识别列对象的成本较高,暂时没有识别列对象 +func (i *MysqlDriverImpl) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) { + p := parser.New() + stmts, _, err := p.PerfectParse(sqls, "", "") + if err != nil { + i.Logger().Errorf("parse sql failed, error: %v, sql: %s", err, sqls) + return nil, err + } + + ret := make([]*dmsCommonSQLOp.SQLObjectOps, 0, len(stmts)) + for _, stmt := range stmts { + objectOps := dmsCommonSQLOp.NewSQLObjectOps(stmt.Text()) + err := parseStmtOpInfos(p, stmt, objectOps) + if err != nil { + i.Logger().Errorf("parse sql op failed, error: %v, sql: %s", err, stmt.Text()) + return nil, err + } + ret = append(ret, objectOps) + } + + for i := range ret { + ret[i].ObjectOps = SQLObjectOpsDuplicateRemoval(ret[i].ObjectOps) + } + + return ret, nil +} + +func parseStmtOpInfos(p *parser.Parser, stmt ast.StmtNode, ops *dmsCommonSQLOp.SQLObjectOps) error { + + switch s := stmt.(type) { + case *ast.CreateTableStmt: + // https://dev.mysql.com/doc/refman/8.0/en/create-table.html + // You must have the CREATE privilege for the table. + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Table)) + if s.ReferTable != nil { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpRead, s.ReferTable)) + } + + case *ast.DropTableStmt: + // https://dev.mysql.com/doc/refman/8.0/en/drop-table.html + // You must have the DROP privilege for each table. + for _, table := range s.Tables { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, table)) + } + + case *ast.AlterTableStmt: + // https://dev.mysql.com/doc/refman/8.0/en/alter-table.html + // To use ALTER TABLE, you need ALTER, CREATE, and INSERT privileges for the table. + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Table)) + + // Renaming a table requires ALTER and DROP on the old table, ALTER, CREATE, and INSERT on the new table. + for _, spec := range s.Specs { + if spec.Tp == ast.AlterTableRenameTable { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Table)) + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, s.Table)) + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, spec.NewTable)) + } + } + + case *ast.TruncateTableStmt: + // https://dev.mysql.com/doc/refman/8.0/en/truncate-table.html + // It requires the DROP privilege. + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, s.Table)) + + case *ast.RepairTableStmt: + // https://dev.mysql.com/doc/refman/8.0/en/repair-table.html + // https://docs.pingcap.com/tidb/v5.4/sql-statement-admin/ + // TODO: TiDB的解析器(ADMIN REPAIR TABLE)不支持解析MySQL的REPAIR TABLE语句 + return fmt.Errorf("repair table not supported") + + case *ast.CreateDatabaseStmt: + // https://dev.mysql.com/doc/refman/8.0/en/create-database.html + // To use this statement, you need the CREATE privilege for the database. + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Name)) + + case *ast.AlterDatabaseStmt: + // https://dev.mysql.com/doc/refman/8.0/en/alter-database.html + // This statement requires the ALTER privilege on the database. + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Name)) + + case *ast.DropDatabaseStmt: + // https://dev.mysql.com/doc/refman/8.0/en/drop-database.html + // To use DROP DATABASE, you need the DROP privilege on the database. + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpDelete, s.Name)) + + case *ast.RenameTableStmt: + // https://dev.mysql.com/doc/refman/8.0/en/rename-table.html + // You must have ALTER and DROP privileges for the original table, and CREATE and INSERT privileges for the new table + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.OldTable)) + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, s.OldTable)) + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.NewTable)) + + case *ast.CreateViewStmt: + // https://dev.mysql.com/doc/refman/8.0/en/create-view.html + // The CREATE VIEW statement requires the CREATE VIEW privilege for the view, + // and some privilege for each column selected by the SELECT statement. + // For columns used elsewhere in the SELECT statement, you must have the SELECT privilege. + // If the OR REPLACE clause is present, you must also have the DROP privilege for the view. + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.ViewName)) + if s.OrReplace { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, s.ViewName)) + } + + switch s := s.Select.(type) { + case *ast.SelectStmt: + o, err := getSelectStmtObjectOps(s) + if nil != err { + return fmt.Errorf("failed to parse create view, %v", err) + } + ops.AddObjectOp(o...) + case *ast.UnionStmt: + for _, selectStmt := range s.SelectList.Selects { + o, err := getSelectStmtObjectOps(selectStmt) + if nil != err { + return fmt.Errorf("failed to parse create view, %v", err) + } + ops.AddObjectOp(o...) + } + default: + return fmt.Errorf("failed to parse create view, not support select type: %T", s) + } + + case *ast.CreateIndexStmt: + // https://dev.mysql.com/doc/refman/8.0/en/create-index.html + // CREATE INDEX is mapped to an ALTER TABLE statement to create indexes. + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Table)) + + case *ast.DropIndexStmt: + // https://dev.mysql.com/doc/refman/8.0/en/drop-index.html + // This statement is mapped to an ALTER TABLE statement to drop the index. + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Table)) + + case *ast.LockTablesStmt: + // https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html + // You must have the LOCK TABLES privilege, and the SELECT privilege for each object to be locked. + for _, t := range s.TableLocks { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAdmin, t.Table)) + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpRead, t.Table)) + } + + // TODO: 视图处理 + // For view locking, LOCK TABLES adds all base tables used in the view to the set of tables to be locked and locks them automatically. + // For tables underlying any view being locked, LOCK TABLES checks that the view definer (for SQL SECURITY DEFINER views) or invoker (for all views) has the proper privileges on the tables. + + case *ast.UnlockTablesStmt: + // https://dev.mysql.com/doc/refman/8.0/en/lock-tables.html + // UNLOCK TABLES explicitly releases any table locks held by the current session. + // TODO: Unlock table的操作针对的当前session,无法从sql语句中确定具体的表,暂且不处理 + case *ast.SelectStmt: + + o, err := getSelectStmtObjectOps(s) + if nil != err { + return fmt.Errorf("failed to parse select, %v", err) + } + ops.AddObjectOp(o...) + + case *ast.UnionStmt: + // https://dev.mysql.com/doc/refman/8.0/en/union.html + + for _, selectStmt := range s.SelectList.Selects { + o, err := getSelectStmtObjectOps(selectStmt) + if nil != err { + return fmt.Errorf("failed to parse union, %v", err) + } + ops.AddObjectOp(o...) + } + + // TiDB的解析器尚不支持MySQL8.0的一些新union语法,暂且不处理 + // 如(SELECT 1 UNION SELECT 1) UNION SELECT 1; + + case *ast.LoadDataStmt: + // https://dev.mysql.com/doc/refman/8.0/en/load-data.html + // You must have the FILE privilege + // For a LOCAL load operation, the client program reads a text file located on the client host. + // Because the file contents are sent over the connection by the client to the server, + // using LOCAL is a bit slower than when the server accesses the file directly. + // On the other hand, you do not need the FILE privilege, + // and the file can be located in any directory the client program can access. + if !s.IsLocal { + ops.AddObjectOp(newServerObject(dmsCommonSQLOp.SQLOpAdmin)) + } + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, s.Table)) + + case *ast.InsertStmt: + // https://dev.mysql.com/doc/refman/8.0/en/insert.html + // Inserting into a table requires the INSERT privilege for the table. + // If the ON DUPLICATE KEY UPDATE clause is used and a duplicate key causes an UPDATE to be performed instead, + // the statement requires the UPDATE privilege for the columns to be updated. + // For columns that are read but not modified you need only the SELECT privilege + // (such as for a column referenced only on the right hand side of an col_name=expr assignment in an ON DUPLICATE KEY UPDATE clause). + tableNames := util.GetTables(s.Table.TableRefs) + for _, tableName := range tableNames { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpAddOrUpdate, tableName)) + } + + if s.Select != nil { + if selectStmt, ok := s.Select.(*ast.SelectStmt); ok { + o, err := getSelectStmtObjectOps(selectStmt) + if nil != err { + return fmt.Errorf("failed to parse insert, %v", err) + } + ops.AddObjectOp(o...) + } else { + return fmt.Errorf("failed to parse insert, not support select type: %T", s.Select) + } + } + + case *ast.DeleteStmt: + // https://dev.mysql.com/doc/refman/8.0/en/delete.html + // You need the DELETE privilege on a table to delete rows from it. + // You need only the SELECT privilege for any columns that are only read, + // such as those named in the WHERE clause. + + var tableAlias []*tableAliasInfo + if s.IsMultiTable { + for _, table := range s.Tables.Tables { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, table)) + } + tableAlias = getTableAliasInfoFromTableNames(s.Tables.Tables) + } else { + tableNames := util.GetTables(s.TableRefs.TableRefs) + for _, tableName := range tableNames { + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpDelete, tableName)) + } + + tableAlias = getTableAliasInfoFromJoin(s.TableRefs.TableRefs) + } + + if s.Where != nil { + ops.AddObjectOp(getTableObjectOpsInWhere(tableAlias, s.Where)...) + } + + case *ast.UpdateStmt: + // https://dev.mysql.com/doc/refman/8.0/en/update.html + // You need the UPDATE privilege only for columns referenced in an UPDATE that are actually updated. + // You need only the SELECT privilege for any columns that are read but not modified. + + tableAlias := getTableAliasInfoFromJoin(s.TableRefs.TableRefs) + // UPDATE items,month SET items.price=month.price + // WHERE items.id=month.id; + // 对 items 表有 更新和读取 ,对 month 表只有读取 + for _, list := range s.List { + if list.Column != nil { + ops.AddObjectOp(newTableObjectFromColumn(dmsCommonSQLOp.SQLOpAddOrUpdate, list.Column, tableAlias)) + } + if c, ok := list.Expr.(*ast.ColumnNameExpr); ok { + ops.AddObjectOp(newTableObjectFromColumn(dmsCommonSQLOp.SQLOpRead, c.Name, tableAlias)) + } + } + + if s.Where != nil { + ops.AddObjectOp(getTableObjectOpsInWhere(tableAlias, s.Where)...) + } + + case *ast.ShowStmt: + // https://dev.mysql.com/doc/refman/8.0/en/show.html + switch s.Tp { + case ast.ShowEngines: + case ast.ShowDatabases: + // You see only those databases for which you have some kind of privilege, + // unless you have the global SHOW DATABASES privilege. + case ast.ShowTables, ast.ShowTableStatus: + case ast.ShowColumns: + // https://dev.mysql.com/doc/refman/8.0/en/show-columns.html + dbName := s.Table.Schema.L + if s.DBName != "" { + dbName = s.DBName + } + ops.AddObjectOp(newTableObject(dmsCommonSQLOp.SQLOpRead, s.Table.Name.L, dbName)) + case ast.ShowWarnings, ast.ShowErrors: + case ast.ShowCharset, ast.ShowCollation: + case ast.ShowVariables, ast.ShowStatus: + case ast.ShowCreateTable, ast.ShowCreateView: + // https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpRead, s.Table)) + case ast.ShowCreateUser: + // https://dev.mysql.com/doc/refman/8.0/en/show-create-user.html + // The statement requires the SELECT privilege for the mysql system schema, + // except to see information for the current user. + ops.AddObjectOp(newMysqlDatabaseObject(dmsCommonSQLOp.SQLOpRead)) + case ast.ShowGrants: + // https://dev.mysql.com/doc/refman/8.0/en/show-grants.html + ops.AddObjectOp(newMysqlDatabaseObject(dmsCommonSQLOp.SQLOpRead)) + case ast.ShowTriggers: + case ast.ShowProcedureStatus: + // https://dev.mysql.com/doc/refman/8.0/en/show-procedure-status.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpRead)) + case ast.ShowIndex: + ops.AddObjectOp(newTableObjectFromTableName(dmsCommonSQLOp.SQLOpRead, s.Table)) + case ast.ShowProcessList: + case ast.ShowCreateDatabase: + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpRead, s.DBName)) + case ast.ShowEvents: + // https://dev.mysql.com/doc/refman/5.7/en/show-events.html + // It requires the EVENT privilege for the database from which the events are to be shown. + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpRead, s.DBName)) + case ast.ShowPlugins: + case ast.ShowProfile, ast.ShowProfiles: + case ast.ShowMasterStatus: + // https://dev.mysql.com/doc/refman/5.7/en/show-master-status.html + // It requires either the SUPER or REPLICATION CLIENT privilege. + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case ast.ShowPrivileges: + default: + return fmt.Errorf("failed to parse show, not support show type: %v", s.Tp) + } + case *ast.ExplainForStmt: + // https://dev.mysql.com/doc/refman/8.0/en/explain.html + // EXPLAIN ... FOR CONNECTION also requires the PROCESS privilege if the specified connection belongs to a different user. + // 由于无法判断FOR CONNECTION的连接是否属于当前用户,所以这里定义为整个实例的读 + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpRead)) + case *ast.ExplainStmt: + // https://dev.mysql.com/doc/refman/8.0/en/explain.html + // EXPLAIN requires the same privileges required to execute the explained statement. + if err := parseStmtOpInfos(p, s.Stmt, ops); err != nil { + return err + } + // TODO: + // Additionally, EXPLAIN also requires the SHOW VIEW privilege for any explained view. + case *ast.PrepareStmt: + // https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html + stmt, err := p.ParseOneStmt(s.SQLText, "", "") + if nil != err { + return err + } + if err := parseStmtOpInfos(p, stmt, ops); err != nil { + return err + } + + // TODO: prepare 可能使用上下文来定义语句,如下: + // SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse'; + // PREPARE stmt2 FROM @s; + // 这种情况需要结合上下文来解析 + case *ast.ExecuteStmt: + case *ast.DeallocateStmt: + case *ast.BeginStmt: + case *ast.CommitStmt: + case *ast.RollbackStmt: + case *ast.BinlogStmt: + // https://dev.mysql.com/doc/refman/8.0/en/binlog.html + // To execute BINLOG statements when applying mysqlbinlog output, + // a user account requires the BINLOG_ADMIN privilege (or the deprecated SUPER privilege), + // or the REPLICATION_APPLIER privilege plus the appropriate privileges to execute each log event. + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.UseStmt: + // https://dev.mysql.com/doc/refman/8.0/en/use.html + // This statement requires some privilege for the database or some object within it. + case *ast.FlushStmt: + // https://dev.mysql.com/doc/refman/8.0/en/flush.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.KillStmt: + // https://dev.mysql.com/doc/refman/8.0/en/kill.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.SetStmt: + case *ast.SetPwdStmt: + // https://dev.mysql.com/doc/refman/8.0/en/set-password.html + if !s.User.CurrentUser { + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + } + case *ast.CreateUserStmt: + // https://dev.mysql.com/doc/refman/8.0/en/create-user.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.AlterUserStmt: + // https://dev.mysql.com/doc/refman/8.0/en/alter-user.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.AlterInstanceStmt: + // https://dev.mysql.com/doc/refman/8.0/en/alter-instance.html + // TiDB的解析器仅支持ALTER INSTANCE RELOAD TLS语句 + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.DropUserStmt: + // https://dev.mysql.com/doc/refman/8.0/en/drop-user.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.RevokeStmt: + // https://dev.mysql.com/doc/refman/8.0/en/revoke.html + switch s.Level.Level { + case ast.GrantLevelGlobal: + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpGrant)) + case ast.GrantLevelDB: + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpGrant, s.Level.DBName)) + case ast.GrantLevelTable: + ops.AddObjectOp(newTableObject(dmsCommonSQLOp.SQLOpGrant, s.Level.TableName, s.Level.DBName)) + default: + return fmt.Errorf("not support grant level: %v", s.Level.Level) + } + case *ast.GrantStmt: + // https://dev.mysql.com/doc/refman/8.0/en/grant.html + switch s.Level.Level { + case ast.GrantLevelGlobal: + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpGrant)) + case ast.GrantLevelDB: + ops.AddObjectOp(newDatabaseObject(dmsCommonSQLOp.SQLOpGrant, s.Level.DBName)) + case ast.GrantLevelTable: + ops.AddObjectOp(newTableObject(dmsCommonSQLOp.SQLOpGrant, s.Level.TableName, s.Level.DBName)) + default: + return fmt.Errorf("not support grant level: %v", s.Level.Level) + } + case *ast.ShutdownStmt: + // https://dev.mysql.com/doc/refman/8.0/en/shutdown.html + ops.AddObjectOp(newInstanceObject(dmsCommonSQLOp.SQLOpAdmin)) + case *ast.UnparsedStmt: + return fmt.Errorf("there is unparsed stmt: %s", stmt.Text()) + default: + return fmt.Errorf("not support stmt type: %T", stmt) + } + return nil +} + +func getSelectStmtObjectOps(selectStmt *ast.SelectStmt) ([]*dmsCommonSQLOp.SQLObjectOp, error) { + ret := make([]*dmsCommonSQLOp.SQLObjectOp, 0) + if selectStmt.From != nil { + tableNames := util.GetTables(selectStmt.From.TableRefs) + for _, tableName := range tableNames { + ret = append(ret, newTableObjectFromTableName(dmsCommonSQLOp.SQLOpRead, tableName)) + } + } + if selectStmt.SelectIntoOpt != nil { + // https://dev.mysql.com/doc/refman/8.0/en/select-into.html + // The SELECT ... INTO OUTFILE 'file_name' form of SELECT writes the selected rows to a file. + // The file is created on the server host, + // so you must have the FILE privilege to use this syntax. + if selectStmt.SelectIntoOpt.Tp == ast.SelectIntoOutfile || selectStmt.SelectIntoOpt.Tp == ast.SelectIntoDumpfile { + ret = append(ret, newServerObject(dmsCommonSQLOp.SQLOpAdmin)) + } + } + return ret, nil +} + +func newTableObjectFromTableName(op dmsCommonSQLOp.SQLOp, table *ast.TableName) *dmsCommonSQLOp.SQLObjectOp { + return &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: newTable(table.Name.L, table.Schema.L), + } +} + +func newTableObject(op dmsCommonSQLOp.SQLOp, tableName, databaseName string) *dmsCommonSQLOp.SQLObjectOp { + return &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: newTable(tableName, databaseName), + } +} + +type tableAliasInfo struct { + tableName string + schemaName string + tableAliasName string +} + +func newTableObjectFromColumn(op dmsCommonSQLOp.SQLOp, column *ast.ColumnName, tableAliasInfo []*tableAliasInfo) *dmsCommonSQLOp.SQLObjectOp { + if column.Table.String() == "" && len(tableAliasInfo) == 1 { + t := tableAliasInfo[0] + return newTableObject(op, t.tableName, t.schemaName) + } + for _, t := range tableAliasInfo { + if t.tableAliasName == column.Table.String() { + return newTableObject(op, t.tableName, t.schemaName) + } + } + return &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: newTable(column.Table.L, column.Schema.L), + } +} + +func newDatabaseObject(op dmsCommonSQLOp.SQLOp, databaseName string) *dmsCommonSQLOp.SQLObjectOp { + return &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: newDatabase(databaseName), + } +} + +func newMysqlDatabaseObject(op dmsCommonSQLOp.SQLOp) *dmsCommonSQLOp.SQLObjectOp { + return newDatabaseObject(op, "mysql") +} + +func newInstanceObject(op dmsCommonSQLOp.SQLOp) *dmsCommonSQLOp.SQLObjectOp { + return &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: newInstance(), + } +} + +func newServerObject(op dmsCommonSQLOp.SQLOp) *dmsCommonSQLOp.SQLObjectOp { + return &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: newServer(), + } +} + +func newTable(tableName, databaseName string) *dmsCommonSQLOp.SQLObject { + return &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: databaseName, + SchemaName: "", // MySQL中schema与database是同一个概念,已设置databaseName,schemaName不存在意义,所以设置为空 + TableName: tableName, + } +} + +func newDatabase(databaseName string) *dmsCommonSQLOp.SQLObject { + return &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: databaseName, + SchemaName: "", // MySQL中schema与database是同一个概念,已设置databaseName,schemaName不存在意义,所以设置为空 + TableName: "", + } +} + +func newInstance() *dmsCommonSQLOp.SQLObject { + return &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + SchemaName: "", + TableName: "", + } +} + +func newServer() *dmsCommonSQLOp.SQLObject { + return &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeServer, + DatabaseName: "", + SchemaName: "", + TableName: "", + } +} + +func getTableAliasInfoFromTableNames(tableNames []*ast.TableName) []*tableAliasInfo { + tableAlias := make([]*tableAliasInfo, 0) + for _, tableName := range tableNames { + tableAlias = append(tableAlias, &tableAliasInfo{ + tableAliasName: "", + tableName: tableName.Name.L, + schemaName: tableName.Schema.L, + }) + } + return tableAlias +} + +func getTableAliasInfoFromJoin(stmt *ast.Join) []*tableAliasInfo { + tableAlias := make([]*tableAliasInfo, 0) + tableSources := util.GetTableSources(stmt) + for _, tableSource := range tableSources { + switch source := tableSource.Source.(type) { + case *ast.TableName: + tableAlias = append(tableAlias, &tableAliasInfo{ + tableAliasName: tableSource.AsName.String(), + tableName: source.Name.L, + schemaName: source.Schema.L, + }) + default: + } + } + return tableAlias +} + +func getTableObjectOpsInWhere(tableAliasInfo []*tableAliasInfo, where ast.ExprNode) []*dmsCommonSQLOp.SQLObjectOp { + c := &tableObjectsInWhere{ + tableAliasInfo: tableAliasInfo, + } + where.Accept(c) + return c.tables +} + +type tableObjectsInWhere struct { + tables []*dmsCommonSQLOp.SQLObjectOp + tableAliasInfo []*tableAliasInfo +} + +func (c *tableObjectsInWhere) Enter(in ast.Node) (ast.Node, bool) { + if cn, ok := in.(*ast.ColumnName); ok { + c.tables = append(c.tables, newTableObjectFromColumn(dmsCommonSQLOp.SQLOpRead, cn, c.tableAliasInfo)) + } + return in, false +} + +func (c *tableObjectsInWhere) Leave(in ast.Node) (ast.Node, bool) { + return in, true +} + +func SQLObjectOpsDuplicateRemoval(ops []*dmsCommonSQLOp.SQLObjectOp) []*dmsCommonSQLOp.SQLObjectOp { + m := make(map[string]*dmsCommonSQLOp.SQLObjectOp) + for _, o := range ops { + m[SQLObjectOpFingerPrint(o)] = o + } + ret := make([]*dmsCommonSQLOp.SQLObjectOp, 0) + for _, o := range m { + ret = append(ret, o) + } + return ret +} + +func SQLObjectOpsFingerPrint(ops []*dmsCommonSQLOp.SQLObjectOps) string { + s := make([]string, len(ops)) + for i := range ops { + s[i] = SQLObjectOpFingerPrints(ops[i].ObjectOps) + s[i] = fmt.Sprintf("%s %s", s[i], ops[i].Sql.Sql) + } + return strings.Join(s, "\n") +} + +func SQLObjectOpFingerPrints(ops []*dmsCommonSQLOp.SQLObjectOp) string { + s := make([]string, len(ops)) + for i := range ops { + s[i] = SQLObjectOpFingerPrint(ops[i]) + } + return strings.Join(s, ";") +} + +func SQLObjectOpFingerPrint(op *dmsCommonSQLOp.SQLObjectOp) string { + return fmt.Sprintf("%s %s", SQLObjectFingerPrint(op.Object), op.Op) +} + +func SQLObjectFingerPrint(obj *dmsCommonSQLOp.SQLObject) string { + switch obj.Type { + case dmsCommonSQLOp.SQLObjectTypeInstance: + return "*.*" + case dmsCommonSQLOp.SQLObjectTypeDatabase: + return fmt.Sprintf("%s.*", obj.DatabaseName) + case dmsCommonSQLOp.SQLObjectTypeTable: + return fmt.Sprintf("%s.%s", obj.DatabaseName, obj.TableName) + default: + return "unknown" + } +} diff --git a/sqle/driver/mysql/sql_ops_test.go b/sqle/driver/mysql/sql_ops_test.go new file mode 100644 index 0000000000..c0cd793168 --- /dev/null +++ b/sqle/driver/mysql/sql_ops_test.go @@ -0,0 +1,1829 @@ +package mysql + +import ( + "context" + "fmt" + "reflect" + "sort" + "testing" + + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" + "github.com/actiontech/sqle/sqle/log" +) + +var ( + testSQLObjectOpT1Read = &dmsCommonSQLOp.SQLObjectOp{ + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "s1", + TableName: "t1", + }, + } + testSQLObjectOpT1AddOrUpdate = &dmsCommonSQLOp.SQLObjectOp{ + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "s1", + TableName: "t1", + }, + } +) + +func TestSQLObjectOpsDuplicateRemoval(t *testing.T) { + type args struct { + ops []*dmsCommonSQLOp.SQLObjectOp + } + tests := []struct { + name string + args args + want []*dmsCommonSQLOp.SQLObjectOp + }{ + { + name: "test1", + args: args{ops: []*dmsCommonSQLOp.SQLObjectOp{testSQLObjectOpT1Read, testSQLObjectOpT1Read}}, + want: []*dmsCommonSQLOp.SQLObjectOp{testSQLObjectOpT1Read}, + }, + { + name: "test1", + args: args{ops: []*dmsCommonSQLOp.SQLObjectOp{testSQLObjectOpT1Read, testSQLObjectOpT1Read, testSQLObjectOpT1AddOrUpdate}}, + want: []*dmsCommonSQLOp.SQLObjectOp{testSQLObjectOpT1Read, testSQLObjectOpT1AddOrUpdate}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := SQLObjectOpsDuplicateRemoval(tt.args.ops); !reflect.DeepEqual(got, tt.want) { + t.Errorf("SQLObjectOpsDuplicateRemoval() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestMysqlDriverImpl_GetSQLOp(t *testing.T) { + type args struct { + ctx context.Context + sqls string + } + tests := []struct { + name string + args args + want []*dmsCommonSQLOp.SQLObjectOps + wantErr error + }{ + { + name: "multi sql", + args: args{ctx: context.Background(), sqls: "select * from s1.t1;select * from s1.t2"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "s1", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "select * from s1.t1;", + }, + }, + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "s1", + TableName: "t2", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "select * from s1.t2", + }, + }, + }, + wantErr: nil, + }, + { + name: "select basic", + args: args{ctx: context.Background(), sqls: "select * from s1.t1"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "s1", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "select * from s1.t1", + }, + }, + }, + wantErr: nil, + }, + { + name: "select no db", + args: args{ctx: context.Background(), sqls: "select * from t1"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "select * from t1", + }, + }, + }, + wantErr: nil, + }, + { + name: "select 1", + args: args{ctx: context.Background(), sqls: "select 1"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{}, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "select 1", + }, + }, + }, + wantErr: nil, + }, + { + name: "select multi table", + args: args{ctx: context.Background(), sqls: "select * from t1,t2"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t2", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "select * from t1,t2", + }, + }, + }, + wantErr: nil, + }, + { + name: "select join table", + args: args{ctx: context.Background(), sqls: "SELECT * FROM t1 INNER JOIN t2"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t2", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "SELECT * FROM t1 INNER JOIN t2", + }, + }, + }, + wantErr: nil, + }, + { + name: "select into outfile", + args: args{ctx: context.Background(), + sqls: "SELECT * FROM t1 INTO OUTFILE '/tmp/select-values.txt'"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeServer, + DatabaseName: "", + TableName: "", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "SELECT * FROM t1 INTO OUTFILE '/tmp/select-values.txt'", + }, + }, + }, + wantErr: nil, + }, + { + name: "create table like", + args: args{ctx: context.Background(), sqls: "CREATE TABLE new_tbl LIKE orig_tbl"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "new_tbl", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "orig_tbl", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "CREATE TABLE new_tbl LIKE orig_tbl", + }, + }, + }, + wantErr: nil, + }, + { + name: "create table basic", + args: args{ctx: context.Background(), sqls: "CREATE TABLE t (c CHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin);"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "CREATE TABLE t (c CHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin);", + }, + }, + }, + wantErr: nil, + }, + { + name: "drop table basic", + args: args{ctx: context.Background(), sqls: "DROP TABLE t1;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "DROP TABLE t1;", + }, + }, + }, + wantErr: nil, + }, + { + name: "alter table basic", + args: args{ctx: context.Background(), sqls: "ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t2", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "ALTER TABLE t2 DROP COLUMN c, DROP COLUMN d;", + }, + }, + }, + wantErr: nil, + }, + { + name: "alter table rename", + args: args{ctx: context.Background(), sqls: "ALTER TABLE old_table RENAME new_table;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "new_table", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "old_table", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "old_table", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "ALTER TABLE old_table RENAME new_table;", + }, + }, + }, + wantErr: nil, + }, + { + name: "rename table", + args: args{ctx: context.Background(), sqls: "RENAME TABLE old_table TO new_table;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "new_table", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "old_table", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "old_table", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "RENAME TABLE old_table TO new_table;", + }, + }, + }, + wantErr: nil, + }, + { + name: "truncate table", + args: args{ctx: context.Background(), sqls: "TRUNCATE TABLE t1"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "TRUNCATE TABLE t1", + }, + }, + }, + wantErr: nil, + }, + { + name: "repair table", + args: args{ctx: context.Background(), sqls: "REPAIR TABLE t1"}, + wantErr: fmt.Errorf("there is unparsed stmt: REPAIR TABLE t1"), + }, + { + name: "alter databases", + args: args{ctx: context.Background(), sqls: "ALTER DATABASE myDatabase CHARACTER SET= ascii;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "myDatabase", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "ALTER DATABASE myDatabase CHARACTER SET= ascii;", + }, + }, + }, + wantErr: nil, + }, + { + name: "drop databases", + args: args{ctx: context.Background(), sqls: "DROP DATABASE mydb"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "mydb", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "DROP DATABASE mydb", + }, + }, + }, + wantErr: nil, + }, + { + name: "create view", + args: args{ctx: context.Background(), sqls: "CREATE VIEW test.v AS SELECT * FROM t;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "test", + TableName: "v", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "CREATE VIEW test.v AS SELECT * FROM t;", + }, + }, + }, + wantErr: nil, + }, + { + name: "create view select CURRENT_DATE", + args: args{ctx: context.Background(), sqls: "CREATE VIEW v_today (today) AS SELECT CURRENT_DATE;"}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "v_today", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: "CREATE VIEW v_today (today) AS SELECT CURRENT_DATE;", + }, + }, + }, + wantErr: nil, + }, + { + name: "create or replace view", + args: args{ctx: context.Background(), sqls: `CREATE OR REPLACE VIEW view_name AS +SELECT column_name(s) +FROM table_name +WHERE condition`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "view_name", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "view_name", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "table_name", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `CREATE OR REPLACE VIEW view_name AS +SELECT column_name(s) +FROM table_name +WHERE condition`, + }, + }, + }, + wantErr: nil, + }, + { + name: "create view union", + args: args{ctx: context.Background(), sqls: `CREATE VIEW netcheck.cpu_mp AS +(SELECT + cpu.ID AS id, + cpu.chanel_name AS chanel_name, + cpu.first_channel AS first_channel, + cpu.IMG_Url AS IMG_Url, + cpu.lastModifyTime AS lastModifyTime, + cpu.second_channel AS second_channel, + cpu.SHOW_TIME AS SHOW_TIME, + cpu.TASK_Id AS TASK_Id, + cpu.TITLE AS TITLE, + cpu.URL AS URL, + cpu.checkSysTaskId AS checkSysTaskId, + cpu.innerUUID AS innerUUID, + cpu.isReject AS isReject, + cpu.scanTime AS scanTime +FROM channel_page_update_result cpu +) + UNION ALL +(SELECT + mp.id AS id, + '' AS chanel_name, + '' AS first_channel, + '' AS second_channel, + '' AS TITLE, + mp.imgUrl AS IMG_Url + ,mp.lastModifyTime AS lastModifyTime, + mp.showTime AS SHOW_TIME, + mp.taskId AS TASK_Id, + mp.url AS URL, + mp.checkSysTaskId AS checkSysTaskId, + mp.innerUUID AS innerUUID, + mp.isReject AS isReject, + mp.scanTime AS scanTime +FROM mainpageupdateresult mp +);`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "netcheck", + TableName: "cpu_mp", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "channel_page_update_result", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "mainpageupdateresult", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `CREATE VIEW netcheck.cpu_mp AS +(SELECT + cpu.ID AS id, + cpu.chanel_name AS chanel_name, + cpu.first_channel AS first_channel, + cpu.IMG_Url AS IMG_Url, + cpu.lastModifyTime AS lastModifyTime, + cpu.second_channel AS second_channel, + cpu.SHOW_TIME AS SHOW_TIME, + cpu.TASK_Id AS TASK_Id, + cpu.TITLE AS TITLE, + cpu.URL AS URL, + cpu.checkSysTaskId AS checkSysTaskId, + cpu.innerUUID AS innerUUID, + cpu.isReject AS isReject, + cpu.scanTime AS scanTime +FROM channel_page_update_result cpu +) + UNION ALL +(SELECT + mp.id AS id, + '' AS chanel_name, + '' AS first_channel, + '' AS second_channel, + '' AS TITLE, + mp.imgUrl AS IMG_Url + ,mp.lastModifyTime AS lastModifyTime, + mp.showTime AS SHOW_TIME, + mp.taskId AS TASK_Id, + mp.url AS URL, + mp.checkSysTaskId AS checkSysTaskId, + mp.innerUUID AS innerUUID, + mp.isReject AS isReject, + mp.scanTime AS scanTime +FROM mainpageupdateresult mp +);`, + }, + }, + }, + wantErr: nil, + }, + { + name: "create index", + args: args{ctx: context.Background(), sqls: `CREATE INDEX part_of_name ON customer (name(10));`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "customer", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `CREATE INDEX part_of_name ON customer (name(10));`, + }, + }, + }, + wantErr: nil, + }, + { + name: "drop index", + args: args{ctx: context.Background(), sqls: `DROP INDEX i1 ON t;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `DROP INDEX i1 ON t;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "lock table", + args: args{ctx: context.Background(), sqls: `LOCK TABLES t1 READ`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `LOCK TABLES t1 READ`, + }, + }, + }, + wantErr: nil, + }, + { + name: "unlock table", + args: args{ctx: context.Background(), sqls: `UNLOCK TABLES;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{}, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `UNLOCK TABLES;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "union", + args: args{ctx: context.Background(), sqls: `SELECT 1, 2 UNION SELECT 'a', 'b';`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{}, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SELECT 1, 2 UNION SELECT 'a', 'b';`, + }, + }, + }, + wantErr: nil, + }, + { + name: "union table", + args: args{ctx: context.Background(), sqls: `SELECT city FROM customers +UNION +SELECT city FROM suppliers +ORDER BY city;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "customers", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "suppliers", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SELECT city FROM customers +UNION +SELECT city FROM suppliers +ORDER BY city;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "load data", + args: args{ctx: context.Background(), sqls: `LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeServer, + DatabaseName: "", + TableName: "", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "db2", + TableName: "my_table", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "load data local", + args: args{ctx: context.Background(), sqls: `LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE db2.my_table;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "db2", + TableName: "my_table", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE db2.my_table;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "insert", + args: args{ctx: context.Background(), sqls: `INSERT INTO tbl_name () VALUES();`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "tbl_name", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `INSERT INTO tbl_name () VALUES();`, + }, + }, + }, + wantErr: nil, + }, + { + name: "insert select from", + args: args{ctx: context.Background(), sqls: `INSERT INTO tbl_temp2 (fld_id) +SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "tbl_temp2", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "tbl_temp1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `INSERT INTO tbl_temp2 (fld_id) +SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "delete where", + args: args{ctx: context.Background(), sqls: `DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp_column LIMIT 1;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "somelog", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "somelog", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `DELETE FROM somelog WHERE user = 'jcole' ORDER BY timestamp_column LIMIT 1;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "delete where use alias", + args: args{ctx: context.Background(), sqls: `DELETE FROM somelog AS s WHERE s.user = 'jcole' ORDER BY timestamp_column LIMIT 1;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "somelog", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "somelog", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `DELETE FROM somelog AS s WHERE s.user = 'jcole' ORDER BY timestamp_column LIMIT 1;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "delete table", + args: args{ctx: context.Background(), sqls: `DROP TABLE t_old;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t_old", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `DROP TABLE t_old;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "delete multi table", + args: args{ctx: context.Background(), sqls: `DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpDelete, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t2", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t2", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t3", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "update table basic", + args: args{ctx: context.Background(), sqls: `UPDATE t1 SET col1 = col1 + 1;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `UPDATE t1 SET col1 = col1 + 1;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "update table with two table", + args: args{ctx: context.Background(), sqls: `UPDATE items,month SET items.price=month.price WHERE items.id=month.id;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAddOrUpdate, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "items", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "items", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "month", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `UPDATE items,month SET items.price=month.price WHERE items.id=month.id;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show columns", + args: args{ctx: context.Background(), sqls: `SHOW COLUMNS FROM mytable FROM mydb;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "mydb", + TableName: "mytable", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW COLUMNS FROM mytable FROM mydb;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show create table", + args: args{ctx: context.Background(), sqls: `SHOW CREATE TABLE t`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW CREATE TABLE t`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show create user", + args: args{ctx: context.Background(), sqls: `SHOW CREATE USER 'u1'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "mysql", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW CREATE USER 'u1'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show grants", + args: args{ctx: context.Background(), sqls: `SHOW GRANTS FOR 'jeffrey'@'localhost';`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "mysql", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW GRANTS FOR 'jeffrey'@'localhost';`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show procedure status", + args: args{ctx: context.Background(), sqls: `SHOW PROCEDURE STATUS LIKE 'sp1'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW PROCEDURE STATUS LIKE 'sp1'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show index", + args: args{ctx: context.Background(), sqls: `SHOW INDEX FROM City`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "city", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW INDEX FROM City`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show create databases", + args: args{ctx: context.Background(), sqls: `SHOW CREATE DATABASE test`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "test", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW CREATE DATABASE test`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show events", + args: args{ctx: context.Background(), sqls: `SHOW EVENTS FROM test`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "test", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW EVENTS FROM test`, + }, + }, + }, + wantErr: nil, + }, + { + name: "show master status", + args: args{ctx: context.Background(), sqls: `SHOW MASTER STATUS`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHOW MASTER STATUS`, + }, + }, + }, + wantErr: nil, + }, + { + name: "explain for connection", + args: args{ctx: context.Background(), sqls: `EXPLAIN FOR CONNECTION 4`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `EXPLAIN FOR CONNECTION 4`, + }, + }, + }, + wantErr: nil, + }, + { + name: "explain", + args: args{ctx: context.Background(), sqls: `EXPLAIN ANALYZE SELECT * FROM t1 JOIN t2 ON (t1.c1 = t2.c2)`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t1", + }, + }, + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "t2", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `EXPLAIN ANALYZE SELECT * FROM t1 JOIN t2 ON (t1.c1 = t2.c2)`, + }, + }, + }, + wantErr: nil, + }, + { + name: "prepare", + args: args{ctx: context.Background(), sqls: `PREPARE stmt1 FROM 'SELECT productCode, productName FROM products WHERE productCode = ?'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpRead, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "", + TableName: "products", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `PREPARE stmt1 FROM 'SELECT productCode, productName FROM products WHERE productCode = ?'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "binlog", + args: args{ctx: context.Background(), sqls: `BINLOG 'str'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `BINLOG 'str'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "flush", + args: args{ctx: context.Background(), sqls: `FLUSH BINARY LOGS`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `FLUSH BINARY LOGS`, + }, + }, + }, + wantErr: nil, + }, + { + name: "kill", + args: args{ctx: context.Background(), sqls: `KILL 10`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `KILL 10`, + }, + }, + }, + wantErr: nil, + }, + { + name: "set password", + args: args{ctx: context.Background(), sqls: `SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "create user", + args: args{ctx: context.Background(), sqls: `CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';`, + }, + }, + }, + wantErr: nil, + }, + { + name: "alter user", + args: args{ctx: context.Background(), sqls: `ALTER USER 'jeffrey'@'localhost' ACCOUNT LOCK`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `ALTER USER 'jeffrey'@'localhost' ACCOUNT LOCK`, + }, + }, + }, + wantErr: nil, + }, + { + name: "alter instance", + args: args{ctx: context.Background(), sqls: `ALTER INSTANCE RELOAD TLS;`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `ALTER INSTANCE RELOAD TLS;`, + }, + }, + }, + wantErr: nil, + }, + { + name: "drop user", + args: args{ctx: context.Background(), sqls: `DROP USER 'jeffrey'@'localhost';`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `DROP USER 'jeffrey'@'localhost';`, + }, + }, + }, + wantErr: nil, + }, + { + name: "revoke instance level", + args: args{ctx: context.Background(), sqls: `REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpGrant, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "revoke db level", + args: args{ctx: context.Background(), sqls: `REVOKE INSERT ON db1.* FROM 'jeffrey'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpGrant, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "db1", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `REVOKE INSERT ON db1.* FROM 'jeffrey'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "revoke table level", + args: args{ctx: context.Background(), sqls: `REVOKE INSERT ON db1.t1 FROM 'jeffrey'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpGrant, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "db1", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `REVOKE INSERT ON db1.t1 FROM 'jeffrey'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "grant instance level", + args: args{ctx: context.Background(), sqls: `GRANT ALL ON *.* TO 'jeffrey'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpGrant, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `GRANT ALL ON *.* TO 'jeffrey'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "grant db level", + args: args{ctx: context.Background(), sqls: `GRANT ALL ON db1.* TO 'jeffrey'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpGrant, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeDatabase, + DatabaseName: "db1", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `GRANT ALL ON db1.* TO 'jeffrey'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "grant table level", + args: args{ctx: context.Background(), sqls: `GRANT ALL ON db1.t1 TO 'jeffrey'@'localhost'`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpGrant, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeTable, + DatabaseName: "db1", + TableName: "t1", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `GRANT ALL ON db1.t1 TO 'jeffrey'@'localhost'`, + }, + }, + }, + wantErr: nil, + }, + { + name: "shutdown", + args: args{ctx: context.Background(), sqls: `SHUTDOWN`}, + want: []*dmsCommonSQLOp.SQLObjectOps{ + { + ObjectOps: []*dmsCommonSQLOp.SQLObjectOp{ + { + Op: dmsCommonSQLOp.SQLOpAdmin, + Object: &dmsCommonSQLOp.SQLObject{ + Type: dmsCommonSQLOp.SQLObjectTypeInstance, + DatabaseName: "", + TableName: "", + }, + }, + }, + Sql: dmsCommonSQLOp.SQLInfo{ + Sql: `SHUTDOWN`, + }, + }, + }, + wantErr: nil, + }, + { + name: "unparsed sql", + args: args{ctx: context.Background(), sqls: `SELECT * FROMa t1`}, + wantErr: fmt.Errorf("there is unparsed stmt: SELECT * FROMa t1"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + i := &MysqlDriverImpl{log: log.NewEntry()} + got, err := i.GetSQLOp(tt.args.ctx, tt.args.sqls) + if nil == err && nil == tt.wantErr { + if !isResultEqual(got, tt.want) { + t.Errorf("MysqlDriverImpl.GetSQLOp() = %v, want %v", SQLObjectOpsFingerPrint(got), SQLObjectOpsFingerPrint(tt.want)) + } + return + } + if fmt.Sprintf("%v", err) != fmt.Sprintf("%v", tt.wantErr) { + t.Errorf("MysqlDriverImpl.GetSQLOp() error = %v, wantErr %v", err, tt.wantErr) + return + } + }) + } +} + +func isResultEqual(a, b []*dmsCommonSQLOp.SQLObjectOps) bool { + if len(a) != len(b) { + return false + } + for i := range a { + if !isSQLObjectOpsEqual(a[i], b[i]) { + return false + } + } + return true +} + +func isSQLObjectOpsEqual(a, b *dmsCommonSQLOp.SQLObjectOps) bool { + if len(a.ObjectOps) != len(b.ObjectOps) { + return false + } + if a.Sql.Sql != b.Sql.Sql { + return false + } + sort.Slice(a.ObjectOps, func(i, j int) bool { + s1 := SQLObjectOpFingerPrint(a.ObjectOps[i]) + s2 := SQLObjectOpFingerPrint(a.ObjectOps[j]) + return s1 < s2 + }) + + sort.Slice(b.ObjectOps, func(i, j int) bool { + s1 := SQLObjectOpFingerPrint(b.ObjectOps[i]) + s2 := SQLObjectOpFingerPrint(b.ObjectOps[j]) + return s1 < s2 + }) + + for i := range a.ObjectOps { + if !isSQLObjectOpEqual(a.ObjectOps[i], b.ObjectOps[i]) { + return false + } + } + return true +} + +func isSQLObjectOpEqual(a, b *dmsCommonSQLOp.SQLObjectOp) bool { + if a.Op != b.Op { + return false + } + return isSQLObjectEqual(a.Object, b.Object) +} + +func isSQLObjectEqual(a, b *dmsCommonSQLOp.SQLObject) bool { + if a.Type != b.Type { + return false + } + if a.DatabaseName != b.DatabaseName { + return false + } + if a.SchemaName != b.SchemaName { + return false + } + if a.TableName != b.TableName { + return false + } + return true +} diff --git a/sqle/driver/plugin_adapter_v1.go b/sqle/driver/plugin_adapter_v1.go index e1fa880a66..382b2329a4 100644 --- a/sqle/driver/plugin_adapter_v1.go +++ b/sqle/driver/plugin_adapter_v1.go @@ -4,6 +4,7 @@ import ( "context" sqlDriver "database/sql/driver" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" driverV1 "github.com/actiontech/sqle/sqle/driver/v1" driverV2 "github.com/actiontech/sqle/sqle/driver/v2" "github.com/actiontech/sqle/sqle/errors" @@ -314,3 +315,7 @@ func (p *PluginImplV1) GetTableMetaBySQL(ctx context.Context, conf *GetTableMeta func (p *PluginImplV1) EstimateSQLAffectRows(ctx context.Context, sql string) (*driverV2.EstimatedAffectRows, error) { return nil, NewErrPluginAPINotImplement(driverV2.OptionalModuleEstimateSQLAffectRows) } + +func (p *PluginImplV1) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) { + return nil, NewErrPluginAPINotImplement(driverV2.OptionalModuleProvision) +} diff --git a/sqle/driver/plugin_adapter_v2.go b/sqle/driver/plugin_adapter_v2.go index c8af4ffa50..abfe27658c 100644 --- a/sqle/driver/plugin_adapter_v2.go +++ b/sqle/driver/plugin_adapter_v2.go @@ -7,6 +7,7 @@ import ( "fmt" "sync" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" driverV2 "github.com/actiontech/sqle/sqle/driver/v2" protoV2 "github.com/actiontech/sqle/sqle/driver/v2/proto" "github.com/actiontech/sqle/sqle/log" @@ -485,6 +486,22 @@ func (s *PluginImplV2) EstimateSQLAffectRows(ctx context.Context, sql string) (* }, nil } +func (s *PluginImplV2) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) { + api := "GetSQLOp" + s.preLog(api) + resp, err := s.client.GetSQLOp(ctx, &protoV2.GetSQLOpRequest{ + Session: s.Session, + SqlText: &protoV2.GetSQLOpSQL{ + Sql: sqls, + }, + }) + s.afterLog(api, err) + if err != nil { + return nil, err + } + return driverV2.ConvertProtoSQLOpsResponseToDriver(resp) +} + type dbDriverResult struct { lastInsertId int64 lastInsertIdErr string diff --git a/sqle/driver/plugin_interface.go b/sqle/driver/plugin_interface.go index c32fe30353..405809ce96 100644 --- a/sqle/driver/plugin_interface.go +++ b/sqle/driver/plugin_interface.go @@ -5,6 +5,7 @@ import ( "database/sql/driver" driverV2 "github.com/actiontech/sqle/sqle/driver/v2" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" "github.com/sirupsen/logrus" ) @@ -40,6 +41,10 @@ type Plugin interface { // Introduced from v2.2304.0 EstimateSQLAffectRows(ctx context.Context, sql string) (*driverV2.EstimatedAffectRows, error) + + // 权限相关接口,目前用于provision的权限校验 + // GetSqlOp 获取sql中涉及的对象操作,sql可以是单条语句,也可以是多条语句 + GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) } type PluginProcessor interface { diff --git a/sqle/driver/v2/driver_grpc_server.go b/sqle/driver/v2/driver_grpc_server.go index 093766852a..e1939f54aa 100644 --- a/sqle/driver/v2/driver_grpc_server.go +++ b/sqle/driver/v2/driver_grpc_server.go @@ -449,3 +449,18 @@ func (d *DriverGrpcServer) KillProcess(ctx context.Context, req *protoV2.KillPro ErrMessage: info.ErrMessage, }, nil } + +func (d *DriverGrpcServer) GetSQLOp(ctx context.Context, req *protoV2.GetSQLOpRequest) (*protoV2.GetSQLOpResponse, error) { + driver, err := d.getDriverBySession(req.Session) + if err != nil { + return &protoV2.GetSQLOpResponse{}, err + } + if req.GetSqlText() == nil { + return &protoV2.GetSQLOpResponse{}, ErrSQLisEmpty + } + ops, err := driver.GetSQLOp(ctx, req.GetSqlText().Sql) + if err != nil { + return &protoV2.GetSQLOpResponse{}, err + } + return ConvertDriverSQLOpsResponseToProto(ops) +} diff --git a/sqle/driver/v2/driver_interface.go b/sqle/driver/v2/driver_interface.go index 178e665de0..26e0ecd705 100644 --- a/sqle/driver/v2/driver_interface.go +++ b/sqle/driver/v2/driver_interface.go @@ -8,6 +8,7 @@ import ( "sort" "strings" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" "github.com/actiontech/sqle/sqle/driver/common" protoV2 "github.com/actiontech/sqle/sqle/driver/v2/proto" "github.com/actiontech/sqle/sqle/pkg/params" @@ -88,6 +89,10 @@ type Driver interface { ExtractTableFromSQL(ctx context.Context, sql string) ([]*Table, error) EstimateSQLAffectRows(ctx context.Context, sql string) (*EstimatedAffectRows, error) KillProcess(ctx context.Context) (*KillProcessInfo, error) + + // 权限相关接口,目前用于provision的权限校验 + // GetSQLOp 获取sql中涉及的对象操作,sql可以是单条语句,也可以是多条语句 + GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) } type Node struct { diff --git a/sqle/driver/v2/proto/driver_v2.pb.go b/sqle/driver/v2/proto/driver_v2.pb.go index c2fac7d644..2eedf80163 100644 --- a/sqle/driver/v2/proto/driver_v2.pb.go +++ b/sqle/driver/v2/proto/driver_v2.pb.go @@ -68,6 +68,13 @@ It has these top-level messages: EstimateSQLAffectRowsRequest EstimateSQLAffectRowsResponse KillProcessResponse + SQLObject + SQLObjectOp + GetSQLOpSQL + GetSQLOpSQLInfo + SQLOps + GetSQLOpRequest + GetSQLOpResponse */ package protoV2 @@ -101,6 +108,7 @@ const ( OptionalModule_ExtractTableFromSQL OptionalModule = 4 OptionalModule_EstimateSQLAffectRows OptionalModule = 5 OptionalModule_KillProcess OptionalModule = 6 + OptionalModule_Provision OptionalModule = 7 ) var OptionalModule_name = map[int32]string{ @@ -111,6 +119,7 @@ var OptionalModule_name = map[int32]string{ 4: "ExtractTableFromSQL", 5: "EstimateSQLAffectRows", 6: "KillProcess", + 7: "Provision", } var OptionalModule_value = map[string]int32{ "GenRollbackSQL": 0, @@ -120,6 +129,7 @@ var OptionalModule_value = map[string]int32{ "ExtractTableFromSQL": 4, "EstimateSQLAffectRows": 5, "KillProcess": 6, + "Provision": 7, } func (x OptionalModule) String() string { @@ -127,6 +137,68 @@ func (x OptionalModule) String() string { } func (OptionalModule) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } +// GetSQLOp +type SQLOp int32 + +const ( + SQLOp_AddOrUpdate SQLOp = 0 + SQLOp_Read SQLOp = 1 + SQLOp_Delete SQLOp = 2 + SQLOp_Grant SQLOp = 3 + SQLOp_Admin SQLOp = 4 +) + +var SQLOp_name = map[int32]string{ + 0: "AddOrUpdate", + 1: "Read", + 2: "Delete", + 3: "Grant", + 4: "Admin", +} +var SQLOp_value = map[string]int32{ + "AddOrUpdate": 0, + "Read": 1, + "Delete": 2, + "Grant": 3, + "Admin": 4, +} + +func (x SQLOp) String() string { + return proto.EnumName(SQLOp_name, int32(x)) +} +func (SQLOp) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } + +// GetSQLOp +type SQLObjectType int32 + +const ( + SQLObjectType_SQLObjectTypeTable SQLObjectType = 0 + SQLObjectType_SQLObjectTypeDatabase SQLObjectType = 1 + SQLObjectType_SQLObjectTypeSchema SQLObjectType = 2 + SQLObjectType_SQLObjectTypeInstance SQLObjectType = 3 + SQLObjectType_SQLObjectTypeServer SQLObjectType = 4 +) + +var SQLObjectType_name = map[int32]string{ + 0: "SQLObjectTypeTable", + 1: "SQLObjectTypeDatabase", + 2: "SQLObjectTypeSchema", + 3: "SQLObjectTypeInstance", + 4: "SQLObjectTypeServer", +} +var SQLObjectType_value = map[string]int32{ + "SQLObjectTypeTable": 0, + "SQLObjectTypeDatabase": 1, + "SQLObjectTypeSchema": 2, + "SQLObjectTypeInstance": 3, + "SQLObjectTypeServer": 4, +} + +func (x SQLObjectType) String() string { + return proto.EnumName(SQLObjectType_name, int32(x)) +} +func (SQLObjectType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } + type Empty struct { } @@ -1479,6 +1551,171 @@ func (m *KillProcessResponse) GetErrMessage() string { return "" } +// GetSQLOp +type SQLObject struct { + Type SQLObjectType `protobuf:"varint,1,opt,name=type,enum=protoV2.SQLObjectType" json:"type,omitempty"` + DatabaseName string `protobuf:"bytes,2,opt,name=databaseName" json:"databaseName,omitempty"` + SchemaName string `protobuf:"bytes,3,opt,name=schemaName" json:"schemaName,omitempty"` + TableName string `protobuf:"bytes,4,opt,name=tableName" json:"tableName,omitempty"` +} + +func (m *SQLObject) Reset() { *m = SQLObject{} } +func (m *SQLObject) String() string { return proto.CompactTextString(m) } +func (*SQLObject) ProtoMessage() {} +func (*SQLObject) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{60} } + +func (m *SQLObject) GetType() SQLObjectType { + if m != nil { + return m.Type + } + return SQLObjectType_SQLObjectTypeTable +} + +func (m *SQLObject) GetDatabaseName() string { + if m != nil { + return m.DatabaseName + } + return "" +} + +func (m *SQLObject) GetSchemaName() string { + if m != nil { + return m.SchemaName + } + return "" +} + +func (m *SQLObject) GetTableName() string { + if m != nil { + return m.TableName + } + return "" +} + +// GetSQLOp +type SQLObjectOp struct { + Op SQLOp `protobuf:"varint,1,opt,name=op,enum=protoV2.SQLOp" json:"op,omitempty"` + Object *SQLObject `protobuf:"bytes,2,opt,name=object" json:"object,omitempty"` +} + +func (m *SQLObjectOp) Reset() { *m = SQLObjectOp{} } +func (m *SQLObjectOp) String() string { return proto.CompactTextString(m) } +func (*SQLObjectOp) ProtoMessage() {} +func (*SQLObjectOp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{61} } + +func (m *SQLObjectOp) GetOp() SQLOp { + if m != nil { + return m.Op + } + return SQLOp_AddOrUpdate +} + +func (m *SQLObjectOp) GetObject() *SQLObject { + if m != nil { + return m.Object + } + return nil +} + +// GetSQLOp +type GetSQLOpSQL struct { + Sql string `protobuf:"bytes,1,opt,name=sql" json:"sql,omitempty"` +} + +func (m *GetSQLOpSQL) Reset() { *m = GetSQLOpSQL{} } +func (m *GetSQLOpSQL) String() string { return proto.CompactTextString(m) } +func (*GetSQLOpSQL) ProtoMessage() {} +func (*GetSQLOpSQL) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{62} } + +func (m *GetSQLOpSQL) GetSql() string { + if m != nil { + return m.Sql + } + return "" +} + +// GetSQLOp +type GetSQLOpSQLInfo struct { + Sql string `protobuf:"bytes,1,opt,name=sql" json:"sql,omitempty"` +} + +func (m *GetSQLOpSQLInfo) Reset() { *m = GetSQLOpSQLInfo{} } +func (m *GetSQLOpSQLInfo) String() string { return proto.CompactTextString(m) } +func (*GetSQLOpSQLInfo) ProtoMessage() {} +func (*GetSQLOpSQLInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{63} } + +func (m *GetSQLOpSQLInfo) GetSql() string { + if m != nil { + return m.Sql + } + return "" +} + +// GetSQLOp +type SQLOps struct { + ObjectOps []*SQLObjectOp `protobuf:"bytes,1,rep,name=objectOps" json:"objectOps,omitempty"` + Sql *GetSQLOpSQLInfo `protobuf:"bytes,2,opt,name=sql" json:"sql,omitempty"` +} + +func (m *SQLOps) Reset() { *m = SQLOps{} } +func (m *SQLOps) String() string { return proto.CompactTextString(m) } +func (*SQLOps) ProtoMessage() {} +func (*SQLOps) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{64} } + +func (m *SQLOps) GetObjectOps() []*SQLObjectOp { + if m != nil { + return m.ObjectOps + } + return nil +} + +func (m *SQLOps) GetSql() *GetSQLOpSQLInfo { + if m != nil { + return m.Sql + } + return nil +} + +type GetSQLOpRequest struct { + Session *Session `protobuf:"bytes,1,opt,name=session" json:"session,omitempty"` + SqlText *GetSQLOpSQL `protobuf:"bytes,2,opt,name=sqlText" json:"sqlText,omitempty"` +} + +func (m *GetSQLOpRequest) Reset() { *m = GetSQLOpRequest{} } +func (m *GetSQLOpRequest) String() string { return proto.CompactTextString(m) } +func (*GetSQLOpRequest) ProtoMessage() {} +func (*GetSQLOpRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{65} } + +func (m *GetSQLOpRequest) GetSession() *Session { + if m != nil { + return m.Session + } + return nil +} + +func (m *GetSQLOpRequest) GetSqlText() *GetSQLOpSQL { + if m != nil { + return m.SqlText + } + return nil +} + +type GetSQLOpResponse struct { + SqlOps []*SQLOps `protobuf:"bytes,1,rep,name=sqlOps" json:"sqlOps,omitempty"` +} + +func (m *GetSQLOpResponse) Reset() { *m = GetSQLOpResponse{} } +func (m *GetSQLOpResponse) String() string { return proto.CompactTextString(m) } +func (*GetSQLOpResponse) ProtoMessage() {} +func (*GetSQLOpResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{66} } + +func (m *GetSQLOpResponse) GetSqlOps() []*SQLOps { + if m != nil { + return m.SqlOps + } + return nil +} + func init() { proto.RegisterType((*Empty)(nil), "protoV2.Empty") proto.RegisterType((*Session)(nil), "protoV2.Session") @@ -1540,7 +1777,16 @@ func init() { proto.RegisterType((*EstimateSQLAffectRowsRequest)(nil), "protoV2.EstimateSQLAffectRowsRequest") proto.RegisterType((*EstimateSQLAffectRowsResponse)(nil), "protoV2.EstimateSQLAffectRowsResponse") proto.RegisterType((*KillProcessResponse)(nil), "protoV2.KillProcessResponse") + proto.RegisterType((*SQLObject)(nil), "protoV2.SQLObject") + proto.RegisterType((*SQLObjectOp)(nil), "protoV2.SQLObjectOp") + proto.RegisterType((*GetSQLOpSQL)(nil), "protoV2.GetSQLOpSQL") + proto.RegisterType((*GetSQLOpSQLInfo)(nil), "protoV2.GetSQLOpSQLInfo") + proto.RegisterType((*SQLOps)(nil), "protoV2.SQLOps") + proto.RegisterType((*GetSQLOpRequest)(nil), "protoV2.GetSQLOpRequest") + proto.RegisterType((*GetSQLOpResponse)(nil), "protoV2.GetSQLOpResponse") proto.RegisterEnum("protoV2.OptionalModule", OptionalModule_name, OptionalModule_value) + proto.RegisterEnum("protoV2.SQLOp", SQLOp_name, SQLOp_value) + proto.RegisterEnum("protoV2.SQLObjectType", SQLObjectType_name, SQLObjectType_value) } // Reference imports to suppress errors if they are not otherwise used. @@ -1578,6 +1824,8 @@ type DriverClient interface { GetTableMeta(ctx context.Context, in *GetTableMetaRequest, opts ...grpc.CallOption) (*GetTableMetaResponse, error) ExtractTableFromSQL(ctx context.Context, in *ExtractTableFromSQLRequest, opts ...grpc.CallOption) (*ExtractTableFromSQLResponse, error) EstimateSQLAffectRows(ctx context.Context, in *EstimateSQLAffectRowsRequest, opts ...grpc.CallOption) (*EstimateSQLAffectRowsResponse, error) + // provision + GetSQLOp(ctx context.Context, in *GetSQLOpRequest, opts ...grpc.CallOption) (*GetSQLOpResponse, error) } type driverClient struct { @@ -1732,6 +1980,15 @@ func (c *driverClient) EstimateSQLAffectRows(ctx context.Context, in *EstimateSQ return out, nil } +func (c *driverClient) GetSQLOp(ctx context.Context, in *GetSQLOpRequest, opts ...grpc.CallOption) (*GetSQLOpResponse, error) { + out := new(GetSQLOpResponse) + err := grpc.Invoke(ctx, "/protoV2.Driver/GetSQLOp", in, out, c.cc, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // Server API for Driver service type DriverServer interface { @@ -1759,6 +2016,8 @@ type DriverServer interface { GetTableMeta(context.Context, *GetTableMetaRequest) (*GetTableMetaResponse, error) ExtractTableFromSQL(context.Context, *ExtractTableFromSQLRequest) (*ExtractTableFromSQLResponse, error) EstimateSQLAffectRows(context.Context, *EstimateSQLAffectRowsRequest) (*EstimateSQLAffectRowsResponse, error) + // provision + GetSQLOp(context.Context, *GetSQLOpRequest) (*GetSQLOpResponse, error) } func RegisterDriverServer(s *grpc.Server, srv DriverServer) { @@ -2053,6 +2312,24 @@ func _Driver_EstimateSQLAffectRows_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Driver_GetSQLOp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSQLOpRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DriverServer).GetSQLOp(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/protoV2.Driver/GetSQLOp", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DriverServer).GetSQLOp(ctx, req.(*GetSQLOpRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Driver_serviceDesc = grpc.ServiceDesc{ ServiceName: "protoV2.Driver", HandlerType: (*DriverServer)(nil), @@ -2121,6 +2398,10 @@ var _Driver_serviceDesc = grpc.ServiceDesc{ MethodName: "EstimateSQLAffectRows", Handler: _Driver_EstimateSQLAffectRows_Handler, }, + { + MethodName: "GetSQLOp", + Handler: _Driver_GetSQLOp_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "driver_v2.proto", @@ -2129,124 +2410,143 @@ var _Driver_serviceDesc = grpc.ServiceDesc{ func init() { proto.RegisterFile("driver_v2.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ - // 1893 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x58, 0xeb, 0x72, 0x14, 0xb9, - 0x15, 0xce, 0x5c, 0xed, 0x39, 0x73, 0xf1, 0xac, 0x6c, 0xc3, 0x30, 0x80, 0xd7, 0x11, 0xe0, 0x75, - 0xb1, 0xc4, 0xb0, 0x26, 0x61, 0x8b, 0x25, 0x49, 0x41, 0x6c, 0x07, 0xbc, 0x80, 0x63, 0x64, 0x42, - 0xaa, 0xb6, 0x6a, 0x6b, 0x57, 0x9e, 0x96, 0x67, 0xbb, 0xe8, 0x69, 0x8d, 0x5b, 0x1a, 0x6c, 0x9e, - 0x20, 0x0f, 0x90, 0x1f, 0x79, 0x8d, 0xfc, 0xd9, 0x9f, 0x79, 0x91, 0x3c, 0x4d, 0x4a, 0x97, 0xee, - 0x56, 0x5f, 0x66, 0x2f, 0xf3, 0xab, 0xa5, 0x73, 0xd3, 0xa7, 0x73, 0x8e, 0x8e, 0x8e, 0x1a, 0x56, - 0xbc, 0xc8, 0xff, 0xc0, 0xa2, 0xef, 0x3e, 0xec, 0xee, 0x4c, 0x23, 0x2e, 0x39, 0x5a, 0xd2, 0x9f, - 0x77, 0xbb, 0x78, 0x09, 0x1a, 0x07, 0x93, 0xa9, 0xfc, 0x88, 0xaf, 0xc1, 0xd2, 0x09, 0x13, 0xc2, - 0xe7, 0x21, 0xea, 0x41, 0xd5, 0xf7, 0x06, 0x95, 0xcd, 0xca, 0x76, 0x8b, 0x54, 0x7d, 0x0f, 0xff, - 0x03, 0x1a, 0xc7, 0x34, 0xa2, 0x13, 0xd4, 0x87, 0xda, 0x7b, 0xf6, 0xd1, 0x72, 0xd4, 0x10, 0xad, - 0x41, 0xe3, 0x03, 0x0d, 0x66, 0x6c, 0x50, 0xd5, 0x34, 0x33, 0x41, 0x08, 0xea, 0x1e, 0x13, 0xa3, - 0x41, 0x4d, 0x13, 0xf5, 0x58, 0xd1, 0xe4, 0xc7, 0x29, 0x1b, 0xd4, 0x0d, 0x4d, 0x8d, 0xf1, 0x8f, - 0x15, 0xa8, 0xed, 0x9f, 0x1c, 0x29, 0xde, 0x0f, 0x5c, 0x48, 0x6b, 0x58, 0x8f, 0x15, 0x6d, 0xca, - 0x23, 0x69, 0x0d, 0xeb, 0xb1, 0xa2, 0xcd, 0x04, 0x8b, 0x62, 0xbb, 0x6a, 0x8c, 0x86, 0xb0, 0x3c, - 0xa5, 0x42, 0x5c, 0xf0, 0xc8, 0xb3, 0xb6, 0x93, 0xb9, 0xe2, 0x79, 0x54, 0xd2, 0x53, 0x2a, 0xd8, - 0xa0, 0x61, 0x78, 0xf1, 0x1c, 0x7d, 0x05, 0x7d, 0xea, 0x79, 0xbe, 0xf4, 0x79, 0x48, 0x03, 0xbd, - 0x3d, 0x31, 0x68, 0x6e, 0xd6, 0xb6, 0xdb, 0xbb, 0xbd, 0x1d, 0xeb, 0x9c, 0x1d, 0x4d, 0x26, 0x05, - 0x39, 0xfc, 0xbf, 0x0a, 0xd4, 0xc9, 0x2c, 0xd0, 0x1b, 0x0d, 0xe9, 0x84, 0xc5, 0xc0, 0xd5, 0x38, - 0xd9, 0x7c, 0xd5, 0xd9, 0xfc, 0x1a, 0x34, 0x02, 0xf6, 0x81, 0x05, 0x16, 0xb9, 0x99, 0x28, 0x78, - 0x23, 0x2a, 0xd9, 0x98, 0x47, 0x1f, 0x63, 0xe8, 0xf1, 0x1c, 0x6d, 0x41, 0x73, 0x6a, 0x40, 0x35, - 0x4a, 0x41, 0x59, 0x2e, 0xda, 0x00, 0xa0, 0x61, 0xc8, 0x25, 0x55, 0x00, 0x07, 0x4d, 0x6d, 0xc5, - 0xa1, 0xa0, 0x07, 0xd0, 0x7a, 0x1f, 0xf2, 0x8b, 0x80, 0x79, 0x63, 0x36, 0x58, 0xda, 0xac, 0x6c, - 0xb7, 0x77, 0x51, 0x62, 0xea, 0x65, 0xcc, 0x21, 0xa9, 0x10, 0xbe, 0x03, 0xad, 0x84, 0x8e, 0x06, - 0xb0, 0x34, 0xe2, 0xa1, 0x64, 0x61, 0x1c, 0x9c, 0x78, 0x8a, 0x7f, 0xac, 0x42, 0xf7, 0x35, 0x93, - 0x54, 0x10, 0x26, 0xa6, 0x3c, 0x14, 0x4c, 0x41, 0x99, 0x06, 0xb3, 0xb1, 0x1f, 0x1e, 0xa5, 0x2e, - 0x71, 0x28, 0xe8, 0x01, 0xac, 0xc6, 0xde, 0xdf, 0x67, 0x67, 0x74, 0x16, 0xc8, 0xe3, 0x38, 0xc0, - 0x35, 0x52, 0xc6, 0x42, 0x5f, 0xc3, 0x20, 0x26, 0x3f, 0xcb, 0xc7, 0xaa, 0x56, 0xea, 0x96, 0xb9, - 0xf2, 0xe8, 0x16, 0x34, 0xa2, 0x59, 0xc0, 0xc4, 0xa0, 0xae, 0x15, 0xbb, 0x89, 0xa2, 0x0a, 0x24, - 0x31, 0x3c, 0xf4, 0x1a, 0xd6, 0x59, 0x48, 0x4f, 0x03, 0xe6, 0xfd, 0x6d, 0x6a, 0xb4, 0x5f, 0x73, - 0x6f, 0x16, 0x30, 0x1d, 0x84, 0xde, 0xee, 0xd5, 0x44, 0x29, 0xcb, 0x26, 0xe5, 0x5a, 0x2a, 0x15, - 0x02, 0x3e, 0xe6, 0x3a, 0x2c, 0x1d, 0xa2, 0xc7, 0x98, 0x40, 0xfb, 0x30, 0xf4, 0x25, 0x61, 0xe7, - 0x33, 0x26, 0x24, 0xda, 0x80, 0x9a, 0x27, 0x42, 0xed, 0xad, 0xf6, 0x6e, 0x27, 0xb1, 0xbf, 0x7f, - 0x72, 0x44, 0x14, 0x23, 0x85, 0x5d, 0x9d, 0x0f, 0x1b, 0x7f, 0x05, 0x1d, 0x63, 0xd3, 0x46, 0xe2, - 0x2e, 0x2c, 0x09, 0x73, 0x96, 0xad, 0xe1, 0x7e, 0xa2, 0x66, 0xcf, 0x38, 0x89, 0x05, 0x94, 0xee, - 0x5e, 0xc0, 0x05, 0x8b, 0x01, 0xfd, 0x1a, 0xdd, 0xa7, 0x80, 0x5e, 0xfa, 0x41, 0x70, 0x1c, 0xf1, - 0x11, 0x13, 0x62, 0x11, 0x0b, 0xbf, 0x85, 0xd6, 0x31, 0x8d, 0x04, 0xf3, 0x4e, 0xde, 0xbc, 0x52, - 0xa7, 0xe4, 0x7c, 0xc6, 0xa2, 0xb8, 0xc0, 0x98, 0x09, 0xfe, 0x1e, 0x3a, 0x5a, 0x64, 0x01, 0xf3, - 0xe8, 0x36, 0xd4, 0xc4, 0x79, 0xa0, 0x53, 0xcc, 0xcd, 0xfb, 0x64, 0x49, 0xa2, 0xd8, 0x38, 0x84, - 0xfa, 0x11, 0xf7, 0x74, 0xb8, 0x24, 0xbb, 0x4c, 0xca, 0x90, 0x1a, 0x27, 0x65, 0xab, 0x9a, 0x96, - 0x2d, 0xb4, 0x09, 0xed, 0x33, 0x3f, 0x1c, 0xb3, 0x68, 0x1a, 0xf9, 0xa1, 0xb4, 0x67, 0xda, 0x25, - 0xa1, 0x1b, 0xd0, 0x12, 0x92, 0x46, 0xf2, 0x95, 0x1f, 0x9a, 0x8a, 0x57, 0x27, 0x29, 0x01, 0xff, - 0x1e, 0xba, 0x76, 0x47, 0x36, 0x5e, 0xb7, 0xa0, 0x11, 0x72, 0x8f, 0x89, 0x41, 0x25, 0x17, 0x64, - 0x05, 0x8b, 0x18, 0x1e, 0xde, 0x84, 0xe5, 0x67, 0x33, 0xcf, 0x97, 0xf3, 0x3d, 0x45, 0xa1, 0xa3, - 0x25, 0x16, 0xf1, 0xd4, 0x1d, 0xa8, 0x8b, 0xf3, 0x20, 0x4e, 0xb3, 0x4f, 0x12, 0xc1, 0x78, 0x49, - 0xa2, 0xd9, 0xf8, 0x1b, 0x68, 0xdb, 0x25, 0xc4, 0x2c, 0x90, 0xaa, 0x3c, 0x4c, 0x98, 0x10, 0x74, - 0x1c, 0x9f, 0xf7, 0x78, 0x9a, 0x56, 0xbc, 0xaa, 0x5b, 0xf1, 0xae, 0x43, 0x4b, 0x65, 0xec, 0x77, - 0xba, 0x68, 0x1a, 0xbf, 0x2d, 0x2b, 0x82, 0xaa, 0x0f, 0xf8, 0xcf, 0x09, 0x7c, 0x65, 0x5b, 0xa0, - 0x1d, 0x58, 0x8a, 0xcc, 0xd0, 0xfa, 0x65, 0x2d, 0x8b, 0xca, 0xc8, 0x91, 0x58, 0x08, 0x7f, 0x0d, - 0xdd, 0x98, 0x6e, 0xdc, 0xfa, 0x18, 0x3a, 0xd4, 0x31, 0x68, 0xad, 0xac, 0x97, 0x59, 0x11, 0x24, - 0x23, 0x8a, 0x3f, 0x83, 0x95, 0x23, 0xc6, 0x3c, 0xc2, 0x83, 0xe0, 0x94, 0x8e, 0xde, 0xcf, 0xf7, - 0x39, 0x87, 0xf5, 0xe7, 0x2c, 0x74, 0xe4, 0x16, 0x71, 0xfe, 0x5d, 0x37, 0x4d, 0x07, 0x69, 0xf4, - 0xb3, 0x08, 0x4c, 0xb2, 0xfe, 0x09, 0xda, 0x3f, 0x8b, 0xca, 0x8d, 0x4b, 0x35, 0x13, 0x17, 0xfc, - 0x14, 0xae, 0xe4, 0xf1, 0x5a, 0x6f, 0x6d, 0x19, 0x10, 0x06, 0x6c, 0xea, 0xea, 0x02, 0x80, 0xc7, - 0xd0, 0x3e, 0xf6, 0xc3, 0xf1, 0x22, 0xa7, 0xfd, 0x53, 0x58, 0x3a, 0xb8, 0x64, 0xa3, 0xf9, 0xde, - 0xfc, 0x16, 0xda, 0x4a, 0x60, 0x11, 0x1f, 0x62, 0xd7, 0x87, 0xa9, 0x9c, 0x5d, 0xcf, 0x40, 0xff, - 0x4f, 0x05, 0xc0, 0xd8, 0xd7, 0xd9, 0x8b, 0xa1, 0x13, 0x50, 0x21, 0x0f, 0x43, 0xc1, 0x22, 0x79, - 0x68, 0x3a, 0x9e, 0x1a, 0xc9, 0xd0, 0xd0, 0x3d, 0xf8, 0xc4, 0x9d, 0x1f, 0x44, 0x11, 0x8f, 0xac, - 0x4f, 0x8b, 0x0c, 0x65, 0x31, 0xe2, 0x17, 0xe2, 0xd9, 0xd9, 0x19, 0x1b, 0x49, 0xe6, 0xe9, 0x14, - 0xaf, 0x91, 0x0c, 0x4d, 0x59, 0x74, 0xe7, 0xc6, 0xa2, 0xb9, 0xfe, 0x8b, 0x0c, 0xfc, 0x04, 0x3a, - 0x16, 0xb1, 0x89, 0xd2, 0xe7, 0xd0, 0x34, 0xf9, 0x6e, 0x3d, 0xb2, 0x9a, 0xd9, 0xa9, 0x3d, 0x12, - 0x56, 0x04, 0x7f, 0x0b, 0xad, 0xb7, 0x97, 0x8b, 0xd5, 0x4d, 0xb7, 0x1a, 0x14, 0xbd, 0x69, 0x8a, - 0xc1, 0x13, 0x00, 0x65, 0xde, 0x22, 0xfb, 0x5d, 0xfe, 0xb8, 0x96, 0x42, 0x4b, 0x4e, 0xeb, 0x26, - 0x2c, 0xbf, 0x51, 0x31, 0x9f, 0x9f, 0x0c, 0x5f, 0x40, 0x4b, 0x4b, 0xec, 0xf1, 0xf0, 0x0c, 0xdd, - 0x86, 0xae, 0xf4, 0x27, 0x8c, 0xcf, 0xe4, 0x09, 0x1b, 0xf1, 0xd0, 0x04, 0xab, 0x4b, 0xb2, 0x44, - 0xfc, 0xcf, 0x0a, 0x74, 0xb4, 0xce, 0x22, 0x9b, 0xbe, 0xe5, 0x66, 0x50, 0x5a, 0x01, 0x63, 0x94, - 0x3a, 0x85, 0xd0, 0x16, 0xd4, 0x47, 0x3c, 0x3c, 0xd3, 0x91, 0x75, 0xaf, 0x94, 0x04, 0x29, 0xd1, - 0x7c, 0xec, 0x41, 0xd7, 0x02, 0x49, 0x8e, 0x57, 0x73, 0xc4, 0x83, 0xd9, 0x24, 0xb4, 0xde, 0x29, - 0x34, 0x74, 0x86, 0x8b, 0x3e, 0x87, 0xba, 0xca, 0x02, 0xeb, 0xfa, 0xab, 0xd9, 0x05, 0xac, 0x13, - 0xf9, 0x05, 0xd1, 0x42, 0x78, 0x0f, 0x7a, 0x59, 0x3a, 0xfa, 0x02, 0x9a, 0xba, 0x07, 0x8f, 0x83, - 0x70, 0xad, 0xcc, 0xc0, 0x3b, 0x25, 0x41, 0xac, 0x20, 0xde, 0x86, 0x7e, 0x9e, 0x97, 0xf6, 0xf5, - 0x15, 0xa7, 0xaf, 0xc7, 0x58, 0x1d, 0x9f, 0x69, 0x40, 0xfd, 0x70, 0x7e, 0xd4, 0x46, 0xd0, 0xb3, - 0x32, 0x8b, 0x5d, 0x43, 0x4e, 0x0c, 0xdc, 0x04, 0x8a, 0x57, 0x35, 0x07, 0xf9, 0x1d, 0xac, 0x24, - 0x8b, 0x58, 0xff, 0xee, 0x41, 0x77, 0x14, 0x50, 0x21, 0x7c, 0x9b, 0x69, 0x76, 0xad, 0x9b, 0x79, - 0x1b, 0x7b, 0xae, 0x10, 0xc9, 0xea, 0xe0, 0xa7, 0xb0, 0x56, 0x26, 0x86, 0xb6, 0xa1, 0xae, 0x1a, - 0xcb, 0x42, 0x71, 0x7c, 0x4b, 0x4f, 0x67, 0x01, 0x8d, 0xf6, 0xa9, 0xa4, 0x44, 0x4b, 0xe0, 0x67, - 0xb0, 0xfa, 0x9c, 0xc9, 0x7d, 0xdb, 0x85, 0x2e, 0xd4, 0x13, 0x6d, 0xc0, 0x72, 0xac, 0x5f, 0xf6, - 0xc0, 0xc0, 0xcf, 0x61, 0x2d, 0xbb, 0x84, 0xf5, 0xc0, 0x7d, 0x68, 0xc5, 0xdd, 0x6f, 0x1c, 0xfd, - 0x34, 0x8b, 0x63, 0x71, 0x92, 0xca, 0xe0, 0x87, 0xd0, 0x78, 0xab, 0xda, 0xd6, 0xd2, 0x67, 0xcc, - 0x15, 0x68, 0x8a, 0xd1, 0x0f, 0x6c, 0x42, 0x6d, 0xb5, 0xb3, 0x33, 0x3c, 0xd6, 0x1b, 0xd4, 0x7a, - 0xaa, 0xfd, 0x5f, 0xac, 0xba, 0x34, 0xa4, 0xd2, 0xb7, 0x61, 0xee, 0xb9, 0xee, 0x54, 0x4d, 0xad, - 0x66, 0xe2, 0x17, 0x7a, 0x9b, 0xce, 0x42, 0x76, 0x9b, 0x0f, 0xa0, 0x25, 0x63, 0xa2, 0x5d, 0x0b, - 0x65, 0x2d, 0x68, 0xf1, 0x54, 0x08, 0xff, 0xb7, 0x02, 0xad, 0x84, 0x81, 0x1e, 0x41, 0xdb, 0x1c, - 0x35, 0x71, 0x18, 0x9e, 0xf1, 0x42, 0x48, 0xf7, 0x52, 0x1e, 0x71, 0x05, 0x95, 0x9e, 0x1f, 0x7a, - 0xec, 0x92, 0x19, 0xbd, 0x6a, 0x4e, 0xef, 0x30, 0xe5, 0x11, 0x57, 0x10, 0x6d, 0x41, 0x6f, 0x14, - 0x31, 0x2a, 0x99, 0x86, 0x70, 0xf2, 0xe6, 0x95, 0x6d, 0x7c, 0x72, 0x54, 0xf7, 0xce, 0xae, 0x67, - 0xef, 0xec, 0x2f, 0xa1, 0xed, 0xa0, 0xfa, 0x15, 0xc9, 0xf8, 0xa5, 0x7a, 0x6b, 0xa4, 0x48, 0x7e, - 0xb9, 0xe2, 0x63, 0x58, 0x71, 0x88, 0x2f, 0x18, 0xf5, 0x7e, 0xe9, 0x53, 0x57, 0x75, 0x4e, 0xae, - 0x3d, 0x7e, 0x21, 0x54, 0xa1, 0xf0, 0x25, 0x9b, 0x98, 0xa4, 0x6c, 0x11, 0x33, 0xc1, 0x1c, 0xda, - 0x8e, 0x20, 0xda, 0x55, 0x2f, 0x4d, 0xbd, 0x49, 0x9b, 0xbb, 0x83, 0x32, 0x7c, 0x0a, 0x0a, 0x89, - 0x05, 0xd1, 0xbd, 0x4c, 0xad, 0x2c, 0x55, 0x50, 0x00, 0x6c, 0xb1, 0xbc, 0xad, 0xae, 0x52, 0x19, - 0x51, 0x75, 0xb9, 0xce, 0xaf, 0x5f, 0xe7, 0x30, 0xb4, 0x52, 0x3a, 0x32, 0x7f, 0x8d, 0xf8, 0x64, - 0xc1, 0xae, 0xee, 0x33, 0xb7, 0x96, 0xad, 0x3b, 0x75, 0x28, 0xc5, 0x60, 0xaa, 0xd9, 0x01, 0x5c, - 0x2f, 0x5d, 0x32, 0xbd, 0x39, 0x74, 0x2e, 0x8b, 0xc2, 0xcd, 0x61, 0xce, 0x8b, 0xe5, 0xe2, 0x3b, - 0xd0, 0x35, 0xbd, 0x83, 0xda, 0xf3, 0xfc, 0x0d, 0x4a, 0xb8, 0x71, 0x20, 0xa4, 0x3f, 0xa1, 0x52, - 0xa5, 0x5d, 0xaa, 0xb1, 0xc8, 0x16, 0xb7, 0xdd, 0x2d, 0x5e, 0x49, 0x1b, 0x6b, 0x17, 0x86, 0xd9, - 0xe3, 0xdf, 0xe1, 0xe6, 0x9c, 0x55, 0xed, 0x2e, 0xd7, 0xa0, 0x31, 0xe2, 0x33, 0xfb, 0x9f, 0xa1, - 0x46, 0xcc, 0x04, 0x6d, 0x00, 0xb0, 0x28, 0x7a, 0x9d, 0xe9, 0x65, 0x1d, 0x0a, 0xfe, 0x03, 0xac, - 0x66, 0x5e, 0xa0, 0xe9, 0xaf, 0x08, 0x47, 0xad, 0x92, 0x57, 0xbb, 0xfb, 0xaf, 0x0a, 0xf4, 0x0a, - 0x6f, 0xf5, 0x5e, 0xb6, 0x31, 0xee, 0xff, 0x06, 0xb5, 0xa0, 0xa1, 0x6f, 0xc6, 0x7e, 0x05, 0xb5, - 0x55, 0xeb, 0xaa, 0x6f, 0x86, 0x7e, 0x15, 0xf5, 0xa1, 0xe3, 0x96, 0xa6, 0x7e, 0x0d, 0x5d, 0x85, - 0xd5, 0x92, 0x10, 0xf6, 0xeb, 0xe8, 0x1a, 0xac, 0x97, 0xee, 0xbb, 0xdf, 0x40, 0x2b, 0xd0, 0x76, - 0xb0, 0xf7, 0x9b, 0xbb, 0xff, 0x5e, 0x86, 0xe6, 0xbe, 0xfe, 0x51, 0x87, 0xee, 0x43, 0x43, 0xff, - 0x5c, 0x41, 0x69, 0xb0, 0xf5, 0x6f, 0xba, 0x61, 0xea, 0xe4, 0xec, 0xcf, 0x97, 0x87, 0x50, 0x3f, - 0x0c, 0x7d, 0x89, 0xdc, 0x82, 0x94, 0xbc, 0x04, 0x87, 0xeb, 0x39, 0xaa, 0x55, 0xda, 0x81, 0x86, - 0x7e, 0xfb, 0xa3, 0x94, 0xef, 0xfe, 0x0b, 0x18, 0xe6, 0x16, 0x47, 0x2f, 0x32, 0x88, 0xd1, 0xf5, - 0xf4, 0x47, 0x52, 0xe1, 0x2f, 0xc0, 0xf0, 0x46, 0x39, 0xd3, 0xae, 0xfc, 0x48, 0xff, 0x52, 0xcc, - 0xac, 0xec, 0x3e, 0xf2, 0x9d, 0x6d, 0x66, 0x5f, 0xca, 0x8f, 0xa0, 0xa1, 0x5f, 0x6d, 0xa8, 0xf0, - 0x8a, 0xcb, 0xeb, 0x65, 0x9f, 0x82, 0x6f, 0xf2, 0xd1, 0x45, 0x1b, 0x89, 0x64, 0xe9, 0xfb, 0x6d, - 0xf8, 0xe9, 0x5c, 0xbe, 0x35, 0x79, 0x0f, 0xea, 0xea, 0x1d, 0xe4, 0x78, 0xdc, 0x79, 0x16, 0x15, - 0x5c, 0xf7, 0x10, 0xea, 0xaa, 0x0b, 0x76, 0xa4, 0x9d, 0x87, 0xce, 0x70, 0x3d, 0xdf, 0x2a, 0xc7, - 0x2d, 0x75, 0xf5, 0xed, 0x25, 0x72, 0x6e, 0xb7, 0xb8, 0x99, 0x1f, 0xae, 0x66, 0x68, 0xa9, 0x73, - 0x74, 0xba, 0x3a, 0xce, 0x71, 0x9b, 0x61, 0xc7, 0x39, 0xd9, 0xd6, 0xf4, 0x8f, 0x49, 0x6e, 0xa3, - 0xab, 0xf9, 0x76, 0x29, 0xd6, 0x1d, 0x14, 0x19, 0x56, 0xfb, 0xa5, 0x3e, 0x0c, 0x49, 0x3b, 0x82, - 0x6e, 0x38, 0x8e, 0x2b, 0x34, 0x42, 0xc3, 0x9b, 0x73, 0xb8, 0x19, 0x63, 0xe9, 0x65, 0x9d, 0x31, - 0x96, 0x6f, 0x3a, 0xb2, 0xc6, 0x8a, 0x9d, 0xc2, 0xf7, 0xa5, 0x87, 0x12, 0xdd, 0xca, 0x97, 0xe2, - 0x92, 0x42, 0x3f, 0xbc, 0xfd, 0xd3, 0x42, 0x76, 0x85, 0xb3, 0x39, 0xa7, 0x1b, 0xdd, 0x49, 0xd5, - 0x7f, 0xa2, 0xd6, 0x0e, 0xb7, 0x7e, 0x4e, 0xcc, 0xac, 0xf3, 0x97, 0xce, 0x37, 0xb0, 0x73, 0xff, - 0x89, 0x95, 0x3d, 0x6d, 0xea, 0xc1, 0xc3, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x57, 0xbd, - 0x7d, 0xd6, 0x17, 0x00, 0x00, + // 2203 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x18, 0xd9, 0x76, 0xdc, 0xb6, + 0x35, 0xb3, 0x6b, 0xee, 0x2c, 0x62, 0x20, 0xc9, 0x1e, 0x8f, 0x6d, 0x59, 0x85, 0x37, 0x1d, 0xc5, + 0x95, 0x1d, 0xb9, 0x75, 0x8e, 0xe3, 0x2e, 0x56, 0x25, 0xd7, 0x56, 0x6c, 0xcb, 0x12, 0xa4, 0xb8, + 0xa7, 0x39, 0x27, 0x27, 0xa1, 0x86, 0x90, 0xcc, 0x9a, 0x43, 0x8c, 0x08, 0x8c, 0x96, 0x2f, 0xe8, + 0x63, 0x9f, 0xfb, 0xda, 0x2f, 0xe8, 0x4b, 0x1e, 0xfb, 0x1f, 0x3d, 0xfd, 0x9a, 0x1e, 0x2c, 0x24, + 0xc1, 0x21, 0x27, 0xcb, 0x3c, 0x91, 0xb8, 0x1b, 0x2e, 0xee, 0x86, 0x7b, 0x01, 0xf3, 0x5e, 0xe4, + 0x9f, 0xd1, 0xe8, 0xbb, 0xb3, 0x8d, 0xf5, 0x51, 0xc4, 0x04, 0x43, 0x0d, 0xf5, 0x79, 0xbf, 0x81, + 0x1b, 0x50, 0x7b, 0x31, 0x1c, 0x89, 0x4b, 0x7c, 0x0d, 0x1a, 0x07, 0x94, 0x73, 0x9f, 0x85, 0xa8, + 0x0b, 0x65, 0xdf, 0xeb, 0x95, 0x56, 0x4a, 0xab, 0x4d, 0x52, 0xf6, 0x3d, 0xfc, 0x17, 0xa8, 0xed, + 0xb9, 0x91, 0x3b, 0x44, 0x0e, 0x54, 0x3e, 0xd2, 0x4b, 0x83, 0x91, 0xbf, 0x68, 0x11, 0x6a, 0x67, + 0x6e, 0x30, 0xa6, 0xbd, 0xb2, 0x82, 0xe9, 0x05, 0x42, 0x50, 0xf5, 0x28, 0x1f, 0xf4, 0x2a, 0x0a, + 0xa8, 0xfe, 0x25, 0x4c, 0x5c, 0x8e, 0x68, 0xaf, 0xaa, 0x61, 0xf2, 0x1f, 0xff, 0x50, 0x82, 0xca, + 0xf6, 0xc1, 0xae, 0xc4, 0x7d, 0x60, 0x5c, 0x18, 0xc1, 0xea, 0x5f, 0xc2, 0x46, 0x2c, 0x12, 0x46, + 0xb0, 0xfa, 0x97, 0xb0, 0x31, 0xa7, 0x51, 0x2c, 0x57, 0xfe, 0xa3, 0x3e, 0xcc, 0x8d, 0x5c, 0xce, + 0xcf, 0x59, 0xe4, 0x19, 0xd9, 0xc9, 0x5a, 0xe2, 0x3c, 0x57, 0xb8, 0x47, 0x2e, 0xa7, 0xbd, 0x9a, + 0xc6, 0xc5, 0x6b, 0xf4, 0x25, 0x38, 0xae, 0xe7, 0xf9, 0xc2, 0x67, 0xa1, 0x1b, 0xa8, 0xe3, 0xf1, + 0x5e, 0x7d, 0xa5, 0xb2, 0xda, 0xda, 0xe8, 0xae, 0x1b, 0xe3, 0xac, 0x2b, 0x30, 0xc9, 0xd1, 0xe1, + 0xff, 0x95, 0xa0, 0x4a, 0xc6, 0x81, 0x3a, 0x68, 0xe8, 0x0e, 0x69, 0xac, 0xb8, 0xfc, 0x4f, 0x0e, + 0x5f, 0xb6, 0x0e, 0xbf, 0x08, 0xb5, 0x80, 0x9e, 0xd1, 0xc0, 0x68, 0xae, 0x17, 0x52, 0xbd, 0x81, + 0x2b, 0xe8, 0x09, 0x8b, 0x2e, 0x63, 0xd5, 0xe3, 0x35, 0xba, 0x07, 0xf5, 0x91, 0x56, 0xaa, 0x56, + 0xa8, 0x94, 0xc1, 0xa2, 0x65, 0x00, 0x37, 0x0c, 0x99, 0x70, 0xa5, 0x82, 0xbd, 0xba, 0x92, 0x62, + 0x41, 0xd0, 0x23, 0x68, 0x7e, 0x0c, 0xd9, 0x79, 0x40, 0xbd, 0x13, 0xda, 0x6b, 0xac, 0x94, 0x56, + 0x5b, 0x1b, 0x28, 0x11, 0xf5, 0x3a, 0xc6, 0x90, 0x94, 0x08, 0xdf, 0x85, 0x66, 0x02, 0x47, 0x3d, + 0x68, 0x0c, 0x58, 0x28, 0x68, 0x18, 0x3b, 0x27, 0x5e, 0xe2, 0x1f, 0xca, 0xd0, 0x79, 0x4b, 0x85, + 0xcb, 0x09, 0xe5, 0x23, 0x16, 0x72, 0x2a, 0x55, 0x19, 0x05, 0xe3, 0x13, 0x3f, 0xdc, 0x4d, 0x4d, + 0x62, 0x41, 0xd0, 0x23, 0x58, 0x88, 0xad, 0xbf, 0x4d, 0x8f, 0xdd, 0x71, 0x20, 0xf6, 0x62, 0x07, + 0x57, 0x48, 0x11, 0x0a, 0x7d, 0x05, 0xbd, 0x18, 0xbc, 0x39, 0xe9, 0xab, 0x4a, 0xa1, 0x59, 0xa6, + 0xd2, 0xa3, 0xdb, 0x50, 0x8b, 0xc6, 0x01, 0xe5, 0xbd, 0xaa, 0x62, 0xec, 0x24, 0x8c, 0xd2, 0x91, + 0x44, 0xe3, 0xd0, 0x5b, 0x58, 0xa2, 0xa1, 0x7b, 0x14, 0x50, 0xef, 0xdd, 0x48, 0x73, 0xbf, 0x65, + 0xde, 0x38, 0xa0, 0xca, 0x09, 0xdd, 0x8d, 0xab, 0x09, 0x53, 0x16, 0x4d, 0x8a, 0xb9, 0x64, 0x28, + 0x04, 0xec, 0x84, 0x29, 0xb7, 0xb4, 0x89, 0xfa, 0xc7, 0x04, 0x5a, 0x3b, 0xa1, 0x2f, 0x08, 0x3d, + 0x1d, 0x53, 0x2e, 0xd0, 0x32, 0x54, 0x3c, 0x1e, 0x2a, 0x6b, 0xb5, 0x36, 0xda, 0x89, 0xfc, 0xed, + 0x83, 0x5d, 0x22, 0x11, 0xa9, 0xda, 0xe5, 0xe9, 0x6a, 0xe3, 0x2f, 0xa1, 0xad, 0x65, 0x1a, 0x4f, + 0xac, 0x41, 0x83, 0xeb, 0x5c, 0x36, 0x82, 0x9d, 0x84, 0xcd, 0xe4, 0x38, 0x89, 0x09, 0x24, 0xef, + 0x56, 0xc0, 0x38, 0x8d, 0x15, 0xfa, 0x25, 0xbc, 0xcf, 0x01, 0xbd, 0xf6, 0x83, 0x60, 0x2f, 0x62, + 0x03, 0xca, 0xf9, 0x2c, 0x12, 0x7e, 0x05, 0xcd, 0x3d, 0x37, 0xe2, 0xd4, 0x3b, 0xd8, 0x7f, 0x23, + 0xb3, 0xe4, 0x74, 0x4c, 0xa3, 0xb8, 0xc0, 0xe8, 0x05, 0xfe, 0x1e, 0xda, 0x8a, 0x64, 0x06, 0xf1, + 0xe8, 0x0e, 0x54, 0xf8, 0x69, 0xa0, 0x42, 0xcc, 0x8e, 0xfb, 0x64, 0x4b, 0x22, 0xd1, 0x38, 0x84, + 0xea, 0x2e, 0xf3, 0x94, 0xbb, 0x04, 0xbd, 0x48, 0xca, 0x90, 0xfc, 0x4f, 0xca, 0x56, 0x39, 0x2d, + 0x5b, 0x68, 0x05, 0x5a, 0xc7, 0x7e, 0x78, 0x42, 0xa3, 0x51, 0xe4, 0x87, 0xc2, 0xe4, 0xb4, 0x0d, + 0x42, 0x37, 0xa0, 0xc9, 0x85, 0x1b, 0x89, 0x37, 0x7e, 0xa8, 0x2b, 0x5e, 0x95, 0xa4, 0x00, 0xfc, + 0x1b, 0xe8, 0x98, 0x13, 0x19, 0x7f, 0xdd, 0x86, 0x5a, 0xc8, 0x3c, 0xca, 0x7b, 0xa5, 0x09, 0x27, + 0x4b, 0xb5, 0x88, 0xc6, 0xe1, 0x15, 0x98, 0xdb, 0x1c, 0x7b, 0xbe, 0x98, 0x6e, 0x29, 0x17, 0xda, + 0x8a, 0x62, 0x16, 0x4b, 0xdd, 0x85, 0x2a, 0x3f, 0x0d, 0xe2, 0x30, 0xfb, 0x34, 0x21, 0x8c, 0xb7, + 0x24, 0x0a, 0x8d, 0xbf, 0x81, 0x96, 0xd9, 0x82, 0x8f, 0x03, 0x21, 0xcb, 0xc3, 0x90, 0x72, 0xee, + 0x9e, 0xc4, 0xf9, 0x1e, 0x2f, 0xd3, 0x8a, 0x57, 0xb6, 0x2b, 0xde, 0x75, 0x68, 0xca, 0x88, 0xfd, + 0x4e, 0x15, 0x4d, 0x6d, 0xb7, 0x39, 0x09, 0x90, 0xf5, 0x01, 0xff, 0x21, 0x51, 0x5f, 0xca, 0xe6, + 0x68, 0x1d, 0x1a, 0x91, 0xfe, 0x35, 0x76, 0x59, 0xcc, 0x6a, 0xa5, 0xe9, 0x48, 0x4c, 0x84, 0xbf, + 0x82, 0x4e, 0x0c, 0xd7, 0x66, 0x7d, 0x0a, 0x6d, 0xd7, 0x12, 0x68, 0xa4, 0x2c, 0x15, 0x49, 0xe1, + 0x24, 0x43, 0x8a, 0xef, 0xc3, 0xfc, 0x2e, 0xa5, 0x1e, 0x61, 0x41, 0x70, 0xe4, 0x0e, 0x3e, 0x4e, + 0xb7, 0x39, 0x83, 0xa5, 0x97, 0x34, 0xb4, 0xe8, 0x66, 0x31, 0xfe, 0x9a, 0x1d, 0xa6, 0xbd, 0xd4, + 0xfb, 0x59, 0x0d, 0x74, 0xb0, 0xfe, 0x1e, 0x5a, 0x3f, 0xa9, 0x95, 0xed, 0x97, 0x72, 0xc6, 0x2f, + 0xf8, 0x39, 0x5c, 0x99, 0xd4, 0xd7, 0x58, 0xeb, 0x9e, 0x56, 0x42, 0x2b, 0x9b, 0x9a, 0x3a, 0xa7, + 0xc0, 0x53, 0x68, 0xed, 0xf9, 0xe1, 0xc9, 0x2c, 0xd9, 0x7e, 0x0b, 0x1a, 0x2f, 0x2e, 0xe8, 0x60, + 0xba, 0x35, 0xbf, 0x85, 0x96, 0x24, 0x98, 0xc5, 0x86, 0xd8, 0xb6, 0x61, 0x4a, 0x67, 0xf6, 0xd3, + 0xaa, 0xff, 0xbb, 0x04, 0xa0, 0xe5, 0xab, 0xe8, 0xc5, 0xd0, 0x0e, 0x5c, 0x2e, 0x76, 0x42, 0x4e, + 0x23, 0xb1, 0xa3, 0x3b, 0x9e, 0x0a, 0xc9, 0xc0, 0xd0, 0x03, 0xf8, 0xd4, 0x5e, 0xbf, 0x88, 0x22, + 0x16, 0x19, 0x9b, 0xe6, 0x11, 0x52, 0x62, 0xc4, 0xce, 0xf9, 0xe6, 0xf1, 0x31, 0x1d, 0x08, 0xea, + 0xa9, 0x10, 0xaf, 0x90, 0x0c, 0x4c, 0x4a, 0xb4, 0xd7, 0x5a, 0xa2, 0xbe, 0xfe, 0xf3, 0x08, 0xfc, + 0x0c, 0xda, 0x46, 0x63, 0xed, 0xa5, 0xcf, 0xa0, 0xae, 0xe3, 0xdd, 0x58, 0x64, 0x21, 0x73, 0x52, + 0x93, 0x12, 0x86, 0x04, 0x7f, 0x0b, 0xcd, 0xc3, 0x8b, 0xd9, 0xea, 0xa6, 0x5d, 0x0d, 0xf2, 0xd6, + 0xd4, 0xc5, 0xe0, 0x19, 0x80, 0x14, 0x6f, 0x34, 0xfb, 0xf5, 0x64, 0xba, 0x16, 0xaa, 0x96, 0x64, + 0xeb, 0x0a, 0xcc, 0xed, 0x4b, 0x9f, 0x4f, 0x0f, 0x86, 0xcf, 0xa1, 0xa9, 0x28, 0xb6, 0x58, 0x78, + 0x8c, 0xee, 0x40, 0x47, 0xf8, 0x43, 0xca, 0xc6, 0xe2, 0x80, 0x0e, 0x58, 0xa8, 0x9d, 0xd5, 0x21, + 0x59, 0x20, 0xfe, 0x7b, 0x09, 0xda, 0x8a, 0x67, 0x96, 0x43, 0xdf, 0xb6, 0x23, 0x28, 0xad, 0x80, + 0xb1, 0x96, 0x2a, 0x84, 0xd0, 0x3d, 0xa8, 0x0e, 0x58, 0x78, 0xac, 0x3c, 0x6b, 0x5f, 0x29, 0x89, + 0xa6, 0x44, 0xe1, 0xb1, 0x07, 0x1d, 0xa3, 0x48, 0x92, 0x5e, 0xf5, 0x01, 0x0b, 0xc6, 0xc3, 0xd0, + 0x58, 0x27, 0xd7, 0xd0, 0x69, 0x2c, 0xfa, 0x0c, 0xaa, 0x32, 0x0a, 0x8c, 0xe9, 0xaf, 0x66, 0x37, + 0x30, 0x46, 0x64, 0xe7, 0x44, 0x11, 0xe1, 0x2d, 0xe8, 0x66, 0xe1, 0xe8, 0x73, 0xa8, 0xab, 0x1e, + 0x3c, 0x76, 0xc2, 0xb5, 0x22, 0x01, 0xef, 0x25, 0x05, 0x31, 0x84, 0x78, 0x15, 0x9c, 0x49, 0x5c, + 0xda, 0xd7, 0x97, 0xac, 0xbe, 0x1e, 0x63, 0x99, 0x3e, 0xa3, 0xc0, 0xf5, 0xc3, 0xe9, 0x5e, 0x1b, + 0x40, 0xd7, 0xd0, 0xcc, 0x76, 0x0d, 0x59, 0x3e, 0xb0, 0x03, 0x28, 0xde, 0x55, 0x27, 0xf2, 0x7b, + 0x98, 0x4f, 0x36, 0x31, 0xf6, 0xdd, 0x82, 0xce, 0x20, 0x70, 0x39, 0xf7, 0x4d, 0xa4, 0x99, 0xbd, + 0x6e, 0x4e, 0xca, 0xd8, 0xb2, 0x89, 0x48, 0x96, 0x07, 0x3f, 0x87, 0xc5, 0x22, 0x32, 0xb4, 0x0a, + 0x55, 0xd9, 0x58, 0xe6, 0x8a, 0xe3, 0xa1, 0x7b, 0x34, 0x0e, 0xdc, 0x68, 0xdb, 0x15, 0x2e, 0x51, + 0x14, 0x78, 0x13, 0x16, 0x5e, 0x52, 0xb1, 0x6d, 0xba, 0xd0, 0x99, 0x7a, 0xa2, 0x65, 0x98, 0x8b, + 0xf9, 0x8b, 0x06, 0x0c, 0xfc, 0x12, 0x16, 0xb3, 0x5b, 0x18, 0x0b, 0x3c, 0x84, 0x66, 0xdc, 0xfd, + 0xc6, 0xde, 0x4f, 0xa3, 0x38, 0x26, 0x27, 0x29, 0x0d, 0x7e, 0x0c, 0xb5, 0x43, 0xd9, 0xb6, 0x16, + 0x8e, 0x31, 0x57, 0xa0, 0xce, 0x07, 0x1f, 0xe8, 0xd0, 0x35, 0xd5, 0xce, 0xac, 0xf0, 0x89, 0x3a, + 0xa0, 0xe2, 0x93, 0xed, 0xff, 0x6c, 0xd5, 0xa5, 0x26, 0x24, 0xbf, 0x71, 0x73, 0xd7, 0x36, 0xa7, + 0x6c, 0x6a, 0x15, 0x12, 0xbf, 0x52, 0xc7, 0xb4, 0x36, 0x32, 0xc7, 0x7c, 0x04, 0x4d, 0x11, 0x03, + 0xcd, 0x5e, 0x28, 0x2b, 0x41, 0x91, 0xa7, 0x44, 0xf8, 0x3f, 0x25, 0x68, 0x26, 0x08, 0xf4, 0x04, + 0x5a, 0x3a, 0xd5, 0xf8, 0x4e, 0x78, 0xcc, 0x72, 0x2e, 0xdd, 0x4a, 0x71, 0xc4, 0x26, 0x94, 0x7c, + 0x7e, 0xe8, 0xd1, 0x0b, 0xaa, 0xf9, 0xca, 0x13, 0x7c, 0x3b, 0x29, 0x8e, 0xd8, 0x84, 0xe8, 0x1e, + 0x74, 0x07, 0x11, 0x75, 0x05, 0x55, 0x2a, 0x1c, 0xec, 0xbf, 0x31, 0x8d, 0xcf, 0x04, 0xd4, 0xbe, + 0xb3, 0xab, 0xd9, 0x3b, 0xfb, 0x0b, 0x68, 0x59, 0x5a, 0xfd, 0x82, 0x60, 0xfc, 0x42, 0xce, 0x1a, + 0xa9, 0x26, 0x3f, 0x9f, 0xf1, 0x29, 0xcc, 0x5b, 0xc0, 0x57, 0xd4, 0xf5, 0x7e, 0xee, 0xa8, 0x2b, + 0x3b, 0x27, 0x5b, 0x1e, 0x3b, 0xe7, 0xb2, 0x50, 0xf8, 0x82, 0x0e, 0x75, 0x50, 0x36, 0x89, 0x5e, + 0x60, 0x06, 0x2d, 0x8b, 0x10, 0x6d, 0xc8, 0x49, 0x53, 0x1d, 0xd2, 0xc4, 0x6e, 0xaf, 0x48, 0x3f, + 0xa9, 0x0a, 0x89, 0x09, 0xd1, 0x83, 0x4c, 0xad, 0x2c, 0x64, 0x90, 0x0a, 0x98, 0x62, 0x79, 0x47, + 0x5e, 0xa5, 0x22, 0x72, 0xe5, 0xe5, 0x3a, 0xbd, 0x7e, 0x9d, 0x42, 0xdf, 0x50, 0x29, 0xcf, 0xfc, + 0x39, 0x62, 0xc3, 0x19, 0xbb, 0xba, 0xfb, 0x76, 0x2d, 0x5b, 0xb2, 0xea, 0x50, 0xaa, 0x83, 0xae, + 0x66, 0x2f, 0xe0, 0x7a, 0xe1, 0x96, 0xe9, 0xcd, 0xa1, 0x62, 0x99, 0xe7, 0x6e, 0x0e, 0x9d, 0x2f, + 0x06, 0x8b, 0xef, 0x42, 0x47, 0xf7, 0x0e, 0xf2, 0xcc, 0xd3, 0x0f, 0x28, 0xe0, 0xc6, 0x0b, 0x2e, + 0xfc, 0xa1, 0x2b, 0x64, 0xd8, 0xa5, 0x1c, 0xb3, 0x1c, 0x71, 0xd5, 0x3e, 0xe2, 0x95, 0xb4, 0xb1, + 0xb6, 0xd5, 0xd0, 0x67, 0xfc, 0x1a, 0x6e, 0x4e, 0xd9, 0xd5, 0x9c, 0x72, 0x11, 0x6a, 0x03, 0x36, + 0x36, 0xef, 0x0c, 0x15, 0xa2, 0x17, 0x68, 0x19, 0x80, 0x46, 0xd1, 0xdb, 0x4c, 0x2f, 0x6b, 0x41, + 0xf0, 0x6f, 0x61, 0x21, 0x33, 0x81, 0xa6, 0x4f, 0x11, 0x16, 0x5b, 0x29, 0xc7, 0xf6, 0xcf, 0x12, + 0x34, 0x0f, 0xf6, 0xdf, 0xbc, 0x3b, 0xfa, 0x1b, 0x1d, 0xc8, 0x13, 0xeb, 0x19, 0x4f, 0xd2, 0x75, + 0xad, 0x63, 0x24, 0x14, 0x87, 0x97, 0x23, 0x6a, 0x66, 0x3f, 0x0c, 0xed, 0xb8, 0x80, 0xaa, 0x67, + 0x0e, 0xad, 0x52, 0x06, 0x26, 0x77, 0xd7, 0xc5, 0x72, 0x37, 0x1d, 0x73, 0x2c, 0x88, 0x9c, 0x0e, + 0x95, 0xcb, 0x14, 0x5a, 0xe7, 0x7a, 0x0a, 0xc0, 0x7f, 0x85, 0x56, 0xb2, 0xf1, 0xbb, 0x11, 0x5a, + 0x86, 0x32, 0x1b, 0x19, 0xd5, 0xba, 0x19, 0xd5, 0x46, 0xa4, 0xcc, 0x46, 0x68, 0x0d, 0xea, 0x4c, + 0xd1, 0xe6, 0xa6, 0xdc, 0x44, 0x0a, 0x31, 0x14, 0xf8, 0x16, 0xb4, 0x5e, 0x52, 0xa1, 0x78, 0x65, + 0x7c, 0x38, 0x69, 0xc7, 0xdf, 0xd4, 0x5e, 0xba, 0x0d, 0xf3, 0x16, 0x81, 0x2a, 0x1a, 0x79, 0xa2, + 0x0f, 0x50, 0x57, 0x14, 0x1c, 0x6d, 0x40, 0x93, 0x19, 0x3d, 0xf3, 0x33, 0x9a, 0x75, 0x08, 0x92, + 0x92, 0x4d, 0x9b, 0x75, 0x26, 0xb6, 0xd5, 0x3b, 0x0d, 0x53, 0x75, 0x66, 0x89, 0xce, 0x75, 0x68, + 0xf0, 0xd3, 0xe0, 0x50, 0x8e, 0xf4, 0x93, 0xd5, 0xda, 0xda, 0x8e, 0xc4, 0x44, 0xf8, 0x19, 0x38, + 0xe9, 0x76, 0x26, 0x92, 0xee, 0x43, 0x9d, 0x9f, 0x06, 0xe9, 0xf9, 0xe6, 0xb3, 0x2e, 0xe0, 0xc4, + 0xa0, 0xd7, 0xfe, 0x55, 0x82, 0x6e, 0xee, 0xf9, 0xa7, 0x9b, 0x9d, 0xb5, 0x9c, 0x4f, 0x50, 0x13, + 0x6a, 0xaa, 0xd9, 0x72, 0x4a, 0xa8, 0x25, 0xa7, 0x21, 0xd5, 0x6c, 0x38, 0x65, 0xe4, 0x40, 0xdb, + 0xbe, 0xed, 0x9c, 0x0a, 0xba, 0x0a, 0x0b, 0x05, 0x55, 0xc1, 0xa9, 0xa2, 0x6b, 0xb0, 0x54, 0x98, + 0x4a, 0x4e, 0x0d, 0xcd, 0x43, 0xcb, 0x4a, 0x07, 0xa7, 0x8e, 0x3a, 0xd0, 0xdc, 0x8b, 0xd8, 0x99, + 0x2f, 0xed, 0xe1, 0x34, 0xd6, 0xb6, 0xa1, 0xa6, 0xd4, 0x96, 0x84, 0x9b, 0x9e, 0xf7, 0x2e, 0xfa, + 0x7a, 0xe4, 0xb9, 0x82, 0x3a, 0x9f, 0xa0, 0x39, 0xa8, 0x12, 0xea, 0x7a, 0x4e, 0x09, 0x01, 0xd4, + 0xb7, 0x69, 0x40, 0x05, 0x75, 0xca, 0x52, 0xdb, 0x97, 0x91, 0x1b, 0x0a, 0xa7, 0x22, 0x7f, 0x37, + 0xbd, 0xa1, 0x1f, 0x3a, 0xd5, 0xb5, 0x7f, 0x94, 0xa0, 0x93, 0xc9, 0x0d, 0x74, 0x05, 0x50, 0x06, + 0xa0, 0x34, 0x76, 0x3e, 0x91, 0xaa, 0x66, 0xe0, 0x71, 0x17, 0xe2, 0x94, 0xe4, 0xf1, 0x32, 0xa8, + 0x03, 0x95, 0x1f, 0x4e, 0x39, 0xc7, 0xb3, 0x13, 0x72, 0xe1, 0x86, 0x03, 0xaa, 0x4d, 0x92, 0xe5, + 0xa1, 0xd1, 0x19, 0x8d, 0x9c, 0xea, 0xc6, 0x7f, 0xe7, 0xa0, 0xbe, 0xad, 0x9e, 0xb8, 0xd1, 0x43, + 0xa8, 0xa9, 0x67, 0x49, 0x94, 0x26, 0x8b, 0x7a, 0xe0, 0xee, 0xa7, 0x79, 0x9d, 0x7d, 0xb6, 0x7c, + 0x0c, 0xd5, 0x9d, 0xd0, 0x17, 0xc8, 0xbe, 0xca, 0x93, 0x37, 0x94, 0xfe, 0xd2, 0x04, 0xd4, 0x30, + 0xad, 0x43, 0x4d, 0xbd, 0x9a, 0xa1, 0x14, 0x6f, 0xbf, 0xa2, 0xf5, 0x27, 0x36, 0x47, 0xaf, 0x32, + 0x8e, 0x41, 0xd7, 0xd3, 0x27, 0xd8, 0xdc, 0xfb, 0x59, 0xff, 0x46, 0x31, 0xd2, 0xec, 0xfc, 0x44, + 0x3d, 0xc6, 0x67, 0x76, 0xb6, 0x9f, 0xc7, 0xac, 0x63, 0x66, 0xdf, 0x98, 0x9e, 0x40, 0x4d, 0xbd, + 0x77, 0xa0, 0xdc, 0xfb, 0xc7, 0x24, 0x5f, 0xf6, 0x11, 0x65, 0x7f, 0x32, 0x88, 0xd1, 0xb2, 0x95, + 0x45, 0x05, 0x2f, 0x1f, 0xfd, 0x5b, 0x53, 0xf1, 0x46, 0xe4, 0x03, 0xa8, 0xee, 0xf9, 0xe1, 0x89, + 0x65, 0x71, 0xeb, 0x41, 0x21, 0x67, 0xba, 0xc7, 0x50, 0x95, 0xf3, 0xa3, 0x45, 0x6d, 0x3d, 0x11, + 0xf4, 0x97, 0x26, 0x87, 0xcc, 0x78, 0x18, 0x2d, 0x1f, 0x5e, 0x20, 0xab, 0x2f, 0x8c, 0xc7, 0xe0, + 0xfe, 0x42, 0x06, 0x96, 0x1a, 0x47, 0x65, 0xa5, 0x65, 0x1c, 0x7b, 0x8c, 0xb4, 0x8c, 0x93, 0x1d, + 0xea, 0x7e, 0x97, 0xa4, 0x30, 0xba, 0x3a, 0x39, 0x68, 0xc4, 0xbc, 0xbd, 0x3c, 0xc2, 0x70, 0xbf, + 0x56, 0x39, 0x9f, 0x34, 0xf2, 0xe8, 0x86, 0x5d, 0x9e, 0x26, 0x47, 0x88, 0xfe, 0xcd, 0x29, 0xd8, + 0x8c, 0xb0, 0xb4, 0xcd, 0xcd, 0x08, 0x9b, 0x6c, 0xd7, 0xb3, 0xc2, 0xf2, 0x3d, 0xf6, 0xf7, 0x85, + 0xb5, 0x07, 0xdd, 0x9e, 0x6c, 0x62, 0x0a, 0x5a, 0xa4, 0xfe, 0x9d, 0x1f, 0x27, 0x32, 0x3b, 0x1c, + 0x4f, 0x29, 0x62, 0xe8, 0x6e, 0xca, 0xfe, 0x23, 0x5d, 0x4a, 0xff, 0xde, 0x4f, 0x91, 0x99, 0x7d, + 0xfe, 0x08, 0x73, 0x71, 0x4d, 0x47, 0xf9, 0xdb, 0x26, 0x96, 0x76, 0xad, 0x00, 0xa3, 0x05, 0xfc, + 0xa9, 0xfd, 0x0d, 0xac, 0x3f, 0x7c, 0x66, 0xd0, 0x47, 0x75, 0xf5, 0xf3, 0xf8, 0xff, 0x01, 0x00, + 0x00, 0xff, 0xff, 0xe7, 0x70, 0x35, 0x99, 0x51, 0x1b, 0x00, 0x00, } diff --git a/sqle/driver/v2/proto/driver_v2.proto b/sqle/driver/v2/proto/driver_v2.proto index 579e00791d..7153e03d7b 100644 --- a/sqle/driver/v2/proto/driver_v2.proto +++ b/sqle/driver/v2/proto/driver_v2.proto @@ -31,6 +31,9 @@ service Driver { rpc GetTableMeta(GetTableMetaRequest) returns (GetTableMetaResponse); rpc ExtractTableFromSQL(ExtractTableFromSQLRequest) returns (ExtractTableFromSQLResponse); rpc EstimateSQLAffectRows(EstimateSQLAffectRowsRequest) returns (EstimateSQLAffectRowsResponse); // Introduced from SQLE v2.2304.0 + + // provision + rpc GetSQLOp(GetSQLOpRequest) returns (GetSQLOpResponse); } message Empty {} @@ -47,6 +50,7 @@ enum OptionalModule { ExtractTableFromSQL = 4; EstimateSQLAffectRows = 5; KillProcess = 6; + Provision = 7; } message Param { @@ -344,3 +348,61 @@ message EstimateSQLAffectRowsResponse { message KillProcessResponse { string errMessage = 1; // 记录执行失败原因 } + +// GetSQLOp +enum SQLOp { + AddOrUpdate = 0; + Read = 1; + Delete = 2; + Grant = 3; + Admin = 4; +} + +// GetSQLOp +enum SQLObjectType { + SQLObjectTypeTable = 0; + SQLObjectTypeDatabase = 1; + SQLObjectTypeSchema = 2; + SQLObjectTypeInstance = 3; + SQLObjectTypeServer = 4; +} + +// GetSQLOp +message SQLObject { + SQLObjectType type = 1; + string databaseName = 2; + string schemaName = 3; + string tableName = 4; +} + +// GetSQLOp +message SQLObjectOp { + SQLOp op = 1; + SQLObject object = 2; +} + +// GetSQLOp +message GetSQLOpSQL { + string sql = 1; +} + +// GetSQLOp +message GetSQLOpSQLInfo { + string sql = 1; +} + +// GetSQLOp +message SQLOps { + repeated SQLObjectOp objectOps = 1; + GetSQLOpSQLInfo sql = 2; +} + +message GetSQLOpRequest { + Session session = 1; + GetSQLOpSQL sqlText = 2; +} + +message GetSQLOpResponse { + repeated SQLOps sqlOps = 1; +} + diff --git a/sqle/driver/v2/util.go b/sqle/driver/v2/util.go index 706b55b32c..671f465d48 100644 --- a/sqle/driver/v2/util.go +++ b/sqle/driver/v2/util.go @@ -5,6 +5,7 @@ import ( "math/rand" "time" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" protoV2 "github.com/actiontech/sqle/sqle/driver/v2/proto" "github.com/actiontech/sqle/sqle/pkg/params" ) @@ -49,6 +50,7 @@ const ( OptionalModuleExtractTableFromSQL OptionalModuleEstimateSQLAffectRows OptionalModuleKillProcess + OptionalModuleProvision // provision 权限管理需要的模块 ) func (m OptionalModule) String() string { @@ -67,6 +69,8 @@ func (m OptionalModule) String() string { return "EstimateSQLAffectRows" case OptionalModuleKillProcess: return "KillProcess" + case OptionalModuleProvision: + return "Provision" default: return "Unknown" } @@ -225,3 +229,158 @@ func RandStr(length int) string { } return string(result) } + +func ConvertProtoSQLOpsResponseToDriver(sqlOps *protoV2.GetSQLOpResponse) ([]*dmsCommonSQLOp.SQLObjectOps, error) { + var sqlOpList []*dmsCommonSQLOp.SQLObjectOps + for _, sqlOp := range sqlOps.GetSqlOps() { + + var objectOpList []*dmsCommonSQLOp.SQLObjectOp + for _, objectOp := range sqlOp.GetObjectOps() { + + op, err := ConvertProtoSQLOpToDriver(objectOp.GetOp()) + if err != nil { + return nil, err + } + object, err := ConvertProtoSqlObjectToDriver(objectOp.GetObject()) + if err != nil { + return nil, err + } + objectOpList = append(objectOpList, &dmsCommonSQLOp.SQLObjectOp{ + Op: op, + Object: object, + }) + if sqlOp.GetSql() == nil { + return nil, fmt.Errorf("sql info should not be nil") + } + sqlOpList = append(sqlOpList, &dmsCommonSQLOp.SQLObjectOps{ + ObjectOps: objectOpList, + Sql: dmsCommonSQLOp.SQLInfo{Sql: sqlOp.GetSql().GetSql()}, + }) + } + } + return sqlOpList, nil +} + +func ConvertProtoSQLOpToDriver(op protoV2.SQLOp) (dmsCommonSQLOp.SQLOp, error) { + switch op { + case protoV2.SQLOp_AddOrUpdate: + return dmsCommonSQLOp.SQLOpAddOrUpdate, nil + case protoV2.SQLOp_Delete: + return dmsCommonSQLOp.SQLOpDelete, nil + case protoV2.SQLOp_Read: + return dmsCommonSQLOp.SQLOpRead, nil + case protoV2.SQLOp_Grant: + return dmsCommonSQLOp.SQLOpGrant, nil + case protoV2.SQLOp_Admin: + return dmsCommonSQLOp.SQLOpAdmin, nil + default: + return "", fmt.Errorf("unknown sql op: %v", op) + } +} + +func ConvertProtoSqlObjectToDriver(object *protoV2.SQLObject) (*dmsCommonSQLOp.SQLObject, error) { + typ, err := ConvertProtoSqlObjectTypeToDriver(object.GetType()) + if err != nil { + return nil, err + } + return &dmsCommonSQLOp.SQLObject{ + Type: typ, + DatabaseName: object.GetDatabaseName(), + SchemaName: object.GetSchemaName(), + TableName: object.GetTableName(), + }, nil +} + +func ConvertProtoSqlObjectTypeToDriver(objectType protoV2.SQLObjectType) (dmsCommonSQLOp.SQLObjectType, error) { + switch objectType { + case protoV2.SQLObjectType_SQLObjectTypeServer: + return dmsCommonSQLOp.SQLObjectTypeServer, nil + case protoV2.SQLObjectType_SQLObjectTypeInstance: + return dmsCommonSQLOp.SQLObjectTypeInstance, nil + case protoV2.SQLObjectType_SQLObjectTypeDatabase: + return dmsCommonSQLOp.SQLObjectTypeDatabase, nil + case protoV2.SQLObjectType_SQLObjectTypeSchema: + return dmsCommonSQLOp.SQLObjectTypeSchema, nil + case protoV2.SQLObjectType_SQLObjectTypeTable: + return dmsCommonSQLOp.SQLObjectTypeTable, nil + default: + return "", fmt.Errorf("unknown sql object type: %v", objectType) + } +} + +func ConvertDriverSQLOpsResponseToProto(sqlOps []*dmsCommonSQLOp.SQLObjectOps) (*protoV2.GetSQLOpResponse, error) { + sqlOpList := make([]*protoV2.SQLOps, 0, len(sqlOps)) + for _, sqlOp := range sqlOps { + + var objectOpList []*protoV2.SQLObjectOp + for _, objectOp := range sqlOp.ObjectOps { + + op, err := ConvertDriverSQLOpToProto(objectOp.Op) + if err != nil { + return nil, err + } + object, err := ConvertDriverSqlObjectToProto(objectOp.Object) + if err != nil { + return nil, err + } + objectOpList = append(objectOpList, &protoV2.SQLObjectOp{ + Op: op, + Object: object, + }) + } + sqlOpList = append(sqlOpList, &protoV2.SQLOps{ + ObjectOps: objectOpList, + Sql: &protoV2.GetSQLOpSQLInfo{Sql: sqlOp.Sql.Sql}, + }) + } + return &protoV2.GetSQLOpResponse{ + SqlOps: sqlOpList, + }, nil +} + +func ConvertDriverSQLOpToProto(op dmsCommonSQLOp.SQLOp) (protoV2.SQLOp, error) { + switch op { + case dmsCommonSQLOp.SQLOpAddOrUpdate: + return protoV2.SQLOp_AddOrUpdate, nil + case dmsCommonSQLOp.SQLOpDelete: + return protoV2.SQLOp_Delete, nil + case dmsCommonSQLOp.SQLOpRead: + return protoV2.SQLOp_Read, nil + case dmsCommonSQLOp.SQLOpGrant: + return protoV2.SQLOp_Grant, nil + case dmsCommonSQLOp.SQLOpAdmin: + return protoV2.SQLOp_Admin, nil + default: + return 0, fmt.Errorf("unknown sql op: %v", op) + } +} + +func ConvertDriverSqlObjectToProto(object *dmsCommonSQLOp.SQLObject) (*protoV2.SQLObject, error) { + typ, err := ConvertDriverSqlObjectTypeToProto(object.Type) + if err != nil { + return nil, err + } + return &protoV2.SQLObject{ + Type: typ, + DatabaseName: object.DatabaseName, + SchemaName: object.SchemaName, + TableName: object.TableName, + }, nil +} + +func ConvertDriverSqlObjectTypeToProto(objectType dmsCommonSQLOp.SQLObjectType) (protoV2.SQLObjectType, error) { + switch objectType { + case dmsCommonSQLOp.SQLObjectTypeServer: + return protoV2.SQLObjectType_SQLObjectTypeServer, nil + case dmsCommonSQLOp.SQLObjectTypeInstance: + return protoV2.SQLObjectType_SQLObjectTypeInstance, nil + case dmsCommonSQLOp.SQLObjectTypeDatabase: + return protoV2.SQLObjectType_SQLObjectTypeDatabase, nil + case dmsCommonSQLOp.SQLObjectTypeSchema: + return protoV2.SQLObjectType_SQLObjectTypeSchema, nil + case dmsCommonSQLOp.SQLObjectTypeTable: + return protoV2.SQLObjectType_SQLObjectTypeTable, nil + default: + return 0, fmt.Errorf("unknown sql object type: %v", objectType) + } +} diff --git a/sqle/pkg/driver/impl.go b/sqle/pkg/driver/impl.go index 0d0d11b3ca..87a7579060 100644 --- a/sqle/pkg/driver/impl.go +++ b/sqle/pkg/driver/impl.go @@ -7,11 +7,12 @@ import ( "fmt" "time" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" driverV2 "github.com/actiontech/sqle/sqle/driver/v2" "github.com/actiontech/sqle/sqle/pkg/params" "github.com/actiontech/sqle/sqle/utils" hclog "github.com/hashicorp/go-hclog" - + "github.com/percona/go-mysql/query" "github.com/pkg/errors" "vitess.io/vitess/go/vt/sqlparser" @@ -280,3 +281,7 @@ func (p *DriverImpl) EstimateSQLAffectRows(ctx context.Context, sql string) (*dr func (p *DriverImpl) KillProcess(ctx context.Context) (*driverV2.KillProcessInfo, error) { return &driverV2.KillProcessInfo{}, nil } + +func (p *DriverImpl) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) { + return []*dmsCommonSQLOp.SQLObjectOps{}, nil +} diff --git a/sqle/server/sqled_test.go b/sqle/server/sqled_test.go index a9deefa984..eafbe2af69 100644 --- a/sqle/server/sqled_test.go +++ b/sqle/server/sqled_test.go @@ -9,6 +9,7 @@ import ( "regexp" "testing" + dmsCommonSQLOp "github.com/actiontech/dms/pkg/dms-common/sql_op" "github.com/actiontech/sqle/sqle/driver" _ "github.com/actiontech/sqle/sqle/driver/mysql" driverV2 "github.com/actiontech/sqle/sqle/driver/v2" @@ -101,6 +102,10 @@ func (d *mockDriver) EstimateSQLAffectRows(ctx context.Context, sql string) (*dr return nil, nil } +func (d *mockDriver) GetSQLOp(ctx context.Context, sqls string) ([]*dmsCommonSQLOp.SQLObjectOps, error) { + return nil, nil +} + func TestAction_validation(t *testing.T) { actions := map[int]*action{ ActionTypeAudit: {typ: ActionTypeAudit}, diff --git a/vendor/github.com/actiontech/dms/pkg/dms-common/sql_op/sql_op.go b/vendor/github.com/actiontech/dms/pkg/dms-common/sql_op/sql_op.go new file mode 100644 index 0000000000..5c71fbb33c --- /dev/null +++ b/vendor/github.com/actiontech/dms/pkg/dms-common/sql_op/sql_op.go @@ -0,0 +1,86 @@ +// sqlop 包定义了SQL权限操作的相关结构体,目前用于事前权限校验 +// 背景见:https://github.com/actiontech/dms-ee/issues/125 + +package sqlop + +import "encoding/json" + +func EncodingSQLObjectOps(s *SQLObjectOps) (string, error) { + jsonStr, err := json.Marshal(s) + if err != nil { + return "", err + } + return string(jsonStr), nil +} + +func DecodingSQLObjectOps(s string) (*SQLObjectOps, error) { + var sqlObjectOps SQLObjectOps + err := json.Unmarshal([]byte(s), &sqlObjectOps) + if err != nil { + return nil, err + } + return &sqlObjectOps, nil +} + +type SQLObjectOps struct { + // ObjectOps 表示sql中涉及的对象及对对象的操作 + ObjectOps []*SQLObjectOp + Sql SQLInfo +} + +func NewSQLObjectOps(sql string) *SQLObjectOps { + return &SQLObjectOps{ + ObjectOps: []*SQLObjectOp{}, + Sql: SQLInfo{Sql: sql}, + } +} + +func (s *SQLObjectOps) AddObjectOp(o ...*SQLObjectOp) { + s.ObjectOps = append(s.ObjectOps, o...) +} + +type SQLObjectOp struct { + Op SQLOp // 对象操作 + Object *SQLObject // 对象 +} + +type SQLObject struct { + // Type 表示对象的类型 + Type SQLObjectType + // DatabaseName 表示对象所在的database,若对象不属于database,或无法从Sql中解析出当前database,则为空字符串 + DatabaseName string + // SchemaName 表示对象所在的schema,若对象不属于schema,或无法从Sql中解析出当前schema,则为空字符串 + // 对于一些数据库类型,如PostgreSQL,可能存在schema的概念,此时SchemaName字段应该被使用 + // 对于一些数据库类型,如MySQL,可能不存在schema的概念,或schema的概念与database的概念相同,此时SchemaName字段应该为空字符串 + SchemaName string + // TableName 表示对象的表名,如果对象不是表,则为空字符串 + TableName string +} + +type SQLObjectType string + +const ( + SQLObjectTypeTable SQLObjectType = "Table" + SQLObjectTypeSchema SQLObjectType = "Schema" + SQLObjectTypeDatabase SQLObjectType = "Database" + SQLObjectTypeInstance SQLObjectType = "Instance" + SQLObjectTypeServer SQLObjectType = "Server" +) + +type SQLInfo struct { + Sql string +} +type SQLOp string + +const ( + // 增或改操作 + SQLOpAddOrUpdate SQLOp = "AddOrUpdate" + // 读取操作 + SQLOpRead SQLOp = "Read" + // 删除操作 + SQLOpDelete SQLOp = "Delete" + // 授权操作 + SQLOpGrant SQLOp = "Grant" + // 高权限操作,如锁表、导出表到文件等 + SQLOpAdmin SQLOp = "Admin" +) diff --git a/vendor/github.com/alibabacloud-go/darabonba-openapi/v2/LICENSE b/vendor/github.com/alibabacloud-go/darabonba-openapi/v2/LICENSE deleted file mode 100644 index 0c44dcefe3..0000000000 --- a/vendor/github.com/alibabacloud-go/darabonba-openapi/v2/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/alibabacloud-go/darabonba-openapi/v2/client/client.go b/vendor/github.com/alibabacloud-go/darabonba-openapi/v2/client/client.go deleted file mode 100644 index e4b1a22e4a..0000000000 --- a/vendor/github.com/alibabacloud-go/darabonba-openapi/v2/client/client.go +++ /dev/null @@ -1,1834 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -/** - * This is for OpenApi SDK - */ -package client - -import ( - "io" - - spi "github.com/alibabacloud-go/alibabacloud-gateway-spi/client" - openapiutil "github.com/alibabacloud-go/openapi-util/service" - util "github.com/alibabacloud-go/tea-utils/v2/service" - xml "github.com/alibabacloud-go/tea-xml/service" - "github.com/alibabacloud-go/tea/tea" - credential "github.com/aliyun/credentials-go/credentials" -) - -type GlobalParameters struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty"` - Queries map[string]*string `json:"queries,omitempty" xml:"queries,omitempty"` -} - -func (s GlobalParameters) String() string { - return tea.Prettify(s) -} - -func (s GlobalParameters) GoString() string { - return s.String() -} - -func (s *GlobalParameters) SetHeaders(v map[string]*string) *GlobalParameters { - s.Headers = v - return s -} - -func (s *GlobalParameters) SetQueries(v map[string]*string) *GlobalParameters { - s.Queries = v - return s -} - -/** - * Model for initing client - */ -type Config struct { - // accesskey id - AccessKeyId *string `json:"accessKeyId,omitempty" xml:"accessKeyId,omitempty"` - // accesskey secret - AccessKeySecret *string `json:"accessKeySecret,omitempty" xml:"accessKeySecret,omitempty"` - // security token - SecurityToken *string `json:"securityToken,omitempty" xml:"securityToken,omitempty"` - // http protocol - Protocol *string `json:"protocol,omitempty" xml:"protocol,omitempty"` - // http method - Method *string `json:"method,omitempty" xml:"method,omitempty"` - // region id - RegionId *string `json:"regionId,omitempty" xml:"regionId,omitempty"` - // read timeout - ReadTimeout *int `json:"readTimeout,omitempty" xml:"readTimeout,omitempty"` - // connect timeout - ConnectTimeout *int `json:"connectTimeout,omitempty" xml:"connectTimeout,omitempty"` - // http proxy - HttpProxy *string `json:"httpProxy,omitempty" xml:"httpProxy,omitempty"` - // https proxy - HttpsProxy *string `json:"httpsProxy,omitempty" xml:"httpsProxy,omitempty"` - // credential - Credential credential.Credential `json:"credential,omitempty" xml:"credential,omitempty"` - // endpoint - Endpoint *string `json:"endpoint,omitempty" xml:"endpoint,omitempty"` - // proxy white list - NoProxy *string `json:"noProxy,omitempty" xml:"noProxy,omitempty"` - // max idle conns - MaxIdleConns *int `json:"maxIdleConns,omitempty" xml:"maxIdleConns,omitempty"` - // network for endpoint - Network *string `json:"network,omitempty" xml:"network,omitempty"` - // user agent - UserAgent *string `json:"userAgent,omitempty" xml:"userAgent,omitempty"` - // suffix for endpoint - Suffix *string `json:"suffix,omitempty" xml:"suffix,omitempty"` - // socks5 proxy - Socks5Proxy *string `json:"socks5Proxy,omitempty" xml:"socks5Proxy,omitempty"` - // socks5 network - Socks5NetWork *string `json:"socks5NetWork,omitempty" xml:"socks5NetWork,omitempty"` - // endpoint type - EndpointType *string `json:"endpointType,omitempty" xml:"endpointType,omitempty"` - // OpenPlatform endpoint - OpenPlatformEndpoint *string `json:"openPlatformEndpoint,omitempty" xml:"openPlatformEndpoint,omitempty"` - // Deprecated - // credential type - Type *string `json:"type,omitempty" xml:"type,omitempty"` - // Signature Version - SignatureVersion *string `json:"signatureVersion,omitempty" xml:"signatureVersion,omitempty"` - // Signature Algorithm - SignatureAlgorithm *string `json:"signatureAlgorithm,omitempty" xml:"signatureAlgorithm,omitempty"` - // Global Parameters - GlobalParameters *GlobalParameters `json:"globalParameters,omitempty" xml:"globalParameters,omitempty"` -} - -func (s Config) String() string { - return tea.Prettify(s) -} - -func (s Config) GoString() string { - return s.String() -} - -func (s *Config) SetAccessKeyId(v string) *Config { - s.AccessKeyId = &v - return s -} - -func (s *Config) SetAccessKeySecret(v string) *Config { - s.AccessKeySecret = &v - return s -} - -func (s *Config) SetSecurityToken(v string) *Config { - s.SecurityToken = &v - return s -} - -func (s *Config) SetProtocol(v string) *Config { - s.Protocol = &v - return s -} - -func (s *Config) SetMethod(v string) *Config { - s.Method = &v - return s -} - -func (s *Config) SetRegionId(v string) *Config { - s.RegionId = &v - return s -} - -func (s *Config) SetReadTimeout(v int) *Config { - s.ReadTimeout = &v - return s -} - -func (s *Config) SetConnectTimeout(v int) *Config { - s.ConnectTimeout = &v - return s -} - -func (s *Config) SetHttpProxy(v string) *Config { - s.HttpProxy = &v - return s -} - -func (s *Config) SetHttpsProxy(v string) *Config { - s.HttpsProxy = &v - return s -} - -func (s *Config) SetCredential(v credential.Credential) *Config { - s.Credential = v - return s -} - -func (s *Config) SetEndpoint(v string) *Config { - s.Endpoint = &v - return s -} - -func (s *Config) SetNoProxy(v string) *Config { - s.NoProxy = &v - return s -} - -func (s *Config) SetMaxIdleConns(v int) *Config { - s.MaxIdleConns = &v - return s -} - -func (s *Config) SetNetwork(v string) *Config { - s.Network = &v - return s -} - -func (s *Config) SetUserAgent(v string) *Config { - s.UserAgent = &v - return s -} - -func (s *Config) SetSuffix(v string) *Config { - s.Suffix = &v - return s -} - -func (s *Config) SetSocks5Proxy(v string) *Config { - s.Socks5Proxy = &v - return s -} - -func (s *Config) SetSocks5NetWork(v string) *Config { - s.Socks5NetWork = &v - return s -} - -func (s *Config) SetEndpointType(v string) *Config { - s.EndpointType = &v - return s -} - -func (s *Config) SetOpenPlatformEndpoint(v string) *Config { - s.OpenPlatformEndpoint = &v - return s -} - -func (s *Config) SetType(v string) *Config { - s.Type = &v - return s -} - -func (s *Config) SetSignatureVersion(v string) *Config { - s.SignatureVersion = &v - return s -} - -func (s *Config) SetSignatureAlgorithm(v string) *Config { - s.SignatureAlgorithm = &v - return s -} - -func (s *Config) SetGlobalParameters(v *GlobalParameters) *Config { - s.GlobalParameters = v - return s -} - -type OpenApiRequest struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty"` - Query map[string]*string `json:"query,omitempty" xml:"query,omitempty"` - Body interface{} `json:"body,omitempty" xml:"body,omitempty"` - Stream io.Reader `json:"stream,omitempty" xml:"stream,omitempty"` - HostMap map[string]*string `json:"hostMap,omitempty" xml:"hostMap,omitempty"` - EndpointOverride *string `json:"endpointOverride,omitempty" xml:"endpointOverride,omitempty"` -} - -func (s OpenApiRequest) String() string { - return tea.Prettify(s) -} - -func (s OpenApiRequest) GoString() string { - return s.String() -} - -func (s *OpenApiRequest) SetHeaders(v map[string]*string) *OpenApiRequest { - s.Headers = v - return s -} - -func (s *OpenApiRequest) SetQuery(v map[string]*string) *OpenApiRequest { - s.Query = v - return s -} - -func (s *OpenApiRequest) SetBody(v interface{}) *OpenApiRequest { - s.Body = v - return s -} - -func (s *OpenApiRequest) SetStream(v io.Reader) *OpenApiRequest { - s.Stream = v - return s -} - -func (s *OpenApiRequest) SetHostMap(v map[string]*string) *OpenApiRequest { - s.HostMap = v - return s -} - -func (s *OpenApiRequest) SetEndpointOverride(v string) *OpenApiRequest { - s.EndpointOverride = &v - return s -} - -type Params struct { - Action *string `json:"action,omitempty" xml:"action,omitempty" require:"true"` - Version *string `json:"version,omitempty" xml:"version,omitempty" require:"true"` - Protocol *string `json:"protocol,omitempty" xml:"protocol,omitempty" require:"true"` - Pathname *string `json:"pathname,omitempty" xml:"pathname,omitempty" require:"true"` - Method *string `json:"method,omitempty" xml:"method,omitempty" require:"true"` - AuthType *string `json:"authType,omitempty" xml:"authType,omitempty" require:"true"` - BodyType *string `json:"bodyType,omitempty" xml:"bodyType,omitempty" require:"true"` - ReqBodyType *string `json:"reqBodyType,omitempty" xml:"reqBodyType,omitempty" require:"true"` - Style *string `json:"style,omitempty" xml:"style,omitempty"` -} - -func (s Params) String() string { - return tea.Prettify(s) -} - -func (s Params) GoString() string { - return s.String() -} - -func (s *Params) SetAction(v string) *Params { - s.Action = &v - return s -} - -func (s *Params) SetVersion(v string) *Params { - s.Version = &v - return s -} - -func (s *Params) SetProtocol(v string) *Params { - s.Protocol = &v - return s -} - -func (s *Params) SetPathname(v string) *Params { - s.Pathname = &v - return s -} - -func (s *Params) SetMethod(v string) *Params { - s.Method = &v - return s -} - -func (s *Params) SetAuthType(v string) *Params { - s.AuthType = &v - return s -} - -func (s *Params) SetBodyType(v string) *Params { - s.BodyType = &v - return s -} - -func (s *Params) SetReqBodyType(v string) *Params { - s.ReqBodyType = &v - return s -} - -func (s *Params) SetStyle(v string) *Params { - s.Style = &v - return s -} - -type Client struct { - Endpoint *string - RegionId *string - Protocol *string - Method *string - UserAgent *string - EndpointRule *string - EndpointMap map[string]*string - Suffix *string - ReadTimeout *int - ConnectTimeout *int - HttpProxy *string - HttpsProxy *string - Socks5Proxy *string - Socks5NetWork *string - NoProxy *string - Network *string - ProductId *string - MaxIdleConns *int - EndpointType *string - OpenPlatformEndpoint *string - Credential credential.Credential - SignatureVersion *string - SignatureAlgorithm *string - Headers map[string]*string - Spi spi.ClientInterface - GlobalParameters *GlobalParameters -} - -/** - * Init client with Config - * @param config config contains the necessary information to create a client - */ -func NewClient(config *Config) (*Client, error) { - client := new(Client) - err := client.Init(config) - return client, err -} - -func (client *Client) Init(config *Config) (_err error) { - if tea.BoolValue(util.IsUnset(config)) { - _err = tea.NewSDKError(map[string]interface{}{ - "code": "ParameterMissing", - "message": "'config' can not be unset", - }) - return _err - } - - if !tea.BoolValue(util.Empty(config.AccessKeyId)) && !tea.BoolValue(util.Empty(config.AccessKeySecret)) { - if !tea.BoolValue(util.Empty(config.SecurityToken)) { - config.Type = tea.String("sts") - } else { - config.Type = tea.String("access_key") - } - - credentialConfig := &credential.Config{ - AccessKeyId: config.AccessKeyId, - Type: config.Type, - AccessKeySecret: config.AccessKeySecret, - } - credentialConfig.SecurityToken = config.SecurityToken - client.Credential, _err = credential.NewCredential(credentialConfig) - if _err != nil { - return _err - } - - } else if !tea.BoolValue(util.IsUnset(config.Credential)) { - client.Credential = config.Credential - } - - client.Endpoint = config.Endpoint - client.EndpointType = config.EndpointType - client.Network = config.Network - client.Suffix = config.Suffix - client.Protocol = config.Protocol - client.Method = config.Method - client.RegionId = config.RegionId - client.UserAgent = config.UserAgent - client.ReadTimeout = config.ReadTimeout - client.ConnectTimeout = config.ConnectTimeout - client.HttpProxy = config.HttpProxy - client.HttpsProxy = config.HttpsProxy - client.NoProxy = config.NoProxy - client.Socks5Proxy = config.Socks5Proxy - client.Socks5NetWork = config.Socks5NetWork - client.MaxIdleConns = config.MaxIdleConns - client.SignatureVersion = config.SignatureVersion - client.SignatureAlgorithm = config.SignatureAlgorithm - client.GlobalParameters = config.GlobalParameters - return nil -} - -/** - * Encapsulate the request and invoke the network - * @param action api name - * @param version product version - * @param protocol http or https - * @param method e.g. GET - * @param authType authorization type e.g. AK - * @param bodyType response body type e.g. String - * @param request object of OpenApiRequest - * @param runtime which controls some details of call api, such as retry times - * @return the response - */ -func (client *Client) DoRPCRequest(action *string, version *string, protocol *string, method *string, authType *string, bodyType *string, request *OpenApiRequest, runtime *util.RuntimeOptions) (_result map[string]interface{}, _err error) { - _err = tea.Validate(request) - if _err != nil { - return _result, _err - } - _err = tea.Validate(runtime) - if _err != nil { - return _result, _err - } - _runtime := map[string]interface{}{ - "timeouted": "retry", - "readTimeout": tea.IntValue(util.DefaultNumber(runtime.ReadTimeout, client.ReadTimeout)), - "connectTimeout": tea.IntValue(util.DefaultNumber(runtime.ConnectTimeout, client.ConnectTimeout)), - "httpProxy": tea.StringValue(util.DefaultString(runtime.HttpProxy, client.HttpProxy)), - "httpsProxy": tea.StringValue(util.DefaultString(runtime.HttpsProxy, client.HttpsProxy)), - "noProxy": tea.StringValue(util.DefaultString(runtime.NoProxy, client.NoProxy)), - "socks5Proxy": tea.StringValue(util.DefaultString(runtime.Socks5Proxy, client.Socks5Proxy)), - "socks5NetWork": tea.StringValue(util.DefaultString(runtime.Socks5NetWork, client.Socks5NetWork)), - "maxIdleConns": tea.IntValue(util.DefaultNumber(runtime.MaxIdleConns, client.MaxIdleConns)), - "retry": map[string]interface{}{ - "retryable": tea.BoolValue(runtime.Autoretry), - "maxAttempts": tea.IntValue(util.DefaultNumber(runtime.MaxAttempts, tea.Int(3))), - }, - "backoff": map[string]interface{}{ - "policy": tea.StringValue(util.DefaultString(runtime.BackoffPolicy, tea.String("no"))), - "period": tea.IntValue(util.DefaultNumber(runtime.BackoffPeriod, tea.Int(1))), - }, - "ignoreSSL": tea.BoolValue(runtime.IgnoreSSL), - } - - _resp := make(map[string]interface{}) - for _retryTimes := 0; tea.BoolValue(tea.AllowRetry(_runtime["retry"], tea.Int(_retryTimes))); _retryTimes++ { - if _retryTimes > 0 { - _backoffTime := tea.GetBackoffTime(_runtime["backoff"], tea.Int(_retryTimes)) - if tea.IntValue(_backoffTime) > 0 { - tea.Sleep(_backoffTime) - } - } - - _resp, _err = func() (map[string]interface{}, error) { - request_ := tea.NewRequest() - request_.Protocol = util.DefaultString(client.Protocol, protocol) - request_.Method = method - request_.Pathname = tea.String("/") - globalQueries := make(map[string]*string) - globalHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(client.GlobalParameters)) { - globalParams := client.GlobalParameters - if !tea.BoolValue(util.IsUnset(globalParams.Queries)) { - globalQueries = globalParams.Queries - } - - if !tea.BoolValue(util.IsUnset(globalParams.Headers)) { - globalHeaders = globalParams.Headers - } - - } - - request_.Query = tea.Merge(map[string]*string{ - "Action": action, - "Format": tea.String("json"), - "Version": version, - "Timestamp": openapiutil.GetTimestamp(), - "SignatureNonce": util.GetNonce(), - }, globalQueries, - request.Query) - headers, _err := client.GetRpcHeaders() - if _err != nil { - return _result, _err - } - - if tea.BoolValue(util.IsUnset(headers)) { - // endpoint is setted in product client - request_.Headers = tea.Merge(map[string]*string{ - "host": client.Endpoint, - "x-acs-version": version, - "x-acs-action": action, - "user-agent": client.GetUserAgent(), - }, globalHeaders) - } else { - request_.Headers = tea.Merge(map[string]*string{ - "host": client.Endpoint, - "x-acs-version": version, - "x-acs-action": action, - "user-agent": client.GetUserAgent(), - }, globalHeaders, - headers) - } - - if !tea.BoolValue(util.IsUnset(request.Body)) { - m, _err := util.AssertAsMap(request.Body) - if _err != nil { - return _result, _err - } - - tmp := util.AnyifyMapValue(openapiutil.Query(m)) - request_.Body = tea.ToReader(util.ToFormString(tmp)) - request_.Headers["content-type"] = tea.String("application/x-www-form-urlencoded") - } - - if !tea.BoolValue(util.EqualString(authType, tea.String("Anonymous"))) { - accessKeyId, _err := client.GetAccessKeyId() - if _err != nil { - return _result, _err - } - - accessKeySecret, _err := client.GetAccessKeySecret() - if _err != nil { - return _result, _err - } - - securityToken, _err := client.GetSecurityToken() - if _err != nil { - return _result, _err - } - - if !tea.BoolValue(util.Empty(securityToken)) { - request_.Query["SecurityToken"] = securityToken - } - - request_.Query["SignatureMethod"] = tea.String("HMAC-SHA1") - request_.Query["SignatureVersion"] = tea.String("1.0") - request_.Query["AccessKeyId"] = accessKeyId - var t map[string]interface{} - if !tea.BoolValue(util.IsUnset(request.Body)) { - t, _err = util.AssertAsMap(request.Body) - if _err != nil { - return _result, _err - } - - } - - signedParam := tea.Merge(request_.Query, - openapiutil.Query(t)) - request_.Query["Signature"] = openapiutil.GetRPCSignature(signedParam, request_.Method, accessKeySecret) - } - - response_, _err := tea.DoRequest(request_, _runtime) - if _err != nil { - return _result, _err - } - if tea.BoolValue(util.Is4xx(response_.StatusCode)) || tea.BoolValue(util.Is5xx(response_.StatusCode)) { - _res, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - err, _err := util.AssertAsMap(_res) - if _err != nil { - return _result, _err - } - - requestId := DefaultAny(err["RequestId"], err["requestId"]) - err["statusCode"] = response_.StatusCode - _err = tea.NewSDKError(map[string]interface{}{ - "code": tea.ToString(DefaultAny(err["Code"], err["code"])), - "message": "code: " + tea.ToString(tea.IntValue(response_.StatusCode)) + ", " + tea.ToString(DefaultAny(err["Message"], err["message"])) + " request id: " + tea.ToString(requestId), - "data": err, - "description": tea.ToString(DefaultAny(err["Description"], err["description"])), - "accessDeniedDetail": err["AccessDeniedDetail"], - }) - return _result, _err - } - - if tea.BoolValue(util.EqualString(bodyType, tea.String("binary"))) { - resp := map[string]interface{}{ - "body": response_.Body, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - } - _result = resp - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("byte"))) { - byt, _err := util.ReadAsBytes(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": byt, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("string"))) { - str, _err := util.ReadAsString(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": tea.StringValue(str), - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("json"))) { - obj, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - res, _err := util.AssertAsMap(obj) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": res, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("array"))) { - arr, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": arr, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else { - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } - - }() - if !tea.BoolValue(tea.Retryable(_err)) { - break - } - } - - return _resp, _err -} - -/** - * Encapsulate the request and invoke the network - * @param action api name - * @param version product version - * @param protocol http or https - * @param method e.g. GET - * @param authType authorization type e.g. AK - * @param pathname pathname of every api - * @param bodyType response body type e.g. String - * @param request object of OpenApiRequest - * @param runtime which controls some details of call api, such as retry times - * @return the response - */ -func (client *Client) DoROARequest(action *string, version *string, protocol *string, method *string, authType *string, pathname *string, bodyType *string, request *OpenApiRequest, runtime *util.RuntimeOptions) (_result map[string]interface{}, _err error) { - _err = tea.Validate(request) - if _err != nil { - return _result, _err - } - _err = tea.Validate(runtime) - if _err != nil { - return _result, _err - } - _runtime := map[string]interface{}{ - "timeouted": "retry", - "readTimeout": tea.IntValue(util.DefaultNumber(runtime.ReadTimeout, client.ReadTimeout)), - "connectTimeout": tea.IntValue(util.DefaultNumber(runtime.ConnectTimeout, client.ConnectTimeout)), - "httpProxy": tea.StringValue(util.DefaultString(runtime.HttpProxy, client.HttpProxy)), - "httpsProxy": tea.StringValue(util.DefaultString(runtime.HttpsProxy, client.HttpsProxy)), - "noProxy": tea.StringValue(util.DefaultString(runtime.NoProxy, client.NoProxy)), - "socks5Proxy": tea.StringValue(util.DefaultString(runtime.Socks5Proxy, client.Socks5Proxy)), - "socks5NetWork": tea.StringValue(util.DefaultString(runtime.Socks5NetWork, client.Socks5NetWork)), - "maxIdleConns": tea.IntValue(util.DefaultNumber(runtime.MaxIdleConns, client.MaxIdleConns)), - "retry": map[string]interface{}{ - "retryable": tea.BoolValue(runtime.Autoretry), - "maxAttempts": tea.IntValue(util.DefaultNumber(runtime.MaxAttempts, tea.Int(3))), - }, - "backoff": map[string]interface{}{ - "policy": tea.StringValue(util.DefaultString(runtime.BackoffPolicy, tea.String("no"))), - "period": tea.IntValue(util.DefaultNumber(runtime.BackoffPeriod, tea.Int(1))), - }, - "ignoreSSL": tea.BoolValue(runtime.IgnoreSSL), - } - - _resp := make(map[string]interface{}) - for _retryTimes := 0; tea.BoolValue(tea.AllowRetry(_runtime["retry"], tea.Int(_retryTimes))); _retryTimes++ { - if _retryTimes > 0 { - _backoffTime := tea.GetBackoffTime(_runtime["backoff"], tea.Int(_retryTimes)) - if tea.IntValue(_backoffTime) > 0 { - tea.Sleep(_backoffTime) - } - } - - _resp, _err = func() (map[string]interface{}, error) { - request_ := tea.NewRequest() - request_.Protocol = util.DefaultString(client.Protocol, protocol) - request_.Method = method - request_.Pathname = pathname - globalQueries := make(map[string]*string) - globalHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(client.GlobalParameters)) { - globalParams := client.GlobalParameters - if !tea.BoolValue(util.IsUnset(globalParams.Queries)) { - globalQueries = globalParams.Queries - } - - if !tea.BoolValue(util.IsUnset(globalParams.Headers)) { - globalHeaders = globalParams.Headers - } - - } - - request_.Headers = tea.Merge(map[string]*string{ - "date": util.GetDateUTCString(), - "host": client.Endpoint, - "accept": tea.String("application/json"), - "x-acs-signature-nonce": util.GetNonce(), - "x-acs-signature-method": tea.String("HMAC-SHA1"), - "x-acs-signature-version": tea.String("1.0"), - "x-acs-version": version, - "x-acs-action": action, - "user-agent": util.GetUserAgent(client.UserAgent), - }, globalHeaders, - request.Headers) - if !tea.BoolValue(util.IsUnset(request.Body)) { - request_.Body = tea.ToReader(util.ToJSONString(request.Body)) - request_.Headers["content-type"] = tea.String("application/json; charset=utf-8") - } - - request_.Query = globalQueries - if !tea.BoolValue(util.IsUnset(request.Query)) { - request_.Query = tea.Merge(request_.Query, - request.Query) - } - - if !tea.BoolValue(util.EqualString(authType, tea.String("Anonymous"))) { - accessKeyId, _err := client.GetAccessKeyId() - if _err != nil { - return _result, _err - } - - accessKeySecret, _err := client.GetAccessKeySecret() - if _err != nil { - return _result, _err - } - - securityToken, _err := client.GetSecurityToken() - if _err != nil { - return _result, _err - } - - if !tea.BoolValue(util.Empty(securityToken)) { - request_.Headers["x-acs-accesskey-id"] = accessKeyId - request_.Headers["x-acs-security-token"] = securityToken - } - - stringToSign := openapiutil.GetStringToSign(request_) - request_.Headers["authorization"] = tea.String("acs " + tea.StringValue(accessKeyId) + ":" + tea.StringValue(openapiutil.GetROASignature(stringToSign, accessKeySecret))) - } - - response_, _err := tea.DoRequest(request_, _runtime) - if _err != nil { - return _result, _err - } - if tea.BoolValue(util.EqualNumber(response_.StatusCode, tea.Int(204))) { - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]map[string]*string{ - "headers": response_.Headers, - }, &_result) - return _result, _err - } - - if tea.BoolValue(util.Is4xx(response_.StatusCode)) || tea.BoolValue(util.Is5xx(response_.StatusCode)) { - _res, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - err, _err := util.AssertAsMap(_res) - if _err != nil { - return _result, _err - } - - requestId := DefaultAny(err["RequestId"], err["requestId"]) - requestId = DefaultAny(requestId, err["requestid"]) - err["statusCode"] = response_.StatusCode - _err = tea.NewSDKError(map[string]interface{}{ - "code": tea.ToString(DefaultAny(err["Code"], err["code"])), - "message": "code: " + tea.ToString(tea.IntValue(response_.StatusCode)) + ", " + tea.ToString(DefaultAny(err["Message"], err["message"])) + " request id: " + tea.ToString(requestId), - "data": err, - "description": tea.ToString(DefaultAny(err["Description"], err["description"])), - "accessDeniedDetail": err["AccessDeniedDetail"], - }) - return _result, _err - } - - if tea.BoolValue(util.EqualString(bodyType, tea.String("binary"))) { - resp := map[string]interface{}{ - "body": response_.Body, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - } - _result = resp - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("byte"))) { - byt, _err := util.ReadAsBytes(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": byt, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("string"))) { - str, _err := util.ReadAsString(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": tea.StringValue(str), - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("json"))) { - obj, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - res, _err := util.AssertAsMap(obj) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": res, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("array"))) { - arr, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": arr, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else { - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } - - }() - if !tea.BoolValue(tea.Retryable(_err)) { - break - } - } - - return _resp, _err -} - -/** - * Encapsulate the request and invoke the network with form body - * @param action api name - * @param version product version - * @param protocol http or https - * @param method e.g. GET - * @param authType authorization type e.g. AK - * @param pathname pathname of every api - * @param bodyType response body type e.g. String - * @param request object of OpenApiRequest - * @param runtime which controls some details of call api, such as retry times - * @return the response - */ -func (client *Client) DoROARequestWithForm(action *string, version *string, protocol *string, method *string, authType *string, pathname *string, bodyType *string, request *OpenApiRequest, runtime *util.RuntimeOptions) (_result map[string]interface{}, _err error) { - _err = tea.Validate(request) - if _err != nil { - return _result, _err - } - _err = tea.Validate(runtime) - if _err != nil { - return _result, _err - } - _runtime := map[string]interface{}{ - "timeouted": "retry", - "readTimeout": tea.IntValue(util.DefaultNumber(runtime.ReadTimeout, client.ReadTimeout)), - "connectTimeout": tea.IntValue(util.DefaultNumber(runtime.ConnectTimeout, client.ConnectTimeout)), - "httpProxy": tea.StringValue(util.DefaultString(runtime.HttpProxy, client.HttpProxy)), - "httpsProxy": tea.StringValue(util.DefaultString(runtime.HttpsProxy, client.HttpsProxy)), - "noProxy": tea.StringValue(util.DefaultString(runtime.NoProxy, client.NoProxy)), - "socks5Proxy": tea.StringValue(util.DefaultString(runtime.Socks5Proxy, client.Socks5Proxy)), - "socks5NetWork": tea.StringValue(util.DefaultString(runtime.Socks5NetWork, client.Socks5NetWork)), - "maxIdleConns": tea.IntValue(util.DefaultNumber(runtime.MaxIdleConns, client.MaxIdleConns)), - "retry": map[string]interface{}{ - "retryable": tea.BoolValue(runtime.Autoretry), - "maxAttempts": tea.IntValue(util.DefaultNumber(runtime.MaxAttempts, tea.Int(3))), - }, - "backoff": map[string]interface{}{ - "policy": tea.StringValue(util.DefaultString(runtime.BackoffPolicy, tea.String("no"))), - "period": tea.IntValue(util.DefaultNumber(runtime.BackoffPeriod, tea.Int(1))), - }, - "ignoreSSL": tea.BoolValue(runtime.IgnoreSSL), - } - - _resp := make(map[string]interface{}) - for _retryTimes := 0; tea.BoolValue(tea.AllowRetry(_runtime["retry"], tea.Int(_retryTimes))); _retryTimes++ { - if _retryTimes > 0 { - _backoffTime := tea.GetBackoffTime(_runtime["backoff"], tea.Int(_retryTimes)) - if tea.IntValue(_backoffTime) > 0 { - tea.Sleep(_backoffTime) - } - } - - _resp, _err = func() (map[string]interface{}, error) { - request_ := tea.NewRequest() - request_.Protocol = util.DefaultString(client.Protocol, protocol) - request_.Method = method - request_.Pathname = pathname - globalQueries := make(map[string]*string) - globalHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(client.GlobalParameters)) { - globalParams := client.GlobalParameters - if !tea.BoolValue(util.IsUnset(globalParams.Queries)) { - globalQueries = globalParams.Queries - } - - if !tea.BoolValue(util.IsUnset(globalParams.Headers)) { - globalHeaders = globalParams.Headers - } - - } - - request_.Headers = tea.Merge(map[string]*string{ - "date": util.GetDateUTCString(), - "host": client.Endpoint, - "accept": tea.String("application/json"), - "x-acs-signature-nonce": util.GetNonce(), - "x-acs-signature-method": tea.String("HMAC-SHA1"), - "x-acs-signature-version": tea.String("1.0"), - "x-acs-version": version, - "x-acs-action": action, - "user-agent": util.GetUserAgent(client.UserAgent), - }, globalHeaders, - request.Headers) - if !tea.BoolValue(util.IsUnset(request.Body)) { - m, _err := util.AssertAsMap(request.Body) - if _err != nil { - return _result, _err - } - - request_.Body = tea.ToReader(openapiutil.ToForm(m)) - request_.Headers["content-type"] = tea.String("application/x-www-form-urlencoded") - } - - request_.Query = globalQueries - if !tea.BoolValue(util.IsUnset(request.Query)) { - request_.Query = tea.Merge(request_.Query, - request.Query) - } - - if !tea.BoolValue(util.EqualString(authType, tea.String("Anonymous"))) { - accessKeyId, _err := client.GetAccessKeyId() - if _err != nil { - return _result, _err - } - - accessKeySecret, _err := client.GetAccessKeySecret() - if _err != nil { - return _result, _err - } - - securityToken, _err := client.GetSecurityToken() - if _err != nil { - return _result, _err - } - - if !tea.BoolValue(util.Empty(securityToken)) { - request_.Headers["x-acs-accesskey-id"] = accessKeyId - request_.Headers["x-acs-security-token"] = securityToken - } - - stringToSign := openapiutil.GetStringToSign(request_) - request_.Headers["authorization"] = tea.String("acs " + tea.StringValue(accessKeyId) + ":" + tea.StringValue(openapiutil.GetROASignature(stringToSign, accessKeySecret))) - } - - response_, _err := tea.DoRequest(request_, _runtime) - if _err != nil { - return _result, _err - } - if tea.BoolValue(util.EqualNumber(response_.StatusCode, tea.Int(204))) { - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]map[string]*string{ - "headers": response_.Headers, - }, &_result) - return _result, _err - } - - if tea.BoolValue(util.Is4xx(response_.StatusCode)) || tea.BoolValue(util.Is5xx(response_.StatusCode)) { - _res, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - err, _err := util.AssertAsMap(_res) - if _err != nil { - return _result, _err - } - - err["statusCode"] = response_.StatusCode - _err = tea.NewSDKError(map[string]interface{}{ - "code": tea.ToString(DefaultAny(err["Code"], err["code"])), - "message": "code: " + tea.ToString(tea.IntValue(response_.StatusCode)) + ", " + tea.ToString(DefaultAny(err["Message"], err["message"])) + " request id: " + tea.ToString(DefaultAny(err["RequestId"], err["requestId"])), - "data": err, - "description": tea.ToString(DefaultAny(err["Description"], err["description"])), - "accessDeniedDetail": err["AccessDeniedDetail"], - }) - return _result, _err - } - - if tea.BoolValue(util.EqualString(bodyType, tea.String("binary"))) { - resp := map[string]interface{}{ - "body": response_.Body, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - } - _result = resp - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("byte"))) { - byt, _err := util.ReadAsBytes(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": byt, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("string"))) { - str, _err := util.ReadAsString(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": tea.StringValue(str), - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("json"))) { - obj, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - res, _err := util.AssertAsMap(obj) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": res, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(bodyType, tea.String("array"))) { - arr, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": arr, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else { - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } - - }() - if !tea.BoolValue(tea.Retryable(_err)) { - break - } - } - - return _resp, _err -} - -/** - * Encapsulate the request and invoke the network - * @param action api name - * @param version product version - * @param protocol http or https - * @param method e.g. GET - * @param authType authorization type e.g. AK - * @param bodyType response body type e.g. String - * @param request object of OpenApiRequest - * @param runtime which controls some details of call api, such as retry times - * @return the response - */ -func (client *Client) DoRequest(params *Params, request *OpenApiRequest, runtime *util.RuntimeOptions) (_result map[string]interface{}, _err error) { - _err = tea.Validate(params) - if _err != nil { - return _result, _err - } - _err = tea.Validate(request) - if _err != nil { - return _result, _err - } - _err = tea.Validate(runtime) - if _err != nil { - return _result, _err - } - _runtime := map[string]interface{}{ - "timeouted": "retry", - "readTimeout": tea.IntValue(util.DefaultNumber(runtime.ReadTimeout, client.ReadTimeout)), - "connectTimeout": tea.IntValue(util.DefaultNumber(runtime.ConnectTimeout, client.ConnectTimeout)), - "httpProxy": tea.StringValue(util.DefaultString(runtime.HttpProxy, client.HttpProxy)), - "httpsProxy": tea.StringValue(util.DefaultString(runtime.HttpsProxy, client.HttpsProxy)), - "noProxy": tea.StringValue(util.DefaultString(runtime.NoProxy, client.NoProxy)), - "socks5Proxy": tea.StringValue(util.DefaultString(runtime.Socks5Proxy, client.Socks5Proxy)), - "socks5NetWork": tea.StringValue(util.DefaultString(runtime.Socks5NetWork, client.Socks5NetWork)), - "maxIdleConns": tea.IntValue(util.DefaultNumber(runtime.MaxIdleConns, client.MaxIdleConns)), - "retry": map[string]interface{}{ - "retryable": tea.BoolValue(runtime.Autoretry), - "maxAttempts": tea.IntValue(util.DefaultNumber(runtime.MaxAttempts, tea.Int(3))), - }, - "backoff": map[string]interface{}{ - "policy": tea.StringValue(util.DefaultString(runtime.BackoffPolicy, tea.String("no"))), - "period": tea.IntValue(util.DefaultNumber(runtime.BackoffPeriod, tea.Int(1))), - }, - "ignoreSSL": tea.BoolValue(runtime.IgnoreSSL), - } - - _resp := make(map[string]interface{}) - for _retryTimes := 0; tea.BoolValue(tea.AllowRetry(_runtime["retry"], tea.Int(_retryTimes))); _retryTimes++ { - if _retryTimes > 0 { - _backoffTime := tea.GetBackoffTime(_runtime["backoff"], tea.Int(_retryTimes)) - if tea.IntValue(_backoffTime) > 0 { - tea.Sleep(_backoffTime) - } - } - - _resp, _err = func() (map[string]interface{}, error) { - request_ := tea.NewRequest() - request_.Protocol = util.DefaultString(client.Protocol, params.Protocol) - request_.Method = params.Method - request_.Pathname = params.Pathname - globalQueries := make(map[string]*string) - globalHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(client.GlobalParameters)) { - globalParams := client.GlobalParameters - if !tea.BoolValue(util.IsUnset(globalParams.Queries)) { - globalQueries = globalParams.Queries - } - - if !tea.BoolValue(util.IsUnset(globalParams.Headers)) { - globalHeaders = globalParams.Headers - } - - } - - request_.Query = tea.Merge(globalQueries, - request.Query) - // endpoint is setted in product client - request_.Headers = tea.Merge(map[string]*string{ - "host": client.Endpoint, - "x-acs-version": params.Version, - "x-acs-action": params.Action, - "user-agent": client.GetUserAgent(), - "x-acs-date": openapiutil.GetTimestamp(), - "x-acs-signature-nonce": util.GetNonce(), - "accept": tea.String("application/json"), - }, globalHeaders, - request.Headers) - if tea.BoolValue(util.EqualString(params.Style, tea.String("RPC"))) { - headers, _err := client.GetRpcHeaders() - if _err != nil { - return _result, _err - } - - if !tea.BoolValue(util.IsUnset(headers)) { - request_.Headers = tea.Merge(request_.Headers, - headers) - } - - } - - signatureAlgorithm := util.DefaultString(client.SignatureAlgorithm, tea.String("ACS3-HMAC-SHA256")) - hashedRequestPayload := openapiutil.HexEncode(openapiutil.Hash(util.ToBytes(tea.String("")), signatureAlgorithm)) - if !tea.BoolValue(util.IsUnset(request.Stream)) { - tmp, _err := util.ReadAsBytes(request.Stream) - if _err != nil { - return _result, _err - } - - hashedRequestPayload = openapiutil.HexEncode(openapiutil.Hash(tmp, signatureAlgorithm)) - request_.Body = tea.ToReader(tmp) - request_.Headers["content-type"] = tea.String("application/octet-stream") - } else { - if !tea.BoolValue(util.IsUnset(request.Body)) { - if tea.BoolValue(util.EqualString(params.ReqBodyType, tea.String("json"))) { - jsonObj := util.ToJSONString(request.Body) - hashedRequestPayload = openapiutil.HexEncode(openapiutil.Hash(util.ToBytes(jsonObj), signatureAlgorithm)) - request_.Body = tea.ToReader(jsonObj) - request_.Headers["content-type"] = tea.String("application/json; charset=utf-8") - } else { - m, _err := util.AssertAsMap(request.Body) - if _err != nil { - return _result, _err - } - - formObj := openapiutil.ToForm(m) - hashedRequestPayload = openapiutil.HexEncode(openapiutil.Hash(util.ToBytes(formObj), signatureAlgorithm)) - request_.Body = tea.ToReader(formObj) - request_.Headers["content-type"] = tea.String("application/x-www-form-urlencoded") - } - - } - - } - - request_.Headers["x-acs-content-sha256"] = hashedRequestPayload - if !tea.BoolValue(util.EqualString(params.AuthType, tea.String("Anonymous"))) { - authType, _err := client.GetType() - if _err != nil { - return _result, _err - } - - if tea.BoolValue(util.EqualString(authType, tea.String("bearer"))) { - bearerToken, _err := client.GetBearerToken() - if _err != nil { - return _result, _err - } - - request_.Headers["x-acs-bearer-token"] = bearerToken - } else { - accessKeyId, _err := client.GetAccessKeyId() - if _err != nil { - return _result, _err - } - - accessKeySecret, _err := client.GetAccessKeySecret() - if _err != nil { - return _result, _err - } - - securityToken, _err := client.GetSecurityToken() - if _err != nil { - return _result, _err - } - - if !tea.BoolValue(util.Empty(securityToken)) { - request_.Headers["x-acs-accesskey-id"] = accessKeyId - request_.Headers["x-acs-security-token"] = securityToken - } - - request_.Headers["Authorization"] = openapiutil.GetAuthorization(request_, signatureAlgorithm, hashedRequestPayload, accessKeyId, accessKeySecret) - } - - } - - response_, _err := tea.DoRequest(request_, _runtime) - if _err != nil { - return _result, _err - } - if tea.BoolValue(util.Is4xx(response_.StatusCode)) || tea.BoolValue(util.Is5xx(response_.StatusCode)) { - err := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(response_.Headers["content-type"])) && tea.BoolValue(util.EqualString(response_.Headers["content-type"], tea.String("text/xml;charset=utf-8"))) { - _str, _err := util.ReadAsString(response_.Body) - if _err != nil { - return _result, _err - } - - respMap := xml.ParseXml(_str, nil) - err, _err = util.AssertAsMap(respMap["Error"]) - if _err != nil { - return _result, _err - } - - } else { - _res, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - err, _err = util.AssertAsMap(_res) - if _err != nil { - return _result, _err - } - - } - - err["statusCode"] = response_.StatusCode - _err = tea.NewSDKError(map[string]interface{}{ - "code": tea.ToString(DefaultAny(err["Code"], err["code"])), - "message": "code: " + tea.ToString(tea.IntValue(response_.StatusCode)) + ", " + tea.ToString(DefaultAny(err["Message"], err["message"])) + " request id: " + tea.ToString(DefaultAny(err["RequestId"], err["requestId"])), - "data": err, - "description": tea.ToString(DefaultAny(err["Description"], err["description"])), - "accessDeniedDetail": err["AccessDeniedDetail"], - }) - return _result, _err - } - - if tea.BoolValue(util.EqualString(params.BodyType, tea.String("binary"))) { - resp := map[string]interface{}{ - "body": response_.Body, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - } - _result = resp - return _result, _err - } else if tea.BoolValue(util.EqualString(params.BodyType, tea.String("byte"))) { - byt, _err := util.ReadAsBytes(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": byt, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(params.BodyType, tea.String("string"))) { - str, _err := util.ReadAsString(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": tea.StringValue(str), - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(params.BodyType, tea.String("json"))) { - obj, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - res, _err := util.AssertAsMap(obj) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": res, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else if tea.BoolValue(util.EqualString(params.BodyType, tea.String("array"))) { - arr, _err := util.ReadAsJSON(response_.Body) - if _err != nil { - return _result, _err - } - - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "body": arr, - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } else { - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "headers": response_.Headers, - "statusCode": tea.IntValue(response_.StatusCode), - }, &_result) - return _result, _err - } - - }() - if !tea.BoolValue(tea.Retryable(_err)) { - break - } - } - - return _resp, _err -} - -/** - * Encapsulate the request and invoke the network - * @param action api name - * @param version product version - * @param protocol http or https - * @param method e.g. GET - * @param authType authorization type e.g. AK - * @param bodyType response body type e.g. String - * @param request object of OpenApiRequest - * @param runtime which controls some details of call api, such as retry times - * @return the response - */ -func (client *Client) Execute(params *Params, request *OpenApiRequest, runtime *util.RuntimeOptions) (_result map[string]interface{}, _err error) { - _err = tea.Validate(params) - if _err != nil { - return _result, _err - } - _err = tea.Validate(request) - if _err != nil { - return _result, _err - } - _err = tea.Validate(runtime) - if _err != nil { - return _result, _err - } - _runtime := map[string]interface{}{ - "timeouted": "retry", - "readTimeout": tea.IntValue(util.DefaultNumber(runtime.ReadTimeout, client.ReadTimeout)), - "connectTimeout": tea.IntValue(util.DefaultNumber(runtime.ConnectTimeout, client.ConnectTimeout)), - "httpProxy": tea.StringValue(util.DefaultString(runtime.HttpProxy, client.HttpProxy)), - "httpsProxy": tea.StringValue(util.DefaultString(runtime.HttpsProxy, client.HttpsProxy)), - "noProxy": tea.StringValue(util.DefaultString(runtime.NoProxy, client.NoProxy)), - "socks5Proxy": tea.StringValue(util.DefaultString(runtime.Socks5Proxy, client.Socks5Proxy)), - "socks5NetWork": tea.StringValue(util.DefaultString(runtime.Socks5NetWork, client.Socks5NetWork)), - "maxIdleConns": tea.IntValue(util.DefaultNumber(runtime.MaxIdleConns, client.MaxIdleConns)), - "retry": map[string]interface{}{ - "retryable": tea.BoolValue(runtime.Autoretry), - "maxAttempts": tea.IntValue(util.DefaultNumber(runtime.MaxAttempts, tea.Int(3))), - }, - "backoff": map[string]interface{}{ - "policy": tea.StringValue(util.DefaultString(runtime.BackoffPolicy, tea.String("no"))), - "period": tea.IntValue(util.DefaultNumber(runtime.BackoffPeriod, tea.Int(1))), - }, - "ignoreSSL": tea.BoolValue(runtime.IgnoreSSL), - } - - _resp := make(map[string]interface{}) - for _retryTimes := 0; tea.BoolValue(tea.AllowRetry(_runtime["retry"], tea.Int(_retryTimes))); _retryTimes++ { - if _retryTimes > 0 { - _backoffTime := tea.GetBackoffTime(_runtime["backoff"], tea.Int(_retryTimes)) - if tea.IntValue(_backoffTime) > 0 { - tea.Sleep(_backoffTime) - } - } - - _resp, _err = func() (map[string]interface{}, error) { - request_ := tea.NewRequest() - // spi = new Gateway();//Gateway implements SPI,这一步在产品 SDK 中实例化 - headers, _err := client.GetRpcHeaders() - if _err != nil { - return _result, _err - } - - globalQueries := make(map[string]*string) - globalHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(client.GlobalParameters)) { - globalParams := client.GlobalParameters - if !tea.BoolValue(util.IsUnset(globalParams.Queries)) { - globalQueries = globalParams.Queries - } - - if !tea.BoolValue(util.IsUnset(globalParams.Headers)) { - globalHeaders = globalParams.Headers - } - - } - - requestContext := &spi.InterceptorContextRequest{ - Headers: tea.Merge(globalHeaders, - request.Headers, - headers), - Query: tea.Merge(globalQueries, - request.Query), - Body: request.Body, - Stream: request.Stream, - HostMap: request.HostMap, - Pathname: params.Pathname, - ProductId: client.ProductId, - Action: params.Action, - Version: params.Version, - Protocol: util.DefaultString(client.Protocol, params.Protocol), - Method: util.DefaultString(client.Method, params.Method), - AuthType: params.AuthType, - BodyType: params.BodyType, - ReqBodyType: params.ReqBodyType, - Style: params.Style, - Credential: client.Credential, - SignatureVersion: client.SignatureVersion, - SignatureAlgorithm: client.SignatureAlgorithm, - UserAgent: client.GetUserAgent(), - } - configurationContext := &spi.InterceptorContextConfiguration{ - RegionId: client.RegionId, - Endpoint: util.DefaultString(request.EndpointOverride, client.Endpoint), - EndpointRule: client.EndpointRule, - EndpointMap: client.EndpointMap, - EndpointType: client.EndpointType, - Network: client.Network, - Suffix: client.Suffix, - } - interceptorContext := &spi.InterceptorContext{ - Request: requestContext, - Configuration: configurationContext, - } - attributeMap := &spi.AttributeMap{} - // 1. spi.modifyConfiguration(context: SPI.InterceptorContext, attributeMap: SPI.AttributeMap); - _err = client.Spi.ModifyConfiguration(interceptorContext, attributeMap) - if _err != nil { - return _result, _err - } - // 2. spi.modifyRequest(context: SPI.InterceptorContext, attributeMap: SPI.AttributeMap); - _err = client.Spi.ModifyRequest(interceptorContext, attributeMap) - if _err != nil { - return _result, _err - } - request_.Protocol = interceptorContext.Request.Protocol - request_.Method = interceptorContext.Request.Method - request_.Pathname = interceptorContext.Request.Pathname - request_.Query = interceptorContext.Request.Query - request_.Body = interceptorContext.Request.Stream - request_.Headers = interceptorContext.Request.Headers - response_, _err := tea.DoRequest(request_, _runtime) - if _err != nil { - return _result, _err - } - responseContext := &spi.InterceptorContextResponse{ - StatusCode: response_.StatusCode, - Headers: response_.Headers, - Body: response_.Body, - } - interceptorContext.Response = responseContext - // 3. spi.modifyResponse(context: SPI.InterceptorContext, attributeMap: SPI.AttributeMap); - _err = client.Spi.ModifyResponse(interceptorContext, attributeMap) - if _err != nil { - return _result, _err - } - _result = make(map[string]interface{}) - _err = tea.Convert(map[string]interface{}{ - "headers": interceptorContext.Response.Headers, - "statusCode": tea.IntValue(interceptorContext.Response.StatusCode), - "body": interceptorContext.Response.DeserializedBody, - }, &_result) - return _result, _err - }() - if !tea.BoolValue(tea.Retryable(_err)) { - break - } - } - - return _resp, _err -} - -func (client *Client) CallApi(params *Params, request *OpenApiRequest, runtime *util.RuntimeOptions) (_result map[string]interface{}, _err error) { - if tea.BoolValue(util.IsUnset(params)) { - _err = tea.NewSDKError(map[string]interface{}{ - "code": "ParameterMissing", - "message": "'params' can not be unset", - }) - return _result, _err - } - - if tea.BoolValue(util.IsUnset(client.SignatureAlgorithm)) || !tea.BoolValue(util.EqualString(client.SignatureAlgorithm, tea.String("v2"))) { - _result = make(map[string]interface{}) - _body, _err := client.DoRequest(params, request, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err - } else if tea.BoolValue(util.EqualString(params.Style, tea.String("ROA"))) && tea.BoolValue(util.EqualString(params.ReqBodyType, tea.String("json"))) { - _result = make(map[string]interface{}) - _body, _err := client.DoROARequest(params.Action, params.Version, params.Protocol, params.Method, params.AuthType, params.Pathname, params.BodyType, request, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err - } else if tea.BoolValue(util.EqualString(params.Style, tea.String("ROA"))) { - _result = make(map[string]interface{}) - _body, _err := client.DoROARequestWithForm(params.Action, params.Version, params.Protocol, params.Method, params.AuthType, params.Pathname, params.BodyType, request, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err - } else { - _result = make(map[string]interface{}) - _body, _err := client.DoRPCRequest(params.Action, params.Version, params.Protocol, params.Method, params.AuthType, params.BodyType, request, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err - } - -} - -/** - * Get user agent - * @return user agent - */ -func (client *Client) GetUserAgent() (_result *string) { - userAgent := util.GetUserAgent(client.UserAgent) - _result = userAgent - return _result -} - -/** - * Get accesskey id by using credential - * @return accesskey id - */ -func (client *Client) GetAccessKeyId() (_result *string, _err error) { - if tea.BoolValue(util.IsUnset(client.Credential)) { - _result = tea.String("") - return _result, _err - } - - accessKeyId, _err := client.Credential.GetAccessKeyId() - if _err != nil { - return _result, _err - } - - _result = accessKeyId - return _result, _err -} - -/** - * Get accesskey secret by using credential - * @return accesskey secret - */ -func (client *Client) GetAccessKeySecret() (_result *string, _err error) { - if tea.BoolValue(util.IsUnset(client.Credential)) { - _result = tea.String("") - return _result, _err - } - - secret, _err := client.Credential.GetAccessKeySecret() - if _err != nil { - return _result, _err - } - - _result = secret - return _result, _err -} - -/** - * Get security token by using credential - * @return security token - */ -func (client *Client) GetSecurityToken() (_result *string, _err error) { - if tea.BoolValue(util.IsUnset(client.Credential)) { - _result = tea.String("") - return _result, _err - } - - token, _err := client.Credential.GetSecurityToken() - if _err != nil { - return _result, _err - } - - _result = token - return _result, _err -} - -/** - * Get bearer token by credential - * @return bearer token - */ -func (client *Client) GetBearerToken() (_result *string, _err error) { - if tea.BoolValue(util.IsUnset(client.Credential)) { - _result = tea.String("") - return _result, _err - } - - token := client.Credential.GetBearerToken() - _result = token - return _result, _err -} - -/** - * Get credential type by credential - * @return credential type e.g. access_key - */ -func (client *Client) GetType() (_result *string, _err error) { - if tea.BoolValue(util.IsUnset(client.Credential)) { - _result = tea.String("") - return _result, _err - } - - authType := client.Credential.GetType() - _result = authType - return _result, _err -} - -/** - * If inputValue is not null, return it or return defaultValue - * @param inputValue users input value - * @param defaultValue default value - * @return the final result - */ -func DefaultAny(inputValue interface{}, defaultValue interface{}) (_result interface{}) { - if tea.BoolValue(util.IsUnset(inputValue)) { - _result = defaultValue - return _result - } - - _result = inputValue - return _result -} - -/** - * If the endpointRule and config.endpoint are empty, throw error - * @param config config contains the necessary information to create a client - */ -func (client *Client) CheckConfig(config *Config) (_err error) { - if tea.BoolValue(util.Empty(client.EndpointRule)) && tea.BoolValue(util.Empty(config.Endpoint)) { - _err = tea.NewSDKError(map[string]interface{}{ - "code": "ParameterMissing", - "message": "'config.endpoint' can not be empty", - }) - return _err - } - - return _err -} - -/** - * set gateway client - * @param spi. - */ -func (client *Client) SetGatewayClient(spi spi.ClientInterface) (_err error) { - client.Spi = spi - return _err -} - -/** - * set RPC header for debug - * @param headers headers for debug, this header can be used only once. - */ -func (client *Client) SetRpcHeaders(headers map[string]*string) (_err error) { - client.Headers = headers - return _err -} - -/** - * get RPC header for debug - */ -func (client *Client) GetRpcHeaders() (_result map[string]*string, _err error) { - headers := client.Headers - client.Headers = nil - _result = headers - return _result, _err -} diff --git a/vendor/github.com/alibabacloud-go/dingtalk/LICENSE b/vendor/github.com/alibabacloud-go/dingtalk/LICENSE deleted file mode 100644 index 0c44dcefe3..0000000000 --- a/vendor/github.com/alibabacloud-go/dingtalk/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/alibabacloud-go/dingtalk/oauth2_1_0/client.go b/vendor/github.com/alibabacloud-go/dingtalk/oauth2_1_0/client.go deleted file mode 100644 index 371333e7b4..0000000000 --- a/vendor/github.com/alibabacloud-go/dingtalk/oauth2_1_0/client.go +++ /dev/null @@ -1,1357 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -/** - * - */ -package oauth2_1_0 - -import ( - openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" - openapiutil "github.com/alibabacloud-go/openapi-util/service" - util "github.com/alibabacloud-go/tea-utils/v2/service" - "github.com/alibabacloud-go/tea/tea" -) - -type CreateJsapiTicketHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s CreateJsapiTicketHeaders) String() string { - return tea.Prettify(s) -} - -func (s CreateJsapiTicketHeaders) GoString() string { - return s.String() -} - -func (s *CreateJsapiTicketHeaders) SetCommonHeaders(v map[string]*string) *CreateJsapiTicketHeaders { - s.CommonHeaders = v - return s -} - -func (s *CreateJsapiTicketHeaders) SetXAcsDingtalkAccessToken(v string) *CreateJsapiTicketHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type CreateJsapiTicketResponseBody struct { - // 超时时间 - ExpireIn *int64 `json:"expireIn,omitempty" xml:"expireIn,omitempty"` - // jsapi ticket - JsapiTicket *string `json:"jsapiTicket,omitempty" xml:"jsapiTicket,omitempty"` -} - -func (s CreateJsapiTicketResponseBody) String() string { - return tea.Prettify(s) -} - -func (s CreateJsapiTicketResponseBody) GoString() string { - return s.String() -} - -func (s *CreateJsapiTicketResponseBody) SetExpireIn(v int64) *CreateJsapiTicketResponseBody { - s.ExpireIn = &v - return s -} - -func (s *CreateJsapiTicketResponseBody) SetJsapiTicket(v string) *CreateJsapiTicketResponseBody { - s.JsapiTicket = &v - return s -} - -type CreateJsapiTicketResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *CreateJsapiTicketResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s CreateJsapiTicketResponse) String() string { - return tea.Prettify(s) -} - -func (s CreateJsapiTicketResponse) GoString() string { - return s.String() -} - -func (s *CreateJsapiTicketResponse) SetHeaders(v map[string]*string) *CreateJsapiTicketResponse { - s.Headers = v - return s -} - -func (s *CreateJsapiTicketResponse) SetBody(v *CreateJsapiTicketResponseBody) *CreateJsapiTicketResponse { - s.Body = v - return s -} - -type GetAccessTokenRequest struct { - // 应用id - AppKey *string `json:"appKey,omitempty" xml:"appKey,omitempty"` - // 应用密码 - AppSecret *string `json:"appSecret,omitempty" xml:"appSecret,omitempty"` -} - -func (s GetAccessTokenRequest) String() string { - return tea.Prettify(s) -} - -func (s GetAccessTokenRequest) GoString() string { - return s.String() -} - -func (s *GetAccessTokenRequest) SetAppKey(v string) *GetAccessTokenRequest { - s.AppKey = &v - return s -} - -func (s *GetAccessTokenRequest) SetAppSecret(v string) *GetAccessTokenRequest { - s.AppSecret = &v - return s -} - -type GetAccessTokenResponseBody struct { - // accessToken - AccessToken *string `json:"accessToken,omitempty" xml:"accessToken,omitempty"` - // 超时时间 - ExpireIn *int64 `json:"expireIn,omitempty" xml:"expireIn,omitempty"` -} - -func (s GetAccessTokenResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetAccessTokenResponseBody) GoString() string { - return s.String() -} - -func (s *GetAccessTokenResponseBody) SetAccessToken(v string) *GetAccessTokenResponseBody { - s.AccessToken = &v - return s -} - -func (s *GetAccessTokenResponseBody) SetExpireIn(v int64) *GetAccessTokenResponseBody { - s.ExpireIn = &v - return s -} - -type GetAccessTokenResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetAccessTokenResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetAccessTokenResponse) String() string { - return tea.Prettify(s) -} - -func (s GetAccessTokenResponse) GoString() string { - return s.String() -} - -func (s *GetAccessTokenResponse) SetHeaders(v map[string]*string) *GetAccessTokenResponse { - s.Headers = v - return s -} - -func (s *GetAccessTokenResponse) SetBody(v *GetAccessTokenResponseBody) *GetAccessTokenResponse { - s.Body = v - return s -} - -type GetAuthInfoHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetAuthInfoHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoHeaders) GoString() string { - return s.String() -} - -func (s *GetAuthInfoHeaders) SetCommonHeaders(v map[string]*string) *GetAuthInfoHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetAuthInfoHeaders) SetXAcsDingtalkAccessToken(v string) *GetAuthInfoHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetAuthInfoRequest struct { - AuthCorpId *string `json:"authCorpId,omitempty" xml:"authCorpId,omitempty"` -} - -func (s GetAuthInfoRequest) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoRequest) GoString() string { - return s.String() -} - -func (s *GetAuthInfoRequest) SetAuthCorpId(v string) *GetAuthInfoRequest { - s.AuthCorpId = &v - return s -} - -type GetAuthInfoResponseBody struct { - // 授权应用信息 - AuthAppInfo *GetAuthInfoResponseBodyAuthAppInfo `json:"authAppInfo,omitempty" xml:"authAppInfo,omitempty" type:"Struct"` - // 应用企业信息 - AuthCorpInfo *GetAuthInfoResponseBodyAuthCorpInfo `json:"authCorpInfo,omitempty" xml:"authCorpInfo,omitempty" type:"Struct"` - // 授权用户信息 - AuthUserInfo *GetAuthInfoResponseBodyAuthUserInfo `json:"authUserInfo,omitempty" xml:"authUserInfo,omitempty" type:"Struct"` -} - -func (s GetAuthInfoResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoResponseBody) GoString() string { - return s.String() -} - -func (s *GetAuthInfoResponseBody) SetAuthAppInfo(v *GetAuthInfoResponseBodyAuthAppInfo) *GetAuthInfoResponseBody { - s.AuthAppInfo = v - return s -} - -func (s *GetAuthInfoResponseBody) SetAuthCorpInfo(v *GetAuthInfoResponseBodyAuthCorpInfo) *GetAuthInfoResponseBody { - s.AuthCorpInfo = v - return s -} - -func (s *GetAuthInfoResponseBody) SetAuthUserInfo(v *GetAuthInfoResponseBodyAuthUserInfo) *GetAuthInfoResponseBody { - s.AuthUserInfo = v - return s -} - -type GetAuthInfoResponseBodyAuthAppInfo struct { - AgentList []*GetAuthInfoResponseBodyAuthAppInfoAgentList `json:"agentList,omitempty" xml:"agentList,omitempty" type:"Repeated"` -} - -func (s GetAuthInfoResponseBodyAuthAppInfo) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoResponseBodyAuthAppInfo) GoString() string { - return s.String() -} - -func (s *GetAuthInfoResponseBodyAuthAppInfo) SetAgentList(v []*GetAuthInfoResponseBodyAuthAppInfoAgentList) *GetAuthInfoResponseBodyAuthAppInfo { - s.AgentList = v - return s -} - -type GetAuthInfoResponseBodyAuthAppInfoAgentList struct { - // 对此微应用有管理权限的管理员列表 - AdminList []*string `json:"adminList,omitempty" xml:"adminList,omitempty" type:"Repeated"` - // 应用id - AgentId *int64 `json:"agentId,omitempty" xml:"agentId,omitempty"` - // 应用名称 - AgentName *string `json:"agentName,omitempty" xml:"agentName,omitempty"` - // 三方应用id - AppId *int64 `json:"appId,omitempty" xml:"appId,omitempty"` -} - -func (s GetAuthInfoResponseBodyAuthAppInfoAgentList) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoResponseBodyAuthAppInfoAgentList) GoString() string { - return s.String() -} - -func (s *GetAuthInfoResponseBodyAuthAppInfoAgentList) SetAdminList(v []*string) *GetAuthInfoResponseBodyAuthAppInfoAgentList { - s.AdminList = v - return s -} - -func (s *GetAuthInfoResponseBodyAuthAppInfoAgentList) SetAgentId(v int64) *GetAuthInfoResponseBodyAuthAppInfoAgentList { - s.AgentId = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthAppInfoAgentList) SetAgentName(v string) *GetAuthInfoResponseBodyAuthAppInfoAgentList { - s.AgentName = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthAppInfoAgentList) SetAppId(v int64) *GetAuthInfoResponseBodyAuthAppInfoAgentList { - s.AppId = &v - return s -} - -type GetAuthInfoResponseBodyAuthCorpInfo struct { - // 渠道码。 - AuthChannel *string `json:"authChannel,omitempty" xml:"authChannel,omitempty"` - // 渠道类型。 为了避免渠道码重复,可与渠道码共同确认渠道。可能为空,非空时当前只有满天星类型,值为STAR_ACTIVITY。 - AuthChannelType *string `json:"authChannelType,omitempty" xml:"authChannelType,omitempty"` - // 企业认证等级: 0:未认证 1:高级认证 2:中级认证 3:初级认证 - AuthLevel *int64 `json:"authLevel,omitempty" xml:"authLevel,omitempty"` - // 企业logo。 - CorpLogoUrl *string `json:"corpLogoUrl,omitempty" xml:"corpLogoUrl,omitempty"` - // 授权方企业名称。 - CorpName *string `json:"corpName,omitempty" xml:"corpName,omitempty"` - // 企业所属行业。 - Industry *string `json:"industry,omitempty" xml:"industry,omitempty"` - // 邀请码,只有自己邀请的企业才会返回邀请码,可用该邀请码统计不同渠道的拉新,否则值为空字符串。 - InviteCode *string `json:"inviteCode,omitempty" xml:"inviteCode,omitempty"` - // 企业邀请链接。 - InviteUrl *string `json:"inviteUrl,omitempty" xml:"inviteUrl,omitempty"` - // 序列号。 - LicenseCode *string `json:"licenseCode,omitempty" xml:"licenseCode,omitempty"` -} - -func (s GetAuthInfoResponseBodyAuthCorpInfo) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoResponseBodyAuthCorpInfo) GoString() string { - return s.String() -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetAuthChannel(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.AuthChannel = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetAuthChannelType(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.AuthChannelType = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetAuthLevel(v int64) *GetAuthInfoResponseBodyAuthCorpInfo { - s.AuthLevel = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetCorpLogoUrl(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.CorpLogoUrl = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetCorpName(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.CorpName = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetIndustry(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.Industry = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetInviteCode(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.InviteCode = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetInviteUrl(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.InviteUrl = &v - return s -} - -func (s *GetAuthInfoResponseBodyAuthCorpInfo) SetLicenseCode(v string) *GetAuthInfoResponseBodyAuthCorpInfo { - s.LicenseCode = &v - return s -} - -type GetAuthInfoResponseBodyAuthUserInfo struct { - // 授权管理员id - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetAuthInfoResponseBodyAuthUserInfo) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoResponseBodyAuthUserInfo) GoString() string { - return s.String() -} - -func (s *GetAuthInfoResponseBodyAuthUserInfo) SetUserId(v string) *GetAuthInfoResponseBodyAuthUserInfo { - s.UserId = &v - return s -} - -type GetAuthInfoResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetAuthInfoResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetAuthInfoResponse) String() string { - return tea.Prettify(s) -} - -func (s GetAuthInfoResponse) GoString() string { - return s.String() -} - -func (s *GetAuthInfoResponse) SetHeaders(v map[string]*string) *GetAuthInfoResponse { - s.Headers = v - return s -} - -func (s *GetAuthInfoResponse) SetBody(v *GetAuthInfoResponseBody) *GetAuthInfoResponse { - s.Body = v - return s -} - -type GetCorpAccessTokenRequest struct { - // OAuth 2.0 临时授权码 - AuthCorpId *string `json:"authCorpId,omitempty" xml:"authCorpId,omitempty"` - // 应用id - SuiteKey *string `json:"suiteKey,omitempty" xml:"suiteKey,omitempty"` - // 应用密码 - SuiteSecret *string `json:"suiteSecret,omitempty" xml:"suiteSecret,omitempty"` - // suiteTicket - SuiteTicket *string `json:"suiteTicket,omitempty" xml:"suiteTicket,omitempty"` -} - -func (s GetCorpAccessTokenRequest) String() string { - return tea.Prettify(s) -} - -func (s GetCorpAccessTokenRequest) GoString() string { - return s.String() -} - -func (s *GetCorpAccessTokenRequest) SetAuthCorpId(v string) *GetCorpAccessTokenRequest { - s.AuthCorpId = &v - return s -} - -func (s *GetCorpAccessTokenRequest) SetSuiteKey(v string) *GetCorpAccessTokenRequest { - s.SuiteKey = &v - return s -} - -func (s *GetCorpAccessTokenRequest) SetSuiteSecret(v string) *GetCorpAccessTokenRequest { - s.SuiteSecret = &v - return s -} - -func (s *GetCorpAccessTokenRequest) SetSuiteTicket(v string) *GetCorpAccessTokenRequest { - s.SuiteTicket = &v - return s -} - -type GetCorpAccessTokenResponseBody struct { - // accessToken - AccessToken *string `json:"accessToken,omitempty" xml:"accessToken,omitempty"` - // 超时时间 - ExpireIn *int64 `json:"expireIn,omitempty" xml:"expireIn,omitempty"` -} - -func (s GetCorpAccessTokenResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetCorpAccessTokenResponseBody) GoString() string { - return s.String() -} - -func (s *GetCorpAccessTokenResponseBody) SetAccessToken(v string) *GetCorpAccessTokenResponseBody { - s.AccessToken = &v - return s -} - -func (s *GetCorpAccessTokenResponseBody) SetExpireIn(v int64) *GetCorpAccessTokenResponseBody { - s.ExpireIn = &v - return s -} - -type GetCorpAccessTokenResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetCorpAccessTokenResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetCorpAccessTokenResponse) String() string { - return tea.Prettify(s) -} - -func (s GetCorpAccessTokenResponse) GoString() string { - return s.String() -} - -func (s *GetCorpAccessTokenResponse) SetHeaders(v map[string]*string) *GetCorpAccessTokenResponse { - s.Headers = v - return s -} - -func (s *GetCorpAccessTokenResponse) SetBody(v *GetCorpAccessTokenResponseBody) *GetCorpAccessTokenResponse { - s.Body = v - return s -} - -type GetPersonalAuthRuleHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetPersonalAuthRuleHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetPersonalAuthRuleHeaders) GoString() string { - return s.String() -} - -func (s *GetPersonalAuthRuleHeaders) SetCommonHeaders(v map[string]*string) *GetPersonalAuthRuleHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetPersonalAuthRuleHeaders) SetXAcsDingtalkAccessToken(v string) *GetPersonalAuthRuleHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetPersonalAuthRuleResponseBody struct { - // list - Result []*GetPersonalAuthRuleResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s GetPersonalAuthRuleResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetPersonalAuthRuleResponseBody) GoString() string { - return s.String() -} - -func (s *GetPersonalAuthRuleResponseBody) SetResult(v []*GetPersonalAuthRuleResponseBodyResult) *GetPersonalAuthRuleResponseBody { - s.Result = v - return s -} - -type GetPersonalAuthRuleResponseBodyResult struct { - // authItems - AuthItems []*string `json:"authItems,omitempty" xml:"authItems,omitempty" type:"Repeated"` - // resource - Resource *string `json:"resource,omitempty" xml:"resource,omitempty"` -} - -func (s GetPersonalAuthRuleResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetPersonalAuthRuleResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetPersonalAuthRuleResponseBodyResult) SetAuthItems(v []*string) *GetPersonalAuthRuleResponseBodyResult { - s.AuthItems = v - return s -} - -func (s *GetPersonalAuthRuleResponseBodyResult) SetResource(v string) *GetPersonalAuthRuleResponseBodyResult { - s.Resource = &v - return s -} - -type GetPersonalAuthRuleResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetPersonalAuthRuleResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetPersonalAuthRuleResponse) String() string { - return tea.Prettify(s) -} - -func (s GetPersonalAuthRuleResponse) GoString() string { - return s.String() -} - -func (s *GetPersonalAuthRuleResponse) SetHeaders(v map[string]*string) *GetPersonalAuthRuleResponse { - s.Headers = v - return s -} - -func (s *GetPersonalAuthRuleResponse) SetBody(v *GetPersonalAuthRuleResponseBody) *GetPersonalAuthRuleResponse { - s.Body = v - return s -} - -type GetSsoAccessTokenRequest struct { - // 企业id - Corpid *string `json:"corpid,omitempty" xml:"corpid,omitempty"` - // sso密码 - SsoSecret *string `json:"ssoSecret,omitempty" xml:"ssoSecret,omitempty"` -} - -func (s GetSsoAccessTokenRequest) String() string { - return tea.Prettify(s) -} - -func (s GetSsoAccessTokenRequest) GoString() string { - return s.String() -} - -func (s *GetSsoAccessTokenRequest) SetCorpid(v string) *GetSsoAccessTokenRequest { - s.Corpid = &v - return s -} - -func (s *GetSsoAccessTokenRequest) SetSsoSecret(v string) *GetSsoAccessTokenRequest { - s.SsoSecret = &v - return s -} - -type GetSsoAccessTokenResponseBody struct { - // accessToken - AccessToken *string `json:"accessToken,omitempty" xml:"accessToken,omitempty"` - // 超时时间 - ExpireIn *int64 `json:"expireIn,omitempty" xml:"expireIn,omitempty"` -} - -func (s GetSsoAccessTokenResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetSsoAccessTokenResponseBody) GoString() string { - return s.String() -} - -func (s *GetSsoAccessTokenResponseBody) SetAccessToken(v string) *GetSsoAccessTokenResponseBody { - s.AccessToken = &v - return s -} - -func (s *GetSsoAccessTokenResponseBody) SetExpireIn(v int64) *GetSsoAccessTokenResponseBody { - s.ExpireIn = &v - return s -} - -type GetSsoAccessTokenResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetSsoAccessTokenResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetSsoAccessTokenResponse) String() string { - return tea.Prettify(s) -} - -func (s GetSsoAccessTokenResponse) GoString() string { - return s.String() -} - -func (s *GetSsoAccessTokenResponse) SetHeaders(v map[string]*string) *GetSsoAccessTokenResponse { - s.Headers = v - return s -} - -func (s *GetSsoAccessTokenResponse) SetBody(v *GetSsoAccessTokenResponseBody) *GetSsoAccessTokenResponse { - s.Body = v - return s -} - -type GetSsoUserInfoHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetSsoUserInfoHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetSsoUserInfoHeaders) GoString() string { - return s.String() -} - -func (s *GetSsoUserInfoHeaders) SetCommonHeaders(v map[string]*string) *GetSsoUserInfoHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetSsoUserInfoHeaders) SetXAcsDingtalkAccessToken(v string) *GetSsoUserInfoHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetSsoUserInfoRequest struct { - Code *string `json:"code,omitempty" xml:"code,omitempty"` -} - -func (s GetSsoUserInfoRequest) String() string { - return tea.Prettify(s) -} - -func (s GetSsoUserInfoRequest) GoString() string { - return s.String() -} - -func (s *GetSsoUserInfoRequest) SetCode(v string) *GetSsoUserInfoRequest { - s.Code = &v - return s -} - -type GetSsoUserInfoResponseBody struct { - // 用户头像链接 - Avatar *string `json:"avatar,omitempty" xml:"avatar,omitempty"` - // 微应用免登用户所在企业id - CorpId *string `json:"corpId,omitempty" xml:"corpId,omitempty"` - // 微应用免登用户所在企业名称 - CorpName *string `json:"corpName,omitempty" xml:"corpName,omitempty"` - // 用户邮箱 - Email *string `json:"email,omitempty" xml:"email,omitempty"` - // 是否为企业管理员 - IsAdmin *bool `json:"isAdmin,omitempty" xml:"isAdmin,omitempty"` - // 用户id - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` - // 用户名称 - UserName *string `json:"userName,omitempty" xml:"userName,omitempty"` -} - -func (s GetSsoUserInfoResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetSsoUserInfoResponseBody) GoString() string { - return s.String() -} - -func (s *GetSsoUserInfoResponseBody) SetAvatar(v string) *GetSsoUserInfoResponseBody { - s.Avatar = &v - return s -} - -func (s *GetSsoUserInfoResponseBody) SetCorpId(v string) *GetSsoUserInfoResponseBody { - s.CorpId = &v - return s -} - -func (s *GetSsoUserInfoResponseBody) SetCorpName(v string) *GetSsoUserInfoResponseBody { - s.CorpName = &v - return s -} - -func (s *GetSsoUserInfoResponseBody) SetEmail(v string) *GetSsoUserInfoResponseBody { - s.Email = &v - return s -} - -func (s *GetSsoUserInfoResponseBody) SetIsAdmin(v bool) *GetSsoUserInfoResponseBody { - s.IsAdmin = &v - return s -} - -func (s *GetSsoUserInfoResponseBody) SetUserId(v string) *GetSsoUserInfoResponseBody { - s.UserId = &v - return s -} - -func (s *GetSsoUserInfoResponseBody) SetUserName(v string) *GetSsoUserInfoResponseBody { - s.UserName = &v - return s -} - -type GetSsoUserInfoResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetSsoUserInfoResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetSsoUserInfoResponse) String() string { - return tea.Prettify(s) -} - -func (s GetSsoUserInfoResponse) GoString() string { - return s.String() -} - -func (s *GetSsoUserInfoResponse) SetHeaders(v map[string]*string) *GetSsoUserInfoResponse { - s.Headers = v - return s -} - -func (s *GetSsoUserInfoResponse) SetBody(v *GetSsoUserInfoResponseBody) *GetSsoUserInfoResponse { - s.Body = v - return s -} - -type GetSuiteAccessTokenRequest struct { - // 应用id - SuiteKey *string `json:"suiteKey,omitempty" xml:"suiteKey,omitempty"` - // 应用密码 - SuiteSecret *string `json:"suiteSecret,omitempty" xml:"suiteSecret,omitempty"` - // suiteTicket - SuiteTicket *string `json:"suiteTicket,omitempty" xml:"suiteTicket,omitempty"` -} - -func (s GetSuiteAccessTokenRequest) String() string { - return tea.Prettify(s) -} - -func (s GetSuiteAccessTokenRequest) GoString() string { - return s.String() -} - -func (s *GetSuiteAccessTokenRequest) SetSuiteKey(v string) *GetSuiteAccessTokenRequest { - s.SuiteKey = &v - return s -} - -func (s *GetSuiteAccessTokenRequest) SetSuiteSecret(v string) *GetSuiteAccessTokenRequest { - s.SuiteSecret = &v - return s -} - -func (s *GetSuiteAccessTokenRequest) SetSuiteTicket(v string) *GetSuiteAccessTokenRequest { - s.SuiteTicket = &v - return s -} - -type GetSuiteAccessTokenResponseBody struct { - // accessToken - AccessToken *string `json:"accessToken,omitempty" xml:"accessToken,omitempty"` - // 超时时间 - ExpireIn *int64 `json:"expireIn,omitempty" xml:"expireIn,omitempty"` -} - -func (s GetSuiteAccessTokenResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetSuiteAccessTokenResponseBody) GoString() string { - return s.String() -} - -func (s *GetSuiteAccessTokenResponseBody) SetAccessToken(v string) *GetSuiteAccessTokenResponseBody { - s.AccessToken = &v - return s -} - -func (s *GetSuiteAccessTokenResponseBody) SetExpireIn(v int64) *GetSuiteAccessTokenResponseBody { - s.ExpireIn = &v - return s -} - -type GetSuiteAccessTokenResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetSuiteAccessTokenResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetSuiteAccessTokenResponse) String() string { - return tea.Prettify(s) -} - -func (s GetSuiteAccessTokenResponse) GoString() string { - return s.String() -} - -func (s *GetSuiteAccessTokenResponse) SetHeaders(v map[string]*string) *GetSuiteAccessTokenResponse { - s.Headers = v - return s -} - -func (s *GetSuiteAccessTokenResponse) SetBody(v *GetSuiteAccessTokenResponseBody) *GetSuiteAccessTokenResponse { - s.Body = v - return s -} - -type GetUserTokenRequest struct { - // 应用id - ClientId *string `json:"clientId,omitempty" xml:"clientId,omitempty"` - // 应用密码 - ClientSecret *string `json:"clientSecret,omitempty" xml:"clientSecret,omitempty"` - // OAuth 2.0 临时授权码 - Code *string `json:"code,omitempty" xml:"code,omitempty"` - // 分为authorization_code和refresh_token。使用授权码换token,传authorization_code;使用刷新token换用户token,传refresh_token - GrantType *string `json:"grantType,omitempty" xml:"grantType,omitempty"` - // OAuth 2.0 刷新令牌 - RefreshToken *string `json:"refreshToken,omitempty" xml:"refreshToken,omitempty"` -} - -func (s GetUserTokenRequest) String() string { - return tea.Prettify(s) -} - -func (s GetUserTokenRequest) GoString() string { - return s.String() -} - -func (s *GetUserTokenRequest) SetClientId(v string) *GetUserTokenRequest { - s.ClientId = &v - return s -} - -func (s *GetUserTokenRequest) SetClientSecret(v string) *GetUserTokenRequest { - s.ClientSecret = &v - return s -} - -func (s *GetUserTokenRequest) SetCode(v string) *GetUserTokenRequest { - s.Code = &v - return s -} - -func (s *GetUserTokenRequest) SetGrantType(v string) *GetUserTokenRequest { - s.GrantType = &v - return s -} - -func (s *GetUserTokenRequest) SetRefreshToken(v string) *GetUserTokenRequest { - s.RefreshToken = &v - return s -} - -type GetUserTokenResponseBody struct { - // accessToken - AccessToken *string `json:"accessToken,omitempty" xml:"accessToken,omitempty"` - // 所选企业corpId - CorpId *string `json:"corpId,omitempty" xml:"corpId,omitempty"` - // 超时时间 - ExpireIn *int64 `json:"expireIn,omitempty" xml:"expireIn,omitempty"` - // refreshToken - RefreshToken *string `json:"refreshToken,omitempty" xml:"refreshToken,omitempty"` -} - -func (s GetUserTokenResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetUserTokenResponseBody) GoString() string { - return s.String() -} - -func (s *GetUserTokenResponseBody) SetAccessToken(v string) *GetUserTokenResponseBody { - s.AccessToken = &v - return s -} - -func (s *GetUserTokenResponseBody) SetCorpId(v string) *GetUserTokenResponseBody { - s.CorpId = &v - return s -} - -func (s *GetUserTokenResponseBody) SetExpireIn(v int64) *GetUserTokenResponseBody { - s.ExpireIn = &v - return s -} - -func (s *GetUserTokenResponseBody) SetRefreshToken(v string) *GetUserTokenResponseBody { - s.RefreshToken = &v - return s -} - -type GetUserTokenResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetUserTokenResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetUserTokenResponse) String() string { - return tea.Prettify(s) -} - -func (s GetUserTokenResponse) GoString() string { - return s.String() -} - -func (s *GetUserTokenResponse) SetHeaders(v map[string]*string) *GetUserTokenResponse { - s.Headers = v - return s -} - -func (s *GetUserTokenResponse) SetBody(v *GetUserTokenResponseBody) *GetUserTokenResponse { - s.Body = v - return s -} - -type Client struct { - openapi.Client -} - -func NewClient(config *openapi.Config) (*Client, error) { - client := new(Client) - err := client.Init(config) - return client, err -} - -func (client *Client) Init(config *openapi.Config) (_err error) { - _err = client.Client.Init(config) - if _err != nil { - return _err - } - client.EndpointRule = tea.String("") - if tea.BoolValue(util.Empty(client.Endpoint)) { - client.Endpoint = tea.String("api.dingtalk.com") - } - - return nil -} - -func (client *Client) CreateJsapiTicket() (_result *CreateJsapiTicketResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &CreateJsapiTicketHeaders{} - _result = &CreateJsapiTicketResponse{} - _body, _err := client.CreateJsapiTicketWithOptions(headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) CreateJsapiTicketWithOptions(headers *CreateJsapiTicketHeaders, runtime *util.RuntimeOptions) (_result *CreateJsapiTicketResponse, _err error) { - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - } - _result = &CreateJsapiTicketResponse{} - _body, _err := client.DoROARequest(tea.String("CreateJsapiTicket"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/oauth2/jsapiTickets"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetAccessToken(request *GetAccessTokenRequest) (_result *GetAccessTokenResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := make(map[string]*string) - _result = &GetAccessTokenResponse{} - _body, _err := client.GetAccessTokenWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetAccessTokenWithOptions(request *GetAccessTokenRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetAccessTokenResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AppKey)) { - body["appKey"] = request.AppKey - } - - if !tea.BoolValue(util.IsUnset(request.AppSecret)) { - body["appSecret"] = request.AppSecret - } - - req := &openapi.OpenApiRequest{ - Headers: headers, - Body: openapiutil.ParseToMap(body), - } - _result = &GetAccessTokenResponse{} - _body, _err := client.DoROARequest(tea.String("GetAccessToken"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/oauth2/accessToken"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetAuthInfo(request *GetAuthInfoRequest) (_result *GetAuthInfoResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetAuthInfoHeaders{} - _result = &GetAuthInfoResponse{} - _body, _err := client.GetAuthInfoWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetAuthInfoWithOptions(request *GetAuthInfoRequest, headers *GetAuthInfoHeaders, runtime *util.RuntimeOptions) (_result *GetAuthInfoResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AuthCorpId)) { - query["authCorpId"] = request.AuthCorpId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetAuthInfoResponse{} - _body, _err := client.DoROARequest(tea.String("GetAuthInfo"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/oauth2/apps/authInfo"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetCorpAccessToken(request *GetCorpAccessTokenRequest) (_result *GetCorpAccessTokenResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := make(map[string]*string) - _result = &GetCorpAccessTokenResponse{} - _body, _err := client.GetCorpAccessTokenWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetCorpAccessTokenWithOptions(request *GetCorpAccessTokenRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetCorpAccessTokenResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AuthCorpId)) { - body["authCorpId"] = request.AuthCorpId - } - - if !tea.BoolValue(util.IsUnset(request.SuiteKey)) { - body["suiteKey"] = request.SuiteKey - } - - if !tea.BoolValue(util.IsUnset(request.SuiteSecret)) { - body["suiteSecret"] = request.SuiteSecret - } - - if !tea.BoolValue(util.IsUnset(request.SuiteTicket)) { - body["suiteTicket"] = request.SuiteTicket - } - - req := &openapi.OpenApiRequest{ - Headers: headers, - Body: openapiutil.ParseToMap(body), - } - _result = &GetCorpAccessTokenResponse{} - _body, _err := client.DoROARequest(tea.String("GetCorpAccessToken"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/oauth2/corpAccessToken"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetPersonalAuthRule() (_result *GetPersonalAuthRuleResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetPersonalAuthRuleHeaders{} - _result = &GetPersonalAuthRuleResponse{} - _body, _err := client.GetPersonalAuthRuleWithOptions(headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetPersonalAuthRuleWithOptions(headers *GetPersonalAuthRuleHeaders, runtime *util.RuntimeOptions) (_result *GetPersonalAuthRuleResponse, _err error) { - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - } - _result = &GetPersonalAuthRuleResponse{} - _body, _err := client.DoROARequest(tea.String("GetPersonalAuthRule"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/oauth2/authRules/user"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetSsoAccessToken(request *GetSsoAccessTokenRequest) (_result *GetSsoAccessTokenResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := make(map[string]*string) - _result = &GetSsoAccessTokenResponse{} - _body, _err := client.GetSsoAccessTokenWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetSsoAccessTokenWithOptions(request *GetSsoAccessTokenRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetSsoAccessTokenResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Corpid)) { - body["corpid"] = request.Corpid - } - - if !tea.BoolValue(util.IsUnset(request.SsoSecret)) { - body["ssoSecret"] = request.SsoSecret - } - - req := &openapi.OpenApiRequest{ - Headers: headers, - Body: openapiutil.ParseToMap(body), - } - _result = &GetSsoAccessTokenResponse{} - _body, _err := client.DoROARequest(tea.String("GetSsoAccessToken"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/oauth2/ssoAccessToken"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetSsoUserInfo(request *GetSsoUserInfoRequest) (_result *GetSsoUserInfoResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetSsoUserInfoHeaders{} - _result = &GetSsoUserInfoResponse{} - _body, _err := client.GetSsoUserInfoWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetSsoUserInfoWithOptions(request *GetSsoUserInfoRequest, headers *GetSsoUserInfoHeaders, runtime *util.RuntimeOptions) (_result *GetSsoUserInfoResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Code)) { - query["code"] = request.Code - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetSsoUserInfoResponse{} - _body, _err := client.DoROARequest(tea.String("GetSsoUserInfo"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/oauth2/ssoUserInfo"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetSuiteAccessToken(request *GetSuiteAccessTokenRequest) (_result *GetSuiteAccessTokenResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := make(map[string]*string) - _result = &GetSuiteAccessTokenResponse{} - _body, _err := client.GetSuiteAccessTokenWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetSuiteAccessTokenWithOptions(request *GetSuiteAccessTokenRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetSuiteAccessTokenResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.SuiteKey)) { - body["suiteKey"] = request.SuiteKey - } - - if !tea.BoolValue(util.IsUnset(request.SuiteSecret)) { - body["suiteSecret"] = request.SuiteSecret - } - - if !tea.BoolValue(util.IsUnset(request.SuiteTicket)) { - body["suiteTicket"] = request.SuiteTicket - } - - req := &openapi.OpenApiRequest{ - Headers: headers, - Body: openapiutil.ParseToMap(body), - } - _result = &GetSuiteAccessTokenResponse{} - _body, _err := client.DoROARequest(tea.String("GetSuiteAccessToken"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/oauth2/suiteAccessToken"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetUserToken(request *GetUserTokenRequest) (_result *GetUserTokenResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := make(map[string]*string) - _result = &GetUserTokenResponse{} - _body, _err := client.GetUserTokenWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetUserTokenWithOptions(request *GetUserTokenRequest, headers map[string]*string, runtime *util.RuntimeOptions) (_result *GetUserTokenResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ClientId)) { - body["clientId"] = request.ClientId - } - - if !tea.BoolValue(util.IsUnset(request.ClientSecret)) { - body["clientSecret"] = request.ClientSecret - } - - if !tea.BoolValue(util.IsUnset(request.Code)) { - body["code"] = request.Code - } - - if !tea.BoolValue(util.IsUnset(request.GrantType)) { - body["grantType"] = request.GrantType - } - - if !tea.BoolValue(util.IsUnset(request.RefreshToken)) { - body["refreshToken"] = request.RefreshToken - } - - req := &openapi.OpenApiRequest{ - Headers: headers, - Body: openapiutil.ParseToMap(body), - } - _result = &GetUserTokenResponse{} - _body, _err := client.DoROARequest(tea.String("GetUserToken"), tea.String("oauth2_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/oauth2/userAccessToken"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} diff --git a/vendor/github.com/alibabacloud-go/dingtalk/workflow_1_0/client.go b/vendor/github.com/alibabacloud-go/dingtalk/workflow_1_0/client.go deleted file mode 100644 index e9a36f61e0..0000000000 --- a/vendor/github.com/alibabacloud-go/dingtalk/workflow_1_0/client.go +++ /dev/null @@ -1,10672 +0,0 @@ -// This file is auto-generated, don't edit it. Thanks. -/** - * - */ -package workflow_1_0 - -import ( - openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" - openapiutil "github.com/alibabacloud-go/openapi-util/service" - util "github.com/alibabacloud-go/tea-utils/v2/service" - "github.com/alibabacloud-go/tea/tea" -) - -type AvaliableTemplate struct { - // 表单名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 表单模板processCode - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s AvaliableTemplate) String() string { - return tea.Prettify(s) -} - -func (s AvaliableTemplate) GoString() string { - return s.String() -} - -func (s *AvaliableTemplate) SetName(v string) *AvaliableTemplate { - s.Name = &v - return s -} - -func (s *AvaliableTemplate) SetProcessCode(v string) *AvaliableTemplate { - s.ProcessCode = &v - return s -} - -type FormComponent struct { - // 子控件集合 - Children []*FormComponent `json:"children,omitempty" xml:"children,omitempty" type:"Repeated"` - // 控件类型 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - // 控件属性 - Props *FormComponentProps `json:"props,omitempty" xml:"props,omitempty"` -} - -func (s FormComponent) String() string { - return tea.Prettify(s) -} - -func (s FormComponent) GoString() string { - return s.String() -} - -func (s *FormComponent) SetChildren(v []*FormComponent) *FormComponent { - s.Children = v - return s -} - -func (s *FormComponent) SetComponentType(v string) *FormComponent { - s.ComponentType = &v - return s -} - -func (s *FormComponent) SetProps(v *FormComponentProps) *FormComponent { - s.Props = v - return s -} - -type FormComponentProps struct { - // 明细控件按钮显示文案 - ActionName *string `json:"actionName,omitempty" xml:"actionName,omitempty"` - // 地址控件模式city省市,district省市区,street省市区街道 - AddressModel *string `json:"addressModel,omitempty" xml:"addressModel,omitempty"` - // 文字提示控件显示方式:top|middle|bottom - Align *string `json:"align,omitempty" xml:"align,omitempty"` - // 套件中控件是否可设置为分条件字段 - AsyncCondition *bool `json:"asyncCondition,omitempty" xml:"asyncCondition,omitempty"` - // 关联审批单控件限定模板列表 - AvailableTemplates []*AvaliableTemplate `json:"availableTemplates,omitempty" xml:"availableTemplates,omitempty" type:"Repeated"` - // 业务别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 套件的业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 联系人控件是否支持多选,1多选,0单选 - Choice *string `json:"choice,omitempty" xml:"choice,omitempty"` - // 自定义控件渲染标识 - CommonBizType *string `json:"commonBizType,omitempty" xml:"commonBizType,omitempty"` - // 控件表单内唯一id - ComponentId *string `json:"componentId,omitempty" xml:"componentId,omitempty"` - // 说明文字控件内容 - Content *string `json:"content,omitempty" xml:"content,omitempty"` - // 关联数据源配置 - DataSource *FormDataSource `json:"dataSource,omitempty" xml:"dataSource,omitempty"` - // 是否不可编辑 - Disabled *bool `json:"disabled,omitempty" xml:"disabled,omitempty"` - // 是否自动计算时长 - Duration *bool `json:"duration,omitempty" xml:"duration,omitempty"` - // 时间格式 - Format *string `json:"format,omitempty" xml:"format,omitempty"` - // 公式 - Formula *string `json:"formula,omitempty" xml:"formula,omitempty"` - // 是否隐藏字段 - Invisible *bool `json:"invisible,omitempty" xml:"invisible,omitempty"` - // 控件标题 - Label *string `json:"label,omitempty" xml:"label,omitempty"` - // 评分控件上限 - Limit *int32 `json:"limit,omitempty" xml:"limit,omitempty"` - // 说明文字控件链接地址 - Link *string `json:"link,omitempty" xml:"link,omitempty"` - // 文本控件支持的最大长度 - MaxLength *int32 `json:"maxLength,omitempty" xml:"maxLength,omitempty"` - // 电话控件支持的类型 - Mode *string `json:"mode,omitempty" xml:"mode,omitempty"` - // 部门控件是否可多选 - Multiple *bool `json:"multiple,omitempty" xml:"multiple,omitempty"` - // 单选多选控件选项列表 - Options []*SelectOption `json:"options,omitempty" xml:"options,omitempty" type:"Repeated"` - // 输入提示 - Placeholder *string `json:"placeholder,omitempty" xml:"placeholder,omitempty"` - // 字段是否可打印,1打印,0不打印,默认打印 - Print *string `json:"print,omitempty" xml:"print,omitempty"` - // 是否必填 - Required *bool `json:"required,omitempty" xml:"required,omitempty"` - // 明细控件数据汇总统计 - StatField []*FormComponentPropsStatField `json:"statField,omitempty" xml:"statField,omitempty" type:"Repeated"` - // 明细填写方式,table(表格)、list(列表) - TableViewMode *string `json:"tableViewMode,omitempty" xml:"tableViewMode,omitempty"` - // 时间单位(天、小时) - Unit *string `json:"unit,omitempty" xml:"unit,omitempty"` - // 金额控件是否需要大写,1不需要大写,其他需要大写 - Upper *string `json:"upper,omitempty" xml:"upper,omitempty"` - // 明细打印方式false横向,true纵向 - VerticalPrint *bool `json:"verticalPrint,omitempty" xml:"verticalPrint,omitempty"` -} - -func (s FormComponentProps) String() string { - return tea.Prettify(s) -} - -func (s FormComponentProps) GoString() string { - return s.String() -} - -func (s *FormComponentProps) SetActionName(v string) *FormComponentProps { - s.ActionName = &v - return s -} - -func (s *FormComponentProps) SetAddressModel(v string) *FormComponentProps { - s.AddressModel = &v - return s -} - -func (s *FormComponentProps) SetAlign(v string) *FormComponentProps { - s.Align = &v - return s -} - -func (s *FormComponentProps) SetAsyncCondition(v bool) *FormComponentProps { - s.AsyncCondition = &v - return s -} - -func (s *FormComponentProps) SetAvailableTemplates(v []*AvaliableTemplate) *FormComponentProps { - s.AvailableTemplates = v - return s -} - -func (s *FormComponentProps) SetBizAlias(v string) *FormComponentProps { - s.BizAlias = &v - return s -} - -func (s *FormComponentProps) SetBizType(v string) *FormComponentProps { - s.BizType = &v - return s -} - -func (s *FormComponentProps) SetChoice(v string) *FormComponentProps { - s.Choice = &v - return s -} - -func (s *FormComponentProps) SetCommonBizType(v string) *FormComponentProps { - s.CommonBizType = &v - return s -} - -func (s *FormComponentProps) SetComponentId(v string) *FormComponentProps { - s.ComponentId = &v - return s -} - -func (s *FormComponentProps) SetContent(v string) *FormComponentProps { - s.Content = &v - return s -} - -func (s *FormComponentProps) SetDataSource(v *FormDataSource) *FormComponentProps { - s.DataSource = v - return s -} - -func (s *FormComponentProps) SetDisabled(v bool) *FormComponentProps { - s.Disabled = &v - return s -} - -func (s *FormComponentProps) SetDuration(v bool) *FormComponentProps { - s.Duration = &v - return s -} - -func (s *FormComponentProps) SetFormat(v string) *FormComponentProps { - s.Format = &v - return s -} - -func (s *FormComponentProps) SetFormula(v string) *FormComponentProps { - s.Formula = &v - return s -} - -func (s *FormComponentProps) SetInvisible(v bool) *FormComponentProps { - s.Invisible = &v - return s -} - -func (s *FormComponentProps) SetLabel(v string) *FormComponentProps { - s.Label = &v - return s -} - -func (s *FormComponentProps) SetLimit(v int32) *FormComponentProps { - s.Limit = &v - return s -} - -func (s *FormComponentProps) SetLink(v string) *FormComponentProps { - s.Link = &v - return s -} - -func (s *FormComponentProps) SetMaxLength(v int32) *FormComponentProps { - s.MaxLength = &v - return s -} - -func (s *FormComponentProps) SetMode(v string) *FormComponentProps { - s.Mode = &v - return s -} - -func (s *FormComponentProps) SetMultiple(v bool) *FormComponentProps { - s.Multiple = &v - return s -} - -func (s *FormComponentProps) SetOptions(v []*SelectOption) *FormComponentProps { - s.Options = v - return s -} - -func (s *FormComponentProps) SetPlaceholder(v string) *FormComponentProps { - s.Placeholder = &v - return s -} - -func (s *FormComponentProps) SetPrint(v string) *FormComponentProps { - s.Print = &v - return s -} - -func (s *FormComponentProps) SetRequired(v bool) *FormComponentProps { - s.Required = &v - return s -} - -func (s *FormComponentProps) SetStatField(v []*FormComponentPropsStatField) *FormComponentProps { - s.StatField = v - return s -} - -func (s *FormComponentProps) SetTableViewMode(v string) *FormComponentProps { - s.TableViewMode = &v - return s -} - -func (s *FormComponentProps) SetUnit(v string) *FormComponentProps { - s.Unit = &v - return s -} - -func (s *FormComponentProps) SetUpper(v string) *FormComponentProps { - s.Upper = &v - return s -} - -func (s *FormComponentProps) SetVerticalPrint(v bool) *FormComponentProps { - s.VerticalPrint = &v - return s -} - -type FormComponentPropsStatField struct { - // 需要统计的明细控件内子控件id - ComponentId *string `json:"componentId,omitempty" xml:"componentId,omitempty"` - // 子控件标题 - Label *string `json:"label,omitempty" xml:"label,omitempty"` - // 金额控件是否需要大写,1不需要大写,其他需要大写 - Upper *string `json:"upper,omitempty" xml:"upper,omitempty"` -} - -func (s FormComponentPropsStatField) String() string { - return tea.Prettify(s) -} - -func (s FormComponentPropsStatField) GoString() string { - return s.String() -} - -func (s *FormComponentPropsStatField) SetComponentId(v string) *FormComponentPropsStatField { - s.ComponentId = &v - return s -} - -func (s *FormComponentPropsStatField) SetLabel(v string) *FormComponentPropsStatField { - s.Label = &v - return s -} - -func (s *FormComponentPropsStatField) SetUpper(v string) *FormComponentPropsStatField { - s.Upper = &v - return s -} - -type FormDataSource struct { - // 关联表单信息 - Target *FormDataSourceTarget `json:"target,omitempty" xml:"target,omitempty" type:"Struct"` - // 关联类型,form关联表单 - Type *string `json:"type,omitempty" xml:"type,omitempty"` -} - -func (s FormDataSource) String() string { - return tea.Prettify(s) -} - -func (s FormDataSource) GoString() string { - return s.String() -} - -func (s *FormDataSource) SetTarget(v *FormDataSourceTarget) *FormDataSource { - s.Target = v - return s -} - -func (s *FormDataSource) SetType(v string) *FormDataSource { - s.Type = &v - return s -} - -type FormDataSourceTarget struct { - // 表单类型,0流程表单 - AppType *int32 `json:"appType,omitempty" xml:"appType,omitempty"` - // 应用appUuid - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 关联表单业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 关联表单的formCode - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` -} - -func (s FormDataSourceTarget) String() string { - return tea.Prettify(s) -} - -func (s FormDataSourceTarget) GoString() string { - return s.String() -} - -func (s *FormDataSourceTarget) SetAppType(v int32) *FormDataSourceTarget { - s.AppType = &v - return s -} - -func (s *FormDataSourceTarget) SetAppUuid(v string) *FormDataSourceTarget { - s.AppUuid = &v - return s -} - -func (s *FormDataSourceTarget) SetBizType(v string) *FormDataSourceTarget { - s.BizType = &v - return s -} - -func (s *FormDataSourceTarget) SetFormCode(v string) *FormDataSourceTarget { - s.FormCode = &v - return s -} - -type SelectOption struct { - // 每一个选项的唯一键 - Key *string `json:"key,omitempty" xml:"key,omitempty"` - // 每一个选项的值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s SelectOption) String() string { - return tea.Prettify(s) -} - -func (s SelectOption) GoString() string { - return s.String() -} - -func (s *SelectOption) SetKey(v string) *SelectOption { - s.Key = &v - return s -} - -func (s *SelectOption) SetValue(v string) *SelectOption { - s.Value = &v - return s -} - -type AddApproveDentryAuthHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s AddApproveDentryAuthHeaders) String() string { - return tea.Prettify(s) -} - -func (s AddApproveDentryAuthHeaders) GoString() string { - return s.String() -} - -func (s *AddApproveDentryAuthHeaders) SetCommonHeaders(v map[string]*string) *AddApproveDentryAuthHeaders { - s.CommonHeaders = v - return s -} - -func (s *AddApproveDentryAuthHeaders) SetXAcsDingtalkAccessToken(v string) *AddApproveDentryAuthHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type AddApproveDentryAuthRequest struct { - // 授权的钉盘文件信息列表。支持批量授权,最大列表长度:10。 - FileInfos []*AddApproveDentryAuthRequestFileInfos `json:"fileInfos,omitempty" xml:"fileInfos,omitempty" type:"Repeated"` - // 授权的用户userid。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s AddApproveDentryAuthRequest) String() string { - return tea.Prettify(s) -} - -func (s AddApproveDentryAuthRequest) GoString() string { - return s.String() -} - -func (s *AddApproveDentryAuthRequest) SetFileInfos(v []*AddApproveDentryAuthRequestFileInfos) *AddApproveDentryAuthRequest { - s.FileInfos = v - return s -} - -func (s *AddApproveDentryAuthRequest) SetUserId(v string) *AddApproveDentryAuthRequest { - s.UserId = &v - return s -} - -type AddApproveDentryAuthRequestFileInfos struct { - // 文件ID。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 钉盘空间spaceId。 - SpaceId *int64 `json:"spaceId,omitempty" xml:"spaceId,omitempty"` -} - -func (s AddApproveDentryAuthRequestFileInfos) String() string { - return tea.Prettify(s) -} - -func (s AddApproveDentryAuthRequestFileInfos) GoString() string { - return s.String() -} - -func (s *AddApproveDentryAuthRequestFileInfos) SetFileId(v string) *AddApproveDentryAuthRequestFileInfos { - s.FileId = &v - return s -} - -func (s *AddApproveDentryAuthRequestFileInfos) SetSpaceId(v int64) *AddApproveDentryAuthRequestFileInfos { - s.SpaceId = &v - return s -} - -type AddApproveDentryAuthResponseBody struct { - // 返回结果。 - Result *bool `json:"result,omitempty" xml:"result,omitempty"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s AddApproveDentryAuthResponseBody) String() string { - return tea.Prettify(s) -} - -func (s AddApproveDentryAuthResponseBody) GoString() string { - return s.String() -} - -func (s *AddApproveDentryAuthResponseBody) SetResult(v bool) *AddApproveDentryAuthResponseBody { - s.Result = &v - return s -} - -func (s *AddApproveDentryAuthResponseBody) SetSuccess(v bool) *AddApproveDentryAuthResponseBody { - s.Success = &v - return s -} - -type AddApproveDentryAuthResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *AddApproveDentryAuthResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s AddApproveDentryAuthResponse) String() string { - return tea.Prettify(s) -} - -func (s AddApproveDentryAuthResponse) GoString() string { - return s.String() -} - -func (s *AddApproveDentryAuthResponse) SetHeaders(v map[string]*string) *AddApproveDentryAuthResponse { - s.Headers = v - return s -} - -func (s *AddApproveDentryAuthResponse) SetBody(v *AddApproveDentryAuthResponseBody) *AddApproveDentryAuthResponse { - s.Body = v - return s -} - -type AddProcessInstanceCommentHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s AddProcessInstanceCommentHeaders) String() string { - return tea.Prettify(s) -} - -func (s AddProcessInstanceCommentHeaders) GoString() string { - return s.String() -} - -func (s *AddProcessInstanceCommentHeaders) SetCommonHeaders(v map[string]*string) *AddProcessInstanceCommentHeaders { - s.CommonHeaders = v - return s -} - -func (s *AddProcessInstanceCommentHeaders) SetXAcsDingtalkAccessToken(v string) *AddProcessInstanceCommentHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type AddProcessInstanceCommentRequest struct { - // 评论人的userid。 - CommentUserId *string `json:"commentUserId,omitempty" xml:"commentUserId,omitempty"` - // 文件。 - File *AddProcessInstanceCommentRequestFile `json:"file,omitempty" xml:"file,omitempty" type:"Struct"` - // 审批实例ID,可通过调用获取审批实例ID列表接口获取。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 评论的内容。 - Text *string `json:"text,omitempty" xml:"text,omitempty"` -} - -func (s AddProcessInstanceCommentRequest) String() string { - return tea.Prettify(s) -} - -func (s AddProcessInstanceCommentRequest) GoString() string { - return s.String() -} - -func (s *AddProcessInstanceCommentRequest) SetCommentUserId(v string) *AddProcessInstanceCommentRequest { - s.CommentUserId = &v - return s -} - -func (s *AddProcessInstanceCommentRequest) SetFile(v *AddProcessInstanceCommentRequestFile) *AddProcessInstanceCommentRequest { - s.File = v - return s -} - -func (s *AddProcessInstanceCommentRequest) SetProcessInstanceId(v string) *AddProcessInstanceCommentRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *AddProcessInstanceCommentRequest) SetText(v string) *AddProcessInstanceCommentRequest { - s.Text = &v - return s -} - -type AddProcessInstanceCommentRequestFile struct { - // 附件列表。 - Attachments []*AddProcessInstanceCommentRequestFileAttachments `json:"attachments,omitempty" xml:"attachments,omitempty" type:"Repeated"` - // 图片URL地址。 - Photos []*string `json:"photos,omitempty" xml:"photos,omitempty" type:"Repeated"` -} - -func (s AddProcessInstanceCommentRequestFile) String() string { - return tea.Prettify(s) -} - -func (s AddProcessInstanceCommentRequestFile) GoString() string { - return s.String() -} - -func (s *AddProcessInstanceCommentRequestFile) SetAttachments(v []*AddProcessInstanceCommentRequestFileAttachments) *AddProcessInstanceCommentRequestFile { - s.Attachments = v - return s -} - -func (s *AddProcessInstanceCommentRequestFile) SetPhotos(v []*string) *AddProcessInstanceCommentRequestFile { - s.Photos = v - return s -} - -type AddProcessInstanceCommentRequestFileAttachments struct { - // 文件ID。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 文件名称。 - FileName *string `json:"fileName,omitempty" xml:"fileName,omitempty"` - // 文件大小。 - FileSize *string `json:"fileSize,omitempty" xml:"fileSize,omitempty"` - // 文件类型。 - FileType *string `json:"fileType,omitempty" xml:"fileType,omitempty"` - // 钉盘空间ID。 - SpaceId *string `json:"spaceId,omitempty" xml:"spaceId,omitempty"` -} - -func (s AddProcessInstanceCommentRequestFileAttachments) String() string { - return tea.Prettify(s) -} - -func (s AddProcessInstanceCommentRequestFileAttachments) GoString() string { - return s.String() -} - -func (s *AddProcessInstanceCommentRequestFileAttachments) SetFileId(v string) *AddProcessInstanceCommentRequestFileAttachments { - s.FileId = &v - return s -} - -func (s *AddProcessInstanceCommentRequestFileAttachments) SetFileName(v string) *AddProcessInstanceCommentRequestFileAttachments { - s.FileName = &v - return s -} - -func (s *AddProcessInstanceCommentRequestFileAttachments) SetFileSize(v string) *AddProcessInstanceCommentRequestFileAttachments { - s.FileSize = &v - return s -} - -func (s *AddProcessInstanceCommentRequestFileAttachments) SetFileType(v string) *AddProcessInstanceCommentRequestFileAttachments { - s.FileType = &v - return s -} - -func (s *AddProcessInstanceCommentRequestFileAttachments) SetSpaceId(v string) *AddProcessInstanceCommentRequestFileAttachments { - s.SpaceId = &v - return s -} - -type AddProcessInstanceCommentResponseBody struct { - // 评论是否成功。 - Result *bool `json:"result,omitempty" xml:"result,omitempty"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s AddProcessInstanceCommentResponseBody) String() string { - return tea.Prettify(s) -} - -func (s AddProcessInstanceCommentResponseBody) GoString() string { - return s.String() -} - -func (s *AddProcessInstanceCommentResponseBody) SetResult(v bool) *AddProcessInstanceCommentResponseBody { - s.Result = &v - return s -} - -func (s *AddProcessInstanceCommentResponseBody) SetSuccess(v bool) *AddProcessInstanceCommentResponseBody { - s.Success = &v - return s -} - -type AddProcessInstanceCommentResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *AddProcessInstanceCommentResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s AddProcessInstanceCommentResponse) String() string { - return tea.Prettify(s) -} - -func (s AddProcessInstanceCommentResponse) GoString() string { - return s.String() -} - -func (s *AddProcessInstanceCommentResponse) SetHeaders(v map[string]*string) *AddProcessInstanceCommentResponse { - s.Headers = v - return s -} - -func (s *AddProcessInstanceCommentResponse) SetBody(v *AddProcessInstanceCommentResponseBody) *AddProcessInstanceCommentResponse { - s.Body = v - return s -} - -type BatchUpdateProcessInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s BatchUpdateProcessInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s BatchUpdateProcessInstanceHeaders) GoString() string { - return s.String() -} - -func (s *BatchUpdateProcessInstanceHeaders) SetCommonHeaders(v map[string]*string) *BatchUpdateProcessInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *BatchUpdateProcessInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *BatchUpdateProcessInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type BatchUpdateProcessInstanceRequest struct { - // 实列列表。 - UpdateProcessInstanceRequests []*BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests `json:"updateProcessInstanceRequests,omitempty" xml:"updateProcessInstanceRequests,omitempty" type:"Repeated"` -} - -func (s BatchUpdateProcessInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s BatchUpdateProcessInstanceRequest) GoString() string { - return s.String() -} - -func (s *BatchUpdateProcessInstanceRequest) SetUpdateProcessInstanceRequests(v []*BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) *BatchUpdateProcessInstanceRequest { - s.UpdateProcessInstanceRequests = v - return s -} - -type BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests struct { - // 抄送列表,注意最大抄送人数量不能超过30。 - Notifiers []*BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers `json:"notifiers,omitempty" xml:"notifiers,omitempty" type:"Repeated"` - // 实例id - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 实例结果: - // 实例状态是COMPLETED,必须设置代表以下含义。 - // agree:同意 - // refuse:拒绝 - // 实例状态为TERMINATED,必须设置代表含义,result取值agree和refuse均代表撤销审批流。 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 实例状态: - // COMPLETED:结束审批流 - // TERMINATED:终止审批流 - Status *string `json:"status,omitempty" xml:"status,omitempty"` -} - -func (s BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) String() string { - return tea.Prettify(s) -} - -func (s BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) GoString() string { - return s.String() -} - -func (s *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) SetNotifiers(v []*BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers) *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests { - s.Notifiers = v - return s -} - -func (s *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) SetProcessInstanceId(v string) *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests { - s.ProcessInstanceId = &v - return s -} - -func (s *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) SetResult(v string) *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests { - s.Result = &v - return s -} - -func (s *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests) SetStatus(v string) *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequests { - s.Status = &v - return s -} - -type BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers struct { - // 抄送接收人用户userId。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers) String() string { - return tea.Prettify(s) -} - -func (s BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers) GoString() string { - return s.String() -} - -func (s *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers) SetUserId(v string) *BatchUpdateProcessInstanceRequestUpdateProcessInstanceRequestsNotifiers { - s.UserId = &v - return s -} - -type BatchUpdateProcessInstanceResponseBody struct { - // 成功标识 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s BatchUpdateProcessInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s BatchUpdateProcessInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *BatchUpdateProcessInstanceResponseBody) SetSuccess(v bool) *BatchUpdateProcessInstanceResponseBody { - s.Success = &v - return s -} - -type BatchUpdateProcessInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *BatchUpdateProcessInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s BatchUpdateProcessInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s BatchUpdateProcessInstanceResponse) GoString() string { - return s.String() -} - -func (s *BatchUpdateProcessInstanceResponse) SetHeaders(v map[string]*string) *BatchUpdateProcessInstanceResponse { - s.Headers = v - return s -} - -func (s *BatchUpdateProcessInstanceResponse) SetBody(v *BatchUpdateProcessInstanceResponseBody) *BatchUpdateProcessInstanceResponse { - s.Body = v - return s -} - -type CancelIntegratedTaskHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s CancelIntegratedTaskHeaders) String() string { - return tea.Prettify(s) -} - -func (s CancelIntegratedTaskHeaders) GoString() string { - return s.String() -} - -func (s *CancelIntegratedTaskHeaders) SetCommonHeaders(v map[string]*string) *CancelIntegratedTaskHeaders { - s.CommonHeaders = v - return s -} - -func (s *CancelIntegratedTaskHeaders) SetXAcsDingtalkAccessToken(v string) *CancelIntegratedTaskHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type CancelIntegratedTaskRequest struct { - // 待办组ID,需要在调用创建待办接口时,主动设置该值。 - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // 待办组ID列表,用于批量取消。 - ActivityIds []*string `json:"activityIds,omitempty" xml:"activityIds,omitempty" type:"Repeated"` - // OA审批流程实例ID - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` -} - -func (s CancelIntegratedTaskRequest) String() string { - return tea.Prettify(s) -} - -func (s CancelIntegratedTaskRequest) GoString() string { - return s.String() -} - -func (s *CancelIntegratedTaskRequest) SetActivityId(v string) *CancelIntegratedTaskRequest { - s.ActivityId = &v - return s -} - -func (s *CancelIntegratedTaskRequest) SetActivityIds(v []*string) *CancelIntegratedTaskRequest { - s.ActivityIds = v - return s -} - -func (s *CancelIntegratedTaskRequest) SetProcessInstanceId(v string) *CancelIntegratedTaskRequest { - s.ProcessInstanceId = &v - return s -} - -type CancelIntegratedTaskResponseBody struct { - // 是否更新成功 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s CancelIntegratedTaskResponseBody) String() string { - return tea.Prettify(s) -} - -func (s CancelIntegratedTaskResponseBody) GoString() string { - return s.String() -} - -func (s *CancelIntegratedTaskResponseBody) SetSuccess(v bool) *CancelIntegratedTaskResponseBody { - s.Success = &v - return s -} - -type CancelIntegratedTaskResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *CancelIntegratedTaskResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s CancelIntegratedTaskResponse) String() string { - return tea.Prettify(s) -} - -func (s CancelIntegratedTaskResponse) GoString() string { - return s.String() -} - -func (s *CancelIntegratedTaskResponse) SetHeaders(v map[string]*string) *CancelIntegratedTaskResponse { - s.Headers = v - return s -} - -func (s *CancelIntegratedTaskResponse) SetBody(v *CancelIntegratedTaskResponseBody) *CancelIntegratedTaskResponse { - s.Body = v - return s -} - -type CleanProcessDataHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s CleanProcessDataHeaders) String() string { - return tea.Prettify(s) -} - -func (s CleanProcessDataHeaders) GoString() string { - return s.String() -} - -func (s *CleanProcessDataHeaders) SetCommonHeaders(v map[string]*string) *CleanProcessDataHeaders { - s.CommonHeaders = v - return s -} - -func (s *CleanProcessDataHeaders) SetXAcsDingtalkAccessToken(v string) *CleanProcessDataHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type CleanProcessDataRequest struct { - // 企业的corpId。 - CorpId *string `json:"corpId,omitempty" xml:"corpId,omitempty"` - // 模板唯一码。 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s CleanProcessDataRequest) String() string { - return tea.Prettify(s) -} - -func (s CleanProcessDataRequest) GoString() string { - return s.String() -} - -func (s *CleanProcessDataRequest) SetCorpId(v string) *CleanProcessDataRequest { - s.CorpId = &v - return s -} - -func (s *CleanProcessDataRequest) SetProcessCode(v string) *CleanProcessDataRequest { - s.ProcessCode = &v - return s -} - -type CleanProcessDataResponseBody struct { - // 是否调用成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s CleanProcessDataResponseBody) String() string { - return tea.Prettify(s) -} - -func (s CleanProcessDataResponseBody) GoString() string { - return s.String() -} - -func (s *CleanProcessDataResponseBody) SetSuccess(v bool) *CleanProcessDataResponseBody { - s.Success = &v - return s -} - -type CleanProcessDataResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *CleanProcessDataResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s CleanProcessDataResponse) String() string { - return tea.Prettify(s) -} - -func (s CleanProcessDataResponse) GoString() string { - return s.String() -} - -func (s *CleanProcessDataResponse) SetHeaders(v map[string]*string) *CleanProcessDataResponse { - s.Headers = v - return s -} - -func (s *CleanProcessDataResponse) SetBody(v *CleanProcessDataResponseBody) *CleanProcessDataResponse { - s.Body = v - return s -} - -type CopyProcessHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s CopyProcessHeaders) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessHeaders) GoString() string { - return s.String() -} - -func (s *CopyProcessHeaders) SetCommonHeaders(v map[string]*string) *CopyProcessHeaders { - s.CommonHeaders = v - return s -} - -func (s *CopyProcessHeaders) SetXAcsDingtalkAccessToken(v string) *CopyProcessHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type CopyProcessRequest struct { - // 复制选项 - CopyOptions *CopyProcessRequestCopyOptions `json:"copyOptions,omitempty" xml:"copyOptions,omitempty" type:"Struct"` - SourceCorpId *string `json:"sourceCorpId,omitempty" xml:"sourceCorpId,omitempty"` - // 源模版列表 - SourceProcessVOList []*CopyProcessRequestSourceProcessVOList `json:"sourceProcessVOList,omitempty" xml:"sourceProcessVOList,omitempty" type:"Repeated"` -} - -func (s CopyProcessRequest) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessRequest) GoString() string { - return s.String() -} - -func (s *CopyProcessRequest) SetCopyOptions(v *CopyProcessRequestCopyOptions) *CopyProcessRequest { - s.CopyOptions = v - return s -} - -func (s *CopyProcessRequest) SetSourceCorpId(v string) *CopyProcessRequest { - s.SourceCorpId = &v - return s -} - -func (s *CopyProcessRequest) SetSourceProcessVOList(v []*CopyProcessRequestSourceProcessVOList) *CopyProcessRequest { - s.SourceProcessVOList = v - return s -} - -type CopyProcessRequestCopyOptions struct { - // 默认为1 - // COPE_TYPE_DEFAULT = 1 默认会使用groupId进行隔离分组,审批首页不可见 - // COPE_TYPE_INCLUDE_FLOW = 2 使用dingtalk 2作为隔离分组,审批首页可见 - CopyType *int32 `json:"copyType,omitempty" xml:"copyType,omitempty"` -} - -func (s CopyProcessRequestCopyOptions) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessRequestCopyOptions) GoString() string { - return s.String() -} - -func (s *CopyProcessRequestCopyOptions) SetCopyType(v int32) *CopyProcessRequestCopyOptions { - s.CopyType = &v - return s -} - -type CopyProcessRequestSourceProcessVOList struct { - // 套件业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 模板code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s CopyProcessRequestSourceProcessVOList) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessRequestSourceProcessVOList) GoString() string { - return s.String() -} - -func (s *CopyProcessRequestSourceProcessVOList) SetBizType(v string) *CopyProcessRequestSourceProcessVOList { - s.BizType = &v - return s -} - -func (s *CopyProcessRequestSourceProcessVOList) SetName(v string) *CopyProcessRequestSourceProcessVOList { - s.Name = &v - return s -} - -func (s *CopyProcessRequestSourceProcessVOList) SetProcessCode(v string) *CopyProcessRequestSourceProcessVOList { - s.ProcessCode = &v - return s -} - -type CopyProcessResponseBody struct { - Result []*CopyProcessResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s CopyProcessResponseBody) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessResponseBody) GoString() string { - return s.String() -} - -func (s *CopyProcessResponseBody) SetResult(v []*CopyProcessResponseBodyResult) *CopyProcessResponseBody { - s.Result = v - return s -} - -type CopyProcessResponseBodyResult struct { - // 业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 模板code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s CopyProcessResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessResponseBodyResult) GoString() string { - return s.String() -} - -func (s *CopyProcessResponseBodyResult) SetBizType(v string) *CopyProcessResponseBodyResult { - s.BizType = &v - return s -} - -func (s *CopyProcessResponseBodyResult) SetName(v string) *CopyProcessResponseBodyResult { - s.Name = &v - return s -} - -func (s *CopyProcessResponseBodyResult) SetProcessCode(v string) *CopyProcessResponseBodyResult { - s.ProcessCode = &v - return s -} - -type CopyProcessResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *CopyProcessResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s CopyProcessResponse) String() string { - return tea.Prettify(s) -} - -func (s CopyProcessResponse) GoString() string { - return s.String() -} - -func (s *CopyProcessResponse) SetHeaders(v map[string]*string) *CopyProcessResponse { - s.Headers = v - return s -} - -func (s *CopyProcessResponse) SetBody(v *CopyProcessResponseBody) *CopyProcessResponse { - s.Body = v - return s -} - -type CreateIntegratedTaskHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s CreateIntegratedTaskHeaders) String() string { - return tea.Prettify(s) -} - -func (s CreateIntegratedTaskHeaders) GoString() string { - return s.String() -} - -func (s *CreateIntegratedTaskHeaders) SetCommonHeaders(v map[string]*string) *CreateIntegratedTaskHeaders { - s.CommonHeaders = v - return s -} - -func (s *CreateIntegratedTaskHeaders) SetXAcsDingtalkAccessToken(v string) *CreateIntegratedTaskHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type CreateIntegratedTaskRequest struct { - // 待办组ID,调用方提供自定义唯一分组标识 - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // OA审批实例ID,通过创建实例接口获取。 - // - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 任务列表 - Tasks []*CreateIntegratedTaskRequestTasks `json:"tasks,omitempty" xml:"tasks,omitempty" type:"Repeated"` -} - -func (s CreateIntegratedTaskRequest) String() string { - return tea.Prettify(s) -} - -func (s CreateIntegratedTaskRequest) GoString() string { - return s.String() -} - -func (s *CreateIntegratedTaskRequest) SetActivityId(v string) *CreateIntegratedTaskRequest { - s.ActivityId = &v - return s -} - -func (s *CreateIntegratedTaskRequest) SetProcessInstanceId(v string) *CreateIntegratedTaskRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *CreateIntegratedTaskRequest) SetTasks(v []*CreateIntegratedTaskRequestTasks) *CreateIntegratedTaskRequest { - s.Tasks = v - return s -} - -type CreateIntegratedTaskRequestTasks struct { - // 待办事项跳转URL。 - // 创建审批实例接口里的url,实现的是钉钉审批应用里的审批单跳转。这个接口里的url,实现的是钉钉待办页面,对应的待办卡片的跳转。两种跳转场景不同。需要注意的是,钉钉的待办页面,也同时支持移动端和PC端,所以这个接口里传的url参数,它所对应的页面也要适配好移动端和PC端。 - // - Url *string `json:"url,omitempty" xml:"url,omitempty"` - // OA审批任务执行人的用户ID - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s CreateIntegratedTaskRequestTasks) String() string { - return tea.Prettify(s) -} - -func (s CreateIntegratedTaskRequestTasks) GoString() string { - return s.String() -} - -func (s *CreateIntegratedTaskRequestTasks) SetUrl(v string) *CreateIntegratedTaskRequestTasks { - s.Url = &v - return s -} - -func (s *CreateIntegratedTaskRequestTasks) SetUserId(v string) *CreateIntegratedTaskRequestTasks { - s.UserId = &v - return s -} - -type CreateIntegratedTaskResponseBody struct { - Result []*CreateIntegratedTaskResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` - // 是否创建成功 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s CreateIntegratedTaskResponseBody) String() string { - return tea.Prettify(s) -} - -func (s CreateIntegratedTaskResponseBody) GoString() string { - return s.String() -} - -func (s *CreateIntegratedTaskResponseBody) SetResult(v []*CreateIntegratedTaskResponseBodyResult) *CreateIntegratedTaskResponseBody { - s.Result = v - return s -} - -func (s *CreateIntegratedTaskResponseBody) SetSuccess(v bool) *CreateIntegratedTaskResponseBody { - s.Success = &v - return s -} - -type CreateIntegratedTaskResponseBodyResult struct { - // OA审批任务ID - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` - // OA审批任务执行人用户ID - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s CreateIntegratedTaskResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s CreateIntegratedTaskResponseBodyResult) GoString() string { - return s.String() -} - -func (s *CreateIntegratedTaskResponseBodyResult) SetTaskId(v int64) *CreateIntegratedTaskResponseBodyResult { - s.TaskId = &v - return s -} - -func (s *CreateIntegratedTaskResponseBodyResult) SetUserId(v string) *CreateIntegratedTaskResponseBodyResult { - s.UserId = &v - return s -} - -type CreateIntegratedTaskResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *CreateIntegratedTaskResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s CreateIntegratedTaskResponse) String() string { - return tea.Prettify(s) -} - -func (s CreateIntegratedTaskResponse) GoString() string { - return s.String() -} - -func (s *CreateIntegratedTaskResponse) SetHeaders(v map[string]*string) *CreateIntegratedTaskResponse { - s.Headers = v - return s -} - -func (s *CreateIntegratedTaskResponse) SetBody(v *CreateIntegratedTaskResponseBody) *CreateIntegratedTaskResponse { - s.Body = v - return s -} - -type DeleteProcessHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s DeleteProcessHeaders) String() string { - return tea.Prettify(s) -} - -func (s DeleteProcessHeaders) GoString() string { - return s.String() -} - -func (s *DeleteProcessHeaders) SetCommonHeaders(v map[string]*string) *DeleteProcessHeaders { - s.CommonHeaders = v - return s -} - -func (s *DeleteProcessHeaders) SetXAcsDingtalkAccessToken(v string) *DeleteProcessHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type DeleteProcessRequest struct { - // 是否清理正在运行的任务 - CleanRunningTask *bool `json:"cleanRunningTask,omitempty" xml:"cleanRunningTask,omitempty"` - // 模板code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s DeleteProcessRequest) String() string { - return tea.Prettify(s) -} - -func (s DeleteProcessRequest) GoString() string { - return s.String() -} - -func (s *DeleteProcessRequest) SetCleanRunningTask(v bool) *DeleteProcessRequest { - s.CleanRunningTask = &v - return s -} - -func (s *DeleteProcessRequest) SetProcessCode(v string) *DeleteProcessRequest { - s.ProcessCode = &v - return s -} - -type DeleteProcessResponseBody struct { - Result *DeleteProcessResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s DeleteProcessResponseBody) String() string { - return tea.Prettify(s) -} - -func (s DeleteProcessResponseBody) GoString() string { - return s.String() -} - -func (s *DeleteProcessResponseBody) SetResult(v *DeleteProcessResponseBodyResult) *DeleteProcessResponseBody { - s.Result = v - return s -} - -type DeleteProcessResponseBodyResult struct { - // 模板code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s DeleteProcessResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s DeleteProcessResponseBodyResult) GoString() string { - return s.String() -} - -func (s *DeleteProcessResponseBodyResult) SetProcessCode(v string) *DeleteProcessResponseBodyResult { - s.ProcessCode = &v - return s -} - -type DeleteProcessResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *DeleteProcessResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s DeleteProcessResponse) String() string { - return tea.Prettify(s) -} - -func (s DeleteProcessResponse) GoString() string { - return s.String() -} - -func (s *DeleteProcessResponse) SetHeaders(v map[string]*string) *DeleteProcessResponse { - s.Headers = v - return s -} - -func (s *DeleteProcessResponse) SetBody(v *DeleteProcessResponseBody) *DeleteProcessResponse { - s.Body = v - return s -} - -type ExecuteProcessInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s ExecuteProcessInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s ExecuteProcessInstanceHeaders) GoString() string { - return s.String() -} - -func (s *ExecuteProcessInstanceHeaders) SetCommonHeaders(v map[string]*string) *ExecuteProcessInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *ExecuteProcessInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *ExecuteProcessInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type ExecuteProcessInstanceRequest struct { - // 操作人userid,可通过调用获取审批实例详情接口获取。 - ActionerUserId *string `json:"actionerUserId,omitempty" xml:"actionerUserId,omitempty"` - // 文件。 - File *ExecuteProcessInstanceRequestFile `json:"file,omitempty" xml:"file,omitempty" type:"Struct"` - // 审批实例ID,可通过调用获取审批实例ID列表接口获取。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 审批意见,可为空。 - Remark *string `json:"remark,omitempty" xml:"remark,omitempty"` - // 审批操作,取值。 - // - // agree:同意 - // - // refuse:拒绝 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 任务节点id,可通过调用获取审批实例详情接口获取。 - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` -} - -func (s ExecuteProcessInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s ExecuteProcessInstanceRequest) GoString() string { - return s.String() -} - -func (s *ExecuteProcessInstanceRequest) SetActionerUserId(v string) *ExecuteProcessInstanceRequest { - s.ActionerUserId = &v - return s -} - -func (s *ExecuteProcessInstanceRequest) SetFile(v *ExecuteProcessInstanceRequestFile) *ExecuteProcessInstanceRequest { - s.File = v - return s -} - -func (s *ExecuteProcessInstanceRequest) SetProcessInstanceId(v string) *ExecuteProcessInstanceRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *ExecuteProcessInstanceRequest) SetRemark(v string) *ExecuteProcessInstanceRequest { - s.Remark = &v - return s -} - -func (s *ExecuteProcessInstanceRequest) SetResult(v string) *ExecuteProcessInstanceRequest { - s.Result = &v - return s -} - -func (s *ExecuteProcessInstanceRequest) SetTaskId(v int64) *ExecuteProcessInstanceRequest { - s.TaskId = &v - return s -} - -type ExecuteProcessInstanceRequestFile struct { - // 附件列表。 - Attachments []*ExecuteProcessInstanceRequestFileAttachments `json:"attachments,omitempty" xml:"attachments,omitempty" type:"Repeated"` - // 图片URL地址。 - Photos []*string `json:"photos,omitempty" xml:"photos,omitempty" type:"Repeated"` -} - -func (s ExecuteProcessInstanceRequestFile) String() string { - return tea.Prettify(s) -} - -func (s ExecuteProcessInstanceRequestFile) GoString() string { - return s.String() -} - -func (s *ExecuteProcessInstanceRequestFile) SetAttachments(v []*ExecuteProcessInstanceRequestFileAttachments) *ExecuteProcessInstanceRequestFile { - s.Attachments = v - return s -} - -func (s *ExecuteProcessInstanceRequestFile) SetPhotos(v []*string) *ExecuteProcessInstanceRequestFile { - s.Photos = v - return s -} - -type ExecuteProcessInstanceRequestFileAttachments struct { - // 文件ID。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 文件名称。 - FileName *string `json:"fileName,omitempty" xml:"fileName,omitempty"` - // 文件大小。 - FileSize *string `json:"fileSize,omitempty" xml:"fileSize,omitempty"` - // 文件类型。 - FileType *string `json:"fileType,omitempty" xml:"fileType,omitempty"` - // 钉盘空间ID。 - SpaceId *string `json:"spaceId,omitempty" xml:"spaceId,omitempty"` -} - -func (s ExecuteProcessInstanceRequestFileAttachments) String() string { - return tea.Prettify(s) -} - -func (s ExecuteProcessInstanceRequestFileAttachments) GoString() string { - return s.String() -} - -func (s *ExecuteProcessInstanceRequestFileAttachments) SetFileId(v string) *ExecuteProcessInstanceRequestFileAttachments { - s.FileId = &v - return s -} - -func (s *ExecuteProcessInstanceRequestFileAttachments) SetFileName(v string) *ExecuteProcessInstanceRequestFileAttachments { - s.FileName = &v - return s -} - -func (s *ExecuteProcessInstanceRequestFileAttachments) SetFileSize(v string) *ExecuteProcessInstanceRequestFileAttachments { - s.FileSize = &v - return s -} - -func (s *ExecuteProcessInstanceRequestFileAttachments) SetFileType(v string) *ExecuteProcessInstanceRequestFileAttachments { - s.FileType = &v - return s -} - -func (s *ExecuteProcessInstanceRequestFileAttachments) SetSpaceId(v string) *ExecuteProcessInstanceRequestFileAttachments { - s.SpaceId = &v - return s -} - -type ExecuteProcessInstanceResponseBody struct { - // 同意或拒绝结果。 - Result *bool `json:"result,omitempty" xml:"result,omitempty"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s ExecuteProcessInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s ExecuteProcessInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *ExecuteProcessInstanceResponseBody) SetResult(v bool) *ExecuteProcessInstanceResponseBody { - s.Result = &v - return s -} - -func (s *ExecuteProcessInstanceResponseBody) SetSuccess(v bool) *ExecuteProcessInstanceResponseBody { - s.Success = &v - return s -} - -type ExecuteProcessInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *ExecuteProcessInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s ExecuteProcessInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s ExecuteProcessInstanceResponse) GoString() string { - return s.String() -} - -func (s *ExecuteProcessInstanceResponse) SetHeaders(v map[string]*string) *ExecuteProcessInstanceResponse { - s.Headers = v - return s -} - -func (s *ExecuteProcessInstanceResponse) SetBody(v *ExecuteProcessInstanceResponseBody) *ExecuteProcessInstanceResponse { - s.Body = v - return s -} - -type FormCreateHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s FormCreateHeaders) String() string { - return tea.Prettify(s) -} - -func (s FormCreateHeaders) GoString() string { - return s.String() -} - -func (s *FormCreateHeaders) SetCommonHeaders(v map[string]*string) *FormCreateHeaders { - s.CommonHeaders = v - return s -} - -func (s *FormCreateHeaders) SetXAcsDingtalkAccessToken(v string) *FormCreateHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type FormCreateRequest struct { - // 表单模板描述 - Description *string `json:"description,omitempty" xml:"description,omitempty"` - // 表单控件列表 - FormComponents []*FormComponent `json:"formComponents,omitempty" xml:"formComponents,omitempty" type:"Repeated"` - // 表单模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 模板配置信息 - TemplateConfig *FormCreateRequestTemplateConfig `json:"templateConfig,omitempty" xml:"templateConfig,omitempty" type:"Struct"` -} - -func (s FormCreateRequest) String() string { - return tea.Prettify(s) -} - -func (s FormCreateRequest) GoString() string { - return s.String() -} - -func (s *FormCreateRequest) SetDescription(v string) *FormCreateRequest { - s.Description = &v - return s -} - -func (s *FormCreateRequest) SetFormComponents(v []*FormComponent) *FormCreateRequest { - s.FormComponents = v - return s -} - -func (s *FormCreateRequest) SetName(v string) *FormCreateRequest { - s.Name = &v - return s -} - -func (s *FormCreateRequest) SetProcessCode(v string) *FormCreateRequest { - s.ProcessCode = &v - return s -} - -func (s *FormCreateRequest) SetTemplateConfig(v *FormCreateRequestTemplateConfig) *FormCreateRequest { - s.TemplateConfig = v - return s -} - -type FormCreateRequestTemplateConfig struct { - // 更新后模板目录id - DirId *string `json:"dirId,omitempty" xml:"dirId,omitempty"` - // 禁用模板删除按钮 - DisableDeleteProcess *bool `json:"disableDeleteProcess,omitempty" xml:"disableDeleteProcess,omitempty"` - // 禁用表单编辑 - DisableFormEdit *bool `json:"disableFormEdit,omitempty" xml:"disableFormEdit,omitempty"` - // 首页工作台是否可见 - DisableHomepage *bool `json:"disableHomepage,omitempty" xml:"disableHomepage,omitempty"` - // 禁用再次提交 - DisableResubmit *bool `json:"disableResubmit,omitempty" xml:"disableResubmit,omitempty"` - // 禁用停止按钮 - DisableStopProcessButton *bool `json:"disableStopProcessButton,omitempty" xml:"disableStopProcessButton,omitempty"` - // 审批场景内隐藏模板 - Hidden *bool `json:"hidden,omitempty" xml:"hidden,omitempty"` - // 源模板目录id - OriginDirId *string `json:"originDirId,omitempty" xml:"originDirId,omitempty"` -} - -func (s FormCreateRequestTemplateConfig) String() string { - return tea.Prettify(s) -} - -func (s FormCreateRequestTemplateConfig) GoString() string { - return s.String() -} - -func (s *FormCreateRequestTemplateConfig) SetDirId(v string) *FormCreateRequestTemplateConfig { - s.DirId = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetDisableDeleteProcess(v bool) *FormCreateRequestTemplateConfig { - s.DisableDeleteProcess = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetDisableFormEdit(v bool) *FormCreateRequestTemplateConfig { - s.DisableFormEdit = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetDisableHomepage(v bool) *FormCreateRequestTemplateConfig { - s.DisableHomepage = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetDisableResubmit(v bool) *FormCreateRequestTemplateConfig { - s.DisableResubmit = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetDisableStopProcessButton(v bool) *FormCreateRequestTemplateConfig { - s.DisableStopProcessButton = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetHidden(v bool) *FormCreateRequestTemplateConfig { - s.Hidden = &v - return s -} - -func (s *FormCreateRequestTemplateConfig) SetOriginDirId(v string) *FormCreateRequestTemplateConfig { - s.OriginDirId = &v - return s -} - -type FormCreateResponseBody struct { - // 表单模板信息 - Result *FormCreateResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s FormCreateResponseBody) String() string { - return tea.Prettify(s) -} - -func (s FormCreateResponseBody) GoString() string { - return s.String() -} - -func (s *FormCreateResponseBody) SetResult(v *FormCreateResponseBodyResult) *FormCreateResponseBody { - s.Result = v - return s -} - -type FormCreateResponseBodyResult struct { - // 保存或更新的表单code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s FormCreateResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s FormCreateResponseBodyResult) GoString() string { - return s.String() -} - -func (s *FormCreateResponseBodyResult) SetProcessCode(v string) *FormCreateResponseBodyResult { - s.ProcessCode = &v - return s -} - -type FormCreateResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *FormCreateResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s FormCreateResponse) String() string { - return tea.Prettify(s) -} - -func (s FormCreateResponse) GoString() string { - return s.String() -} - -func (s *FormCreateResponse) SetHeaders(v map[string]*string) *FormCreateResponse { - s.Headers = v - return s -} - -func (s *FormCreateResponse) SetBody(v *FormCreateResponseBody) *FormCreateResponse { - s.Body = v - return s -} - -type GetAttachmentSpaceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetAttachmentSpaceHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetAttachmentSpaceHeaders) GoString() string { - return s.String() -} - -func (s *GetAttachmentSpaceHeaders) SetCommonHeaders(v map[string]*string) *GetAttachmentSpaceHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetAttachmentSpaceHeaders) SetXAcsDingtalkAccessToken(v string) *GetAttachmentSpaceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetAttachmentSpaceRequest struct { - // 应用的agentid。 - AgentId *int64 `json:"agentId,omitempty" xml:"agentId,omitempty"` - // 用户的userid - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetAttachmentSpaceRequest) String() string { - return tea.Prettify(s) -} - -func (s GetAttachmentSpaceRequest) GoString() string { - return s.String() -} - -func (s *GetAttachmentSpaceRequest) SetAgentId(v int64) *GetAttachmentSpaceRequest { - s.AgentId = &v - return s -} - -func (s *GetAttachmentSpaceRequest) SetUserId(v string) *GetAttachmentSpaceRequest { - s.UserId = &v - return s -} - -type GetAttachmentSpaceResponseBody struct { - // 返回结果。 - Result *GetAttachmentSpaceResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s GetAttachmentSpaceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetAttachmentSpaceResponseBody) GoString() string { - return s.String() -} - -func (s *GetAttachmentSpaceResponseBody) SetResult(v *GetAttachmentSpaceResponseBodyResult) *GetAttachmentSpaceResponseBody { - s.Result = v - return s -} - -func (s *GetAttachmentSpaceResponseBody) SetSuccess(v bool) *GetAttachmentSpaceResponseBody { - s.Success = &v - return s -} - -type GetAttachmentSpaceResponseBodyResult struct { - // 钉盘空间ID。 - SpaceId *int64 `json:"spaceId,omitempty" xml:"spaceId,omitempty"` -} - -func (s GetAttachmentSpaceResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetAttachmentSpaceResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetAttachmentSpaceResponseBodyResult) SetSpaceId(v int64) *GetAttachmentSpaceResponseBodyResult { - s.SpaceId = &v - return s -} - -type GetAttachmentSpaceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetAttachmentSpaceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetAttachmentSpaceResponse) String() string { - return tea.Prettify(s) -} - -func (s GetAttachmentSpaceResponse) GoString() string { - return s.String() -} - -func (s *GetAttachmentSpaceResponse) SetHeaders(v map[string]*string) *GetAttachmentSpaceResponse { - s.Headers = v - return s -} - -func (s *GetAttachmentSpaceResponse) SetBody(v *GetAttachmentSpaceResponseBody) *GetAttachmentSpaceResponse { - s.Body = v - return s -} - -type GetConditionFormComponentHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetConditionFormComponentHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetConditionFormComponentHeaders) GoString() string { - return s.String() -} - -func (s *GetConditionFormComponentHeaders) SetCommonHeaders(v map[string]*string) *GetConditionFormComponentHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetConditionFormComponentHeaders) SetXAcsDingtalkAccessToken(v string) *GetConditionFormComponentHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetConditionFormComponentRequest struct { - // 应用ID (三方应用为AppID),可在开发者管理后台后台的应用详情页面获取。 - AgentId *int64 `json:"agentId,omitempty" xml:"agentId,omitempty"` - // 审批模板ID。 - // - // processCode需要OA管理后台,在编辑审批表单的URL中获取。 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s GetConditionFormComponentRequest) String() string { - return tea.Prettify(s) -} - -func (s GetConditionFormComponentRequest) GoString() string { - return s.String() -} - -func (s *GetConditionFormComponentRequest) SetAgentId(v int64) *GetConditionFormComponentRequest { - s.AgentId = &v - return s -} - -func (s *GetConditionFormComponentRequest) SetProcessCode(v string) *GetConditionFormComponentRequest { - s.ProcessCode = &v - return s -} - -type GetConditionFormComponentResponseBody struct { - // 返回结果。 - Result []*GetConditionFormComponentResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s GetConditionFormComponentResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetConditionFormComponentResponseBody) GoString() string { - return s.String() -} - -func (s *GetConditionFormComponentResponseBody) SetResult(v []*GetConditionFormComponentResponseBodyResult) *GetConditionFormComponentResponseBody { - s.Result = v - return s -} - -type GetConditionFormComponentResponseBodyResult struct { - // 表单ID。 - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 表单名称。 - Label *string `json:"label,omitempty" xml:"label,omitempty"` -} - -func (s GetConditionFormComponentResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetConditionFormComponentResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetConditionFormComponentResponseBodyResult) SetId(v string) *GetConditionFormComponentResponseBodyResult { - s.Id = &v - return s -} - -func (s *GetConditionFormComponentResponseBodyResult) SetLabel(v string) *GetConditionFormComponentResponseBodyResult { - s.Label = &v - return s -} - -type GetConditionFormComponentResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetConditionFormComponentResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetConditionFormComponentResponse) String() string { - return tea.Prettify(s) -} - -func (s GetConditionFormComponentResponse) GoString() string { - return s.String() -} - -func (s *GetConditionFormComponentResponse) SetHeaders(v map[string]*string) *GetConditionFormComponentResponse { - s.Headers = v - return s -} - -func (s *GetConditionFormComponentResponse) SetBody(v *GetConditionFormComponentResponseBody) *GetConditionFormComponentResponse { - s.Body = v - return s -} - -type GetCrmProcCodesHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetCrmProcCodesHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetCrmProcCodesHeaders) GoString() string { - return s.String() -} - -func (s *GetCrmProcCodesHeaders) SetCommonHeaders(v map[string]*string) *GetCrmProcCodesHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetCrmProcCodesHeaders) SetXAcsDingtalkAccessToken(v string) *GetCrmProcCodesHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetCrmProcCodesResponseBody struct { - // 模板code列表。 - Result []*string `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s GetCrmProcCodesResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetCrmProcCodesResponseBody) GoString() string { - return s.String() -} - -func (s *GetCrmProcCodesResponseBody) SetResult(v []*string) *GetCrmProcCodesResponseBody { - s.Result = v - return s -} - -type GetCrmProcCodesResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetCrmProcCodesResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetCrmProcCodesResponse) String() string { - return tea.Prettify(s) -} - -func (s GetCrmProcCodesResponse) GoString() string { - return s.String() -} - -func (s *GetCrmProcCodesResponse) SetHeaders(v map[string]*string) *GetCrmProcCodesResponse { - s.Headers = v - return s -} - -func (s *GetCrmProcCodesResponse) SetBody(v *GetCrmProcCodesResponseBody) *GetCrmProcCodesResponse { - s.Body = v - return s -} - -type GetManageProcessByStaffIdHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetManageProcessByStaffIdHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetManageProcessByStaffIdHeaders) GoString() string { - return s.String() -} - -func (s *GetManageProcessByStaffIdHeaders) SetCommonHeaders(v map[string]*string) *GetManageProcessByStaffIdHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetManageProcessByStaffIdHeaders) SetXAcsDingtalkAccessToken(v string) *GetManageProcessByStaffIdHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetManageProcessByStaffIdRequest struct { - // 用户的userid。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetManageProcessByStaffIdRequest) String() string { - return tea.Prettify(s) -} - -func (s GetManageProcessByStaffIdRequest) GoString() string { - return s.String() -} - -func (s *GetManageProcessByStaffIdRequest) SetUserId(v string) *GetManageProcessByStaffIdRequest { - s.UserId = &v - return s -} - -type GetManageProcessByStaffIdResponseBody struct { - // 返回结果列表。 - Result []*GetManageProcessByStaffIdResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s GetManageProcessByStaffIdResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetManageProcessByStaffIdResponseBody) GoString() string { - return s.String() -} - -func (s *GetManageProcessByStaffIdResponseBody) SetResult(v []*GetManageProcessByStaffIdResponseBodyResult) *GetManageProcessByStaffIdResponseBody { - s.Result = v - return s -} - -func (s *GetManageProcessByStaffIdResponseBody) SetSuccess(v bool) *GetManageProcessByStaffIdResponseBody { - s.Success = &v - return s -} - -type GetManageProcessByStaffIdResponseBodyResult struct { - // 关联考勤类型,取值。 - // - // 0:无 - // 1:补卡申请 - // 2:请假 - AttendanceType *int32 `json:"attendanceType,omitempty" xml:"attendanceType,omitempty"` - // 模版名称。 - FlowTitle *string `json:"flowTitle,omitempty" xml:"flowTitle,omitempty"` - // 修改时间。 - GmtModified *string `json:"gmtModified,omitempty" xml:"gmtModified,omitempty"` - // 模板图标名。 - IconName *string `json:"iconName,omitempty" xml:"iconName,omitempty"` - // 图标URL地址。 - IconUrl *string `json:"iconUrl,omitempty" xml:"iconUrl,omitempty"` - // 是否新模版。 - NewProcess *bool `json:"newProcess,omitempty" xml:"newProcess,omitempty"` - // 模版code。 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s GetManageProcessByStaffIdResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetManageProcessByStaffIdResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetAttendanceType(v int32) *GetManageProcessByStaffIdResponseBodyResult { - s.AttendanceType = &v - return s -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetFlowTitle(v string) *GetManageProcessByStaffIdResponseBodyResult { - s.FlowTitle = &v - return s -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetGmtModified(v string) *GetManageProcessByStaffIdResponseBodyResult { - s.GmtModified = &v - return s -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetIconName(v string) *GetManageProcessByStaffIdResponseBodyResult { - s.IconName = &v - return s -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetIconUrl(v string) *GetManageProcessByStaffIdResponseBodyResult { - s.IconUrl = &v - return s -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetNewProcess(v bool) *GetManageProcessByStaffIdResponseBodyResult { - s.NewProcess = &v - return s -} - -func (s *GetManageProcessByStaffIdResponseBodyResult) SetProcessCode(v string) *GetManageProcessByStaffIdResponseBodyResult { - s.ProcessCode = &v - return s -} - -type GetManageProcessByStaffIdResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetManageProcessByStaffIdResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetManageProcessByStaffIdResponse) String() string { - return tea.Prettify(s) -} - -func (s GetManageProcessByStaffIdResponse) GoString() string { - return s.String() -} - -func (s *GetManageProcessByStaffIdResponse) SetHeaders(v map[string]*string) *GetManageProcessByStaffIdResponse { - s.Headers = v - return s -} - -func (s *GetManageProcessByStaffIdResponse) SetBody(v *GetManageProcessByStaffIdResponseBody) *GetManageProcessByStaffIdResponse { - s.Body = v - return s -} - -type GetProcessCodeByNameHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetProcessCodeByNameHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetProcessCodeByNameHeaders) GoString() string { - return s.String() -} - -func (s *GetProcessCodeByNameHeaders) SetCommonHeaders(v map[string]*string) *GetProcessCodeByNameHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetProcessCodeByNameHeaders) SetXAcsDingtalkAccessToken(v string) *GetProcessCodeByNameHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetProcessCodeByNameRequest struct { - // 模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` -} - -func (s GetProcessCodeByNameRequest) String() string { - return tea.Prettify(s) -} - -func (s GetProcessCodeByNameRequest) GoString() string { - return s.String() -} - -func (s *GetProcessCodeByNameRequest) SetName(v string) *GetProcessCodeByNameRequest { - s.Name = &v - return s -} - -type GetProcessCodeByNameResponseBody struct { - // 表单模板信息 - Result *GetProcessCodeByNameResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s GetProcessCodeByNameResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetProcessCodeByNameResponseBody) GoString() string { - return s.String() -} - -func (s *GetProcessCodeByNameResponseBody) SetResult(v *GetProcessCodeByNameResponseBodyResult) *GetProcessCodeByNameResponseBody { - s.Result = v - return s -} - -type GetProcessCodeByNameResponseBodyResult struct { - // 保存或更新的表单code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s GetProcessCodeByNameResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetProcessCodeByNameResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetProcessCodeByNameResponseBodyResult) SetProcessCode(v string) *GetProcessCodeByNameResponseBodyResult { - s.ProcessCode = &v - return s -} - -type GetProcessCodeByNameResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetProcessCodeByNameResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetProcessCodeByNameResponse) String() string { - return tea.Prettify(s) -} - -func (s GetProcessCodeByNameResponse) GoString() string { - return s.String() -} - -func (s *GetProcessCodeByNameResponse) SetHeaders(v map[string]*string) *GetProcessCodeByNameResponse { - s.Headers = v - return s -} - -func (s *GetProcessCodeByNameResponse) SetBody(v *GetProcessCodeByNameResponseBody) *GetProcessCodeByNameResponse { - s.Body = v - return s -} - -type GetProcessConfigHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetProcessConfigHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigHeaders) GoString() string { - return s.String() -} - -func (s *GetProcessConfigHeaders) SetCommonHeaders(v map[string]*string) *GetProcessConfigHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetProcessConfigHeaders) SetXAcsDingtalkAccessToken(v string) *GetProcessConfigHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetProcessConfigRequest struct { - // 模板code - ProcCode *string `json:"procCode,omitempty" xml:"procCode,omitempty"` -} - -func (s GetProcessConfigRequest) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigRequest) GoString() string { - return s.String() -} - -func (s *GetProcessConfigRequest) SetProcCode(v string) *GetProcessConfigRequest { - s.ProcCode = &v - return s -} - -type GetProcessConfigResponseBody struct { - Result *GetProcessConfigResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s GetProcessConfigResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBody) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBody) SetResult(v *GetProcessConfigResponseBodyResult) *GetProcessConfigResponseBody { - s.Result = v - return s -} - -type GetProcessConfigResponseBodyResult struct { - // 自定义摘要信息 - AbstractGenRule []*string `json:"abstractGenRule,omitempty" xml:"abstractGenRule,omitempty" type:"Repeated"` - // 表单节点权限 - ActivityAuth *string `json:"activityAuth,omitempty" xml:"activityAuth,omitempty"` - // 是否允许撤销 - AllowRevoke *bool `json:"allowRevoke,omitempty" xml:"allowRevoke,omitempty"` - // 是否允许加签 - AppendEnable *bool `json:"appendEnable,omitempty" xml:"appendEnable,omitempty"` - // 如果审批人和发起人是同一个人,则去重 - AutoExecuteOriginatorTasks *bool `json:"autoExecuteOriginatorTasks,omitempty" xml:"autoExecuteOriginatorTasks,omitempty"` - // 流程表单业务标识 - BizCategoryId *string `json:"bizCategoryId,omitempty" xml:"bizCategoryId,omitempty"` - // 纯表单业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 评论配置 - CommentConf *GetProcessConfigResponseBodyResultCommentConf `json:"commentConf,omitempty" xml:"commentConf,omitempty" type:"Struct"` - // 审批人自动去重 - DuplicateRemoval *string `json:"duplicateRemoval,omitempty" xml:"duplicateRemoval,omitempty"` - // 表单配置 - FormSchema *string `json:"formSchema,omitempty" xml:"formSchema,omitempty"` - // 手写签名配置 - HandSignConf *GetProcessConfigResponseBodyResultHandSignConf `json:"handSignConf,omitempty" xml:"handSignConf,omitempty" type:"Struct"` - // 表单管理员 - Managers []*string `json:"managers,omitempty" xml:"managers,omitempty" type:"Repeated"` - // 表单名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 是否流程表单 - ProcessAppType *bool `json:"processAppType,omitempty" xml:"processAppType,omitempty"` - // 流程配置 - ProcessConfig *string `json:"processConfig,omitempty" xml:"processConfig,omitempty"` - // 是否静态流程 - StaticProc *bool `json:"staticProc,omitempty" xml:"staticProc,omitempty"` - // 代提交配置 - SubstituteSubmitConf *GetProcessConfigResponseBodyResultSubstituteSubmitConf `json:"substituteSubmitConf,omitempty" xml:"substituteSubmitConf,omitempty" type:"Struct"` - // 自定义标题规则 - TitleGenRule *GetProcessConfigResponseBodyResultTitleGenRule `json:"titleGenRule,omitempty" xml:"titleGenRule,omitempty" type:"Struct"` - // 模板可见性 - Visibility []*GetProcessConfigResponseBodyResultVisibility `json:"visibility,omitempty" xml:"visibility,omitempty" type:"Repeated"` -} - -func (s GetProcessConfigResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResult) SetAbstractGenRule(v []*string) *GetProcessConfigResponseBodyResult { - s.AbstractGenRule = v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetActivityAuth(v string) *GetProcessConfigResponseBodyResult { - s.ActivityAuth = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetAllowRevoke(v bool) *GetProcessConfigResponseBodyResult { - s.AllowRevoke = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetAppendEnable(v bool) *GetProcessConfigResponseBodyResult { - s.AppendEnable = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetAutoExecuteOriginatorTasks(v bool) *GetProcessConfigResponseBodyResult { - s.AutoExecuteOriginatorTasks = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetBizCategoryId(v string) *GetProcessConfigResponseBodyResult { - s.BizCategoryId = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetBizType(v string) *GetProcessConfigResponseBodyResult { - s.BizType = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetCommentConf(v *GetProcessConfigResponseBodyResultCommentConf) *GetProcessConfigResponseBodyResult { - s.CommentConf = v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetDuplicateRemoval(v string) *GetProcessConfigResponseBodyResult { - s.DuplicateRemoval = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetFormSchema(v string) *GetProcessConfigResponseBodyResult { - s.FormSchema = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetHandSignConf(v *GetProcessConfigResponseBodyResultHandSignConf) *GetProcessConfigResponseBodyResult { - s.HandSignConf = v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetManagers(v []*string) *GetProcessConfigResponseBodyResult { - s.Managers = v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetName(v string) *GetProcessConfigResponseBodyResult { - s.Name = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetProcessAppType(v bool) *GetProcessConfigResponseBodyResult { - s.ProcessAppType = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetProcessConfig(v string) *GetProcessConfigResponseBodyResult { - s.ProcessConfig = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetStaticProc(v bool) *GetProcessConfigResponseBodyResult { - s.StaticProc = &v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetSubstituteSubmitConf(v *GetProcessConfigResponseBodyResultSubstituteSubmitConf) *GetProcessConfigResponseBodyResult { - s.SubstituteSubmitConf = v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetTitleGenRule(v *GetProcessConfigResponseBodyResultTitleGenRule) *GetProcessConfigResponseBodyResult { - s.TitleGenRule = v - return s -} - -func (s *GetProcessConfigResponseBodyResult) SetVisibility(v []*GetProcessConfigResponseBodyResultVisibility) *GetProcessConfigResponseBodyResult { - s.Visibility = v - return s -} - -type GetProcessConfigResponseBodyResultCommentConf struct { - // 提示内容 - CommentDescription *string `json:"commentDescription,omitempty" xml:"commentDescription,omitempty"` - // 评论对发起人不可见 - CommentHiddenForProposer *bool `json:"commentHiddenForProposer,omitempty" xml:"commentHiddenForProposer,omitempty"` - // 评论必填 - CommentRequired *bool `json:"commentRequired,omitempty" xml:"commentRequired,omitempty"` -} - -func (s GetProcessConfigResponseBodyResultCommentConf) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResultCommentConf) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResultCommentConf) SetCommentDescription(v string) *GetProcessConfigResponseBodyResultCommentConf { - s.CommentDescription = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultCommentConf) SetCommentHiddenForProposer(v bool) *GetProcessConfigResponseBodyResultCommentConf { - s.CommentHiddenForProposer = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultCommentConf) SetCommentRequired(v bool) *GetProcessConfigResponseBodyResultCommentConf { - s.CommentRequired = &v - return s -} - -type GetProcessConfigResponseBodyResultHandSignConf struct { - // 开启手写签名 - HandSignEnable *bool `json:"handSignEnable,omitempty" xml:"handSignEnable,omitempty"` - // 是否使用上次签名 - ResignEnable *bool `json:"resignEnable,omitempty" xml:"resignEnable,omitempty"` -} - -func (s GetProcessConfigResponseBodyResultHandSignConf) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResultHandSignConf) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResultHandSignConf) SetHandSignEnable(v bool) *GetProcessConfigResponseBodyResultHandSignConf { - s.HandSignEnable = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultHandSignConf) SetResignEnable(v bool) *GetProcessConfigResponseBodyResultHandSignConf { - s.ResignEnable = &v - return s -} - -type GetProcessConfigResponseBodyResultSubstituteSubmitConf struct { - // 是否允许代提交 - Enable *bool `json:"enable,omitempty" xml:"enable,omitempty"` - // 代提交人 - SubmitterList []*GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList `json:"submitterList,omitempty" xml:"submitterList,omitempty" type:"Repeated"` -} - -func (s GetProcessConfigResponseBodyResultSubstituteSubmitConf) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResultSubstituteSubmitConf) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResultSubstituteSubmitConf) SetEnable(v bool) *GetProcessConfigResponseBodyResultSubstituteSubmitConf { - s.Enable = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultSubstituteSubmitConf) SetSubmitterList(v []*GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList) *GetProcessConfigResponseBodyResultSubstituteSubmitConf { - s.SubmitterList = v - return s -} - -type GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList struct { - // 名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 类型 - Type *string `json:"type,omitempty" xml:"type,omitempty"` - // 员工staffId/部门id - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList) SetName(v string) *GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList { - s.Name = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList) SetType(v string) *GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList { - s.Type = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList) SetValue(v string) *GetProcessConfigResponseBodyResultSubstituteSubmitConfSubmitterList { - s.Value = &v - return s -} - -type GetProcessConfigResponseBodyResultTitleGenRule struct { - // 规则表达式 - Express *string `json:"express,omitempty" xml:"express,omitempty"` - // 规则类型 - Type *int32 `json:"type,omitempty" xml:"type,omitempty"` -} - -func (s GetProcessConfigResponseBodyResultTitleGenRule) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResultTitleGenRule) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResultTitleGenRule) SetExpress(v string) *GetProcessConfigResponseBodyResultTitleGenRule { - s.Express = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultTitleGenRule) SetType(v int32) *GetProcessConfigResponseBodyResultTitleGenRule { - s.Type = &v - return s -} - -type GetProcessConfigResponseBodyResultVisibility struct { - // 类型 - Type *int32 `json:"type,omitempty" xml:"type,omitempty"` - // 员工staffId/部门id - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s GetProcessConfigResponseBodyResultVisibility) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponseBodyResultVisibility) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponseBodyResultVisibility) SetType(v int32) *GetProcessConfigResponseBodyResultVisibility { - s.Type = &v - return s -} - -func (s *GetProcessConfigResponseBodyResultVisibility) SetValue(v string) *GetProcessConfigResponseBodyResultVisibility { - s.Value = &v - return s -} - -type GetProcessConfigResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetProcessConfigResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetProcessConfigResponse) String() string { - return tea.Prettify(s) -} - -func (s GetProcessConfigResponse) GoString() string { - return s.String() -} - -func (s *GetProcessConfigResponse) SetHeaders(v map[string]*string) *GetProcessConfigResponse { - s.Headers = v - return s -} - -func (s *GetProcessConfigResponse) SetBody(v *GetProcessConfigResponseBody) *GetProcessConfigResponse { - s.Body = v - return s -} - -type GetProcessInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetProcessInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceHeaders) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceHeaders) SetCommonHeaders(v map[string]*string) *GetProcessInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetProcessInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *GetProcessInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetProcessInstanceRequest struct { - // 审批实例ID企业内部应用可通过获取审批实例ID列表接口获取。钉钉三方企业应用可以通过推送的审批事件中获取,参考biz_type=22。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` -} - -func (s GetProcessInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceRequest) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceRequest) SetProcessInstanceId(v string) *GetProcessInstanceRequest { - s.ProcessInstanceId = &v - return s -} - -type GetProcessInstanceResponseBody struct { - // 返回结果。 - Result *GetProcessInstanceResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` - // 调用是否成功。 - Success *string `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s GetProcessInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponseBody) SetResult(v *GetProcessInstanceResponseBodyResult) *GetProcessInstanceResponseBody { - s.Result = v - return s -} - -func (s *GetProcessInstanceResponseBody) SetSuccess(v string) *GetProcessInstanceResponseBody { - s.Success = &v - return s -} - -type GetProcessInstanceResponseBodyResult struct { - // 审批人userid列表。 - ApproverUserIds []*string `json:"approverUserIds,omitempty" xml:"approverUserIds,omitempty" type:"Repeated"` - // 审批附属实例列表,当已经通过的审批实例被修改或撤销,会生成一个新的实例,作为原有审批实例的附属。 如果想知道当前已经通过的审批实例的状态,可以依次遍历它的附属列表,查询里面每个实例的biz_action。 - AttachedProcessInstanceIds []*string `json:"attachedProcessInstanceIds,omitempty" xml:"attachedProcessInstanceIds,omitempty" type:"Repeated"` - // 审批实例业务动作: MODIFY:表示该审批实例是基于原来的实例修改而来 REVOKE:表示该审批实例是由原来的实例撤销后重新发起的 NONE表示正常发起 - BizAction *string `json:"bizAction,omitempty" xml:"bizAction,omitempty"` - // 审批实例业务编号。 - BusinessId *string `json:"businessId,omitempty" xml:"businessId,omitempty"` - // 抄送人userid列表。 - CcUserIds []*string `json:"ccUserIds,omitempty" xml:"ccUserIds,omitempty" type:"Repeated"` - // 创建时间。 - CreateTime *string `json:"createTime,omitempty" xml:"createTime,omitempty"` - // 结束时间。 - FinishTime *string `json:"finishTime,omitempty" xml:"finishTime,omitempty"` - // 表单详情列表。 - FormComponentValues []*GetProcessInstanceResponseBodyResultFormComponentValues `json:"formComponentValues,omitempty" xml:"formComponentValues,omitempty" type:"Repeated"` - // 主流程实例标识。 - MainProcessInstanceId *string `json:"mainProcessInstanceId,omitempty" xml:"mainProcessInstanceId,omitempty"` - // 操作记录列表。 - OperationRecords []*GetProcessInstanceResponseBodyResultOperationRecords `json:"operationRecords,omitempty" xml:"operationRecords,omitempty" type:"Repeated"` - // 发起人的部门。-1表示根部门。 - OriginatorDeptId *string `json:"originatorDeptId,omitempty" xml:"originatorDeptId,omitempty"` - // 发起人的部门名。 - OriginatorDeptName *string `json:"originatorDeptName,omitempty" xml:"originatorDeptName,omitempty"` - // 发起人的userid。 - OriginatorUserId *string `json:"originatorUserId,omitempty" xml:"originatorUserId,omitempty"` - // 审批结果: agree:同意 refuse:拒绝。 说明 status为COMPLETED且result为同意时,表示审批单完结并审批通过。 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 审批状态: NEW:新创建 RUNNING:审批中 TERMINATED:被终止 COMPLETED:完成 CANCELED:取消 - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // 任务列表。 - Tasks []*GetProcessInstanceResponseBodyResultTasks `json:"tasks,omitempty" xml:"tasks,omitempty" type:"Repeated"` - // 审批实例标题。 - Title *string `json:"title,omitempty" xml:"title,omitempty"` -} - -func (s GetProcessInstanceResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponseBodyResult) SetApproverUserIds(v []*string) *GetProcessInstanceResponseBodyResult { - s.ApproverUserIds = v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetAttachedProcessInstanceIds(v []*string) *GetProcessInstanceResponseBodyResult { - s.AttachedProcessInstanceIds = v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetBizAction(v string) *GetProcessInstanceResponseBodyResult { - s.BizAction = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetBusinessId(v string) *GetProcessInstanceResponseBodyResult { - s.BusinessId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetCcUserIds(v []*string) *GetProcessInstanceResponseBodyResult { - s.CcUserIds = v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetCreateTime(v string) *GetProcessInstanceResponseBodyResult { - s.CreateTime = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetFinishTime(v string) *GetProcessInstanceResponseBodyResult { - s.FinishTime = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetFormComponentValues(v []*GetProcessInstanceResponseBodyResultFormComponentValues) *GetProcessInstanceResponseBodyResult { - s.FormComponentValues = v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetMainProcessInstanceId(v string) *GetProcessInstanceResponseBodyResult { - s.MainProcessInstanceId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetOperationRecords(v []*GetProcessInstanceResponseBodyResultOperationRecords) *GetProcessInstanceResponseBodyResult { - s.OperationRecords = v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetOriginatorDeptId(v string) *GetProcessInstanceResponseBodyResult { - s.OriginatorDeptId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetOriginatorDeptName(v string) *GetProcessInstanceResponseBodyResult { - s.OriginatorDeptName = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetOriginatorUserId(v string) *GetProcessInstanceResponseBodyResult { - s.OriginatorUserId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetResult(v string) *GetProcessInstanceResponseBodyResult { - s.Result = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetStatus(v string) *GetProcessInstanceResponseBodyResult { - s.Status = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetTasks(v []*GetProcessInstanceResponseBodyResultTasks) *GetProcessInstanceResponseBodyResult { - s.Tasks = v - return s -} - -func (s *GetProcessInstanceResponseBodyResult) SetTitle(v string) *GetProcessInstanceResponseBodyResult { - s.Title = &v - return s -} - -type GetProcessInstanceResponseBodyResultFormComponentValues struct { - // 组件别名。 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 组件类型。 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - // 标签扩展值。 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 组件ID。 - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 组件名称。 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 标签值。 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s GetProcessInstanceResponseBodyResultFormComponentValues) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponseBodyResultFormComponentValues) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponseBodyResultFormComponentValues) SetBizAlias(v string) *GetProcessInstanceResponseBodyResultFormComponentValues { - s.BizAlias = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultFormComponentValues) SetComponentType(v string) *GetProcessInstanceResponseBodyResultFormComponentValues { - s.ComponentType = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultFormComponentValues) SetExtValue(v string) *GetProcessInstanceResponseBodyResultFormComponentValues { - s.ExtValue = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultFormComponentValues) SetId(v string) *GetProcessInstanceResponseBodyResultFormComponentValues { - s.Id = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultFormComponentValues) SetName(v string) *GetProcessInstanceResponseBodyResultFormComponentValues { - s.Name = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultFormComponentValues) SetValue(v string) *GetProcessInstanceResponseBodyResultFormComponentValues { - s.Value = &v - return s -} - -type GetProcessInstanceResponseBodyResultOperationRecords struct { - // 评论附件列表。 - Attachments []*GetProcessInstanceResponseBodyResultOperationRecordsAttachments `json:"attachments,omitempty" xml:"attachments,omitempty" type:"Repeated"` - // 抄送人userIds列表 - CcUserIds []*string `json:"ccUserIds,omitempty" xml:"ccUserIds,omitempty" type:"Repeated"` - // 操作时间。 - Date *string `json:"date,omitempty" xml:"date,omitempty"` - // 评论内容。 审批操作附带评论时才返回该字段。 - Remark *string `json:"remark,omitempty" xml:"remark,omitempty"` - // 操作结果: AGREE:同意 REFUSE:拒绝 NONE - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 操作类型: EXECUTE_TASK_NORMAL:正常执行任务 EXECUTE_TASK_AGENT:代理人执行任务 APPEND_TASK_BEFORE:前加签任务 APPEND_TASK_AFTER:后加签任务 REDIRECT_TASK:转交任务 START_PROCESS_INSTANCE:发起流程实例 TERMINATE_PROCESS_INSTANCE:终止(撤销)流程实例 FINISH_PROCESS_INSTANCE:结束流程实例 ADD_REMARK:添加评论 REDIRECT_PROCESS:审批退回 PROCESS_CC:抄送 - Type *string `json:"type,omitempty" xml:"type,omitempty"` - // 操作人userid。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetProcessInstanceResponseBodyResultOperationRecords) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponseBodyResultOperationRecords) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetAttachments(v []*GetProcessInstanceResponseBodyResultOperationRecordsAttachments) *GetProcessInstanceResponseBodyResultOperationRecords { - s.Attachments = v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetCcUserIds(v []*string) *GetProcessInstanceResponseBodyResultOperationRecords { - s.CcUserIds = v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetDate(v string) *GetProcessInstanceResponseBodyResultOperationRecords { - s.Date = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetRemark(v string) *GetProcessInstanceResponseBodyResultOperationRecords { - s.Remark = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetResult(v string) *GetProcessInstanceResponseBodyResultOperationRecords { - s.Result = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetType(v string) *GetProcessInstanceResponseBodyResultOperationRecords { - s.Type = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecords) SetUserId(v string) *GetProcessInstanceResponseBodyResultOperationRecords { - s.UserId = &v - return s -} - -type GetProcessInstanceResponseBodyResultOperationRecordsAttachments struct { - // 附件ID。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 附件名称。 - FileName *string `json:"fileName,omitempty" xml:"fileName,omitempty"` - // 附件大小。 - FileSize *string `json:"fileSize,omitempty" xml:"fileSize,omitempty"` - // 附件类型。 - FileType *string `json:"fileType,omitempty" xml:"fileType,omitempty"` -} - -func (s GetProcessInstanceResponseBodyResultOperationRecordsAttachments) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponseBodyResultOperationRecordsAttachments) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecordsAttachments) SetFileId(v string) *GetProcessInstanceResponseBodyResultOperationRecordsAttachments { - s.FileId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecordsAttachments) SetFileName(v string) *GetProcessInstanceResponseBodyResultOperationRecordsAttachments { - s.FileName = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecordsAttachments) SetFileSize(v string) *GetProcessInstanceResponseBodyResultOperationRecordsAttachments { - s.FileSize = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultOperationRecordsAttachments) SetFileType(v string) *GetProcessInstanceResponseBodyResultOperationRecordsAttachments { - s.FileType = &v - return s -} - -type GetProcessInstanceResponseBodyResultTasks struct { - // 任务节点ID。 - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // 开始时间。 - CreateTime *string `json:"createTime,omitempty" xml:"createTime,omitempty"` - // 结束时间。 - FinishTime *string `json:"finishTime,omitempty" xml:"finishTime,omitempty"` - // 移动端任务URL。 - MobileUrl *string `json:"mobileUrl,omitempty" xml:"mobileUrl,omitempty"` - // PC端任务URL。 - PcUrl *string `json:"pcUrl,omitempty" xml:"pcUrl,omitempty"` - // 实例ID。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 结果: AGREE:同意 REFUSE:拒绝 REDIRECTED:转交 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 任务状态: NEW:未启动 RUNNING:处理中 PAUSED:暂停 CANCELED:取消 COMPLETED:完成 TERMINATED:终止 - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // 任务ID。 - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` - // 任务处理人。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetProcessInstanceResponseBodyResultTasks) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponseBodyResultTasks) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetActivityId(v string) *GetProcessInstanceResponseBodyResultTasks { - s.ActivityId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetCreateTime(v string) *GetProcessInstanceResponseBodyResultTasks { - s.CreateTime = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetFinishTime(v string) *GetProcessInstanceResponseBodyResultTasks { - s.FinishTime = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetMobileUrl(v string) *GetProcessInstanceResponseBodyResultTasks { - s.MobileUrl = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetPcUrl(v string) *GetProcessInstanceResponseBodyResultTasks { - s.PcUrl = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetProcessInstanceId(v string) *GetProcessInstanceResponseBodyResultTasks { - s.ProcessInstanceId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetResult(v string) *GetProcessInstanceResponseBodyResultTasks { - s.Result = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetStatus(v string) *GetProcessInstanceResponseBodyResultTasks { - s.Status = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetTaskId(v int64) *GetProcessInstanceResponseBodyResultTasks { - s.TaskId = &v - return s -} - -func (s *GetProcessInstanceResponseBodyResultTasks) SetUserId(v string) *GetProcessInstanceResponseBodyResultTasks { - s.UserId = &v - return s -} - -type GetProcessInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetProcessInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetProcessInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s GetProcessInstanceResponse) GoString() string { - return s.String() -} - -func (s *GetProcessInstanceResponse) SetHeaders(v map[string]*string) *GetProcessInstanceResponse { - s.Headers = v - return s -} - -func (s *GetProcessInstanceResponse) SetBody(v *GetProcessInstanceResponseBody) *GetProcessInstanceResponse { - s.Body = v - return s -} - -type GetSpaceWithDownloadAuthHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetSpaceWithDownloadAuthHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetSpaceWithDownloadAuthHeaders) GoString() string { - return s.String() -} - -func (s *GetSpaceWithDownloadAuthHeaders) SetCommonHeaders(v map[string]*string) *GetSpaceWithDownloadAuthHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetSpaceWithDownloadAuthHeaders) SetXAcsDingtalkAccessToken(v string) *GetSpaceWithDownloadAuthHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetSpaceWithDownloadAuthRequest struct { - // 应用的agentid。 - AgentId *int64 `json:"agentId,omitempty" xml:"agentId,omitempty"` - // 审批附件ID。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 附件ID列表,支持批量授权,最大列表长度:20。 - FileIdList []*string `json:"fileIdList,omitempty" xml:"fileIdList,omitempty" type:"Repeated"` - // 实例ID。 - // - // 企业内部应用 - // - // 可通过获取审批实例ID列表接口获取。 - // - // 第三方企业应用 - // - // 可以通过推送的审批事件中获取,参考biz_type=22。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 授权允许预览附件的用户userid。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetSpaceWithDownloadAuthRequest) String() string { - return tea.Prettify(s) -} - -func (s GetSpaceWithDownloadAuthRequest) GoString() string { - return s.String() -} - -func (s *GetSpaceWithDownloadAuthRequest) SetAgentId(v int64) *GetSpaceWithDownloadAuthRequest { - s.AgentId = &v - return s -} - -func (s *GetSpaceWithDownloadAuthRequest) SetFileId(v string) *GetSpaceWithDownloadAuthRequest { - s.FileId = &v - return s -} - -func (s *GetSpaceWithDownloadAuthRequest) SetFileIdList(v []*string) *GetSpaceWithDownloadAuthRequest { - s.FileIdList = v - return s -} - -func (s *GetSpaceWithDownloadAuthRequest) SetProcessInstanceId(v string) *GetSpaceWithDownloadAuthRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *GetSpaceWithDownloadAuthRequest) SetUserId(v string) *GetSpaceWithDownloadAuthRequest { - s.UserId = &v - return s -} - -type GetSpaceWithDownloadAuthResponseBody struct { - // 返回结果。 - Result *GetSpaceWithDownloadAuthResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s GetSpaceWithDownloadAuthResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetSpaceWithDownloadAuthResponseBody) GoString() string { - return s.String() -} - -func (s *GetSpaceWithDownloadAuthResponseBody) SetResult(v *GetSpaceWithDownloadAuthResponseBodyResult) *GetSpaceWithDownloadAuthResponseBody { - s.Result = v - return s -} - -func (s *GetSpaceWithDownloadAuthResponseBody) SetSuccess(v bool) *GetSpaceWithDownloadAuthResponseBody { - s.Success = &v - return s -} - -type GetSpaceWithDownloadAuthResponseBodyResult struct { - // 钉盘空间ID。 - SpaceId *int64 `json:"spaceId,omitempty" xml:"spaceId,omitempty"` -} - -func (s GetSpaceWithDownloadAuthResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GetSpaceWithDownloadAuthResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GetSpaceWithDownloadAuthResponseBodyResult) SetSpaceId(v int64) *GetSpaceWithDownloadAuthResponseBodyResult { - s.SpaceId = &v - return s -} - -type GetSpaceWithDownloadAuthResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetSpaceWithDownloadAuthResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetSpaceWithDownloadAuthResponse) String() string { - return tea.Prettify(s) -} - -func (s GetSpaceWithDownloadAuthResponse) GoString() string { - return s.String() -} - -func (s *GetSpaceWithDownloadAuthResponse) SetHeaders(v map[string]*string) *GetSpaceWithDownloadAuthResponse { - s.Headers = v - return s -} - -func (s *GetSpaceWithDownloadAuthResponse) SetBody(v *GetSpaceWithDownloadAuthResponseBody) *GetSpaceWithDownloadAuthResponse { - s.Body = v - return s -} - -type GetUserTodoTaskSumHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GetUserTodoTaskSumHeaders) String() string { - return tea.Prettify(s) -} - -func (s GetUserTodoTaskSumHeaders) GoString() string { - return s.String() -} - -func (s *GetUserTodoTaskSumHeaders) SetCommonHeaders(v map[string]*string) *GetUserTodoTaskSumHeaders { - s.CommonHeaders = v - return s -} - -func (s *GetUserTodoTaskSumHeaders) SetXAcsDingtalkAccessToken(v string) *GetUserTodoTaskSumHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GetUserTodoTaskSumRequest struct { - // 要查询的用户userid。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GetUserTodoTaskSumRequest) String() string { - return tea.Prettify(s) -} - -func (s GetUserTodoTaskSumRequest) GoString() string { - return s.String() -} - -func (s *GetUserTodoTaskSumRequest) SetUserId(v string) *GetUserTodoTaskSumRequest { - s.UserId = &v - return s -} - -type GetUserTodoTaskSumResponseBody struct { - // 待处理的审批数量。 - Result *int32 `json:"result,omitempty" xml:"result,omitempty"` -} - -func (s GetUserTodoTaskSumResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GetUserTodoTaskSumResponseBody) GoString() string { - return s.String() -} - -func (s *GetUserTodoTaskSumResponseBody) SetResult(v int32) *GetUserTodoTaskSumResponseBody { - s.Result = &v - return s -} - -type GetUserTodoTaskSumResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GetUserTodoTaskSumResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GetUserTodoTaskSumResponse) String() string { - return tea.Prettify(s) -} - -func (s GetUserTodoTaskSumResponse) GoString() string { - return s.String() -} - -func (s *GetUserTodoTaskSumResponse) SetHeaders(v map[string]*string) *GetUserTodoTaskSumResponse { - s.Headers = v - return s -} - -func (s *GetUserTodoTaskSumResponse) SetBody(v *GetUserTodoTaskSumResponseBody) *GetUserTodoTaskSumResponse { - s.Body = v - return s -} - -type GrantCspaceAuthorizationHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GrantCspaceAuthorizationHeaders) String() string { - return tea.Prettify(s) -} - -func (s GrantCspaceAuthorizationHeaders) GoString() string { - return s.String() -} - -func (s *GrantCspaceAuthorizationHeaders) SetCommonHeaders(v map[string]*string) *GrantCspaceAuthorizationHeaders { - s.CommonHeaders = v - return s -} - -func (s *GrantCspaceAuthorizationHeaders) SetXAcsDingtalkAccessToken(v string) *GrantCspaceAuthorizationHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GrantCspaceAuthorizationRequest struct { - // 权限有效时间,单位为秒。 - DurationSeconds *int64 `json:"durationSeconds,omitempty" xml:"durationSeconds,omitempty"` - // 审批控件 id。 - SpaceId *string `json:"spaceId,omitempty" xml:"spaceId,omitempty"` - // 权限类型。 - Type *string `json:"type,omitempty" xml:"type,omitempty"` - // 用户 id。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s GrantCspaceAuthorizationRequest) String() string { - return tea.Prettify(s) -} - -func (s GrantCspaceAuthorizationRequest) GoString() string { - return s.String() -} - -func (s *GrantCspaceAuthorizationRequest) SetDurationSeconds(v int64) *GrantCspaceAuthorizationRequest { - s.DurationSeconds = &v - return s -} - -func (s *GrantCspaceAuthorizationRequest) SetSpaceId(v string) *GrantCspaceAuthorizationRequest { - s.SpaceId = &v - return s -} - -func (s *GrantCspaceAuthorizationRequest) SetType(v string) *GrantCspaceAuthorizationRequest { - s.Type = &v - return s -} - -func (s *GrantCspaceAuthorizationRequest) SetUserId(v string) *GrantCspaceAuthorizationRequest { - s.UserId = &v - return s -} - -type GrantCspaceAuthorizationResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` -} - -func (s GrantCspaceAuthorizationResponse) String() string { - return tea.Prettify(s) -} - -func (s GrantCspaceAuthorizationResponse) GoString() string { - return s.String() -} - -func (s *GrantCspaceAuthorizationResponse) SetHeaders(v map[string]*string) *GrantCspaceAuthorizationResponse { - s.Headers = v - return s -} - -type GrantProcessInstanceForDownloadFileHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s GrantProcessInstanceForDownloadFileHeaders) String() string { - return tea.Prettify(s) -} - -func (s GrantProcessInstanceForDownloadFileHeaders) GoString() string { - return s.String() -} - -func (s *GrantProcessInstanceForDownloadFileHeaders) SetCommonHeaders(v map[string]*string) *GrantProcessInstanceForDownloadFileHeaders { - s.CommonHeaders = v - return s -} - -func (s *GrantProcessInstanceForDownloadFileHeaders) SetXAcsDingtalkAccessToken(v string) *GrantProcessInstanceForDownloadFileHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type GrantProcessInstanceForDownloadFileRequest struct { - // 文件id,调用获取审批实例详情接口获取。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 实例ID。 - // - // 调用获取审批实例详情接口获取。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` -} - -func (s GrantProcessInstanceForDownloadFileRequest) String() string { - return tea.Prettify(s) -} - -func (s GrantProcessInstanceForDownloadFileRequest) GoString() string { - return s.String() -} - -func (s *GrantProcessInstanceForDownloadFileRequest) SetFileId(v string) *GrantProcessInstanceForDownloadFileRequest { - s.FileId = &v - return s -} - -func (s *GrantProcessInstanceForDownloadFileRequest) SetProcessInstanceId(v string) *GrantProcessInstanceForDownloadFileRequest { - s.ProcessInstanceId = &v - return s -} - -type GrantProcessInstanceForDownloadFileResponseBody struct { - // 返回结果。 - Result *GrantProcessInstanceForDownloadFileResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s GrantProcessInstanceForDownloadFileResponseBody) String() string { - return tea.Prettify(s) -} - -func (s GrantProcessInstanceForDownloadFileResponseBody) GoString() string { - return s.String() -} - -func (s *GrantProcessInstanceForDownloadFileResponseBody) SetResult(v *GrantProcessInstanceForDownloadFileResponseBodyResult) *GrantProcessInstanceForDownloadFileResponseBody { - s.Result = v - return s -} - -func (s *GrantProcessInstanceForDownloadFileResponseBody) SetSuccess(v bool) *GrantProcessInstanceForDownloadFileResponseBody { - s.Success = &v - return s -} - -type GrantProcessInstanceForDownloadFileResponseBodyResult struct { - // 文件下载地址。 - DownloadUri *string `json:"downloadUri,omitempty" xml:"downloadUri,omitempty"` - // 文件ID。 - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 钉盘空间ID。 - SpaceId *int64 `json:"spaceId,omitempty" xml:"spaceId,omitempty"` -} - -func (s GrantProcessInstanceForDownloadFileResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s GrantProcessInstanceForDownloadFileResponseBodyResult) GoString() string { - return s.String() -} - -func (s *GrantProcessInstanceForDownloadFileResponseBodyResult) SetDownloadUri(v string) *GrantProcessInstanceForDownloadFileResponseBodyResult { - s.DownloadUri = &v - return s -} - -func (s *GrantProcessInstanceForDownloadFileResponseBodyResult) SetFileId(v string) *GrantProcessInstanceForDownloadFileResponseBodyResult { - s.FileId = &v - return s -} - -func (s *GrantProcessInstanceForDownloadFileResponseBodyResult) SetSpaceId(v int64) *GrantProcessInstanceForDownloadFileResponseBodyResult { - s.SpaceId = &v - return s -} - -type GrantProcessInstanceForDownloadFileResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *GrantProcessInstanceForDownloadFileResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s GrantProcessInstanceForDownloadFileResponse) String() string { - return tea.Prettify(s) -} - -func (s GrantProcessInstanceForDownloadFileResponse) GoString() string { - return s.String() -} - -func (s *GrantProcessInstanceForDownloadFileResponse) SetHeaders(v map[string]*string) *GrantProcessInstanceForDownloadFileResponse { - s.Headers = v - return s -} - -func (s *GrantProcessInstanceForDownloadFileResponse) SetBody(v *GrantProcessInstanceForDownloadFileResponseBody) *GrantProcessInstanceForDownloadFileResponse { - s.Body = v - return s -} - -type InstallAppHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s InstallAppHeaders) String() string { - return tea.Prettify(s) -} - -func (s InstallAppHeaders) GoString() string { - return s.String() -} - -func (s *InstallAppHeaders) SetCommonHeaders(v map[string]*string) *InstallAppHeaders { - s.CommonHeaders = v - return s -} - -func (s *InstallAppHeaders) SetXAcsDingtalkAccessToken(v string) *InstallAppHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type InstallAppRequest struct { - // 业务分组 - BizGroup *string `json:"bizGroup,omitempty" xml:"bizGroup,omitempty"` - // 安装选项 - // - InstallOption *InstallAppRequestInstallOption `json:"installOption,omitempty" xml:"installOption,omitempty" type:"Struct"` - // 安装的目录名称 - SourceDirName *string `json:"sourceDirName,omitempty" xml:"sourceDirName,omitempty"` -} - -func (s InstallAppRequest) String() string { - return tea.Prettify(s) -} - -func (s InstallAppRequest) GoString() string { - return s.String() -} - -func (s *InstallAppRequest) SetBizGroup(v string) *InstallAppRequest { - s.BizGroup = &v - return s -} - -func (s *InstallAppRequest) SetInstallOption(v *InstallAppRequestInstallOption) *InstallAppRequest { - s.InstallOption = v - return s -} - -func (s *InstallAppRequest) SetSourceDirName(v string) *InstallAppRequest { - s.SourceDirName = &v - return s -} - -type InstallAppRequestInstallOption struct { - // 是否同步,目前只有同步 - IsSync *bool `json:"isSync,omitempty" xml:"isSync,omitempty"` -} - -func (s InstallAppRequestInstallOption) String() string { - return tea.Prettify(s) -} - -func (s InstallAppRequestInstallOption) GoString() string { - return s.String() -} - -func (s *InstallAppRequestInstallOption) SetIsSync(v bool) *InstallAppRequestInstallOption { - s.IsSync = &v - return s -} - -type InstallAppResponseBody struct { - // 返回对象列表 - Result []*InstallAppResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s InstallAppResponseBody) String() string { - return tea.Prettify(s) -} - -func (s InstallAppResponseBody) GoString() string { - return s.String() -} - -func (s *InstallAppResponseBody) SetResult(v []*InstallAppResponseBodyResult) *InstallAppResponseBody { - s.Result = v - return s -} - -type InstallAppResponseBodyResult struct { - // 套件业务类型 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 模版名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 模版processcode - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s InstallAppResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s InstallAppResponseBodyResult) GoString() string { - return s.String() -} - -func (s *InstallAppResponseBodyResult) SetBizType(v string) *InstallAppResponseBodyResult { - s.BizType = &v - return s -} - -func (s *InstallAppResponseBodyResult) SetName(v string) *InstallAppResponseBodyResult { - s.Name = &v - return s -} - -func (s *InstallAppResponseBodyResult) SetProcessCode(v string) *InstallAppResponseBodyResult { - s.ProcessCode = &v - return s -} - -type InstallAppResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *InstallAppResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s InstallAppResponse) String() string { - return tea.Prettify(s) -} - -func (s InstallAppResponse) GoString() string { - return s.String() -} - -func (s *InstallAppResponse) SetHeaders(v map[string]*string) *InstallAppResponse { - s.Headers = v - return s -} - -func (s *InstallAppResponse) SetBody(v *InstallAppResponseBody) *InstallAppResponse { - s.Body = v - return s -} - -type ListProcessInstanceIdsHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s ListProcessInstanceIdsHeaders) String() string { - return tea.Prettify(s) -} - -func (s ListProcessInstanceIdsHeaders) GoString() string { - return s.String() -} - -func (s *ListProcessInstanceIdsHeaders) SetCommonHeaders(v map[string]*string) *ListProcessInstanceIdsHeaders { - s.CommonHeaders = v - return s -} - -func (s *ListProcessInstanceIdsHeaders) SetXAcsDingtalkAccessToken(v string) *ListProcessInstanceIdsHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type ListProcessInstanceIdsRequest struct { - // 审批实例结束时间,Unix时间戳,单位毫秒。 例如:获取审批单发起时间在2020.4.10-2020.4.14之间审批单,该值传2020.4.14 23:59:59对应的时间戳1586879999000。 - EndTime *int64 `json:"endTime,omitempty" xml:"endTime,omitempty"` - // 分页参数,每页大小,最多传20。 - MaxResults *int64 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 分页查询的游标,最开始传0,后续传返回参数中的nextToken值。 - NextToken *int64 `json:"nextToken,omitempty" xml:"nextToken,omitempty"` - // 审批流的唯一码。 - // - // processCode在审批模板编辑页面的URL中获取。 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 审批实例开始时间。Unix时间戳,单位毫秒。 - // - // 例如:获取审批单发起时间在2020.4.10-2020.4.14之间审批单,该值传2020.4.10 00:00:00对应的时间戳1586448000000。 - StartTime *int64 `json:"startTime,omitempty" xml:"startTime,omitempty"` - // 发起userid列表,最大列表长度为10。 - UserIds []*string `json:"userIds,omitempty" xml:"userIds,omitempty" type:"Repeated"` -} - -func (s ListProcessInstanceIdsRequest) String() string { - return tea.Prettify(s) -} - -func (s ListProcessInstanceIdsRequest) GoString() string { - return s.String() -} - -func (s *ListProcessInstanceIdsRequest) SetEndTime(v int64) *ListProcessInstanceIdsRequest { - s.EndTime = &v - return s -} - -func (s *ListProcessInstanceIdsRequest) SetMaxResults(v int64) *ListProcessInstanceIdsRequest { - s.MaxResults = &v - return s -} - -func (s *ListProcessInstanceIdsRequest) SetNextToken(v int64) *ListProcessInstanceIdsRequest { - s.NextToken = &v - return s -} - -func (s *ListProcessInstanceIdsRequest) SetProcessCode(v string) *ListProcessInstanceIdsRequest { - s.ProcessCode = &v - return s -} - -func (s *ListProcessInstanceIdsRequest) SetStartTime(v int64) *ListProcessInstanceIdsRequest { - s.StartTime = &v - return s -} - -func (s *ListProcessInstanceIdsRequest) SetUserIds(v []*string) *ListProcessInstanceIdsRequest { - s.UserIds = v - return s -} - -type ListProcessInstanceIdsResponseBody struct { - // 返回结果。 - Result *ListProcessInstanceIdsResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` - // 接口请求是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s ListProcessInstanceIdsResponseBody) String() string { - return tea.Prettify(s) -} - -func (s ListProcessInstanceIdsResponseBody) GoString() string { - return s.String() -} - -func (s *ListProcessInstanceIdsResponseBody) SetResult(v *ListProcessInstanceIdsResponseBodyResult) *ListProcessInstanceIdsResponseBody { - s.Result = v - return s -} - -func (s *ListProcessInstanceIdsResponseBody) SetSuccess(v bool) *ListProcessInstanceIdsResponseBody { - s.Success = &v - return s -} - -type ListProcessInstanceIdsResponseBodyResult struct { - // 审批实例ID列表。 - List []*string `json:"list,omitempty" xml:"list,omitempty" type:"Repeated"` - // 表示下次查询的游标,当返回结果没有该字段时表示没有更多数据了。 - NextToken *string `json:"nextToken,omitempty" xml:"nextToken,omitempty"` -} - -func (s ListProcessInstanceIdsResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s ListProcessInstanceIdsResponseBodyResult) GoString() string { - return s.String() -} - -func (s *ListProcessInstanceIdsResponseBodyResult) SetList(v []*string) *ListProcessInstanceIdsResponseBodyResult { - s.List = v - return s -} - -func (s *ListProcessInstanceIdsResponseBodyResult) SetNextToken(v string) *ListProcessInstanceIdsResponseBodyResult { - s.NextToken = &v - return s -} - -type ListProcessInstanceIdsResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *ListProcessInstanceIdsResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s ListProcessInstanceIdsResponse) String() string { - return tea.Prettify(s) -} - -func (s ListProcessInstanceIdsResponse) GoString() string { - return s.String() -} - -func (s *ListProcessInstanceIdsResponse) SetHeaders(v map[string]*string) *ListProcessInstanceIdsResponse { - s.Headers = v - return s -} - -func (s *ListProcessInstanceIdsResponse) SetBody(v *ListProcessInstanceIdsResponseBody) *ListProcessInstanceIdsResponse { - s.Body = v - return s -} - -type ListTodoWorkRecordsHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s ListTodoWorkRecordsHeaders) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsHeaders) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsHeaders) SetCommonHeaders(v map[string]*string) *ListTodoWorkRecordsHeaders { - s.CommonHeaders = v - return s -} - -func (s *ListTodoWorkRecordsHeaders) SetXAcsDingtalkAccessToken(v string) *ListTodoWorkRecordsHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type ListTodoWorkRecordsRequest struct { - // 分页大小,最大值50。 - MaxResults *int32 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 分页游标。 - // - // 如果是首次调用,该参数传0。 - // 如果是非首次调用,该参数传上次调用时返回的nextToken。 - // - NextToken *int32 `json:"nextToken,omitempty" xml:"nextToken,omitempty"` - // 待办事项的状态: - // - // 0:待处理 - // - // -1:已经移除 - // - Status *int32 `json:"status,omitempty" xml:"status,omitempty"` - // 要查询的执行人userid。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s ListTodoWorkRecordsRequest) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsRequest) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsRequest) SetMaxResults(v int32) *ListTodoWorkRecordsRequest { - s.MaxResults = &v - return s -} - -func (s *ListTodoWorkRecordsRequest) SetNextToken(v int32) *ListTodoWorkRecordsRequest { - s.NextToken = &v - return s -} - -func (s *ListTodoWorkRecordsRequest) SetStatus(v int32) *ListTodoWorkRecordsRequest { - s.Status = &v - return s -} - -func (s *ListTodoWorkRecordsRequest) SetUserId(v string) *ListTodoWorkRecordsRequest { - s.UserId = &v - return s -} - -type ListTodoWorkRecordsResponseBody struct { - // 查询结果。 - Result *ListTodoWorkRecordsResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s ListTodoWorkRecordsResponseBody) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsResponseBody) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsResponseBody) SetResult(v *ListTodoWorkRecordsResponseBodyResult) *ListTodoWorkRecordsResponseBody { - s.Result = v - return s -} - -type ListTodoWorkRecordsResponseBodyResult struct { - // 待办事项列表。 - List []*ListTodoWorkRecordsResponseBodyResultList `json:"list,omitempty" xml:"list,omitempty" type:"Repeated"` - // 分页游标。不为空表示有数据。 - NextToken *int64 `json:"nextToken,omitempty" xml:"nextToken,omitempty"` -} - -func (s ListTodoWorkRecordsResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsResponseBodyResult) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsResponseBodyResult) SetList(v []*ListTodoWorkRecordsResponseBodyResultList) *ListTodoWorkRecordsResponseBodyResult { - s.List = v - return s -} - -func (s *ListTodoWorkRecordsResponseBodyResult) SetNextToken(v int64) *ListTodoWorkRecordsResponseBodyResult { - s.NextToken = &v - return s -} - -type ListTodoWorkRecordsResponseBodyResultList struct { - // 表单列表。 - Forms []*ListTodoWorkRecordsResponseBodyResultListForms `json:"forms,omitempty" xml:"forms,omitempty" type:"Repeated"` - // 实例ID。 - InstanceId *string `json:"instanceId,omitempty" xml:"instanceId,omitempty"` - // 待办任务ID。 - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` - // 待办标题。 - Title *string `json:"title,omitempty" xml:"title,omitempty"` - // 待办跳转链接。 - Url *string `json:"url,omitempty" xml:"url,omitempty"` -} - -func (s ListTodoWorkRecordsResponseBodyResultList) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsResponseBodyResultList) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsResponseBodyResultList) SetForms(v []*ListTodoWorkRecordsResponseBodyResultListForms) *ListTodoWorkRecordsResponseBodyResultList { - s.Forms = v - return s -} - -func (s *ListTodoWorkRecordsResponseBodyResultList) SetInstanceId(v string) *ListTodoWorkRecordsResponseBodyResultList { - s.InstanceId = &v - return s -} - -func (s *ListTodoWorkRecordsResponseBodyResultList) SetTaskId(v int64) *ListTodoWorkRecordsResponseBodyResultList { - s.TaskId = &v - return s -} - -func (s *ListTodoWorkRecordsResponseBodyResultList) SetTitle(v string) *ListTodoWorkRecordsResponseBodyResultList { - s.Title = &v - return s -} - -func (s *ListTodoWorkRecordsResponseBodyResultList) SetUrl(v string) *ListTodoWorkRecordsResponseBodyResultList { - s.Url = &v - return s -} - -type ListTodoWorkRecordsResponseBodyResultListForms struct { - // 表单内容。 - Content *string `json:"content,omitempty" xml:"content,omitempty"` - // 表单标题。 - Title *string `json:"title,omitempty" xml:"title,omitempty"` -} - -func (s ListTodoWorkRecordsResponseBodyResultListForms) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsResponseBodyResultListForms) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsResponseBodyResultListForms) SetContent(v string) *ListTodoWorkRecordsResponseBodyResultListForms { - s.Content = &v - return s -} - -func (s *ListTodoWorkRecordsResponseBodyResultListForms) SetTitle(v string) *ListTodoWorkRecordsResponseBodyResultListForms { - s.Title = &v - return s -} - -type ListTodoWorkRecordsResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *ListTodoWorkRecordsResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s ListTodoWorkRecordsResponse) String() string { - return tea.Prettify(s) -} - -func (s ListTodoWorkRecordsResponse) GoString() string { - return s.String() -} - -func (s *ListTodoWorkRecordsResponse) SetHeaders(v map[string]*string) *ListTodoWorkRecordsResponse { - s.Headers = v - return s -} - -func (s *ListTodoWorkRecordsResponse) SetBody(v *ListTodoWorkRecordsResponseBody) *ListTodoWorkRecordsResponse { - s.Body = v - return s -} - -type ListUserVisibleBpmsProcessesHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s ListUserVisibleBpmsProcessesHeaders) String() string { - return tea.Prettify(s) -} - -func (s ListUserVisibleBpmsProcessesHeaders) GoString() string { - return s.String() -} - -func (s *ListUserVisibleBpmsProcessesHeaders) SetCommonHeaders(v map[string]*string) *ListUserVisibleBpmsProcessesHeaders { - s.CommonHeaders = v - return s -} - -func (s *ListUserVisibleBpmsProcessesHeaders) SetXAcsDingtalkAccessToken(v string) *ListUserVisibleBpmsProcessesHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type ListUserVisibleBpmsProcessesRequest struct { - // 分页大小,最大可设置成100。 - MaxResults *int64 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 分页游标,从0开始。根据返回结果里的nextToken是否为空来判断是否还有下一页,且再次调用时设置成nextToken的最新值。 - NextToken *int64 `json:"nextToken,omitempty" xml:"nextToken,omitempty"` - // 要查询的员工的userid。不传表示查询企业下所有审批表单。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s ListUserVisibleBpmsProcessesRequest) String() string { - return tea.Prettify(s) -} - -func (s ListUserVisibleBpmsProcessesRequest) GoString() string { - return s.String() -} - -func (s *ListUserVisibleBpmsProcessesRequest) SetMaxResults(v int64) *ListUserVisibleBpmsProcessesRequest { - s.MaxResults = &v - return s -} - -func (s *ListUserVisibleBpmsProcessesRequest) SetNextToken(v int64) *ListUserVisibleBpmsProcessesRequest { - s.NextToken = &v - return s -} - -func (s *ListUserVisibleBpmsProcessesRequest) SetUserId(v string) *ListUserVisibleBpmsProcessesRequest { - s.UserId = &v - return s -} - -type ListUserVisibleBpmsProcessesResponseBody struct { - // 返回结果。 - Result *ListUserVisibleBpmsProcessesResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s ListUserVisibleBpmsProcessesResponseBody) String() string { - return tea.Prettify(s) -} - -func (s ListUserVisibleBpmsProcessesResponseBody) GoString() string { - return s.String() -} - -func (s *ListUserVisibleBpmsProcessesResponseBody) SetResult(v *ListUserVisibleBpmsProcessesResponseBodyResult) *ListUserVisibleBpmsProcessesResponseBody { - s.Result = v - return s -} - -type ListUserVisibleBpmsProcessesResponseBodyResult struct { - // 下一次分页调用的值,当返回结果里没有nextToken时,表示分页结束。 - NextToken *int64 `json:"nextToken,omitempty" xml:"nextToken,omitempty"` - // 可见表单列表。 - ProcessList []*ListUserVisibleBpmsProcessesResponseBodyResultProcessList `json:"processList,omitempty" xml:"processList,omitempty" type:"Repeated"` -} - -func (s ListUserVisibleBpmsProcessesResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s ListUserVisibleBpmsProcessesResponseBodyResult) GoString() string { - return s.String() -} - -func (s *ListUserVisibleBpmsProcessesResponseBodyResult) SetNextToken(v int64) *ListUserVisibleBpmsProcessesResponseBodyResult { - s.NextToken = &v - return s -} - -func (s *ListUserVisibleBpmsProcessesResponseBodyResult) SetProcessList(v []*ListUserVisibleBpmsProcessesResponseBodyResultProcessList) *ListUserVisibleBpmsProcessesResponseBodyResult { - s.ProcessList = v - return s -} - -type ListUserVisibleBpmsProcessesResponseBodyResultProcessList struct { - // 图标URL。 - IconUrl *string `json:"iconUrl,omitempty" xml:"iconUrl,omitempty"` - // 表单名称。 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 表单唯一标识。 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 表单URL。 - Url *string `json:"url,omitempty" xml:"url,omitempty"` -} - -func (s ListUserVisibleBpmsProcessesResponseBodyResultProcessList) String() string { - return tea.Prettify(s) -} - -func (s ListUserVisibleBpmsProcessesResponseBodyResultProcessList) GoString() string { - return s.String() -} - -func (s *ListUserVisibleBpmsProcessesResponseBodyResultProcessList) SetIconUrl(v string) *ListUserVisibleBpmsProcessesResponseBodyResultProcessList { - s.IconUrl = &v - return s -} - -func (s *ListUserVisibleBpmsProcessesResponseBodyResultProcessList) SetName(v string) *ListUserVisibleBpmsProcessesResponseBodyResultProcessList { - s.Name = &v - return s -} - -func (s *ListUserVisibleBpmsProcessesResponseBodyResultProcessList) SetProcessCode(v string) *ListUserVisibleBpmsProcessesResponseBodyResultProcessList { - s.ProcessCode = &v - return s -} - -func (s *ListUserVisibleBpmsProcessesResponseBodyResultProcessList) SetUrl(v string) *ListUserVisibleBpmsProcessesResponseBodyResultProcessList { - s.Url = &v - return s -} - -type ListUserVisibleBpmsProcessesResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *ListUserVisibleBpmsProcessesResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s ListUserVisibleBpmsProcessesResponse) String() string { - return tea.Prettify(s) -} - -func (s ListUserVisibleBpmsProcessesResponse) GoString() string { - return s.String() -} - -func (s *ListUserVisibleBpmsProcessesResponse) SetHeaders(v map[string]*string) *ListUserVisibleBpmsProcessesResponse { - s.Headers = v - return s -} - -func (s *ListUserVisibleBpmsProcessesResponse) SetBody(v *ListUserVisibleBpmsProcessesResponseBody) *ListUserVisibleBpmsProcessesResponse { - s.Body = v - return s -} - -type ProcessForecastHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s ProcessForecastHeaders) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastHeaders) GoString() string { - return s.String() -} - -func (s *ProcessForecastHeaders) SetCommonHeaders(v map[string]*string) *ProcessForecastHeaders { - s.CommonHeaders = v - return s -} - -func (s *ProcessForecastHeaders) SetXAcsDingtalkAccessToken(v string) *ProcessForecastHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type ProcessForecastRequest struct { - // 部门ID - DeptId *int32 `json:"deptId,omitempty" xml:"deptId,omitempty"` - // 表单数据内容,控件列表 - FormComponentValues []*ProcessForecastRequestFormComponentValues `json:"formComponentValues,omitempty" xml:"formComponentValues,omitempty" type:"Repeated"` - // 审批流的唯一码 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 审批发起人的userId - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s ProcessForecastRequest) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastRequest) GoString() string { - return s.String() -} - -func (s *ProcessForecastRequest) SetDeptId(v int32) *ProcessForecastRequest { - s.DeptId = &v - return s -} - -func (s *ProcessForecastRequest) SetFormComponentValues(v []*ProcessForecastRequestFormComponentValues) *ProcessForecastRequest { - s.FormComponentValues = v - return s -} - -func (s *ProcessForecastRequest) SetProcessCode(v string) *ProcessForecastRequest { - s.ProcessCode = &v - return s -} - -func (s *ProcessForecastRequest) SetUserId(v string) *ProcessForecastRequest { - s.UserId = &v - return s -} - -type ProcessForecastRequestFormComponentValues struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 控件类型 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - Details []*ProcessForecastRequestFormComponentValuesDetails `json:"details,omitempty" xml:"details,omitempty" type:"Repeated"` - // 控件扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s ProcessForecastRequestFormComponentValues) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastRequestFormComponentValues) GoString() string { - return s.String() -} - -func (s *ProcessForecastRequestFormComponentValues) SetBizAlias(v string) *ProcessForecastRequestFormComponentValues { - s.BizAlias = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValues) SetComponentType(v string) *ProcessForecastRequestFormComponentValues { - s.ComponentType = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValues) SetDetails(v []*ProcessForecastRequestFormComponentValuesDetails) *ProcessForecastRequestFormComponentValues { - s.Details = v - return s -} - -func (s *ProcessForecastRequestFormComponentValues) SetExtValue(v string) *ProcessForecastRequestFormComponentValues { - s.ExtValue = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValues) SetId(v string) *ProcessForecastRequestFormComponentValues { - s.Id = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValues) SetName(v string) *ProcessForecastRequestFormComponentValues { - s.Name = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValues) SetValue(v string) *ProcessForecastRequestFormComponentValues { - s.Value = &v - return s -} - -type ProcessForecastRequestFormComponentValuesDetails struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - Details []*ProcessForecastRequestFormComponentValuesDetailsDetails `json:"details,omitempty" xml:"details,omitempty" type:"Repeated"` - // 控件扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s ProcessForecastRequestFormComponentValuesDetails) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastRequestFormComponentValuesDetails) GoString() string { - return s.String() -} - -func (s *ProcessForecastRequestFormComponentValuesDetails) SetBizAlias(v string) *ProcessForecastRequestFormComponentValuesDetails { - s.BizAlias = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetails) SetDetails(v []*ProcessForecastRequestFormComponentValuesDetailsDetails) *ProcessForecastRequestFormComponentValuesDetails { - s.Details = v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetails) SetExtValue(v string) *ProcessForecastRequestFormComponentValuesDetails { - s.ExtValue = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetails) SetId(v string) *ProcessForecastRequestFormComponentValuesDetails { - s.Id = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetails) SetName(v string) *ProcessForecastRequestFormComponentValuesDetails { - s.Name = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetails) SetValue(v string) *ProcessForecastRequestFormComponentValuesDetails { - s.Value = &v - return s -} - -type ProcessForecastRequestFormComponentValuesDetailsDetails struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - // 控件扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s ProcessForecastRequestFormComponentValuesDetailsDetails) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastRequestFormComponentValuesDetailsDetails) GoString() string { - return s.String() -} - -func (s *ProcessForecastRequestFormComponentValuesDetailsDetails) SetBizAlias(v string) *ProcessForecastRequestFormComponentValuesDetailsDetails { - s.BizAlias = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetailsDetails) SetComponentType(v string) *ProcessForecastRequestFormComponentValuesDetailsDetails { - s.ComponentType = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetailsDetails) SetExtValue(v string) *ProcessForecastRequestFormComponentValuesDetailsDetails { - s.ExtValue = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetailsDetails) SetId(v string) *ProcessForecastRequestFormComponentValuesDetailsDetails { - s.Id = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetailsDetails) SetName(v string) *ProcessForecastRequestFormComponentValuesDetailsDetails { - s.Name = &v - return s -} - -func (s *ProcessForecastRequestFormComponentValuesDetailsDetails) SetValue(v string) *ProcessForecastRequestFormComponentValuesDetailsDetails { - s.Value = &v - return s -} - -type ProcessForecastResponseBody struct { - // 返回结果 - Result *ProcessForecastResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s ProcessForecastResponseBody) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBody) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBody) SetResult(v *ProcessForecastResponseBodyResult) *ProcessForecastResponseBody { - s.Result = v - return s -} - -type ProcessForecastResponseBodyResult struct { - // 是否预测成功 - IsForecastSuccess *bool `json:"isForecastSuccess,omitempty" xml:"isForecastSuccess,omitempty"` - // 是否静态流程 - IsStaticWorkflow *bool `json:"isStaticWorkflow,omitempty" xml:"isStaticWorkflow,omitempty"` - // 流程 code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 流程 id - ProcessId *int64 `json:"processId,omitempty" xml:"processId,omitempty"` - // 用户 id - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` - WorkflowActivityRules []*ProcessForecastResponseBodyResultWorkflowActivityRules `json:"workflowActivityRules,omitempty" xml:"workflowActivityRules,omitempty" type:"Repeated"` - WorkflowForecastNodes []*ProcessForecastResponseBodyResultWorkflowForecastNodes `json:"workflowForecastNodes,omitempty" xml:"workflowForecastNodes,omitempty" type:"Repeated"` -} - -func (s ProcessForecastResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResult) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResult) SetIsForecastSuccess(v bool) *ProcessForecastResponseBodyResult { - s.IsForecastSuccess = &v - return s -} - -func (s *ProcessForecastResponseBodyResult) SetIsStaticWorkflow(v bool) *ProcessForecastResponseBodyResult { - s.IsStaticWorkflow = &v - return s -} - -func (s *ProcessForecastResponseBodyResult) SetProcessCode(v string) *ProcessForecastResponseBodyResult { - s.ProcessCode = &v - return s -} - -func (s *ProcessForecastResponseBodyResult) SetProcessId(v int64) *ProcessForecastResponseBodyResult { - s.ProcessId = &v - return s -} - -func (s *ProcessForecastResponseBodyResult) SetUserId(v string) *ProcessForecastResponseBodyResult { - s.UserId = &v - return s -} - -func (s *ProcessForecastResponseBodyResult) SetWorkflowActivityRules(v []*ProcessForecastResponseBodyResultWorkflowActivityRules) *ProcessForecastResponseBodyResult { - s.WorkflowActivityRules = v - return s -} - -func (s *ProcessForecastResponseBodyResult) SetWorkflowForecastNodes(v []*ProcessForecastResponseBodyResultWorkflowForecastNodes) *ProcessForecastResponseBodyResult { - s.WorkflowForecastNodes = v - return s -} - -type ProcessForecastResponseBodyResultWorkflowActivityRules struct { - // 节点 id - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // 节点名称 - ActivityName *string `json:"activityName,omitempty" xml:"activityName,omitempty"` - // 规则类型 - ActivityType *string `json:"activityType,omitempty" xml:"activityType,omitempty"` - // 是否自选审批节点 - IsTargetSelect *bool `json:"isTargetSelect,omitempty" xml:"isTargetSelect,omitempty"` - // 流程中前一个节点的 id - PrevActivityId *string `json:"prevActivityId,omitempty" xml:"prevActivityId,omitempty"` - // 节点操作人信息 - WorkflowActor *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor `json:"workflowActor,omitempty" xml:"workflowActor,omitempty" type:"Struct"` -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRules) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRules) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRules) SetActivityId(v string) *ProcessForecastResponseBodyResultWorkflowActivityRules { - s.ActivityId = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRules) SetActivityName(v string) *ProcessForecastResponseBodyResultWorkflowActivityRules { - s.ActivityName = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRules) SetActivityType(v string) *ProcessForecastResponseBodyResultWorkflowActivityRules { - s.ActivityType = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRules) SetIsTargetSelect(v bool) *ProcessForecastResponseBodyResultWorkflowActivityRules { - s.IsTargetSelect = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRules) SetPrevActivityId(v string) *ProcessForecastResponseBodyResultWorkflowActivityRules { - s.PrevActivityId = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRules) SetWorkflowActor(v *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) *ProcessForecastResponseBodyResultWorkflowActivityRules { - s.WorkflowActor = v - return s -} - -type ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor struct { - // 节点激活类型 - ActorActivateType *string `json:"actorActivateType,omitempty" xml:"actorActivateType,omitempty"` - // 节点操作人 key - ActorKey *string `json:"actorKey,omitempty" xml:"actorKey,omitempty"` - // 节点操作人选择范围 - ActorSelectionRange *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange `json:"actorSelectionRange,omitempty" xml:"actorSelectionRange,omitempty" type:"Struct"` - // 节点操作人选择范围类型 - ActorSelectionType *string `json:"actorSelectionType,omitempty" xml:"actorSelectionType,omitempty"` - // 节点操作人类型 - ActorType *string `json:"actorType,omitempty" xml:"actorType,omitempty"` - // 是否允许多选,还是仅允许选一人 - AllowedMulti *bool `json:"allowedMulti,omitempty" xml:"allowedMulti,omitempty"` - // 节点审批方式 - ApprovalMethod *string `json:"approvalMethod,omitempty" xml:"approvalMethod,omitempty"` - // 节点审批类型 - ApprovalType *string `json:"approvalType,omitempty" xml:"approvalType,omitempty"` - // 该审批人节点在发起审批时是否必填 - Required *bool `json:"required,omitempty" xml:"required,omitempty"` -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetActorActivateType(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ActorActivateType = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetActorKey(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ActorKey = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetActorSelectionRange(v *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ActorSelectionRange = v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetActorSelectionType(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ActorSelectionType = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetActorType(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ActorType = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetAllowedMulti(v bool) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.AllowedMulti = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetApprovalMethod(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ApprovalMethod = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetApprovalType(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.ApprovalType = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor) SetRequired(v bool) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActor { - s.Required = &v - return s -} - -type ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange struct { - // 审批指定成员 - Approvals []*ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals `json:"approvals,omitempty" xml:"approvals,omitempty" type:"Repeated"` - // 审批指定角色 - Labels []*ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels `json:"labels,omitempty" xml:"labels,omitempty" type:"Repeated"` -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange) SetApprovals(v []*ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange { - s.Approvals = v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange) SetLabels(v []*ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRange { - s.Labels = v - return s -} - -type ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals struct { - // 员工姓名 - UserName *string `json:"userName,omitempty" xml:"userName,omitempty"` - // 员工 userId - WorkNo *string `json:"workNo,omitempty" xml:"workNo,omitempty"` -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals) SetUserName(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals { - s.UserName = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals) SetWorkNo(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeApprovals { - s.WorkNo = &v - return s -} - -type ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels struct { - // 角色名字 - LabelNames *string `json:"labelNames,omitempty" xml:"labelNames,omitempty"` - // 角色 id - Labels *string `json:"labels,omitempty" xml:"labels,omitempty"` -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels) SetLabelNames(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels { - s.LabelNames = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels) SetLabels(v string) *ProcessForecastResponseBodyResultWorkflowActivityRulesWorkflowActorActorSelectionRangeLabels { - s.Labels = &v - return s -} - -type ProcessForecastResponseBodyResultWorkflowForecastNodes struct { - // 节点 id - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // 节点出线 id - OutId *string `json:"outId,omitempty" xml:"outId,omitempty"` -} - -func (s ProcessForecastResponseBodyResultWorkflowForecastNodes) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponseBodyResultWorkflowForecastNodes) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponseBodyResultWorkflowForecastNodes) SetActivityId(v string) *ProcessForecastResponseBodyResultWorkflowForecastNodes { - s.ActivityId = &v - return s -} - -func (s *ProcessForecastResponseBodyResultWorkflowForecastNodes) SetOutId(v string) *ProcessForecastResponseBodyResultWorkflowForecastNodes { - s.OutId = &v - return s -} - -type ProcessForecastResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *ProcessForecastResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s ProcessForecastResponse) String() string { - return tea.Prettify(s) -} - -func (s ProcessForecastResponse) GoString() string { - return s.String() -} - -func (s *ProcessForecastResponse) SetHeaders(v map[string]*string) *ProcessForecastResponse { - s.Headers = v - return s -} - -func (s *ProcessForecastResponse) SetBody(v *ProcessForecastResponseBody) *ProcessForecastResponse { - s.Body = v - return s -} - -type QueryAllFormInstancesHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QueryAllFormInstancesHeaders) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesHeaders) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesHeaders) SetCommonHeaders(v map[string]*string) *QueryAllFormInstancesHeaders { - s.CommonHeaders = v - return s -} - -func (s *QueryAllFormInstancesHeaders) SetXAcsDingtalkAccessToken(v string) *QueryAllFormInstancesHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QueryAllFormInstancesRequest struct { - // 应用搭建id - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 表单模板id - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` - // 翻页size - MaxResults *int32 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 分页游标,第一次调用传空或者null - NextToken *string `json:"nextToken,omitempty" xml:"nextToken,omitempty"` -} - -func (s QueryAllFormInstancesRequest) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesRequest) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesRequest) SetAppUuid(v string) *QueryAllFormInstancesRequest { - s.AppUuid = &v - return s -} - -func (s *QueryAllFormInstancesRequest) SetFormCode(v string) *QueryAllFormInstancesRequest { - s.FormCode = &v - return s -} - -func (s *QueryAllFormInstancesRequest) SetMaxResults(v int32) *QueryAllFormInstancesRequest { - s.MaxResults = &v - return s -} - -func (s *QueryAllFormInstancesRequest) SetNextToken(v string) *QueryAllFormInstancesRequest { - s.NextToken = &v - return s -} - -type QueryAllFormInstancesResponseBody struct { - // 分页结果 - Result *QueryAllFormInstancesResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s QueryAllFormInstancesResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesResponseBody) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesResponseBody) SetResult(v *QueryAllFormInstancesResponseBodyResult) *QueryAllFormInstancesResponseBody { - s.Result = v - return s -} - -type QueryAllFormInstancesResponseBodyResult struct { - // 是否有更多数据 - HasMore *bool `json:"hasMore,omitempty" xml:"hasMore,omitempty"` - // 分页大小 - MaxResults *int64 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 下一页的游标 - NextToken *string `json:"nextToken,omitempty" xml:"nextToken,omitempty"` - // 表单列表 - Values []*QueryAllFormInstancesResponseBodyResultValues `json:"values,omitempty" xml:"values,omitempty" type:"Repeated"` -} - -func (s QueryAllFormInstancesResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesResponseBodyResult) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesResponseBodyResult) SetHasMore(v bool) *QueryAllFormInstancesResponseBodyResult { - s.HasMore = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResult) SetMaxResults(v int64) *QueryAllFormInstancesResponseBodyResult { - s.MaxResults = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResult) SetNextToken(v string) *QueryAllFormInstancesResponseBodyResult { - s.NextToken = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResult) SetValues(v []*QueryAllFormInstancesResponseBodyResultValues) *QueryAllFormInstancesResponseBodyResult { - s.Values = v - return s -} - -type QueryAllFormInstancesResponseBodyResultValues struct { - // 应用搭建id - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 扩展信息 - Attributes map[string]interface{} `json:"attributes,omitempty" xml:"attributes,omitempty"` - // 创建时间 - CreateTimestamp *int64 `json:"createTimestamp,omitempty" xml:"createTimestamp,omitempty"` - // 创建人 - Creator *string `json:"creator,omitempty" xml:"creator,omitempty"` - // 表单模板code - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` - // 表单实例数据 - FormInstDataList []*QueryAllFormInstancesResponseBodyResultValuesFormInstDataList `json:"formInstDataList,omitempty" xml:"formInstDataList,omitempty" type:"Repeated"` - // 表单实例id - FormInstanceId *string `json:"formInstanceId,omitempty" xml:"formInstanceId,omitempty"` - // 修改人 - Modifier *string `json:"modifier,omitempty" xml:"modifier,omitempty"` - // 修改时间 - ModifyTimestamp *int64 `json:"modifyTimestamp,omitempty" xml:"modifyTimestamp,omitempty"` - // 外部业务编码 - OutBizCode *string `json:"outBizCode,omitempty" xml:"outBizCode,omitempty"` - // 外部实例编码 - OutInstanceId *string `json:"outInstanceId,omitempty" xml:"outInstanceId,omitempty"` - // 标题 - Title *string `json:"title,omitempty" xml:"title,omitempty"` -} - -func (s QueryAllFormInstancesResponseBodyResultValues) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesResponseBodyResultValues) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetAppUuid(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.AppUuid = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetAttributes(v map[string]interface{}) *QueryAllFormInstancesResponseBodyResultValues { - s.Attributes = v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetCreateTimestamp(v int64) *QueryAllFormInstancesResponseBodyResultValues { - s.CreateTimestamp = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetCreator(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.Creator = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetFormCode(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.FormCode = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetFormInstDataList(v []*QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) *QueryAllFormInstancesResponseBodyResultValues { - s.FormInstDataList = v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetFormInstanceId(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.FormInstanceId = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetModifier(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.Modifier = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetModifyTimestamp(v int64) *QueryAllFormInstancesResponseBodyResultValues { - s.ModifyTimestamp = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetOutBizCode(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.OutBizCode = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetOutInstanceId(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.OutInstanceId = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValues) SetTitle(v string) *QueryAllFormInstancesResponseBodyResultValues { - s.Title = &v - return s -} - -type QueryAllFormInstancesResponseBodyResultValuesFormInstDataList struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 控件类型 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - // 表单控件扩展数据 - ExtendValue *string `json:"extendValue,omitempty" xml:"extendValue,omitempty"` - // 控件唯一id - Key *string `json:"key,omitempty" xml:"key,omitempty"` - // 控件名称 - Label *string `json:"label,omitempty" xml:"label,omitempty"` - // 控件填写的数据 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) SetBizAlias(v string) *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList { - s.BizAlias = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) SetComponentType(v string) *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList { - s.ComponentType = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) SetExtendValue(v string) *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList { - s.ExtendValue = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) SetKey(v string) *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList { - s.Key = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) SetLabel(v string) *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList { - s.Label = &v - return s -} - -func (s *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList) SetValue(v string) *QueryAllFormInstancesResponseBodyResultValuesFormInstDataList { - s.Value = &v - return s -} - -type QueryAllFormInstancesResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QueryAllFormInstancesResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QueryAllFormInstancesResponse) String() string { - return tea.Prettify(s) -} - -func (s QueryAllFormInstancesResponse) GoString() string { - return s.String() -} - -func (s *QueryAllFormInstancesResponse) SetHeaders(v map[string]*string) *QueryAllFormInstancesResponse { - s.Headers = v - return s -} - -func (s *QueryAllFormInstancesResponse) SetBody(v *QueryAllFormInstancesResponseBody) *QueryAllFormInstancesResponse { - s.Body = v - return s -} - -type QueryAllProcessInstancesHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QueryAllProcessInstancesHeaders) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesHeaders) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesHeaders) SetCommonHeaders(v map[string]*string) *QueryAllProcessInstancesHeaders { - s.CommonHeaders = v - return s -} - -func (s *QueryAllProcessInstancesHeaders) SetXAcsDingtalkAccessToken(v string) *QueryAllProcessInstancesHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QueryAllProcessInstancesRequest struct { - // 应用编码 - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 结束时间 - EndTimeInMills *int64 `json:"endTimeInMills,omitempty" xml:"endTimeInMills,omitempty"` - // 分页大小 - MaxResults *int64 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 分页起始值 - NextToken *string `json:"nextToken,omitempty" xml:"nextToken,omitempty"` - // 模板编码 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 开始时间 - StartTimeInMills *int64 `json:"startTimeInMills,omitempty" xml:"startTimeInMills,omitempty"` -} - -func (s QueryAllProcessInstancesRequest) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesRequest) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesRequest) SetAppUuid(v string) *QueryAllProcessInstancesRequest { - s.AppUuid = &v - return s -} - -func (s *QueryAllProcessInstancesRequest) SetEndTimeInMills(v int64) *QueryAllProcessInstancesRequest { - s.EndTimeInMills = &v - return s -} - -func (s *QueryAllProcessInstancesRequest) SetMaxResults(v int64) *QueryAllProcessInstancesRequest { - s.MaxResults = &v - return s -} - -func (s *QueryAllProcessInstancesRequest) SetNextToken(v string) *QueryAllProcessInstancesRequest { - s.NextToken = &v - return s -} - -func (s *QueryAllProcessInstancesRequest) SetProcessCode(v string) *QueryAllProcessInstancesRequest { - s.ProcessCode = &v - return s -} - -func (s *QueryAllProcessInstancesRequest) SetStartTimeInMills(v int64) *QueryAllProcessInstancesRequest { - s.StartTimeInMills = &v - return s -} - -type QueryAllProcessInstancesResponseBody struct { - // result - Result *QueryAllProcessInstancesResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s QueryAllProcessInstancesResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBody) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBody) SetResult(v *QueryAllProcessInstancesResponseBodyResult) *QueryAllProcessInstancesResponseBody { - s.Result = v - return s -} - -type QueryAllProcessInstancesResponseBodyResult struct { - // 是否有更多数据 - HasMore *bool `json:"hasMore,omitempty" xml:"hasMore,omitempty"` - List []*QueryAllProcessInstancesResponseBodyResultList `json:"list,omitempty" xml:"list,omitempty" type:"Repeated"` - // 总数 - MaxResults *int64 `json:"maxResults,omitempty" xml:"maxResults,omitempty"` - // 下次获取数据的游标 - NextToken *string `json:"nextToken,omitempty" xml:"nextToken,omitempty"` -} - -func (s QueryAllProcessInstancesResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBodyResult) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBodyResult) SetHasMore(v bool) *QueryAllProcessInstancesResponseBodyResult { - s.HasMore = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResult) SetList(v []*QueryAllProcessInstancesResponseBodyResultList) *QueryAllProcessInstancesResponseBodyResult { - s.List = v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResult) SetMaxResults(v int64) *QueryAllProcessInstancesResponseBodyResult { - s.MaxResults = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResult) SetNextToken(v string) *QueryAllProcessInstancesResponseBodyResult { - s.NextToken = &v - return s -} - -type QueryAllProcessInstancesResponseBodyResultList struct { - // 附属单信息 - AttachedProcessInstanceIds *string `json:"attachedProcessInstanceIds,omitempty" xml:"attachedProcessInstanceIds,omitempty"` - // 审批单编号 - BusinessId *string `json:"businessId,omitempty" xml:"businessId,omitempty"` - // 审批单创建时间 - CreateTime *int64 `json:"createTime,omitempty" xml:"createTime,omitempty"` - // 审批结束时间 - FinishTime *int64 `json:"finishTime,omitempty" xml:"finishTime,omitempty"` - FormComponentValues []*QueryAllProcessInstancesResponseBodyResultListFormComponentValues `json:"formComponentValues,omitempty" xml:"formComponentValues,omitempty" type:"Repeated"` - // 主单实例Id - MainProcessInstanceId *string `json:"mainProcessInstanceId,omitempty" xml:"mainProcessInstanceId,omitempty"` - // 审批单操作记录 - OperationRecords []*QueryAllProcessInstancesResponseBodyResultListOperationRecords `json:"operationRecords,omitempty" xml:"operationRecords,omitempty" type:"Repeated"` - // 发起人部门id - OriginatorDeptId *string `json:"originatorDeptId,omitempty" xml:"originatorDeptId,omitempty"` - // 发起者userId - OriginatorUserid *string `json:"originatorUserid,omitempty" xml:"originatorUserid,omitempty"` - // 流程实例ID - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 审批结果 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 审批单状态 - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // 任务列表 - Tasks []*QueryAllProcessInstancesResponseBodyResultListTasks `json:"tasks,omitempty" xml:"tasks,omitempty" type:"Repeated"` - // 审批单标题 - Title *string `json:"title,omitempty" xml:"title,omitempty"` -} - -func (s QueryAllProcessInstancesResponseBodyResultList) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBodyResultList) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetAttachedProcessInstanceIds(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.AttachedProcessInstanceIds = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetBusinessId(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.BusinessId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetCreateTime(v int64) *QueryAllProcessInstancesResponseBodyResultList { - s.CreateTime = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetFinishTime(v int64) *QueryAllProcessInstancesResponseBodyResultList { - s.FinishTime = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetFormComponentValues(v []*QueryAllProcessInstancesResponseBodyResultListFormComponentValues) *QueryAllProcessInstancesResponseBodyResultList { - s.FormComponentValues = v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetMainProcessInstanceId(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.MainProcessInstanceId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetOperationRecords(v []*QueryAllProcessInstancesResponseBodyResultListOperationRecords) *QueryAllProcessInstancesResponseBodyResultList { - s.OperationRecords = v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetOriginatorDeptId(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.OriginatorDeptId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetOriginatorUserid(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.OriginatorUserid = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetProcessInstanceId(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.ProcessInstanceId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetResult(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.Result = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetStatus(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.Status = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetTasks(v []*QueryAllProcessInstancesResponseBodyResultListTasks) *QueryAllProcessInstancesResponseBodyResultList { - s.Tasks = v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultList) SetTitle(v string) *QueryAllProcessInstancesResponseBodyResultList { - s.Title = &v - return s -} - -type QueryAllProcessInstancesResponseBodyResultListFormComponentValues struct { - // 控件扩展数据 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件数据 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s QueryAllProcessInstancesResponseBodyResultListFormComponentValues) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBodyResultListFormComponentValues) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBodyResultListFormComponentValues) SetExtValue(v string) *QueryAllProcessInstancesResponseBodyResultListFormComponentValues { - s.ExtValue = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListFormComponentValues) SetId(v string) *QueryAllProcessInstancesResponseBodyResultListFormComponentValues { - s.Id = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListFormComponentValues) SetName(v string) *QueryAllProcessInstancesResponseBodyResultListFormComponentValues { - s.Name = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListFormComponentValues) SetValue(v string) *QueryAllProcessInstancesResponseBodyResultListFormComponentValues { - s.Value = &v - return s -} - -type QueryAllProcessInstancesResponseBodyResultListOperationRecords struct { - // 评论附件 - Attachments []*QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments `json:"attachments,omitempty" xml:"attachments,omitempty" type:"Repeated"` - // 操作类型 - OperationType *string `json:"operationType,omitempty" xml:"operationType,omitempty"` - // 评论 - Remark *string `json:"remark,omitempty" xml:"remark,omitempty"` - // 操作结果 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 操作时间戳 - Timestamp *int64 `json:"timestamp,omitempty" xml:"timestamp,omitempty"` - // 操作人staffId - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s QueryAllProcessInstancesResponseBodyResultListOperationRecords) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBodyResultListOperationRecords) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecords) SetAttachments(v []*QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) *QueryAllProcessInstancesResponseBodyResultListOperationRecords { - s.Attachments = v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecords) SetOperationType(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecords { - s.OperationType = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecords) SetRemark(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecords { - s.Remark = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecords) SetResult(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecords { - s.Result = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecords) SetTimestamp(v int64) *QueryAllProcessInstancesResponseBodyResultListOperationRecords { - s.Timestamp = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecords) SetUserId(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecords { - s.UserId = &v - return s -} - -type QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments struct { - // 附件钉盘id - FileId *string `json:"fileId,omitempty" xml:"fileId,omitempty"` - // 附件名称 - FileName *string `json:"fileName,omitempty" xml:"fileName,omitempty"` - // 文件大小 - FileSize *string `json:"fileSize,omitempty" xml:"fileSize,omitempty"` - // 文件类型 - FileType *string `json:"fileType,omitempty" xml:"fileType,omitempty"` -} - -func (s QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) SetFileId(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments { - s.FileId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) SetFileName(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments { - s.FileName = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) SetFileSize(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments { - s.FileSize = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments) SetFileType(v string) *QueryAllProcessInstancesResponseBodyResultListOperationRecordsAttachments { - s.FileType = &v - return s -} - -type QueryAllProcessInstancesResponseBodyResultListTasks struct { - // 节点id - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // 任务创建时间戳 - CreateTimestamp *int64 `json:"createTimestamp,omitempty" xml:"createTimestamp,omitempty"` - // 任务结束时间戳 - FinishTimestamp *int64 `json:"finishTimestamp,omitempty" xml:"finishTimestamp,omitempty"` - // 任务结果 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 任务状态 - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // 任务Id - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` - // 任务处理人 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s QueryAllProcessInstancesResponseBodyResultListTasks) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponseBodyResultListTasks) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetActivityId(v string) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.ActivityId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetCreateTimestamp(v int64) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.CreateTimestamp = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetFinishTimestamp(v int64) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.FinishTimestamp = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetResult(v string) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.Result = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetStatus(v string) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.Status = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetTaskId(v int64) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.TaskId = &v - return s -} - -func (s *QueryAllProcessInstancesResponseBodyResultListTasks) SetUserId(v string) *QueryAllProcessInstancesResponseBodyResultListTasks { - s.UserId = &v - return s -} - -type QueryAllProcessInstancesResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QueryAllProcessInstancesResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QueryAllProcessInstancesResponse) String() string { - return tea.Prettify(s) -} - -func (s QueryAllProcessInstancesResponse) GoString() string { - return s.String() -} - -func (s *QueryAllProcessInstancesResponse) SetHeaders(v map[string]*string) *QueryAllProcessInstancesResponse { - s.Headers = v - return s -} - -func (s *QueryAllProcessInstancesResponse) SetBody(v *QueryAllProcessInstancesResponseBody) *QueryAllProcessInstancesResponse { - s.Body = v - return s -} - -type QueryFormByBizTypeHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QueryFormByBizTypeHeaders) String() string { - return tea.Prettify(s) -} - -func (s QueryFormByBizTypeHeaders) GoString() string { - return s.String() -} - -func (s *QueryFormByBizTypeHeaders) SetCommonHeaders(v map[string]*string) *QueryFormByBizTypeHeaders { - s.CommonHeaders = v - return s -} - -func (s *QueryFormByBizTypeHeaders) SetXAcsDingtalkAccessToken(v string) *QueryFormByBizTypeHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QueryFormByBizTypeRequest struct { - // 应用搭建id - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 表单业务标识 - BizTypes []*string `json:"bizTypes,omitempty" xml:"bizTypes,omitempty" type:"Repeated"` -} - -func (s QueryFormByBizTypeRequest) String() string { - return tea.Prettify(s) -} - -func (s QueryFormByBizTypeRequest) GoString() string { - return s.String() -} - -func (s *QueryFormByBizTypeRequest) SetAppUuid(v string) *QueryFormByBizTypeRequest { - s.AppUuid = &v - return s -} - -func (s *QueryFormByBizTypeRequest) SetBizTypes(v []*string) *QueryFormByBizTypeRequest { - s.BizTypes = v - return s -} - -type QueryFormByBizTypeResponseBody struct { - // 模板列表 - Result []*QueryFormByBizTypeResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s QueryFormByBizTypeResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QueryFormByBizTypeResponseBody) GoString() string { - return s.String() -} - -func (s *QueryFormByBizTypeResponseBody) SetResult(v []*QueryFormByBizTypeResponseBodyResult) *QueryFormByBizTypeResponseBody { - s.Result = v - return s -} - -type QueryFormByBizTypeResponseBodyResult struct { - // 表单类型,0为流程表单,1为数据表单 - AppType *int32 `json:"appType,omitempty" xml:"appType,omitempty"` - // 应用搭建id - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 表单控件描述 - Content *string `json:"content,omitempty" xml:"content,omitempty"` - // 创建时间 - CreateTime *int64 `json:"createTime,omitempty" xml:"createTime,omitempty"` - // 创建人 - Creator *string `json:"creator,omitempty" xml:"creator,omitempty"` - // 模板code - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` - // 表单uuid - FormUuid *string `json:"formUuid,omitempty" xml:"formUuid,omitempty"` - // 模板描述 - Memo *string `json:"memo,omitempty" xml:"memo,omitempty"` - // 修改时间 - ModifedTime *int64 `json:"modifedTime,omitempty" xml:"modifedTime,omitempty"` - // 模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 数据归属id - OwnerId *string `json:"ownerId,omitempty" xml:"ownerId,omitempty"` - // 模板状态 - Status *string `json:"status,omitempty" xml:"status,omitempty"` -} - -func (s QueryFormByBizTypeResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s QueryFormByBizTypeResponseBodyResult) GoString() string { - return s.String() -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetAppType(v int32) *QueryFormByBizTypeResponseBodyResult { - s.AppType = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetAppUuid(v string) *QueryFormByBizTypeResponseBodyResult { - s.AppUuid = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetBizType(v string) *QueryFormByBizTypeResponseBodyResult { - s.BizType = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetContent(v string) *QueryFormByBizTypeResponseBodyResult { - s.Content = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetCreateTime(v int64) *QueryFormByBizTypeResponseBodyResult { - s.CreateTime = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetCreator(v string) *QueryFormByBizTypeResponseBodyResult { - s.Creator = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetFormCode(v string) *QueryFormByBizTypeResponseBodyResult { - s.FormCode = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetFormUuid(v string) *QueryFormByBizTypeResponseBodyResult { - s.FormUuid = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetMemo(v string) *QueryFormByBizTypeResponseBodyResult { - s.Memo = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetModifedTime(v int64) *QueryFormByBizTypeResponseBodyResult { - s.ModifedTime = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetName(v string) *QueryFormByBizTypeResponseBodyResult { - s.Name = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetOwnerId(v string) *QueryFormByBizTypeResponseBodyResult { - s.OwnerId = &v - return s -} - -func (s *QueryFormByBizTypeResponseBodyResult) SetStatus(v string) *QueryFormByBizTypeResponseBodyResult { - s.Status = &v - return s -} - -type QueryFormByBizTypeResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QueryFormByBizTypeResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QueryFormByBizTypeResponse) String() string { - return tea.Prettify(s) -} - -func (s QueryFormByBizTypeResponse) GoString() string { - return s.String() -} - -func (s *QueryFormByBizTypeResponse) SetHeaders(v map[string]*string) *QueryFormByBizTypeResponse { - s.Headers = v - return s -} - -func (s *QueryFormByBizTypeResponse) SetBody(v *QueryFormByBizTypeResponseBody) *QueryFormByBizTypeResponse { - s.Body = v - return s -} - -type QueryFormInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QueryFormInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s QueryFormInstanceHeaders) GoString() string { - return s.String() -} - -func (s *QueryFormInstanceHeaders) SetCommonHeaders(v map[string]*string) *QueryFormInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *QueryFormInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *QueryFormInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QueryFormInstanceRequest struct { - // 应用搭建id - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 表单模板Code - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` - // 表单实例id - FormInstanceId *string `json:"formInstanceId,omitempty" xml:"formInstanceId,omitempty"` -} - -func (s QueryFormInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s QueryFormInstanceRequest) GoString() string { - return s.String() -} - -func (s *QueryFormInstanceRequest) SetAppUuid(v string) *QueryFormInstanceRequest { - s.AppUuid = &v - return s -} - -func (s *QueryFormInstanceRequest) SetFormCode(v string) *QueryFormInstanceRequest { - s.FormCode = &v - return s -} - -func (s *QueryFormInstanceRequest) SetFormInstanceId(v string) *QueryFormInstanceRequest { - s.FormInstanceId = &v - return s -} - -type QueryFormInstanceResponseBody struct { - // 应用搭建id - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 扩展信息 - Attributes map[string]interface{} `json:"attributes,omitempty" xml:"attributes,omitempty"` - // 实例创建时间戳 - CreateTimestamp *int64 `json:"createTimestamp,omitempty" xml:"createTimestamp,omitempty"` - // 创建人 - Creator *string `json:"creator,omitempty" xml:"creator,omitempty"` - // 表单模板id - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` - // 表单数据 - FormInstDataList []*QueryFormInstanceResponseBodyFormInstDataList `json:"formInstDataList,omitempty" xml:"formInstDataList,omitempty" type:"Repeated"` - // 实例id - FormInstanceId *string `json:"formInstanceId,omitempty" xml:"formInstanceId,omitempty"` - // 修改人 - Modifier *string `json:"modifier,omitempty" xml:"modifier,omitempty"` - // 实例最近修改时间戳 - ModifyTimestamp *int64 `json:"modifyTimestamp,omitempty" xml:"modifyTimestamp,omitempty"` - // 外联业务code - OutBizCode *string `json:"outBizCode,omitempty" xml:"outBizCode,omitempty"` - // 外联业务实例id - OutInstanceId *string `json:"outInstanceId,omitempty" xml:"outInstanceId,omitempty"` - // 表单标题 - Title *string `json:"title,omitempty" xml:"title,omitempty"` -} - -func (s QueryFormInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QueryFormInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *QueryFormInstanceResponseBody) SetAppUuid(v string) *QueryFormInstanceResponseBody { - s.AppUuid = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetAttributes(v map[string]interface{}) *QueryFormInstanceResponseBody { - s.Attributes = v - return s -} - -func (s *QueryFormInstanceResponseBody) SetCreateTimestamp(v int64) *QueryFormInstanceResponseBody { - s.CreateTimestamp = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetCreator(v string) *QueryFormInstanceResponseBody { - s.Creator = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetFormCode(v string) *QueryFormInstanceResponseBody { - s.FormCode = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetFormInstDataList(v []*QueryFormInstanceResponseBodyFormInstDataList) *QueryFormInstanceResponseBody { - s.FormInstDataList = v - return s -} - -func (s *QueryFormInstanceResponseBody) SetFormInstanceId(v string) *QueryFormInstanceResponseBody { - s.FormInstanceId = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetModifier(v string) *QueryFormInstanceResponseBody { - s.Modifier = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetModifyTimestamp(v int64) *QueryFormInstanceResponseBody { - s.ModifyTimestamp = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetOutBizCode(v string) *QueryFormInstanceResponseBody { - s.OutBizCode = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetOutInstanceId(v string) *QueryFormInstanceResponseBody { - s.OutInstanceId = &v - return s -} - -func (s *QueryFormInstanceResponseBody) SetTitle(v string) *QueryFormInstanceResponseBody { - s.Title = &v - return s -} - -type QueryFormInstanceResponseBodyFormInstDataList struct { - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - ExtendValue *string `json:"extendValue,omitempty" xml:"extendValue,omitempty"` - Key *string `json:"key,omitempty" xml:"key,omitempty"` - Label *string `json:"label,omitempty" xml:"label,omitempty"` - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s QueryFormInstanceResponseBodyFormInstDataList) String() string { - return tea.Prettify(s) -} - -func (s QueryFormInstanceResponseBodyFormInstDataList) GoString() string { - return s.String() -} - -func (s *QueryFormInstanceResponseBodyFormInstDataList) SetBizAlias(v string) *QueryFormInstanceResponseBodyFormInstDataList { - s.BizAlias = &v - return s -} - -func (s *QueryFormInstanceResponseBodyFormInstDataList) SetComponentType(v string) *QueryFormInstanceResponseBodyFormInstDataList { - s.ComponentType = &v - return s -} - -func (s *QueryFormInstanceResponseBodyFormInstDataList) SetExtendValue(v string) *QueryFormInstanceResponseBodyFormInstDataList { - s.ExtendValue = &v - return s -} - -func (s *QueryFormInstanceResponseBodyFormInstDataList) SetKey(v string) *QueryFormInstanceResponseBodyFormInstDataList { - s.Key = &v - return s -} - -func (s *QueryFormInstanceResponseBodyFormInstDataList) SetLabel(v string) *QueryFormInstanceResponseBodyFormInstDataList { - s.Label = &v - return s -} - -func (s *QueryFormInstanceResponseBodyFormInstDataList) SetValue(v string) *QueryFormInstanceResponseBodyFormInstDataList { - s.Value = &v - return s -} - -type QueryFormInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QueryFormInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QueryFormInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s QueryFormInstanceResponse) GoString() string { - return s.String() -} - -func (s *QueryFormInstanceResponse) SetHeaders(v map[string]*string) *QueryFormInstanceResponse { - s.Headers = v - return s -} - -func (s *QueryFormInstanceResponse) SetBody(v *QueryFormInstanceResponseBody) *QueryFormInstanceResponse { - s.Body = v - return s -} - -type QueryIntegratedTodoTaskHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QueryIntegratedTodoTaskHeaders) String() string { - return tea.Prettify(s) -} - -func (s QueryIntegratedTodoTaskHeaders) GoString() string { - return s.String() -} - -func (s *QueryIntegratedTodoTaskHeaders) SetCommonHeaders(v map[string]*string) *QueryIntegratedTodoTaskHeaders { - s.CommonHeaders = v - return s -} - -func (s *QueryIntegratedTodoTaskHeaders) SetXAcsDingtalkAccessToken(v string) *QueryIntegratedTodoTaskHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QueryIntegratedTodoTaskRequest struct { - // 在此时间戳之前创建的 - CreateBefore *int64 `json:"createBefore,omitempty" xml:"createBefore,omitempty"` - // 第几页,取值范围为 1 ≤ page ≤ 1000 - PageNumber *int32 `json:"pageNumber,omitempty" xml:"pageNumber,omitempty"` - // 分页大小,取值范围为 1 ≤ pageSize ≤ 40 - PageSize *int32 `json:"pageSize,omitempty" xml:"pageSize,omitempty"` - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s QueryIntegratedTodoTaskRequest) String() string { - return tea.Prettify(s) -} - -func (s QueryIntegratedTodoTaskRequest) GoString() string { - return s.String() -} - -func (s *QueryIntegratedTodoTaskRequest) SetCreateBefore(v int64) *QueryIntegratedTodoTaskRequest { - s.CreateBefore = &v - return s -} - -func (s *QueryIntegratedTodoTaskRequest) SetPageNumber(v int32) *QueryIntegratedTodoTaskRequest { - s.PageNumber = &v - return s -} - -func (s *QueryIntegratedTodoTaskRequest) SetPageSize(v int32) *QueryIntegratedTodoTaskRequest { - s.PageSize = &v - return s -} - -func (s *QueryIntegratedTodoTaskRequest) SetUserId(v string) *QueryIntegratedTodoTaskRequest { - s.UserId = &v - return s -} - -type QueryIntegratedTodoTaskResponseBody struct { - Result *QueryIntegratedTodoTaskResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s QueryIntegratedTodoTaskResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QueryIntegratedTodoTaskResponseBody) GoString() string { - return s.String() -} - -func (s *QueryIntegratedTodoTaskResponseBody) SetResult(v *QueryIntegratedTodoTaskResponseBodyResult) *QueryIntegratedTodoTaskResponseBody { - s.Result = v - return s -} - -type QueryIntegratedTodoTaskResponseBodyResult struct { - // 是否还有下一页 - HasMore *bool `json:"hasMore,omitempty" xml:"hasMore,omitempty"` - List []*QueryIntegratedTodoTaskResponseBodyResultList `json:"list,omitempty" xml:"list,omitempty" type:"Repeated"` -} - -func (s QueryIntegratedTodoTaskResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s QueryIntegratedTodoTaskResponseBodyResult) GoString() string { - return s.String() -} - -func (s *QueryIntegratedTodoTaskResponseBodyResult) SetHasMore(v bool) *QueryIntegratedTodoTaskResponseBodyResult { - s.HasMore = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResult) SetList(v []*QueryIntegratedTodoTaskResponseBodyResultList) *QueryIntegratedTodoTaskResponseBodyResult { - s.List = v - return s -} - -type QueryIntegratedTodoTaskResponseBodyResultList struct { - // 待办组ID,需要在调用创建流程中心集成任务接口时,主动设置该值。 - ActivityId *string `json:"activityId,omitempty" xml:"activityId,omitempty"` - // OA审批任务创建时间 - CreateTime *int64 `json:"createTime,omitempty" xml:"createTime,omitempty"` - // OA审批任务完成时间 - FinishTime *string `json:"finishTime,omitempty" xml:"finishTime,omitempty"` - // 流程实例ID - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 任务处理结果:agree 或 refuse - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 任务状态 - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // OA审批任务ID - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` - // OA审批任务执行人的用户ID - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s QueryIntegratedTodoTaskResponseBodyResultList) String() string { - return tea.Prettify(s) -} - -func (s QueryIntegratedTodoTaskResponseBodyResultList) GoString() string { - return s.String() -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetActivityId(v string) *QueryIntegratedTodoTaskResponseBodyResultList { - s.ActivityId = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetCreateTime(v int64) *QueryIntegratedTodoTaskResponseBodyResultList { - s.CreateTime = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetFinishTime(v string) *QueryIntegratedTodoTaskResponseBodyResultList { - s.FinishTime = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetProcessInstanceId(v string) *QueryIntegratedTodoTaskResponseBodyResultList { - s.ProcessInstanceId = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetResult(v string) *QueryIntegratedTodoTaskResponseBodyResultList { - s.Result = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetStatus(v string) *QueryIntegratedTodoTaskResponseBodyResultList { - s.Status = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetTaskId(v int64) *QueryIntegratedTodoTaskResponseBodyResultList { - s.TaskId = &v - return s -} - -func (s *QueryIntegratedTodoTaskResponseBodyResultList) SetUserId(v string) *QueryIntegratedTodoTaskResponseBodyResultList { - s.UserId = &v - return s -} - -type QueryIntegratedTodoTaskResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QueryIntegratedTodoTaskResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QueryIntegratedTodoTaskResponse) String() string { - return tea.Prettify(s) -} - -func (s QueryIntegratedTodoTaskResponse) GoString() string { - return s.String() -} - -func (s *QueryIntegratedTodoTaskResponse) SetHeaders(v map[string]*string) *QueryIntegratedTodoTaskResponse { - s.Headers = v - return s -} - -func (s *QueryIntegratedTodoTaskResponse) SetBody(v *QueryIntegratedTodoTaskResponseBody) *QueryIntegratedTodoTaskResponse { - s.Body = v - return s -} - -type QueryProcessByBizCategoryIdHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QueryProcessByBizCategoryIdHeaders) String() string { - return tea.Prettify(s) -} - -func (s QueryProcessByBizCategoryIdHeaders) GoString() string { - return s.String() -} - -func (s *QueryProcessByBizCategoryIdHeaders) SetCommonHeaders(v map[string]*string) *QueryProcessByBizCategoryIdHeaders { - s.CommonHeaders = v - return s -} - -func (s *QueryProcessByBizCategoryIdHeaders) SetXAcsDingtalkAccessToken(v string) *QueryProcessByBizCategoryIdHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QueryProcessByBizCategoryIdRequest struct { - // 业务标识 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 用户id - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s QueryProcessByBizCategoryIdRequest) String() string { - return tea.Prettify(s) -} - -func (s QueryProcessByBizCategoryIdRequest) GoString() string { - return s.String() -} - -func (s *QueryProcessByBizCategoryIdRequest) SetBizType(v string) *QueryProcessByBizCategoryIdRequest { - s.BizType = &v - return s -} - -func (s *QueryProcessByBizCategoryIdRequest) SetUserId(v string) *QueryProcessByBizCategoryIdRequest { - s.UserId = &v - return s -} - -type QueryProcessByBizCategoryIdResponseBody struct { - Result []*QueryProcessByBizCategoryIdResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Repeated"` -} - -func (s QueryProcessByBizCategoryIdResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QueryProcessByBizCategoryIdResponseBody) GoString() string { - return s.String() -} - -func (s *QueryProcessByBizCategoryIdResponseBody) SetResult(v []*QueryProcessByBizCategoryIdResponseBodyResult) *QueryProcessByBizCategoryIdResponseBody { - s.Result = v - return s -} - -type QueryProcessByBizCategoryIdResponseBodyResult struct { - // 模板描述 - Description *string `json:"description,omitempty" xml:"description,omitempty"` - // 模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 模板code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 模版发布状态。 - // - // - PUBLISHED:已启用 - // - // - INVALID:停用 - // - // - SAVED:已保存 - Status *string `json:"status,omitempty" xml:"status,omitempty"` -} - -func (s QueryProcessByBizCategoryIdResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s QueryProcessByBizCategoryIdResponseBodyResult) GoString() string { - return s.String() -} - -func (s *QueryProcessByBizCategoryIdResponseBodyResult) SetDescription(v string) *QueryProcessByBizCategoryIdResponseBodyResult { - s.Description = &v - return s -} - -func (s *QueryProcessByBizCategoryIdResponseBodyResult) SetName(v string) *QueryProcessByBizCategoryIdResponseBodyResult { - s.Name = &v - return s -} - -func (s *QueryProcessByBizCategoryIdResponseBodyResult) SetProcessCode(v string) *QueryProcessByBizCategoryIdResponseBodyResult { - s.ProcessCode = &v - return s -} - -func (s *QueryProcessByBizCategoryIdResponseBodyResult) SetStatus(v string) *QueryProcessByBizCategoryIdResponseBodyResult { - s.Status = &v - return s -} - -type QueryProcessByBizCategoryIdResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QueryProcessByBizCategoryIdResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QueryProcessByBizCategoryIdResponse) String() string { - return tea.Prettify(s) -} - -func (s QueryProcessByBizCategoryIdResponse) GoString() string { - return s.String() -} - -func (s *QueryProcessByBizCategoryIdResponse) SetHeaders(v map[string]*string) *QueryProcessByBizCategoryIdResponse { - s.Headers = v - return s -} - -func (s *QueryProcessByBizCategoryIdResponse) SetBody(v *QueryProcessByBizCategoryIdResponseBody) *QueryProcessByBizCategoryIdResponse { - s.Body = v - return s -} - -type QuerySchemaByProcessCodeHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s QuerySchemaByProcessCodeHeaders) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeHeaders) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeHeaders) SetCommonHeaders(v map[string]*string) *QuerySchemaByProcessCodeHeaders { - s.CommonHeaders = v - return s -} - -func (s *QuerySchemaByProcessCodeHeaders) SetXAcsDingtalkAccessToken(v string) *QuerySchemaByProcessCodeHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type QuerySchemaByProcessCodeRequest struct { - // 应用搭建隔离信息 - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 表单的唯一码 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s QuerySchemaByProcessCodeRequest) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeRequest) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeRequest) SetAppUuid(v string) *QuerySchemaByProcessCodeRequest { - s.AppUuid = &v - return s -} - -func (s *QuerySchemaByProcessCodeRequest) SetProcessCode(v string) *QuerySchemaByProcessCodeRequest { - s.ProcessCode = &v - return s -} - -type QuerySchemaByProcessCodeResponseBody struct { - // 返回结果详情。 - Result *QuerySchemaByProcessCodeResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s QuerySchemaByProcessCodeResponseBody) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBody) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBody) SetResult(v *QuerySchemaByProcessCodeResponseBodyResult) *QuerySchemaByProcessCodeResponseBody { - s.Result = v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResult struct { - // 表单类型。 - AppType *int32 `json:"appType,omitempty" xml:"appType,omitempty"` - // 表单应用 uuid 或者 corpId。 - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 代表表单业务含义的类型。 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 创建人 userId。 - CreatorUserId *string `json:"creatorUserId,omitempty" xml:"creatorUserId,omitempty"` - // 业务自定义设置数据。 - CustomSetting *string `json:"customSetting,omitempty" xml:"customSetting,omitempty"` - // 引擎类型,表单:0,页面:1 - EngineType *int32 `json:"engineType,omitempty" xml:"engineType,omitempty"` - // 表单的唯一码。 - FormCode *string `json:"formCode,omitempty" xml:"formCode,omitempty"` - // 表单 uuid。 - FormUuid *string `json:"formUuid,omitempty" xml:"formUuid,omitempty"` - // 创建时间的时间戳。 - GmtCreate *string `json:"gmtCreate,omitempty" xml:"gmtCreate,omitempty"` - // 修改时间的时间戳。 - GmtModified *string `json:"gmtModified,omitempty" xml:"gmtModified,omitempty"` - // 图标。 - Icon *string `json:"icon,omitempty" xml:"icon,omitempty"` - // 排序 id。 - ListOrder *int32 `json:"listOrder,omitempty" xml:"listOrder,omitempty"` - // 说明文案。 - Memo *string `json:"memo,omitempty" xml:"memo,omitempty"` - // 表单名称。 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 数据归属者的 id 类型。企业(orgId), 群(cid), 人(uid)。 - OwnerIdType *string `json:"ownerIdType,omitempty" xml:"ownerIdType,omitempty"` - // 目标类型: inner, outer, customer。 - ProcType *string `json:"procType,omitempty" xml:"procType,omitempty"` - // 表单 schema 详情。 - SchemaContent *QuerySchemaByProcessCodeResponseBodyResultSchemaContent `json:"schemaContent,omitempty" xml:"schemaContent,omitempty" type:"Struct"` - // 状态, PUBLISHED(启用), INVALID(停用), SAVED(草稿) - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // 可见范围类型。 - VisibleRange *string `json:"visibleRange,omitempty" xml:"visibleRange,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResult) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetAppType(v int32) *QuerySchemaByProcessCodeResponseBodyResult { - s.AppType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetAppUuid(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.AppUuid = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetBizType(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.BizType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetCreatorUserId(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.CreatorUserId = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetCustomSetting(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.CustomSetting = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetEngineType(v int32) *QuerySchemaByProcessCodeResponseBodyResult { - s.EngineType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetFormCode(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.FormCode = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetFormUuid(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.FormUuid = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetGmtCreate(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.GmtCreate = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetGmtModified(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.GmtModified = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetIcon(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.Icon = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetListOrder(v int32) *QuerySchemaByProcessCodeResponseBodyResult { - s.ListOrder = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetMemo(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.Memo = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetName(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.Name = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetOwnerIdType(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.OwnerIdType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetProcType(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.ProcType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetSchemaContent(v *QuerySchemaByProcessCodeResponseBodyResultSchemaContent) *QuerySchemaByProcessCodeResponseBodyResult { - s.SchemaContent = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetStatus(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.Status = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResult) SetVisibleRange(v string) *QuerySchemaByProcessCodeResponseBodyResult { - s.VisibleRange = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContent struct { - // 图标 - Icon *string `json:"icon,omitempty" xml:"icon,omitempty"` - // 控件列表 - Items []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems `json:"items,omitempty" xml:"items,omitempty" type:"Repeated"` - // 表单名称。 - Title *string `json:"title,omitempty" xml:"title,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContent) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContent) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContent) SetIcon(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContent { - s.Icon = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContent) SetItems(v []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems) *QuerySchemaByProcessCodeResponseBodyResultSchemaContent { - s.Items = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContent) SetTitle(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContent { - s.Title = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems struct { - // 子控件列表 - Children []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren `json:"children,omitempty" xml:"children,omitempty" type:"Repeated"` - // 控件类型,取值: - ComponentName *string `json:"componentName,omitempty" xml:"componentName,omitempty"` - // 控件属性。 - Props *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps `json:"props,omitempty" xml:"props,omitempty" type:"Struct"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems) SetChildren(v []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems { - s.Children = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems) SetComponentName(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems { - s.ComponentName = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems) SetProps(v *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItems { - s.Props = v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren struct { - // 控件类型 - ComponentName *string `json:"componentName,omitempty" xml:"componentName,omitempty"` - // 子控件属性 - Props *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps `json:"props,omitempty" xml:"props,omitempty" type:"Struct"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren) SetComponentName(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren { - s.ComponentName = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren) SetProps(v *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildren { - s.Props = v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps struct { - // 控件业务别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Label *string `json:"label,omitempty" xml:"label,omitempty"` - // 是否必填 - Required *bool `json:"required,omitempty" xml:"required,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) SetBizAlias(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps { - s.BizAlias = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) SetId(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps { - s.Id = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) SetLabel(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps { - s.Label = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps) SetRequired(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsChildrenProps { - s.Required = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps struct { - // 加班套件4.0新增 加班明细名称。 - ActionName *string `json:"actionName,omitempty" xml:"actionName,omitempty"` - // textnote的样式,top|middle|bottom。 - Align *string `json:"align,omitempty" xml:"align,omitempty"` - // ISV 微应用 appId,用于ISV身份权限识别,ISV可获得相应数据。 - AppId *int64 `json:"appId,omitempty" xml:"appId,omitempty"` - // 套件是否开启异步获取分条件规则,true:开启;false:不开启。 - AsyncCondition *bool `json:"asyncCondition,omitempty" xml:"asyncCondition,omitempty"` - // 请假、出差、外出、加班类型标签。 - AttendTypeLabel *string `json:"attendTypeLabel,omitempty" xml:"attendTypeLabel,omitempty"` - // 表单关联控件列表。 - BehaviorLinkage []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage `json:"behaviorLinkage,omitempty" xml:"behaviorLinkage,omitempty" type:"Repeated"` - // 控件业务自定义别名。 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 业务套件类型。 - BizType *string `json:"bizType,omitempty" xml:"bizType,omitempty"` - // 套件内子组件可见性 - ChildFieldVisible map[string]*bool `json:"childFieldVisible,omitempty" xml:"childFieldVisible,omitempty"` - // 内部联系人choice,1表示多选,0表示单选。 - Choice *int32 `json:"choice,omitempty" xml:"choice,omitempty"` - // common field的commonBizType。 - CommonBizType *string `json:"commonBizType,omitempty" xml:"commonBizType,omitempty"` - // 是否可编辑。 - Disabled *bool `json:"disabled,omitempty" xml:"disabled,omitempty"` - // 是否自动计算时长。 - Duration *bool `json:"duration,omitempty" xml:"duration,omitempty"` - // 兼容字段。 - DurationLabel *string `json:"durationLabel,omitempty" xml:"durationLabel,omitempty"` - // e签宝专用标识。 - ESign *bool `json:"eSign,omitempty" xml:"eSign,omitempty"` - // 套件值是否打平 - Extract *bool `json:"extract,omitempty" xml:"extract,omitempty"` - // 关联表单中的fields存储 - FieldsInfo *string `json:"fieldsInfo,omitempty" xml:"fieldsInfo,omitempty"` - // 时间格式(DDDateField和DDDateRangeField)。 - Format *string `json:"format,omitempty" xml:"format,omitempty"` - // 公式。 - Formula *string `json:"formula,omitempty" xml:"formula,omitempty"` - // 加班套件4.0新增 加班明细是否隐藏。 - Hidden *bool `json:"hidden,omitempty" xml:"hidden,omitempty"` - // textnote在详情页是否隐藏,true隐藏, false不隐藏 - HiddenInApprovalDetail *bool `json:"hiddenInApprovalDetail,omitempty" xml:"hiddenInApprovalDetail,omitempty"` - // 加班套件4.0新增 加班明细是否隐藏标签。 - HideLabel *bool `json:"hideLabel,omitempty" xml:"hideLabel,omitempty"` - // 兼容出勤套件类型。 - HolidayOptions []map[string]*string `json:"holidayOptions,omitempty" xml:"holidayOptions,omitempty" type:"Repeated"` - // 控件 id。 - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称。 - Label *string `json:"label,omitempty" xml:"label,omitempty"` - // label是否可修改 true:不可修改。 - LabelEditableFreeze *bool `json:"labelEditableFreeze,omitempty" xml:"labelEditableFreeze,omitempty"` - // 说明文案的链接地址。 - Link *string `json:"link,omitempty" xml:"link,omitempty"` - // 加班套件4.0新增 加班明细描述。 - MainTitle *string `json:"mainTitle,omitempty" xml:"mainTitle,omitempty"` - // 是否参与打印(1表示不打印, 0表示打印)。 - NotPrint *string `json:"notPrint,omitempty" xml:"notPrint,omitempty"` - // 是否需要大写 默认是需要; 1:不需要大写, 空或者0:需要大写。 - NotUpper *string `json:"notUpper,omitempty" xml:"notUpper,omitempty"` - // 选项内容列表,提供给业务方更多的选择器操作。 - ObjOptions []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions `json:"objOptions,omitempty" xml:"objOptions,omitempty" type:"Repeated"` - // 单选框选项列表。 - Options []*string `json:"options,omitempty" xml:"options,omitempty" type:"Repeated"` - // 是否有支付属性。 - PayEnable *bool `json:"payEnable,omitempty" xml:"payEnable,omitempty"` - // 占位符。 - Placeholder *string `json:"placeholder,omitempty" xml:"placeholder,omitempty"` - // 同步到考勤, 表示是否设置为员工状态。 - Push *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush `json:"push,omitempty" xml:"push,omitempty" type:"Struct"` - // 推送到考勤, 子类型(DDSelectField)。 - PushToAttendance *bool `json:"pushToAttendance,omitempty" xml:"pushToAttendance,omitempty"` - // 是否推送管理日历(DDDateRangeField, 1表示推送, 0表示不推送, 该属性为兼容保留)。 - PushToCalendar *int32 `json:"pushToCalendar,omitempty" xml:"pushToCalendar,omitempty"` - // 是否必填。 - Required *bool `json:"required,omitempty" xml:"required,omitempty"` - // 必填是否可修改 true:不可修改。 - RequiredEditableFreeze *bool `json:"requiredEditableFreeze,omitempty" xml:"requiredEditableFreeze,omitempty"` - // 兼容出勤套件类型。 - ShowAttendOptions *bool `json:"showAttendOptions,omitempty" xml:"showAttendOptions,omitempty"` - // 是否开启员工状态。 - StaffStatusEnabled *bool `json:"staffStatusEnabled,omitempty" xml:"staffStatusEnabled,omitempty"` - // 需要计算总和的明细组件 - StatField []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField `json:"statField,omitempty" xml:"statField,omitempty" type:"Repeated"` - // 数字组件/日期区间组件单位属性。 - Unit *string `json:"unit,omitempty" xml:"unit,omitempty"` - // 是否使用考勤日历。 - UseCalendar *bool `json:"useCalendar,omitempty" xml:"useCalendar,omitempty"` - // 明细打印排版方式 false:横向 true:纵向。 - VerticalPrint *bool `json:"verticalPrint,omitempty" xml:"verticalPrint,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetActionName(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.ActionName = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetAlign(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Align = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetAppId(v int64) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.AppId = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetAsyncCondition(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.AsyncCondition = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetAttendTypeLabel(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.AttendTypeLabel = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetBehaviorLinkage(v []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.BehaviorLinkage = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetBizAlias(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.BizAlias = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetBizType(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.BizType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetChildFieldVisible(v map[string]*bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.ChildFieldVisible = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetChoice(v int32) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Choice = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetCommonBizType(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.CommonBizType = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetDisabled(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Disabled = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetDuration(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Duration = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetDurationLabel(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.DurationLabel = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetESign(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.ESign = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetExtract(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Extract = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetFieldsInfo(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.FieldsInfo = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetFormat(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Format = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetFormula(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Formula = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetHidden(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Hidden = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetHiddenInApprovalDetail(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.HiddenInApprovalDetail = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetHideLabel(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.HideLabel = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetHolidayOptions(v []map[string]*string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.HolidayOptions = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetId(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Id = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetLabel(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Label = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetLabelEditableFreeze(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.LabelEditableFreeze = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetLink(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Link = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetMainTitle(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.MainTitle = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetNotPrint(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.NotPrint = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetNotUpper(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.NotUpper = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetObjOptions(v []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.ObjOptions = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetOptions(v []*string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Options = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetPayEnable(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.PayEnable = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetPlaceholder(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Placeholder = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetPush(v *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Push = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetPushToAttendance(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.PushToAttendance = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetPushToCalendar(v int32) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.PushToCalendar = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetRequired(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Required = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetRequiredEditableFreeze(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.RequiredEditableFreeze = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetShowAttendOptions(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.ShowAttendOptions = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetStaffStatusEnabled(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.StaffStatusEnabled = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetStatField(v []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.StatField = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetUnit(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.Unit = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetUseCalendar(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.UseCalendar = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps) SetVerticalPrint(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsProps { - s.VerticalPrint = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage struct { - // 关联控件列表。 - Targets []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets `json:"targets,omitempty" xml:"targets,omitempty" type:"Repeated"` - // 控件值。 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage) SetTargets(v []*QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage { - s.Targets = v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage) SetValue(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkage { - s.Value = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets struct { - // 行为。 - Behavior *string `json:"behavior,omitempty" xml:"behavior,omitempty"` - // 字段 id。 - FieldId *string `json:"fieldId,omitempty" xml:"fieldId,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets) SetBehavior(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets { - s.Behavior = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets) SetFieldId(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsBehaviorLinkageTargets { - s.FieldId = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions struct { - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions) SetValue(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsObjOptions { - s.Value = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush struct { - // 考勤类型(1表示请假, 2表示出差, 3表示加班, 4表示外出) - AttendanceRule *int32 `json:"attendanceRule,omitempty" xml:"attendanceRule,omitempty"` - // 开启状态(1表示开启, 0表示关闭) - PushSwitch *int32 `json:"pushSwitch,omitempty" xml:"pushSwitch,omitempty"` - // 状态显示名称 - PushTag *string `json:"pushTag,omitempty" xml:"pushTag,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush) SetAttendanceRule(v int32) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush { - s.AttendanceRule = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush) SetPushSwitch(v int32) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush { - s.PushSwitch = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush) SetPushTag(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsPush { - s.PushTag = &v - return s -} - -type QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField struct { - // id 值。 - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 名称。 - Label *string `json:"label,omitempty" xml:"label,omitempty"` - // 单位。 - Unit *string `json:"unit,omitempty" xml:"unit,omitempty"` - // 大写。 - Upper *bool `json:"upper,omitempty" xml:"upper,omitempty"` -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) SetId(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField { - s.Id = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) SetLabel(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField { - s.Label = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) SetUnit(v string) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField { - s.Unit = &v - return s -} - -func (s *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField) SetUpper(v bool) *QuerySchemaByProcessCodeResponseBodyResultSchemaContentItemsPropsStatField { - s.Upper = &v - return s -} - -type QuerySchemaByProcessCodeResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *QuerySchemaByProcessCodeResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s QuerySchemaByProcessCodeResponse) String() string { - return tea.Prettify(s) -} - -func (s QuerySchemaByProcessCodeResponse) GoString() string { - return s.String() -} - -func (s *QuerySchemaByProcessCodeResponse) SetHeaders(v map[string]*string) *QuerySchemaByProcessCodeResponse { - s.Headers = v - return s -} - -func (s *QuerySchemaByProcessCodeResponse) SetBody(v *QuerySchemaByProcessCodeResponseBody) *QuerySchemaByProcessCodeResponse { - s.Body = v - return s -} - -type RedirectWorkflowTaskHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s RedirectWorkflowTaskHeaders) String() string { - return tea.Prettify(s) -} - -func (s RedirectWorkflowTaskHeaders) GoString() string { - return s.String() -} - -func (s *RedirectWorkflowTaskHeaders) SetCommonHeaders(v map[string]*string) *RedirectWorkflowTaskHeaders { - s.CommonHeaders = v - return s -} - -func (s *RedirectWorkflowTaskHeaders) SetXAcsDingtalkAccessToken(v string) *RedirectWorkflowTaskHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type RedirectWorkflowTaskRequest struct { - // 操作节点名 - ActionName *string `json:"actionName,omitempty" xml:"actionName,omitempty"` - // 操作人的用户ID,需要跟任务的当前执行人保持一致,否则无法通过校验 - OperateUserId *string `json:"operateUserId,omitempty" xml:"operateUserId,omitempty"` - // 转交备注信息 - Remark *string `json:"remark,omitempty" xml:"remark,omitempty"` - // OA审批任务ID - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` - // OA审批任务被转交对象的用户ID - ToUserId *string `json:"toUserId,omitempty" xml:"toUserId,omitempty"` -} - -func (s RedirectWorkflowTaskRequest) String() string { - return tea.Prettify(s) -} - -func (s RedirectWorkflowTaskRequest) GoString() string { - return s.String() -} - -func (s *RedirectWorkflowTaskRequest) SetActionName(v string) *RedirectWorkflowTaskRequest { - s.ActionName = &v - return s -} - -func (s *RedirectWorkflowTaskRequest) SetOperateUserId(v string) *RedirectWorkflowTaskRequest { - s.OperateUserId = &v - return s -} - -func (s *RedirectWorkflowTaskRequest) SetRemark(v string) *RedirectWorkflowTaskRequest { - s.Remark = &v - return s -} - -func (s *RedirectWorkflowTaskRequest) SetTaskId(v int64) *RedirectWorkflowTaskRequest { - s.TaskId = &v - return s -} - -func (s *RedirectWorkflowTaskRequest) SetToUserId(v string) *RedirectWorkflowTaskRequest { - s.ToUserId = &v - return s -} - -type RedirectWorkflowTaskResponseBody struct { - // 是否转交成功 - Result *bool `json:"result,omitempty" xml:"result,omitempty"` -} - -func (s RedirectWorkflowTaskResponseBody) String() string { - return tea.Prettify(s) -} - -func (s RedirectWorkflowTaskResponseBody) GoString() string { - return s.String() -} - -func (s *RedirectWorkflowTaskResponseBody) SetResult(v bool) *RedirectWorkflowTaskResponseBody { - s.Result = &v - return s -} - -type RedirectWorkflowTaskResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *RedirectWorkflowTaskResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s RedirectWorkflowTaskResponse) String() string { - return tea.Prettify(s) -} - -func (s RedirectWorkflowTaskResponse) GoString() string { - return s.String() -} - -func (s *RedirectWorkflowTaskResponse) SetHeaders(v map[string]*string) *RedirectWorkflowTaskResponse { - s.Headers = v - return s -} - -func (s *RedirectWorkflowTaskResponse) SetBody(v *RedirectWorkflowTaskResponseBody) *RedirectWorkflowTaskResponse { - s.Body = v - return s -} - -type SaveIntegratedInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s SaveIntegratedInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceHeaders) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceHeaders) SetCommonHeaders(v map[string]*string) *SaveIntegratedInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *SaveIntegratedInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *SaveIntegratedInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type SaveIntegratedInstanceRequest struct { - FormComponentValueList []*SaveIntegratedInstanceRequestFormComponentValueList `json:"formComponentValueList,omitempty" xml:"formComponentValueList,omitempty" type:"Repeated"` - Notifiers []*SaveIntegratedInstanceRequestNotifiers `json:"notifiers,omitempty" xml:"notifiers,omitempty" type:"Repeated"` - // 审批实例接收人的userId。 - OriginatorUserId *string `json:"originatorUserId,omitempty" xml:"originatorUserId,omitempty"` - // 审批模板唯一码 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 实例标题 - Title *string `json:"title,omitempty" xml:"title,omitempty"` - // 三方审批系统中审批单的详情页地址 - Url *string `json:"url,omitempty" xml:"url,omitempty"` -} - -func (s SaveIntegratedInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceRequest) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceRequest) SetFormComponentValueList(v []*SaveIntegratedInstanceRequestFormComponentValueList) *SaveIntegratedInstanceRequest { - s.FormComponentValueList = v - return s -} - -func (s *SaveIntegratedInstanceRequest) SetNotifiers(v []*SaveIntegratedInstanceRequestNotifiers) *SaveIntegratedInstanceRequest { - s.Notifiers = v - return s -} - -func (s *SaveIntegratedInstanceRequest) SetOriginatorUserId(v string) *SaveIntegratedInstanceRequest { - s.OriginatorUserId = &v - return s -} - -func (s *SaveIntegratedInstanceRequest) SetProcessCode(v string) *SaveIntegratedInstanceRequest { - s.ProcessCode = &v - return s -} - -func (s *SaveIntegratedInstanceRequest) SetTitle(v string) *SaveIntegratedInstanceRequest { - s.Title = &v - return s -} - -func (s *SaveIntegratedInstanceRequest) SetUrl(v string) *SaveIntegratedInstanceRequest { - s.Url = &v - return s -} - -type SaveIntegratedInstanceRequestFormComponentValueList struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 控件类型,取值: - // - // TextField:单行输入框 - // - // TextareaField:多行输入框 - // - // NumberField:数字输入框 - // - // DDSelectField:单选框 - // - // DDMultiSelectField:多选框 - // - // DDDateField:日期控件 - // - // DDDateRangeField:时间区间控件 - // - // TextNote:文字说明控件 - // - // PhoneField:电话控件 - // - // DDPhotoField:图片控件 - // - // MoneyField:金额控件 - // - // TableField:明细控件 - // - // DDAttachment:附件 - // - // InnerContactField:联系人控件 - // - // RelateField:关联审批单 - // - // FormRelateField:关联控件 - // - // AddressField:省市区控件 - // - // StarRatingField:评分控件 - // - // DepartmentField:部门控件 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - // 表单扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 表单名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 表单值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s SaveIntegratedInstanceRequestFormComponentValueList) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceRequestFormComponentValueList) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceRequestFormComponentValueList) SetBizAlias(v string) *SaveIntegratedInstanceRequestFormComponentValueList { - s.BizAlias = &v - return s -} - -func (s *SaveIntegratedInstanceRequestFormComponentValueList) SetComponentType(v string) *SaveIntegratedInstanceRequestFormComponentValueList { - s.ComponentType = &v - return s -} - -func (s *SaveIntegratedInstanceRequestFormComponentValueList) SetExtValue(v string) *SaveIntegratedInstanceRequestFormComponentValueList { - s.ExtValue = &v - return s -} - -func (s *SaveIntegratedInstanceRequestFormComponentValueList) SetId(v string) *SaveIntegratedInstanceRequestFormComponentValueList { - s.Id = &v - return s -} - -func (s *SaveIntegratedInstanceRequestFormComponentValueList) SetName(v string) *SaveIntegratedInstanceRequestFormComponentValueList { - s.Name = &v - return s -} - -func (s *SaveIntegratedInstanceRequestFormComponentValueList) SetValue(v string) *SaveIntegratedInstanceRequestFormComponentValueList { - s.Value = &v - return s -} - -type SaveIntegratedInstanceRequestNotifiers struct { - // 抄送位置,可以值有: - // start - 审批发起时,通知抄送人 - // finish - 审批通过后,通知抄送人 - // start_finish - 审批发起时和审批通过后,都通知抄送人 - Position *string `json:"position,omitempty" xml:"position,omitempty"` - // 抄送接收人用户ID - Userid *string `json:"userid,omitempty" xml:"userid,omitempty"` -} - -func (s SaveIntegratedInstanceRequestNotifiers) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceRequestNotifiers) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceRequestNotifiers) SetPosition(v string) *SaveIntegratedInstanceRequestNotifiers { - s.Position = &v - return s -} - -func (s *SaveIntegratedInstanceRequestNotifiers) SetUserid(v string) *SaveIntegratedInstanceRequestNotifiers { - s.Userid = &v - return s -} - -type SaveIntegratedInstanceResponseBody struct { - Result *SaveIntegratedInstanceResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s SaveIntegratedInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceResponseBody) SetResult(v *SaveIntegratedInstanceResponseBodyResult) *SaveIntegratedInstanceResponseBody { - s.Result = v - return s -} - -type SaveIntegratedInstanceResponseBodyResult struct { - // 实例id - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` -} - -func (s SaveIntegratedInstanceResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceResponseBodyResult) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceResponseBodyResult) SetProcessInstanceId(v string) *SaveIntegratedInstanceResponseBodyResult { - s.ProcessInstanceId = &v - return s -} - -type SaveIntegratedInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *SaveIntegratedInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s SaveIntegratedInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s SaveIntegratedInstanceResponse) GoString() string { - return s.String() -} - -func (s *SaveIntegratedInstanceResponse) SetHeaders(v map[string]*string) *SaveIntegratedInstanceResponse { - s.Headers = v - return s -} - -func (s *SaveIntegratedInstanceResponse) SetBody(v *SaveIntegratedInstanceResponseBody) *SaveIntegratedInstanceResponse { - s.Body = v - return s -} - -type SaveProcessHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s SaveProcessHeaders) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessHeaders) GoString() string { - return s.String() -} - -func (s *SaveProcessHeaders) SetCommonHeaders(v map[string]*string) *SaveProcessHeaders { - s.CommonHeaders = v - return s -} - -func (s *SaveProcessHeaders) SetXAcsDingtalkAccessToken(v string) *SaveProcessHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type SaveProcessRequest struct { - // 表单模板描述 - Description *string `json:"description,omitempty" xml:"description,omitempty"` - // 表单控件列表 - FormComponents []*FormComponent `json:"formComponents,omitempty" xml:"formComponents,omitempty" type:"Repeated"` - // 表单模板名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 模板code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 流程中心集成配置 - ProcessFeatureConfig *SaveProcessRequestProcessFeatureConfig `json:"processFeatureConfig,omitempty" xml:"processFeatureConfig,omitempty" type:"Struct"` -} - -func (s SaveProcessRequest) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessRequest) GoString() string { - return s.String() -} - -func (s *SaveProcessRequest) SetDescription(v string) *SaveProcessRequest { - s.Description = &v - return s -} - -func (s *SaveProcessRequest) SetFormComponents(v []*FormComponent) *SaveProcessRequest { - s.FormComponents = v - return s -} - -func (s *SaveProcessRequest) SetName(v string) *SaveProcessRequest { - s.Name = &v - return s -} - -func (s *SaveProcessRequest) SetProcessCode(v string) *SaveProcessRequest { - s.ProcessCode = &v - return s -} - -func (s *SaveProcessRequest) SetProcessFeatureConfig(v *SaveProcessRequestProcessFeatureConfig) *SaveProcessRequest { - s.ProcessFeatureConfig = v - return s -} - -type SaveProcessRequestProcessFeatureConfig struct { - // 配置列表 - Features []*SaveProcessRequestProcessFeatureConfigFeatures `json:"features,omitempty" xml:"features,omitempty" type:"Repeated"` -} - -func (s SaveProcessRequestProcessFeatureConfig) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessRequestProcessFeatureConfig) GoString() string { - return s.String() -} - -func (s *SaveProcessRequestProcessFeatureConfig) SetFeatures(v []*SaveProcessRequestProcessFeatureConfigFeatures) *SaveProcessRequestProcessFeatureConfig { - s.Features = v - return s -} - -type SaveProcessRequestProcessFeatureConfigFeatures struct { - Callback *SaveProcessRequestProcessFeatureConfigFeaturesCallback `json:"callback,omitempty" xml:"callback,omitempty" type:"Struct"` - // 手机端链接 - MobileUrl *string `json:"mobileUrl,omitempty" xml:"mobileUrl,omitempty"` - // 名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // pc端链接 - PcUrl *string `json:"pcUrl,omitempty" xml:"pcUrl,omitempty"` - // 运行方式: - // ORIGIN:原生运行,即在官方审批内运行对应功能; - // REDIRECT:外部跳转运行,需要跳转到三方地址运行对应功能 - RunType *string `json:"runType,omitempty" xml:"runType,omitempty"` -} - -func (s SaveProcessRequestProcessFeatureConfigFeatures) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessRequestProcessFeatureConfigFeatures) GoString() string { - return s.String() -} - -func (s *SaveProcessRequestProcessFeatureConfigFeatures) SetCallback(v *SaveProcessRequestProcessFeatureConfigFeaturesCallback) *SaveProcessRequestProcessFeatureConfigFeatures { - s.Callback = v - return s -} - -func (s *SaveProcessRequestProcessFeatureConfigFeatures) SetMobileUrl(v string) *SaveProcessRequestProcessFeatureConfigFeatures { - s.MobileUrl = &v - return s -} - -func (s *SaveProcessRequestProcessFeatureConfigFeatures) SetName(v string) *SaveProcessRequestProcessFeatureConfigFeatures { - s.Name = &v - return s -} - -func (s *SaveProcessRequestProcessFeatureConfigFeatures) SetPcUrl(v string) *SaveProcessRequestProcessFeatureConfigFeatures { - s.PcUrl = &v - return s -} - -func (s *SaveProcessRequestProcessFeatureConfigFeatures) SetRunType(v string) *SaveProcessRequestProcessFeatureConfigFeatures { - s.RunType = &v - return s -} - -type SaveProcessRequestProcessFeatureConfigFeaturesCallback struct { - // 网关接口标识 - ApiKey *string `json:"apiKey,omitempty" xml:"apiKey,omitempty"` - // 网关接口对应应用的uuid - AppUuid *string `json:"appUuid,omitempty" xml:"appUuid,omitempty"` - // 网关接口版本 - Version *string `json:"version,omitempty" xml:"version,omitempty"` -} - -func (s SaveProcessRequestProcessFeatureConfigFeaturesCallback) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessRequestProcessFeatureConfigFeaturesCallback) GoString() string { - return s.String() -} - -func (s *SaveProcessRequestProcessFeatureConfigFeaturesCallback) SetApiKey(v string) *SaveProcessRequestProcessFeatureConfigFeaturesCallback { - s.ApiKey = &v - return s -} - -func (s *SaveProcessRequestProcessFeatureConfigFeaturesCallback) SetAppUuid(v string) *SaveProcessRequestProcessFeatureConfigFeaturesCallback { - s.AppUuid = &v - return s -} - -func (s *SaveProcessRequestProcessFeatureConfigFeaturesCallback) SetVersion(v string) *SaveProcessRequestProcessFeatureConfigFeaturesCallback { - s.Version = &v - return s -} - -type SaveProcessResponseBody struct { - // 表单模板信息 - Result *SaveProcessResponseBodyResult `json:"result,omitempty" xml:"result,omitempty" type:"Struct"` -} - -func (s SaveProcessResponseBody) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessResponseBody) GoString() string { - return s.String() -} - -func (s *SaveProcessResponseBody) SetResult(v *SaveProcessResponseBodyResult) *SaveProcessResponseBody { - s.Result = v - return s -} - -type SaveProcessResponseBodyResult struct { - // 保存或更新的表单code - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` -} - -func (s SaveProcessResponseBodyResult) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessResponseBodyResult) GoString() string { - return s.String() -} - -func (s *SaveProcessResponseBodyResult) SetProcessCode(v string) *SaveProcessResponseBodyResult { - s.ProcessCode = &v - return s -} - -type SaveProcessResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *SaveProcessResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s SaveProcessResponse) String() string { - return tea.Prettify(s) -} - -func (s SaveProcessResponse) GoString() string { - return s.String() -} - -func (s *SaveProcessResponse) SetHeaders(v map[string]*string) *SaveProcessResponse { - s.Headers = v - return s -} - -func (s *SaveProcessResponse) SetBody(v *SaveProcessResponseBody) *SaveProcessResponse { - s.Body = v - return s -} - -type StartProcessInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s StartProcessInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceHeaders) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceHeaders) SetCommonHeaders(v map[string]*string) *StartProcessInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *StartProcessInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *StartProcessInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type StartProcessInstanceRequest struct { - // 不使用审批流模板时,直接指定审批人列表 - Approvers []*StartProcessInstanceRequestApprovers `json:"approvers,omitempty" xml:"approvers,omitempty" type:"Repeated"` - // 抄送人userId列表 - CcList []*string `json:"ccList,omitempty" xml:"ccList,omitempty" type:"Repeated"` - // 抄送时间 - CcPosition *string `json:"ccPosition,omitempty" xml:"ccPosition,omitempty"` - // 部门ID - DeptId *int64 `json:"deptId,omitempty" xml:"deptId,omitempty"` - // 表单数据内容,控件列表 - FormComponentValues []*StartProcessInstanceRequestFormComponentValues `json:"formComponentValues,omitempty" xml:"formComponentValues,omitempty" type:"Repeated"` - // 企业微应用标识 - MicroappAgentId *int64 `json:"microappAgentId,omitempty" xml:"microappAgentId,omitempty"` - // 审批发起人的userId - OriginatorUserId *string `json:"originatorUserId,omitempty" xml:"originatorUserId,omitempty"` - // 审批流的唯一码 - ProcessCode *string `json:"processCode,omitempty" xml:"processCode,omitempty"` - // 使用审批流模板时,模板上的自选操作人列表 - TargetSelectActioners []*StartProcessInstanceRequestTargetSelectActioners `json:"targetSelectActioners,omitempty" xml:"targetSelectActioners,omitempty" type:"Repeated"` -} - -func (s StartProcessInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceRequest) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceRequest) SetApprovers(v []*StartProcessInstanceRequestApprovers) *StartProcessInstanceRequest { - s.Approvers = v - return s -} - -func (s *StartProcessInstanceRequest) SetCcList(v []*string) *StartProcessInstanceRequest { - s.CcList = v - return s -} - -func (s *StartProcessInstanceRequest) SetCcPosition(v string) *StartProcessInstanceRequest { - s.CcPosition = &v - return s -} - -func (s *StartProcessInstanceRequest) SetDeptId(v int64) *StartProcessInstanceRequest { - s.DeptId = &v - return s -} - -func (s *StartProcessInstanceRequest) SetFormComponentValues(v []*StartProcessInstanceRequestFormComponentValues) *StartProcessInstanceRequest { - s.FormComponentValues = v - return s -} - -func (s *StartProcessInstanceRequest) SetMicroappAgentId(v int64) *StartProcessInstanceRequest { - s.MicroappAgentId = &v - return s -} - -func (s *StartProcessInstanceRequest) SetOriginatorUserId(v string) *StartProcessInstanceRequest { - s.OriginatorUserId = &v - return s -} - -func (s *StartProcessInstanceRequest) SetProcessCode(v string) *StartProcessInstanceRequest { - s.ProcessCode = &v - return s -} - -func (s *StartProcessInstanceRequest) SetTargetSelectActioners(v []*StartProcessInstanceRequestTargetSelectActioners) *StartProcessInstanceRequest { - s.TargetSelectActioners = v - return s -} - -type StartProcessInstanceRequestApprovers struct { - // 审批类型 - ActionType *string `json:"actionType,omitempty" xml:"actionType,omitempty"` - // 审批人列表 - UserIds []*string `json:"userIds,omitempty" xml:"userIds,omitempty" type:"Repeated"` -} - -func (s StartProcessInstanceRequestApprovers) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceRequestApprovers) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceRequestApprovers) SetActionType(v string) *StartProcessInstanceRequestApprovers { - s.ActionType = &v - return s -} - -func (s *StartProcessInstanceRequestApprovers) SetUserIds(v []*string) *StartProcessInstanceRequestApprovers { - s.UserIds = v - return s -} - -type StartProcessInstanceRequestFormComponentValues struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 控件类型 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - Details []*StartProcessInstanceRequestFormComponentValuesDetails `json:"details,omitempty" xml:"details,omitempty" type:"Repeated"` - // 控件扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s StartProcessInstanceRequestFormComponentValues) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceRequestFormComponentValues) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetBizAlias(v string) *StartProcessInstanceRequestFormComponentValues { - s.BizAlias = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetComponentType(v string) *StartProcessInstanceRequestFormComponentValues { - s.ComponentType = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetDetails(v []*StartProcessInstanceRequestFormComponentValuesDetails) *StartProcessInstanceRequestFormComponentValues { - s.Details = v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetExtValue(v string) *StartProcessInstanceRequestFormComponentValues { - s.ExtValue = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetId(v string) *StartProcessInstanceRequestFormComponentValues { - s.Id = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetName(v string) *StartProcessInstanceRequestFormComponentValues { - s.Name = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValues) SetValue(v string) *StartProcessInstanceRequestFormComponentValues { - s.Value = &v - return s -} - -type StartProcessInstanceRequestFormComponentValuesDetails struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - Details []*StartProcessInstanceRequestFormComponentValuesDetailsDetails `json:"details,omitempty" xml:"details,omitempty" type:"Repeated"` - // 控件扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s StartProcessInstanceRequestFormComponentValuesDetails) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceRequestFormComponentValuesDetails) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetails) SetBizAlias(v string) *StartProcessInstanceRequestFormComponentValuesDetails { - s.BizAlias = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetails) SetDetails(v []*StartProcessInstanceRequestFormComponentValuesDetailsDetails) *StartProcessInstanceRequestFormComponentValuesDetails { - s.Details = v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetails) SetExtValue(v string) *StartProcessInstanceRequestFormComponentValuesDetails { - s.ExtValue = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetails) SetId(v string) *StartProcessInstanceRequestFormComponentValuesDetails { - s.Id = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetails) SetName(v string) *StartProcessInstanceRequestFormComponentValuesDetails { - s.Name = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetails) SetValue(v string) *StartProcessInstanceRequestFormComponentValuesDetails { - s.Value = &v - return s -} - -type StartProcessInstanceRequestFormComponentValuesDetailsDetails struct { - // 控件别名 - BizAlias *string `json:"bizAlias,omitempty" xml:"bizAlias,omitempty"` - // 控件类型 - ComponentType *string `json:"componentType,omitempty" xml:"componentType,omitempty"` - // 控件扩展值 - ExtValue *string `json:"extValue,omitempty" xml:"extValue,omitempty"` - // 控件id - Id *string `json:"id,omitempty" xml:"id,omitempty"` - // 控件名称 - Name *string `json:"name,omitempty" xml:"name,omitempty"` - // 控件值 - Value *string `json:"value,omitempty" xml:"value,omitempty"` -} - -func (s StartProcessInstanceRequestFormComponentValuesDetailsDetails) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceRequestFormComponentValuesDetailsDetails) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetailsDetails) SetBizAlias(v string) *StartProcessInstanceRequestFormComponentValuesDetailsDetails { - s.BizAlias = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetailsDetails) SetComponentType(v string) *StartProcessInstanceRequestFormComponentValuesDetailsDetails { - s.ComponentType = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetailsDetails) SetExtValue(v string) *StartProcessInstanceRequestFormComponentValuesDetailsDetails { - s.ExtValue = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetailsDetails) SetId(v string) *StartProcessInstanceRequestFormComponentValuesDetailsDetails { - s.Id = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetailsDetails) SetName(v string) *StartProcessInstanceRequestFormComponentValuesDetailsDetails { - s.Name = &v - return s -} - -func (s *StartProcessInstanceRequestFormComponentValuesDetailsDetails) SetValue(v string) *StartProcessInstanceRequestFormComponentValuesDetailsDetails { - s.Value = &v - return s -} - -type StartProcessInstanceRequestTargetSelectActioners struct { - // 自选节点的规则key - ActionerKey *string `json:"actionerKey,omitempty" xml:"actionerKey,omitempty"` - // 操作人userId列表 - ActionerUserIds []*string `json:"actionerUserIds,omitempty" xml:"actionerUserIds,omitempty" type:"Repeated"` -} - -func (s StartProcessInstanceRequestTargetSelectActioners) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceRequestTargetSelectActioners) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceRequestTargetSelectActioners) SetActionerKey(v string) *StartProcessInstanceRequestTargetSelectActioners { - s.ActionerKey = &v - return s -} - -func (s *StartProcessInstanceRequestTargetSelectActioners) SetActionerUserIds(v []*string) *StartProcessInstanceRequestTargetSelectActioners { - s.ActionerUserIds = v - return s -} - -type StartProcessInstanceResponseBody struct { - // 审批实例id - InstanceId *string `json:"instanceId,omitempty" xml:"instanceId,omitempty"` -} - -func (s StartProcessInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceResponseBody) SetInstanceId(v string) *StartProcessInstanceResponseBody { - s.InstanceId = &v - return s -} - -type StartProcessInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *StartProcessInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s StartProcessInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s StartProcessInstanceResponse) GoString() string { - return s.String() -} - -func (s *StartProcessInstanceResponse) SetHeaders(v map[string]*string) *StartProcessInstanceResponse { - s.Headers = v - return s -} - -func (s *StartProcessInstanceResponse) SetBody(v *StartProcessInstanceResponseBody) *StartProcessInstanceResponse { - s.Body = v - return s -} - -type TerminateProcessInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s TerminateProcessInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s TerminateProcessInstanceHeaders) GoString() string { - return s.String() -} - -func (s *TerminateProcessInstanceHeaders) SetCommonHeaders(v map[string]*string) *TerminateProcessInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *TerminateProcessInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *TerminateProcessInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type TerminateProcessInstanceRequest struct { - // 是否通过系统操作: - // - // true:由系统直接终止 - // - // false:由指定的操作者终止 - IsSystem *bool `json:"isSystem,omitempty" xml:"isSystem,omitempty"` - // 操作人的userid。 - // - // 当is_system为false时,该参数必传。 - OperatingUserId *string `json:"operatingUserId,omitempty" xml:"operatingUserId,omitempty"` - // 审批实例ID,可通过调用获取审批实例ID列表接口获取。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 终止说明。 - Remark *string `json:"remark,omitempty" xml:"remark,omitempty"` -} - -func (s TerminateProcessInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s TerminateProcessInstanceRequest) GoString() string { - return s.String() -} - -func (s *TerminateProcessInstanceRequest) SetIsSystem(v bool) *TerminateProcessInstanceRequest { - s.IsSystem = &v - return s -} - -func (s *TerminateProcessInstanceRequest) SetOperatingUserId(v string) *TerminateProcessInstanceRequest { - s.OperatingUserId = &v - return s -} - -func (s *TerminateProcessInstanceRequest) SetProcessInstanceId(v string) *TerminateProcessInstanceRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *TerminateProcessInstanceRequest) SetRemark(v string) *TerminateProcessInstanceRequest { - s.Remark = &v - return s -} - -type TerminateProcessInstanceResponseBody struct { - // 撤销结果。 - Result *bool `json:"result,omitempty" xml:"result,omitempty"` - // 接口调用是否成功。 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s TerminateProcessInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s TerminateProcessInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *TerminateProcessInstanceResponseBody) SetResult(v bool) *TerminateProcessInstanceResponseBody { - s.Result = &v - return s -} - -func (s *TerminateProcessInstanceResponseBody) SetSuccess(v bool) *TerminateProcessInstanceResponseBody { - s.Success = &v - return s -} - -type TerminateProcessInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *TerminateProcessInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s TerminateProcessInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s TerminateProcessInstanceResponse) GoString() string { - return s.String() -} - -func (s *TerminateProcessInstanceResponse) SetHeaders(v map[string]*string) *TerminateProcessInstanceResponse { - s.Headers = v - return s -} - -func (s *TerminateProcessInstanceResponse) SetBody(v *TerminateProcessInstanceResponseBody) *TerminateProcessInstanceResponse { - s.Body = v - return s -} - -type UpdateIntegratedTaskHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s UpdateIntegratedTaskHeaders) String() string { - return tea.Prettify(s) -} - -func (s UpdateIntegratedTaskHeaders) GoString() string { - return s.String() -} - -func (s *UpdateIntegratedTaskHeaders) SetCommonHeaders(v map[string]*string) *UpdateIntegratedTaskHeaders { - s.CommonHeaders = v - return s -} - -func (s *UpdateIntegratedTaskHeaders) SetXAcsDingtalkAccessToken(v string) *UpdateIntegratedTaskHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type UpdateIntegratedTaskRequest struct { - // OA审批流程实例ID,过创建实例接口获取 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - Tasks []*UpdateIntegratedTaskRequestTasks `json:"tasks,omitempty" xml:"tasks,omitempty" type:"Repeated"` -} - -func (s UpdateIntegratedTaskRequest) String() string { - return tea.Prettify(s) -} - -func (s UpdateIntegratedTaskRequest) GoString() string { - return s.String() -} - -func (s *UpdateIntegratedTaskRequest) SetProcessInstanceId(v string) *UpdateIntegratedTaskRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *UpdateIntegratedTaskRequest) SetTasks(v []*UpdateIntegratedTaskRequestTasks) *UpdateIntegratedTaskRequest { - s.Tasks = v - return s -} - -type UpdateIntegratedTaskRequestTasks struct { - // 当status为COMPLETED时,必须指定任务结果: - // AGREE:同意 - // REFUSE:拒绝 - // - // 说明 当status为CANCELED时,不需要传result。 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 更新为目标任务状态,可选值 CANCELED、COMPLETED - Status *string `json:"status,omitempty" xml:"status,omitempty"` - // OA审批任务ID - TaskId *int64 `json:"taskId,omitempty" xml:"taskId,omitempty"` -} - -func (s UpdateIntegratedTaskRequestTasks) String() string { - return tea.Prettify(s) -} - -func (s UpdateIntegratedTaskRequestTasks) GoString() string { - return s.String() -} - -func (s *UpdateIntegratedTaskRequestTasks) SetResult(v string) *UpdateIntegratedTaskRequestTasks { - s.Result = &v - return s -} - -func (s *UpdateIntegratedTaskRequestTasks) SetStatus(v string) *UpdateIntegratedTaskRequestTasks { - s.Status = &v - return s -} - -func (s *UpdateIntegratedTaskRequestTasks) SetTaskId(v int64) *UpdateIntegratedTaskRequestTasks { - s.TaskId = &v - return s -} - -type UpdateIntegratedTaskResponseBody struct { - // 是否更新成功 - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s UpdateIntegratedTaskResponseBody) String() string { - return tea.Prettify(s) -} - -func (s UpdateIntegratedTaskResponseBody) GoString() string { - return s.String() -} - -func (s *UpdateIntegratedTaskResponseBody) SetSuccess(v bool) *UpdateIntegratedTaskResponseBody { - s.Success = &v - return s -} - -type UpdateIntegratedTaskResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *UpdateIntegratedTaskResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s UpdateIntegratedTaskResponse) String() string { - return tea.Prettify(s) -} - -func (s UpdateIntegratedTaskResponse) GoString() string { - return s.String() -} - -func (s *UpdateIntegratedTaskResponse) SetHeaders(v map[string]*string) *UpdateIntegratedTaskResponse { - s.Headers = v - return s -} - -func (s *UpdateIntegratedTaskResponse) SetBody(v *UpdateIntegratedTaskResponseBody) *UpdateIntegratedTaskResponse { - s.Body = v - return s -} - -type UpdateProcessInstanceHeaders struct { - CommonHeaders map[string]*string `json:"commonHeaders,omitempty" xml:"commonHeaders,omitempty"` - XAcsDingtalkAccessToken *string `json:"x-acs-dingtalk-access-token,omitempty" xml:"x-acs-dingtalk-access-token,omitempty"` -} - -func (s UpdateProcessInstanceHeaders) String() string { - return tea.Prettify(s) -} - -func (s UpdateProcessInstanceHeaders) GoString() string { - return s.String() -} - -func (s *UpdateProcessInstanceHeaders) SetCommonHeaders(v map[string]*string) *UpdateProcessInstanceHeaders { - s.CommonHeaders = v - return s -} - -func (s *UpdateProcessInstanceHeaders) SetXAcsDingtalkAccessToken(v string) *UpdateProcessInstanceHeaders { - s.XAcsDingtalkAccessToken = &v - return s -} - -type UpdateProcessInstanceRequest struct { - // 抄送列表,注意最大抄送人数量不能超过30。 - Notifiers []*UpdateProcessInstanceRequestNotifiers `json:"notifiers,omitempty" xml:"notifiers,omitempty" type:"Repeated"` - // 审批实例ID。 - ProcessInstanceId *string `json:"processInstanceId,omitempty" xml:"processInstanceId,omitempty"` - // 实例结果: - // 实例状态是COMPLETED,必须设置代表以下含义。 - // agree:同意 - // refuse:拒绝 - // 实例状态为TERMINATED,必须设置代表含义,result取值agree和refuse均代表撤销审批流。 - Result *string `json:"result,omitempty" xml:"result,omitempty"` - // 实例状态: - // COMPLETED:结束审批流 - // TERMINATED:终止审批流 - Status *string `json:"status,omitempty" xml:"status,omitempty"` -} - -func (s UpdateProcessInstanceRequest) String() string { - return tea.Prettify(s) -} - -func (s UpdateProcessInstanceRequest) GoString() string { - return s.String() -} - -func (s *UpdateProcessInstanceRequest) SetNotifiers(v []*UpdateProcessInstanceRequestNotifiers) *UpdateProcessInstanceRequest { - s.Notifiers = v - return s -} - -func (s *UpdateProcessInstanceRequest) SetProcessInstanceId(v string) *UpdateProcessInstanceRequest { - s.ProcessInstanceId = &v - return s -} - -func (s *UpdateProcessInstanceRequest) SetResult(v string) *UpdateProcessInstanceRequest { - s.Result = &v - return s -} - -func (s *UpdateProcessInstanceRequest) SetStatus(v string) *UpdateProcessInstanceRequest { - s.Status = &v - return s -} - -type UpdateProcessInstanceRequestNotifiers struct { - // 抄送接收人用户userId。 - UserId *string `json:"userId,omitempty" xml:"userId,omitempty"` -} - -func (s UpdateProcessInstanceRequestNotifiers) String() string { - return tea.Prettify(s) -} - -func (s UpdateProcessInstanceRequestNotifiers) GoString() string { - return s.String() -} - -func (s *UpdateProcessInstanceRequestNotifiers) SetUserId(v string) *UpdateProcessInstanceRequestNotifiers { - s.UserId = &v - return s -} - -type UpdateProcessInstanceResponseBody struct { - Success *bool `json:"success,omitempty" xml:"success,omitempty"` -} - -func (s UpdateProcessInstanceResponseBody) String() string { - return tea.Prettify(s) -} - -func (s UpdateProcessInstanceResponseBody) GoString() string { - return s.String() -} - -func (s *UpdateProcessInstanceResponseBody) SetSuccess(v bool) *UpdateProcessInstanceResponseBody { - s.Success = &v - return s -} - -type UpdateProcessInstanceResponse struct { - Headers map[string]*string `json:"headers,omitempty" xml:"headers,omitempty" require:"true"` - Body *UpdateProcessInstanceResponseBody `json:"body,omitempty" xml:"body,omitempty" require:"true"` -} - -func (s UpdateProcessInstanceResponse) String() string { - return tea.Prettify(s) -} - -func (s UpdateProcessInstanceResponse) GoString() string { - return s.String() -} - -func (s *UpdateProcessInstanceResponse) SetHeaders(v map[string]*string) *UpdateProcessInstanceResponse { - s.Headers = v - return s -} - -func (s *UpdateProcessInstanceResponse) SetBody(v *UpdateProcessInstanceResponseBody) *UpdateProcessInstanceResponse { - s.Body = v - return s -} - -type Client struct { - openapi.Client -} - -func NewClient(config *openapi.Config) (*Client, error) { - client := new(Client) - err := client.Init(config) - return client, err -} - -func (client *Client) Init(config *openapi.Config) (_err error) { - _err = client.Client.Init(config) - if _err != nil { - return _err - } - client.EndpointRule = tea.String("") - if tea.BoolValue(util.Empty(client.Endpoint)) { - client.Endpoint = tea.String("api.dingtalk.com") - } - - return nil -} - -func (client *Client) AddApproveDentryAuth(request *AddApproveDentryAuthRequest) (_result *AddApproveDentryAuthResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &AddApproveDentryAuthHeaders{} - _result = &AddApproveDentryAuthResponse{} - _body, _err := client.AddApproveDentryAuthWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) AddApproveDentryAuthWithOptions(request *AddApproveDentryAuthRequest, headers *AddApproveDentryAuthHeaders, runtime *util.RuntimeOptions) (_result *AddApproveDentryAuthResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.FileInfos)) { - body["fileInfos"] = request.FileInfos - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - body["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &AddApproveDentryAuthResponse{} - _body, _err := client.DoROARequest(tea.String("AddApproveDentryAuth"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/spaces/files/authDownload"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) AddProcessInstanceComment(request *AddProcessInstanceCommentRequest) (_result *AddProcessInstanceCommentResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &AddProcessInstanceCommentHeaders{} - _result = &AddProcessInstanceCommentResponse{} - _body, _err := client.AddProcessInstanceCommentWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) AddProcessInstanceCommentWithOptions(request *AddProcessInstanceCommentRequest, headers *AddProcessInstanceCommentHeaders, runtime *util.RuntimeOptions) (_result *AddProcessInstanceCommentResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.CommentUserId)) { - body["commentUserId"] = request.CommentUserId - } - - if !tea.BoolValue(util.IsUnset(request.File)) { - body["file"] = request.File - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.Text)) { - body["text"] = request.Text - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &AddProcessInstanceCommentResponse{} - _body, _err := client.DoROARequest(tea.String("AddProcessInstanceComment"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/comments"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) BatchUpdateProcessInstance(request *BatchUpdateProcessInstanceRequest) (_result *BatchUpdateProcessInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &BatchUpdateProcessInstanceHeaders{} - _result = &BatchUpdateProcessInstanceResponse{} - _body, _err := client.BatchUpdateProcessInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) BatchUpdateProcessInstanceWithOptions(request *BatchUpdateProcessInstanceRequest, headers *BatchUpdateProcessInstanceHeaders, runtime *util.RuntimeOptions) (_result *BatchUpdateProcessInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.UpdateProcessInstanceRequests)) { - body["updateProcessInstanceRequests"] = request.UpdateProcessInstanceRequests - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &BatchUpdateProcessInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("BatchUpdateProcessInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("PUT"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/instances/batch"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) CancelIntegratedTask(request *CancelIntegratedTaskRequest) (_result *CancelIntegratedTaskResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &CancelIntegratedTaskHeaders{} - _result = &CancelIntegratedTaskResponse{} - _body, _err := client.CancelIntegratedTaskWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) CancelIntegratedTaskWithOptions(request *CancelIntegratedTaskRequest, headers *CancelIntegratedTaskHeaders, runtime *util.RuntimeOptions) (_result *CancelIntegratedTaskResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ActivityId)) { - body["activityId"] = request.ActivityId - } - - if !tea.BoolValue(util.IsUnset(request.ActivityIds)) { - body["activityIds"] = request.ActivityIds - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &CancelIntegratedTaskResponse{} - _body, _err := client.DoROARequest(tea.String("CancelIntegratedTask"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/tasks/cancel"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) CleanProcessData(request *CleanProcessDataRequest) (_result *CleanProcessDataResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &CleanProcessDataHeaders{} - _result = &CleanProcessDataResponse{} - _body, _err := client.CleanProcessDataWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) CleanProcessDataWithOptions(request *CleanProcessDataRequest, headers *CleanProcessDataHeaders, runtime *util.RuntimeOptions) (_result *CleanProcessDataResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.CorpId)) { - body["corpId"] = request.CorpId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &CleanProcessDataResponse{} - _body, _err := client.DoROARequest(tea.String("CleanProcessData"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processes/clean"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) CopyProcess(request *CopyProcessRequest) (_result *CopyProcessResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &CopyProcessHeaders{} - _result = &CopyProcessResponse{} - _body, _err := client.CopyProcessWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) CopyProcessWithOptions(request *CopyProcessRequest, headers *CopyProcessHeaders, runtime *util.RuntimeOptions) (_result *CopyProcessResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.CopyOptions)) { - body["copyOptions"] = request.CopyOptions - } - - if !tea.BoolValue(util.IsUnset(request.SourceCorpId)) { - body["sourceCorpId"] = request.SourceCorpId - } - - if !tea.BoolValue(util.IsUnset(request.SourceProcessVOList)) { - body["sourceProcessVOList"] = request.SourceProcessVOList - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &CopyProcessResponse{} - _body, _err := client.DoROARequest(tea.String("CopyProcess"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processes/copy"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) CreateIntegratedTask(request *CreateIntegratedTaskRequest) (_result *CreateIntegratedTaskResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &CreateIntegratedTaskHeaders{} - _result = &CreateIntegratedTaskResponse{} - _body, _err := client.CreateIntegratedTaskWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) CreateIntegratedTaskWithOptions(request *CreateIntegratedTaskRequest, headers *CreateIntegratedTaskHeaders, runtime *util.RuntimeOptions) (_result *CreateIntegratedTaskResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ActivityId)) { - body["activityId"] = request.ActivityId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.Tasks)) { - body["tasks"] = request.Tasks - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &CreateIntegratedTaskResponse{} - _body, _err := client.DoROARequest(tea.String("CreateIntegratedTask"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/tasks"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) DeleteProcess(request *DeleteProcessRequest) (_result *DeleteProcessResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &DeleteProcessHeaders{} - _result = &DeleteProcessResponse{} - _body, _err := client.DeleteProcessWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) DeleteProcessWithOptions(request *DeleteProcessRequest, headers *DeleteProcessHeaders, runtime *util.RuntimeOptions) (_result *DeleteProcessResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.CleanRunningTask)) { - query["cleanRunningTask"] = request.CleanRunningTask - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - query["processCode"] = request.ProcessCode - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &DeleteProcessResponse{} - _body, _err := client.DoROARequest(tea.String("DeleteProcess"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("DELETE"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/schemas"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) ExecuteProcessInstance(request *ExecuteProcessInstanceRequest) (_result *ExecuteProcessInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &ExecuteProcessInstanceHeaders{} - _result = &ExecuteProcessInstanceResponse{} - _body, _err := client.ExecuteProcessInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) ExecuteProcessInstanceWithOptions(request *ExecuteProcessInstanceRequest, headers *ExecuteProcessInstanceHeaders, runtime *util.RuntimeOptions) (_result *ExecuteProcessInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ActionerUserId)) { - body["actionerUserId"] = request.ActionerUserId - } - - if !tea.BoolValue(util.IsUnset(request.File)) { - body["file"] = request.File - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.Remark)) { - body["remark"] = request.Remark - } - - if !tea.BoolValue(util.IsUnset(request.Result)) { - body["result"] = request.Result - } - - if !tea.BoolValue(util.IsUnset(request.TaskId)) { - body["taskId"] = request.TaskId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &ExecuteProcessInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("ExecuteProcessInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/execute"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) FormCreate(request *FormCreateRequest) (_result *FormCreateResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &FormCreateHeaders{} - _result = &FormCreateResponse{} - _body, _err := client.FormCreateWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) FormCreateWithOptions(request *FormCreateRequest, headers *FormCreateHeaders, runtime *util.RuntimeOptions) (_result *FormCreateResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Description)) { - body["description"] = request.Description - } - - if !tea.BoolValue(util.IsUnset(request.FormComponents)) { - body["formComponents"] = request.FormComponents - } - - if !tea.BoolValue(util.IsUnset(request.Name)) { - body["name"] = request.Name - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.TemplateConfig)) { - body["templateConfig"] = request.TemplateConfig - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &FormCreateResponse{} - _body, _err := client.DoROARequest(tea.String("FormCreate"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/forms"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetAttachmentSpace(request *GetAttachmentSpaceRequest) (_result *GetAttachmentSpaceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetAttachmentSpaceHeaders{} - _result = &GetAttachmentSpaceResponse{} - _body, _err := client.GetAttachmentSpaceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetAttachmentSpaceWithOptions(request *GetAttachmentSpaceRequest, headers *GetAttachmentSpaceHeaders, runtime *util.RuntimeOptions) (_result *GetAttachmentSpaceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AgentId)) { - body["agentId"] = request.AgentId - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - body["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &GetAttachmentSpaceResponse{} - _body, _err := client.DoROARequest(tea.String("GetAttachmentSpace"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/spaces/infos/query"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetConditionFormComponent(request *GetConditionFormComponentRequest) (_result *GetConditionFormComponentResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetConditionFormComponentHeaders{} - _result = &GetConditionFormComponentResponse{} - _body, _err := client.GetConditionFormComponentWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetConditionFormComponentWithOptions(request *GetConditionFormComponentRequest, headers *GetConditionFormComponentHeaders, runtime *util.RuntimeOptions) (_result *GetConditionFormComponentResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AgentId)) { - query["agentId"] = request.AgentId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - query["processCode"] = request.ProcessCode - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetConditionFormComponentResponse{} - _body, _err := client.DoROARequest(tea.String("GetConditionFormComponent"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processes/conditions/components"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetCrmProcCodes() (_result *GetCrmProcCodesResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetCrmProcCodesHeaders{} - _result = &GetCrmProcCodesResponse{} - _body, _err := client.GetCrmProcCodesWithOptions(headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetCrmProcCodesWithOptions(headers *GetCrmProcCodesHeaders, runtime *util.RuntimeOptions) (_result *GetCrmProcCodesResponse, _err error) { - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - } - _result = &GetCrmProcCodesResponse{} - _body, _err := client.DoROARequest(tea.String("GetCrmProcCodes"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/crm/processes"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetManageProcessByStaffId(request *GetManageProcessByStaffIdRequest) (_result *GetManageProcessByStaffIdResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetManageProcessByStaffIdHeaders{} - _result = &GetManageProcessByStaffIdResponse{} - _body, _err := client.GetManageProcessByStaffIdWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetManageProcessByStaffIdWithOptions(request *GetManageProcessByStaffIdRequest, headers *GetManageProcessByStaffIdHeaders, runtime *util.RuntimeOptions) (_result *GetManageProcessByStaffIdResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.UserId)) { - query["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetManageProcessByStaffIdResponse{} - _body, _err := client.DoROARequest(tea.String("GetManageProcessByStaffId"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processes/managements/templates"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetProcessCodeByName(request *GetProcessCodeByNameRequest) (_result *GetProcessCodeByNameResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetProcessCodeByNameHeaders{} - _result = &GetProcessCodeByNameResponse{} - _body, _err := client.GetProcessCodeByNameWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetProcessCodeByNameWithOptions(request *GetProcessCodeByNameRequest, headers *GetProcessCodeByNameHeaders, runtime *util.RuntimeOptions) (_result *GetProcessCodeByNameResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Name)) { - query["name"] = request.Name - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetProcessCodeByNameResponse{} - _body, _err := client.DoROARequest(tea.String("GetProcessCodeByName"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/schemaNames/processCodes"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetProcessConfig(request *GetProcessConfigRequest) (_result *GetProcessConfigResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetProcessConfigHeaders{} - _result = &GetProcessConfigResponse{} - _body, _err := client.GetProcessConfigWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetProcessConfigWithOptions(request *GetProcessConfigRequest, headers *GetProcessConfigHeaders, runtime *util.RuntimeOptions) (_result *GetProcessConfigResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ProcCode)) { - query["procCode"] = request.ProcCode - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetProcessConfigResponse{} - _body, _err := client.DoROARequest(tea.String("GetProcessConfig"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/crm/processes/configurations"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetProcessInstance(request *GetProcessInstanceRequest) (_result *GetProcessInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetProcessInstanceHeaders{} - _result = &GetProcessInstanceResponse{} - _body, _err := client.GetProcessInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetProcessInstanceWithOptions(request *GetProcessInstanceRequest, headers *GetProcessInstanceHeaders, runtime *util.RuntimeOptions) (_result *GetProcessInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - query["processInstanceId"] = request.ProcessInstanceId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetProcessInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("GetProcessInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetSpaceWithDownloadAuth(request *GetSpaceWithDownloadAuthRequest) (_result *GetSpaceWithDownloadAuthResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetSpaceWithDownloadAuthHeaders{} - _result = &GetSpaceWithDownloadAuthResponse{} - _body, _err := client.GetSpaceWithDownloadAuthWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetSpaceWithDownloadAuthWithOptions(request *GetSpaceWithDownloadAuthRequest, headers *GetSpaceWithDownloadAuthHeaders, runtime *util.RuntimeOptions) (_result *GetSpaceWithDownloadAuthResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AgentId)) { - body["agentId"] = request.AgentId - } - - if !tea.BoolValue(util.IsUnset(request.FileId)) { - body["fileId"] = request.FileId - } - - if !tea.BoolValue(util.IsUnset(request.FileIdList)) { - body["fileIdList"] = request.FileIdList - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - body["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &GetSpaceWithDownloadAuthResponse{} - _body, _err := client.DoROARequest(tea.String("GetSpaceWithDownloadAuth"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/spaces/authPreview"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GetUserTodoTaskSum(request *GetUserTodoTaskSumRequest) (_result *GetUserTodoTaskSumResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GetUserTodoTaskSumHeaders{} - _result = &GetUserTodoTaskSumResponse{} - _body, _err := client.GetUserTodoTaskSumWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GetUserTodoTaskSumWithOptions(request *GetUserTodoTaskSumRequest, headers *GetUserTodoTaskSumHeaders, runtime *util.RuntimeOptions) (_result *GetUserTodoTaskSumResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.UserId)) { - query["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &GetUserTodoTaskSumResponse{} - _body, _err := client.DoROARequest(tea.String("GetUserTodoTaskSum"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processes/todoTasks/numbers"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GrantCspaceAuthorization(request *GrantCspaceAuthorizationRequest) (_result *GrantCspaceAuthorizationResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GrantCspaceAuthorizationHeaders{} - _result = &GrantCspaceAuthorizationResponse{} - _body, _err := client.GrantCspaceAuthorizationWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GrantCspaceAuthorizationWithOptions(request *GrantCspaceAuthorizationRequest, headers *GrantCspaceAuthorizationHeaders, runtime *util.RuntimeOptions) (_result *GrantCspaceAuthorizationResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.DurationSeconds)) { - body["durationSeconds"] = request.DurationSeconds - } - - if !tea.BoolValue(util.IsUnset(request.SpaceId)) { - body["spaceId"] = request.SpaceId - } - - if !tea.BoolValue(util.IsUnset(request.Type)) { - body["type"] = request.Type - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - body["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &GrantCspaceAuthorizationResponse{} - _body, _err := client.DoROARequest(tea.String("GrantCspaceAuthorization"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/spaces/authorize"), tea.String("none"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) GrantProcessInstanceForDownloadFile(request *GrantProcessInstanceForDownloadFileRequest) (_result *GrantProcessInstanceForDownloadFileResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &GrantProcessInstanceForDownloadFileHeaders{} - _result = &GrantProcessInstanceForDownloadFileResponse{} - _body, _err := client.GrantProcessInstanceForDownloadFileWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) GrantProcessInstanceForDownloadFileWithOptions(request *GrantProcessInstanceForDownloadFileRequest, headers *GrantProcessInstanceForDownloadFileHeaders, runtime *util.RuntimeOptions) (_result *GrantProcessInstanceForDownloadFileResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.FileId)) { - body["fileId"] = request.FileId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &GrantProcessInstanceForDownloadFileResponse{} - _body, _err := client.DoROARequest(tea.String("GrantProcessInstanceForDownloadFile"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/spaces/files/urls/download"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) InstallApp(request *InstallAppRequest) (_result *InstallAppResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &InstallAppHeaders{} - _result = &InstallAppResponse{} - _body, _err := client.InstallAppWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) InstallAppWithOptions(request *InstallAppRequest, headers *InstallAppHeaders, runtime *util.RuntimeOptions) (_result *InstallAppResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.BizGroup)) { - body["bizGroup"] = request.BizGroup - } - - if !tea.BoolValue(util.IsUnset(request.InstallOption)) { - body["installOption"] = request.InstallOption - } - - if !tea.BoolValue(util.IsUnset(request.SourceDirName)) { - body["sourceDirName"] = request.SourceDirName - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &InstallAppResponse{} - _body, _err := client.DoROARequest(tea.String("InstallApp"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processes/apps/install"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) ListProcessInstanceIds(request *ListProcessInstanceIdsRequest) (_result *ListProcessInstanceIdsResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &ListProcessInstanceIdsHeaders{} - _result = &ListProcessInstanceIdsResponse{} - _body, _err := client.ListProcessInstanceIdsWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) ListProcessInstanceIdsWithOptions(request *ListProcessInstanceIdsRequest, headers *ListProcessInstanceIdsHeaders, runtime *util.RuntimeOptions) (_result *ListProcessInstanceIdsResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.EndTime)) { - body["endTime"] = request.EndTime - } - - if !tea.BoolValue(util.IsUnset(request.MaxResults)) { - body["maxResults"] = request.MaxResults - } - - if !tea.BoolValue(util.IsUnset(request.NextToken)) { - body["nextToken"] = request.NextToken - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.StartTime)) { - body["startTime"] = request.StartTime - } - - if !tea.BoolValue(util.IsUnset(request.UserIds)) { - body["userIds"] = request.UserIds - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &ListProcessInstanceIdsResponse{} - _body, _err := client.DoROARequest(tea.String("ListProcessInstanceIds"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processes/instanceIds/query"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) ListTodoWorkRecords(request *ListTodoWorkRecordsRequest) (_result *ListTodoWorkRecordsResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &ListTodoWorkRecordsHeaders{} - _result = &ListTodoWorkRecordsResponse{} - _body, _err := client.ListTodoWorkRecordsWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) ListTodoWorkRecordsWithOptions(request *ListTodoWorkRecordsRequest, headers *ListTodoWorkRecordsHeaders, runtime *util.RuntimeOptions) (_result *ListTodoWorkRecordsResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.MaxResults)) { - query["maxResults"] = request.MaxResults - } - - if !tea.BoolValue(util.IsUnset(request.NextToken)) { - query["nextToken"] = request.NextToken - } - - if !tea.BoolValue(util.IsUnset(request.Status)) { - query["status"] = request.Status - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - query["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &ListTodoWorkRecordsResponse{} - _body, _err := client.DoROARequest(tea.String("ListTodoWorkRecords"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/workRecords/todoTasks"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) ListUserVisibleBpmsProcesses(request *ListUserVisibleBpmsProcessesRequest) (_result *ListUserVisibleBpmsProcessesResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &ListUserVisibleBpmsProcessesHeaders{} - _result = &ListUserVisibleBpmsProcessesResponse{} - _body, _err := client.ListUserVisibleBpmsProcessesWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) ListUserVisibleBpmsProcessesWithOptions(request *ListUserVisibleBpmsProcessesRequest, headers *ListUserVisibleBpmsProcessesHeaders, runtime *util.RuntimeOptions) (_result *ListUserVisibleBpmsProcessesResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.MaxResults)) { - query["maxResults"] = request.MaxResults - } - - if !tea.BoolValue(util.IsUnset(request.NextToken)) { - query["nextToken"] = request.NextToken - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - query["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &ListUserVisibleBpmsProcessesResponse{} - _body, _err := client.DoROARequest(tea.String("ListUserVisibleBpmsProcesses"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processes/userVisibilities/templates"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) ProcessForecast(request *ProcessForecastRequest) (_result *ProcessForecastResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &ProcessForecastHeaders{} - _result = &ProcessForecastResponse{} - _body, _err := client.ProcessForecastWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) ProcessForecastWithOptions(request *ProcessForecastRequest, headers *ProcessForecastHeaders, runtime *util.RuntimeOptions) (_result *ProcessForecastResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.DeptId)) { - body["deptId"] = request.DeptId - } - - if !tea.BoolValue(util.IsUnset(request.FormComponentValues)) { - body["formComponentValues"] = request.FormComponentValues - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - body["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &ProcessForecastResponse{} - _body, _err := client.DoROARequest(tea.String("ProcessForecast"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processes/forecast"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QueryAllFormInstances(request *QueryAllFormInstancesRequest) (_result *QueryAllFormInstancesResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QueryAllFormInstancesHeaders{} - _result = &QueryAllFormInstancesResponse{} - _body, _err := client.QueryAllFormInstancesWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QueryAllFormInstancesWithOptions(request *QueryAllFormInstancesRequest, headers *QueryAllFormInstancesHeaders, runtime *util.RuntimeOptions) (_result *QueryAllFormInstancesResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AppUuid)) { - query["appUuid"] = request.AppUuid - } - - if !tea.BoolValue(util.IsUnset(request.FormCode)) { - query["formCode"] = request.FormCode - } - - if !tea.BoolValue(util.IsUnset(request.MaxResults)) { - query["maxResults"] = request.MaxResults - } - - if !tea.BoolValue(util.IsUnset(request.NextToken)) { - query["nextToken"] = request.NextToken - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &QueryAllFormInstancesResponse{} - _body, _err := client.DoROARequest(tea.String("QueryAllFormInstances"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/forms/pages/instances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QueryAllProcessInstances(request *QueryAllProcessInstancesRequest) (_result *QueryAllProcessInstancesResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QueryAllProcessInstancesHeaders{} - _result = &QueryAllProcessInstancesResponse{} - _body, _err := client.QueryAllProcessInstancesWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QueryAllProcessInstancesWithOptions(request *QueryAllProcessInstancesRequest, headers *QueryAllProcessInstancesHeaders, runtime *util.RuntimeOptions) (_result *QueryAllProcessInstancesResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AppUuid)) { - query["appUuid"] = request.AppUuid - } - - if !tea.BoolValue(util.IsUnset(request.EndTimeInMills)) { - query["endTimeInMills"] = request.EndTimeInMills - } - - if !tea.BoolValue(util.IsUnset(request.MaxResults)) { - query["maxResults"] = request.MaxResults - } - - if !tea.BoolValue(util.IsUnset(request.NextToken)) { - query["nextToken"] = request.NextToken - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - query["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.StartTimeInMills)) { - query["startTimeInMills"] = request.StartTimeInMills - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &QueryAllProcessInstancesResponse{} - _body, _err := client.DoROARequest(tea.String("QueryAllProcessInstances"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processes/pages/instances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QueryFormByBizType(request *QueryFormByBizTypeRequest) (_result *QueryFormByBizTypeResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QueryFormByBizTypeHeaders{} - _result = &QueryFormByBizTypeResponse{} - _body, _err := client.QueryFormByBizTypeWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QueryFormByBizTypeWithOptions(request *QueryFormByBizTypeRequest, headers *QueryFormByBizTypeHeaders, runtime *util.RuntimeOptions) (_result *QueryFormByBizTypeResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AppUuid)) { - body["appUuid"] = request.AppUuid - } - - if !tea.BoolValue(util.IsUnset(request.BizTypes)) { - body["bizTypes"] = request.BizTypes - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &QueryFormByBizTypeResponse{} - _body, _err := client.DoROARequest(tea.String("QueryFormByBizType"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/forms/forminfos/query"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QueryFormInstance(request *QueryFormInstanceRequest) (_result *QueryFormInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QueryFormInstanceHeaders{} - _result = &QueryFormInstanceResponse{} - _body, _err := client.QueryFormInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QueryFormInstanceWithOptions(request *QueryFormInstanceRequest, headers *QueryFormInstanceHeaders, runtime *util.RuntimeOptions) (_result *QueryFormInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AppUuid)) { - query["appUuid"] = request.AppUuid - } - - if !tea.BoolValue(util.IsUnset(request.FormCode)) { - query["formCode"] = request.FormCode - } - - if !tea.BoolValue(util.IsUnset(request.FormInstanceId)) { - query["formInstanceId"] = request.FormInstanceId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &QueryFormInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("QueryFormInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/forms/instances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QueryIntegratedTodoTask(request *QueryIntegratedTodoTaskRequest) (_result *QueryIntegratedTodoTaskResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QueryIntegratedTodoTaskHeaders{} - _result = &QueryIntegratedTodoTaskResponse{} - _body, _err := client.QueryIntegratedTodoTaskWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QueryIntegratedTodoTaskWithOptions(request *QueryIntegratedTodoTaskRequest, headers *QueryIntegratedTodoTaskHeaders, runtime *util.RuntimeOptions) (_result *QueryIntegratedTodoTaskResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.CreateBefore)) { - query["createBefore"] = request.CreateBefore - } - - if !tea.BoolValue(util.IsUnset(request.PageNumber)) { - query["pageNumber"] = request.PageNumber - } - - if !tea.BoolValue(util.IsUnset(request.PageSize)) { - query["pageSize"] = request.PageSize - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - query["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &QueryIntegratedTodoTaskResponse{} - _body, _err := client.DoROARequest(tea.String("QueryIntegratedTodoTask"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/todoTasks"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QueryProcessByBizCategoryId(request *QueryProcessByBizCategoryIdRequest) (_result *QueryProcessByBizCategoryIdResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QueryProcessByBizCategoryIdHeaders{} - _result = &QueryProcessByBizCategoryIdResponse{} - _body, _err := client.QueryProcessByBizCategoryIdWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QueryProcessByBizCategoryIdWithOptions(request *QueryProcessByBizCategoryIdRequest, headers *QueryProcessByBizCategoryIdHeaders, runtime *util.RuntimeOptions) (_result *QueryProcessByBizCategoryIdResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.BizType)) { - query["bizType"] = request.BizType - } - - if !tea.BoolValue(util.IsUnset(request.UserId)) { - query["userId"] = request.UserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &QueryProcessByBizCategoryIdResponse{} - _body, _err := client.DoROARequest(tea.String("QueryProcessByBizCategoryId"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/processes/categories/templates"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) QuerySchemaByProcessCode(request *QuerySchemaByProcessCodeRequest) (_result *QuerySchemaByProcessCodeResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &QuerySchemaByProcessCodeHeaders{} - _result = &QuerySchemaByProcessCodeResponse{} - _body, _err := client.QuerySchemaByProcessCodeWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) QuerySchemaByProcessCodeWithOptions(request *QuerySchemaByProcessCodeRequest, headers *QuerySchemaByProcessCodeHeaders, runtime *util.RuntimeOptions) (_result *QuerySchemaByProcessCodeResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - query := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.AppUuid)) { - query["appUuid"] = request.AppUuid - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - query["processCode"] = request.ProcessCode - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Query: openapiutil.Query(query), - } - _result = &QuerySchemaByProcessCodeResponse{} - _body, _err := client.DoROARequest(tea.String("QuerySchemaByProcessCode"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("GET"), tea.String("AK"), tea.String("/v1.0/workflow/forms/schemas/processCodes"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) RedirectWorkflowTask(request *RedirectWorkflowTaskRequest) (_result *RedirectWorkflowTaskResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &RedirectWorkflowTaskHeaders{} - _result = &RedirectWorkflowTaskResponse{} - _body, _err := client.RedirectWorkflowTaskWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) RedirectWorkflowTaskWithOptions(request *RedirectWorkflowTaskRequest, headers *RedirectWorkflowTaskHeaders, runtime *util.RuntimeOptions) (_result *RedirectWorkflowTaskResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ActionName)) { - body["actionName"] = request.ActionName - } - - if !tea.BoolValue(util.IsUnset(request.OperateUserId)) { - body["operateUserId"] = request.OperateUserId - } - - if !tea.BoolValue(util.IsUnset(request.Remark)) { - body["remark"] = request.Remark - } - - if !tea.BoolValue(util.IsUnset(request.TaskId)) { - body["taskId"] = request.TaskId - } - - if !tea.BoolValue(util.IsUnset(request.ToUserId)) { - body["toUserId"] = request.ToUserId - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &RedirectWorkflowTaskResponse{} - _body, _err := client.DoROARequest(tea.String("RedirectWorkflowTask"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/tasks/redirect"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) SaveIntegratedInstance(request *SaveIntegratedInstanceRequest) (_result *SaveIntegratedInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &SaveIntegratedInstanceHeaders{} - _result = &SaveIntegratedInstanceResponse{} - _body, _err := client.SaveIntegratedInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) SaveIntegratedInstanceWithOptions(request *SaveIntegratedInstanceRequest, headers *SaveIntegratedInstanceHeaders, runtime *util.RuntimeOptions) (_result *SaveIntegratedInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.FormComponentValueList)) { - body["formComponentValueList"] = request.FormComponentValueList - } - - if !tea.BoolValue(util.IsUnset(request.Notifiers)) { - body["notifiers"] = request.Notifiers - } - - if !tea.BoolValue(util.IsUnset(request.OriginatorUserId)) { - body["originatorUserId"] = request.OriginatorUserId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.Title)) { - body["title"] = request.Title - } - - if !tea.BoolValue(util.IsUnset(request.Url)) { - body["url"] = request.Url - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &SaveIntegratedInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("SaveIntegratedInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/instances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) SaveProcess(request *SaveProcessRequest) (_result *SaveProcessResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &SaveProcessHeaders{} - _result = &SaveProcessResponse{} - _body, _err := client.SaveProcessWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) SaveProcessWithOptions(request *SaveProcessRequest, headers *SaveProcessHeaders, runtime *util.RuntimeOptions) (_result *SaveProcessResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Description)) { - body["description"] = request.Description - } - - if !tea.BoolValue(util.IsUnset(request.FormComponents)) { - body["formComponents"] = request.FormComponents - } - - if !tea.BoolValue(util.IsUnset(request.Name)) { - body["name"] = request.Name - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.ProcessFeatureConfig)) { - body["processFeatureConfig"] = request.ProcessFeatureConfig - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &SaveProcessResponse{} - _body, _err := client.DoROARequest(tea.String("SaveProcess"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/schemas"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) StartProcessInstance(request *StartProcessInstanceRequest) (_result *StartProcessInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &StartProcessInstanceHeaders{} - _result = &StartProcessInstanceResponse{} - _body, _err := client.StartProcessInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) StartProcessInstanceWithOptions(request *StartProcessInstanceRequest, headers *StartProcessInstanceHeaders, runtime *util.RuntimeOptions) (_result *StartProcessInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Approvers)) { - body["approvers"] = request.Approvers - } - - if !tea.BoolValue(util.IsUnset(request.CcList)) { - body["ccList"] = request.CcList - } - - if !tea.BoolValue(util.IsUnset(request.CcPosition)) { - body["ccPosition"] = request.CcPosition - } - - if !tea.BoolValue(util.IsUnset(request.DeptId)) { - body["deptId"] = request.DeptId - } - - if !tea.BoolValue(util.IsUnset(request.FormComponentValues)) { - body["formComponentValues"] = request.FormComponentValues - } - - if !tea.BoolValue(util.IsUnset(request.MicroappAgentId)) { - body["microappAgentId"] = request.MicroappAgentId - } - - if !tea.BoolValue(util.IsUnset(request.OriginatorUserId)) { - body["originatorUserId"] = request.OriginatorUserId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessCode)) { - body["processCode"] = request.ProcessCode - } - - if !tea.BoolValue(util.IsUnset(request.TargetSelectActioners)) { - body["targetSelectActioners"] = request.TargetSelectActioners - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &StartProcessInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("StartProcessInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) TerminateProcessInstance(request *TerminateProcessInstanceRequest) (_result *TerminateProcessInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &TerminateProcessInstanceHeaders{} - _result = &TerminateProcessInstanceResponse{} - _body, _err := client.TerminateProcessInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) TerminateProcessInstanceWithOptions(request *TerminateProcessInstanceRequest, headers *TerminateProcessInstanceHeaders, runtime *util.RuntimeOptions) (_result *TerminateProcessInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.IsSystem)) { - body["isSystem"] = request.IsSystem - } - - if !tea.BoolValue(util.IsUnset(request.OperatingUserId)) { - body["operatingUserId"] = request.OperatingUserId - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.Remark)) { - body["remark"] = request.Remark - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &TerminateProcessInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("TerminateProcessInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("POST"), tea.String("AK"), tea.String("/v1.0/workflow/processInstances/terminate"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) UpdateIntegratedTask(request *UpdateIntegratedTaskRequest) (_result *UpdateIntegratedTaskResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &UpdateIntegratedTaskHeaders{} - _result = &UpdateIntegratedTaskResponse{} - _body, _err := client.UpdateIntegratedTaskWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) UpdateIntegratedTaskWithOptions(request *UpdateIntegratedTaskRequest, headers *UpdateIntegratedTaskHeaders, runtime *util.RuntimeOptions) (_result *UpdateIntegratedTaskResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.Tasks)) { - body["tasks"] = request.Tasks - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &UpdateIntegratedTaskResponse{} - _body, _err := client.DoROARequest(tea.String("UpdateIntegratedTask"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("PUT"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/tasks"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} - -func (client *Client) UpdateProcessInstance(request *UpdateProcessInstanceRequest) (_result *UpdateProcessInstanceResponse, _err error) { - runtime := &util.RuntimeOptions{} - headers := &UpdateProcessInstanceHeaders{} - _result = &UpdateProcessInstanceResponse{} - _body, _err := client.UpdateProcessInstanceWithOptions(request, headers, runtime) - if _err != nil { - return _result, _err - } - _result = _body - return _result, _err -} - -func (client *Client) UpdateProcessInstanceWithOptions(request *UpdateProcessInstanceRequest, headers *UpdateProcessInstanceHeaders, runtime *util.RuntimeOptions) (_result *UpdateProcessInstanceResponse, _err error) { - _err = util.ValidateModel(request) - if _err != nil { - return _result, _err - } - body := map[string]interface{}{} - if !tea.BoolValue(util.IsUnset(request.Notifiers)) { - body["notifiers"] = request.Notifiers - } - - if !tea.BoolValue(util.IsUnset(request.ProcessInstanceId)) { - body["processInstanceId"] = request.ProcessInstanceId - } - - if !tea.BoolValue(util.IsUnset(request.Result)) { - body["result"] = request.Result - } - - if !tea.BoolValue(util.IsUnset(request.Status)) { - body["status"] = request.Status - } - - realHeaders := make(map[string]*string) - if !tea.BoolValue(util.IsUnset(headers.CommonHeaders)) { - realHeaders = headers.CommonHeaders - } - - if !tea.BoolValue(util.IsUnset(headers.XAcsDingtalkAccessToken)) { - realHeaders["x-acs-dingtalk-access-token"] = util.ToJSONString(headers.XAcsDingtalkAccessToken) - } - - req := &openapi.OpenApiRequest{ - Headers: realHeaders, - Body: openapiutil.ParseToMap(body), - } - _result = &UpdateProcessInstanceResponse{} - _body, _err := client.DoROARequest(tea.String("UpdateProcessInstance"), tea.String("workflow_1.0"), tea.String("HTTP"), tea.String("PUT"), tea.String("AK"), tea.String("/v1.0/workflow/processCentres/instances"), tea.String("json"), req, runtime) - if _err != nil { - return _result, _err - } - _err = tea.Convert(_body, &_result) - return _result, _err -} diff --git a/vendor/github.com/alibabacloud-go/tea-utils/v2/LICENSE b/vendor/github.com/alibabacloud-go/tea-utils/v2/LICENSE deleted file mode 100644 index 0c44dcefe3..0000000000 --- a/vendor/github.com/alibabacloud-go/tea-utils/v2/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright (c) 2009-present, Alibaba Cloud All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/alibabacloud-go/tea-utils/v2/service/service.go b/vendor/github.com/alibabacloud-go/tea-utils/v2/service/service.go deleted file mode 100644 index 1362cbd2e6..0000000000 --- a/vendor/github.com/alibabacloud-go/tea-utils/v2/service/service.go +++ /dev/null @@ -1,487 +0,0 @@ -package service - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "reflect" - "runtime" - "strconv" - "strings" - "time" - - "github.com/alibabacloud-go/tea/tea" -) - -var defaultUserAgent = fmt.Sprintf("AlibabaCloud (%s; %s) Golang/%s Core/%s TeaDSL/1", runtime.GOOS, runtime.GOARCH, strings.Trim(runtime.Version(), "go"), "0.01") - -type RuntimeOptions struct { - Autoretry *bool `json:"autoretry" xml:"autoretry"` - IgnoreSSL *bool `json:"ignoreSSL" xml:"ignoreSSL"` - Key *string `json:"key,omitempty" xml:"key,omitempty"` - Cert *string `json:"cert,omitempty" xml:"cert,omitempty"` - Ca *string `json:"ca,omitempty" xml:"ca,omitempty"` - MaxAttempts *int `json:"maxAttempts" xml:"maxAttempts"` - BackoffPolicy *string `json:"backoffPolicy" xml:"backoffPolicy"` - BackoffPeriod *int `json:"backoffPeriod" xml:"backoffPeriod"` - ReadTimeout *int `json:"readTimeout" xml:"readTimeout"` - ConnectTimeout *int `json:"connectTimeout" xml:"connectTimeout"` - LocalAddr *string `json:"localAddr" xml:"localAddr"` - HttpProxy *string `json:"httpProxy" xml:"httpProxy"` - HttpsProxy *string `json:"httpsProxy" xml:"httpsProxy"` - NoProxy *string `json:"noProxy" xml:"noProxy"` - MaxIdleConns *int `json:"maxIdleConns" xml:"maxIdleConns"` - Socks5Proxy *string `json:"socks5Proxy" xml:"socks5Proxy"` - Socks5NetWork *string `json:"socks5NetWork" xml:"socks5NetWork"` - KeepAlive *bool `json:"keepAlive" xml:"keepAlive"` -} - -func (s RuntimeOptions) String() string { - return tea.Prettify(s) -} - -func (s RuntimeOptions) GoString() string { - return s.String() -} - -func (s *RuntimeOptions) SetAutoretry(v bool) *RuntimeOptions { - s.Autoretry = &v - return s -} - -func (s *RuntimeOptions) SetIgnoreSSL(v bool) *RuntimeOptions { - s.IgnoreSSL = &v - return s -} - -func (s *RuntimeOptions) SetKey(v string) *RuntimeOptions { - s.Key = &v - return s -} - -func (s *RuntimeOptions) SetCert(v string) *RuntimeOptions { - s.Cert = &v - return s -} - -func (s *RuntimeOptions) SetCa(v string) *RuntimeOptions { - s.Ca = &v - return s -} - -func (s *RuntimeOptions) SetMaxAttempts(v int) *RuntimeOptions { - s.MaxAttempts = &v - return s -} - -func (s *RuntimeOptions) SetBackoffPolicy(v string) *RuntimeOptions { - s.BackoffPolicy = &v - return s -} - -func (s *RuntimeOptions) SetBackoffPeriod(v int) *RuntimeOptions { - s.BackoffPeriod = &v - return s -} - -func (s *RuntimeOptions) SetReadTimeout(v int) *RuntimeOptions { - s.ReadTimeout = &v - return s -} - -func (s *RuntimeOptions) SetConnectTimeout(v int) *RuntimeOptions { - s.ConnectTimeout = &v - return s -} - -func (s *RuntimeOptions) SetHttpProxy(v string) *RuntimeOptions { - s.HttpProxy = &v - return s -} - -func (s *RuntimeOptions) SetHttpsProxy(v string) *RuntimeOptions { - s.HttpsProxy = &v - return s -} - -func (s *RuntimeOptions) SetNoProxy(v string) *RuntimeOptions { - s.NoProxy = &v - return s -} - -func (s *RuntimeOptions) SetMaxIdleConns(v int) *RuntimeOptions { - s.MaxIdleConns = &v - return s -} - -func (s *RuntimeOptions) SetLocalAddr(v string) *RuntimeOptions { - s.LocalAddr = &v - return s -} - -func (s *RuntimeOptions) SetSocks5Proxy(v string) *RuntimeOptions { - s.Socks5Proxy = &v - return s -} - -func (s *RuntimeOptions) SetSocks5NetWork(v string) *RuntimeOptions { - s.Socks5NetWork = &v - return s -} - -func (s *RuntimeOptions) SetKeepAlive(v bool) *RuntimeOptions { - s.KeepAlive = &v - return s -} - -func ReadAsString(body io.Reader) (*string, error) { - byt, err := ioutil.ReadAll(body) - if err != nil { - return tea.String(""), err - } - r, ok := body.(io.ReadCloser) - if ok { - r.Close() - } - return tea.String(string(byt)), nil -} - -func StringifyMapValue(a map[string]interface{}) map[string]*string { - res := make(map[string]*string) - for key, value := range a { - if value != nil { - switch value.(type) { - case string: - res[key] = tea.String(value.(string)) - default: - byt, _ := json.Marshal(value) - res[key] = tea.String(string(byt)) - } - } - } - return res -} - -func AnyifyMapValue(a map[string]*string) map[string]interface{} { - res := make(map[string]interface{}) - for key, value := range a { - res[key] = tea.StringValue(value) - } - return res -} - -func ReadAsBytes(body io.Reader) ([]byte, error) { - byt, err := ioutil.ReadAll(body) - if err != nil { - return nil, err - } - r, ok := body.(io.ReadCloser) - if ok { - r.Close() - } - return byt, nil -} - -func DefaultString(reaStr, defaultStr *string) *string { - if reaStr == nil { - return defaultStr - } - return reaStr -} - -func ToJSONString(a interface{}) *string { - switch v := a.(type) { - case *string: - return v - case string: - return tea.String(v) - case []byte: - return tea.String(string(v)) - case io.Reader: - byt, err := ioutil.ReadAll(v) - if err != nil { - return nil - } - return tea.String(string(byt)) - } - byt, err := json.Marshal(a) - if err != nil { - return nil - } - return tea.String(string(byt)) -} - -func DefaultNumber(reaNum, defaultNum *int) *int { - if reaNum == nil { - return defaultNum - } - return reaNum -} - -func ReadAsJSON(body io.Reader) (result interface{}, err error) { - byt, err := ioutil.ReadAll(body) - if err != nil { - return - } - if string(byt) == "" { - return - } - r, ok := body.(io.ReadCloser) - if ok { - r.Close() - } - d := json.NewDecoder(bytes.NewReader(byt)) - d.UseNumber() - err = d.Decode(&result) - return -} - -func GetNonce() *string { - return tea.String(getUUID()) -} - -func Empty(val *string) *bool { - return tea.Bool(val == nil || tea.StringValue(val) == "") -} - -func ValidateModel(a interface{}) error { - if a == nil { - return nil - } - err := tea.Validate(a) - return err -} - -func EqualString(val1, val2 *string) *bool { - return tea.Bool(tea.StringValue(val1) == tea.StringValue(val2)) -} - -func EqualNumber(val1, val2 *int) *bool { - return tea.Bool(tea.IntValue(val1) == tea.IntValue(val2)) -} - -func IsUnset(val interface{}) *bool { - if val == nil { - return tea.Bool(true) - } - - v := reflect.ValueOf(val) - if v.Kind() == reflect.Ptr || v.Kind() == reflect.Slice || v.Kind() == reflect.Map { - return tea.Bool(v.IsNil()) - } - - valType := reflect.TypeOf(val) - valZero := reflect.Zero(valType) - return tea.Bool(valZero == v) -} - -func ToBytes(a *string) []byte { - return []byte(tea.StringValue(a)) -} - -func AssertAsMap(a interface{}) (_result map[string]interface{}, _err error) { - r := reflect.ValueOf(a) - if r.Kind().String() != "map" { - return nil, errors.New(fmt.Sprintf("%v is not a map[string]interface{}", a)) - } - - res := make(map[string]interface{}) - tmp := r.MapKeys() - for _, key := range tmp { - res[key.String()] = r.MapIndex(key).Interface() - } - - return res, nil -} - -func AssertAsNumber(a interface{}) (_result *int, _err error) { - res := 0 - switch a.(type) { - case int: - tmp := a.(int) - res = tmp - case *int: - tmp := a.(*int) - res = tea.IntValue(tmp) - default: - return nil, errors.New(fmt.Sprintf("%v is not a int", a)) - } - - return tea.Int(res), nil -} - -func AssertAsBoolean(a interface{}) (_result *bool, _err error) { - res := false - switch a.(type) { - case bool: - tmp := a.(bool) - res = tmp - case *bool: - tmp := a.(*bool) - res = tea.BoolValue(tmp) - default: - return nil, errors.New(fmt.Sprintf("%v is not a bool", a)) - } - - return tea.Bool(res), nil -} - -func AssertAsString(a interface{}) (_result *string, _err error) { - res := "" - switch a.(type) { - case string: - tmp := a.(string) - res = tmp - case *string: - tmp := a.(*string) - res = tea.StringValue(tmp) - default: - return nil, errors.New(fmt.Sprintf("%v is not a string", a)) - } - - return tea.String(res), nil -} - -func AssertAsBytes(a interface{}) (_result []byte, _err error) { - res, ok := a.([]byte) - if !ok { - return nil, errors.New(fmt.Sprintf("%v is not a []byte", a)) - } - return res, nil -} - -func AssertAsReadable(a interface{}) (_result io.Reader, _err error) { - res, ok := a.(io.Reader) - if !ok { - return nil, errors.New(fmt.Sprintf("%v is not a reader", a)) - } - return res, nil -} - -func AssertAsArray(a interface{}) (_result []interface{}, _err error) { - r := reflect.ValueOf(a) - if r.Kind().String() != "array" && r.Kind().String() != "slice" { - return nil, errors.New(fmt.Sprintf("%v is not a []interface{}", a)) - } - aLen := r.Len() - res := make([]interface{}, 0) - for i := 0; i < aLen; i++ { - res = append(res, r.Index(i).Interface()) - } - return res, nil -} - -func ParseJSON(a *string) interface{} { - mapTmp := make(map[string]interface{}) - d := json.NewDecoder(bytes.NewReader([]byte(tea.StringValue(a)))) - d.UseNumber() - err := d.Decode(&mapTmp) - if err == nil { - return mapTmp - } - - sliceTmp := make([]interface{}, 0) - d = json.NewDecoder(bytes.NewReader([]byte(tea.StringValue(a)))) - d.UseNumber() - err = d.Decode(&sliceTmp) - if err == nil { - return sliceTmp - } - - if num, err := strconv.Atoi(tea.StringValue(a)); err == nil { - return num - } - - if ok, err := strconv.ParseBool(tea.StringValue(a)); err == nil { - return ok - } - - if floa64tVal, err := strconv.ParseFloat(tea.StringValue(a), 64); err == nil { - return floa64tVal - } - return nil -} - -func ToString(a []byte) *string { - return tea.String(string(a)) -} - -func ToMap(in interface{}) map[string]interface{} { - if in == nil { - return nil - } - res := tea.ToMap(in) - return res -} - -func ToFormString(a map[string]interface{}) *string { - if a == nil { - return tea.String("") - } - res := "" - urlEncoder := url.Values{} - for key, value := range a { - v := fmt.Sprintf("%v", value) - urlEncoder.Add(key, v) - } - res = urlEncoder.Encode() - return tea.String(res) -} - -func GetDateUTCString() *string { - return tea.String(time.Now().UTC().Format(http.TimeFormat)) -} - -func GetUserAgent(userAgent *string) *string { - if userAgent != nil && tea.StringValue(userAgent) != "" { - return tea.String(defaultUserAgent + " " + tea.StringValue(userAgent)) - } - return tea.String(defaultUserAgent) -} - -func Is2xx(code *int) *bool { - tmp := tea.IntValue(code) - return tea.Bool(tmp >= 200 && tmp < 300) -} - -func Is3xx(code *int) *bool { - tmp := tea.IntValue(code) - return tea.Bool(tmp >= 300 && tmp < 400) -} - -func Is4xx(code *int) *bool { - tmp := tea.IntValue(code) - return tea.Bool(tmp >= 400 && tmp < 500) -} - -func Is5xx(code *int) *bool { - tmp := tea.IntValue(code) - return tea.Bool(tmp >= 500 && tmp < 600) -} - -func Sleep(millisecond *int) error { - ms := tea.IntValue(millisecond) - time.Sleep(time.Duration(ms) * time.Millisecond) - return nil -} - -func ToArray(in interface{}) []map[string]interface{} { - if tea.BoolValue(IsUnset(in)) { - return nil - } - - tmp := make([]map[string]interface{}, 0) - byt, _ := json.Marshal(in) - d := json.NewDecoder(bytes.NewReader(byt)) - d.UseNumber() - err := d.Decode(&tmp) - if err != nil { - return nil - } - return tmp -} diff --git a/vendor/github.com/alibabacloud-go/tea-utils/v2/service/util.go b/vendor/github.com/alibabacloud-go/tea-utils/v2/service/util.go deleted file mode 100644 index a73cb56008..0000000000 --- a/vendor/github.com/alibabacloud-go/tea-utils/v2/service/util.go +++ /dev/null @@ -1,52 +0,0 @@ -package service - -import ( - "crypto/md5" - "crypto/rand" - "encoding/hex" - "hash" - rand2 "math/rand" -) - -type UUID [16]byte - -const numBytes = "1234567890" - -func getUUID() (uuidHex string) { - uuid := newUUID() - uuidHex = hex.EncodeToString(uuid[:]) - return -} - -func randStringBytes(n int) string { - b := make([]byte, n) - for i := range b { - b[i] = numBytes[rand2.Intn(len(numBytes))] - } - return string(b) -} - -func newUUID() UUID { - ns := UUID{} - safeRandom(ns[:]) - u := newFromHash(md5.New(), ns, randStringBytes(16)) - u[6] = (u[6] & 0x0f) | (byte(2) << 4) - u[8] = (u[8]&(0xff>>2) | (0x02 << 6)) - - return u -} - -func newFromHash(h hash.Hash, ns UUID, name string) UUID { - u := UUID{} - h.Write(ns[:]) - h.Write([]byte(name)) - copy(u[:], h.Sum(nil)) - - return u -} - -func safeRandom(dest []byte) { - if _, err := rand.Read(dest); err != nil { - panic(err) - } -} diff --git a/vendor/modules.txt b/vendor/modules.txt index c082cd0840..e488406ea0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -49,7 +49,7 @@ github.com/StackExchange/wmi # github.com/acomagu/bufpipe v1.0.4 ## explicit; go 1.12 github.com/acomagu/bufpipe -# github.com/actiontech/dms v0.0.0-20240201081352-532b5fece9b5 +# github.com/actiontech/dms v0.0.0-20240222054119-687fce156ab3 ## explicit; go 1.19 github.com/actiontech/dms/pkg/dms-common/api/base/v1 github.com/actiontech/dms/pkg/dms-common/api/dms/v1 @@ -59,6 +59,7 @@ github.com/actiontech/dms/pkg/dms-common/dmsobject github.com/actiontech/dms/pkg/dms-common/pkg/aes github.com/actiontech/dms/pkg/dms-common/pkg/http github.com/actiontech/dms/pkg/dms-common/register +github.com/actiontech/dms/pkg/dms-common/sql_op # github.com/actiontech/java-sql-extractor v0.0.0-20231103015812-cdd5fc040f62 ## explicit; go 1.19 github.com/actiontech/java-sql-extractor/java_antlr @@ -83,14 +84,11 @@ github.com/alibabacloud-go/alibabacloud-gateway-spi/client github.com/alibabacloud-go/darabonba-openapi/client # github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.2 ## explicit; go 1.14 -github.com/alibabacloud-go/darabonba-openapi/v2/client # github.com/alibabacloud-go/debug v0.0.0-20190504072949-9472017b5c68 ## explicit github.com/alibabacloud-go/debug/debug # github.com/alibabacloud-go/dingtalk v1.4.88 ## explicit; go 1.15 -github.com/alibabacloud-go/dingtalk/oauth2_1_0 -github.com/alibabacloud-go/dingtalk/workflow_1_0 # github.com/alibabacloud-go/endpoint-util v1.1.0 ## explicit github.com/alibabacloud-go/endpoint-util/service @@ -109,7 +107,6 @@ github.com/alibabacloud-go/tea/utils github.com/alibabacloud-go/tea-utils/service # github.com/alibabacloud-go/tea-utils/v2 v2.0.1 ## explicit; go 1.14 -github.com/alibabacloud-go/tea-utils/v2/service # github.com/alibabacloud-go/tea-xml v1.1.2 ## explicit; go 1.14 github.com/alibabacloud-go/tea-xml/service