Files
condflow/tests/fixtures/approve_executor.go
T

56 lines
1.3 KiB
Go

package fixtures
import (
"git.fsdpf.net/go/condflow"
"git.fsdpf.net/go/reflux"
"git.fsdpf.net/go/reflux/valuex"
"git.fsdpf.net/go/req"
)
// ApproveExecutor 审批执行器
type ApproveExecutor struct {
res req.Resource
}
// NewApproveExecutor 创建审批执行器
func NewApproveExecutor(res req.Resource) *ApproveExecutor {
return &ApproveExecutor{res: res}
}
func (ae *ApproveExecutor) Res() req.Resource {
return ae.res
}
// AutoApprove 自动审批
func (ae *ApproveExecutor) AutoApprove(ctx condflow.Context, cfg valuex.Accessor) (reflux.R, error) {
return reflux.New(map[string]any{
"status": "approved",
"method": "auto",
}), nil
}
// Manager 经理审批
func (ae *ApproveExecutor) Manager(ctx condflow.Context, cfg valuex.Accessor) (reflux.R, error) {
return reflux.New(map[string]any{
"status": "pending",
"approver": "manager",
}), nil
}
// Director 总监审批
func (ae *ApproveExecutor) Director(ctx condflow.Context, cfg valuex.Accessor) (reflux.R, error) {
return reflux.New(map[string]any{
"status": "pending",
"approver": "director",
}), nil
}
// Reject 拒绝
func (ae *ApproveExecutor) Reject(ctx condflow.Context, cfg valuex.Accessor) (reflux.R, error) {
reason, _ := cfg.Lookup("reason")
return reflux.New(map[string]any{
"status": "rejected",
"reason": reason.String(),
}), nil
}