56 lines
1.3 KiB
Go
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
|
|
}
|