contracts/user_approval.go
2024-05-09 13:15:24 +08:00

82 lines
1.6 KiB
Go

package contracts
import (
"net/http"
"git.fsdpf.net/go/db"
"git.fsdpf.net/go/req"
)
type UserApprovalExecute int
// 审批状态
type UserApprovalStatus int
// 审批节点类型
type UserApprovalFlowType int
const (
// 驳回
UserApprovalExecute_Reject UserApprovalExecute = iota
// 通过
UserApprovalExecute_Resolve
)
const (
// 待审批
UserApprovalStatus_Accept UserApprovalStatus = iota
// 审批中
UserApprovalStatus_Pending
// 通过
UserApprovalStatus_Resolve
// 驳回
UserApprovalStatus_Reject
// 取消审批
UserApprovalStatus_Cancel
)
const (
// 角色节点
UserApprovalFlowType_Role UserApprovalFlowType = iota + 1
// 自动节点
UserApprovalFlowType_Condition
// 开始节点
UserApprovalFlowType_Begin
// 通过节点
UserApprovalFlowType_Reject
// 驳回节点
UserApprovalFlowType_Resolve
)
type UserApproval interface {
// 审批流名称
Name() string
// 发起审批请求
RequestApproval(req.Route, *http.Request) any
// 判断发起审批请求权限
HasUserRoles(req.User) bool
// 获取审批列表标记字段值
Execute(id int64, status UserApprovalExecute, r *http.Request, tx *db.Transaction) (current, next UserApprovalFlow, err error)
}
type UserApprovalFlow interface {
// 节点名称
Name() string
// 节点UUID
Uuid() string
// 节点类型
Type() UserApprovalFlowType
// 注入审批条件
InjectOrm(Orm) error
// 下一节点
Yes() string
// 下一节点
No() string
// 审批角色UUID
RoleUuid() string
// 上一节点
Parent() UserApproval
}
type GetUserApproval func(uuid string) (UserApproval, bool)