'init'
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
package workflow
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"com.sclktx/m/v2/internal/common/model"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ApproverResolver 审批人动态解析器
|
||||
type ApproverResolver struct {
|
||||
db *gorm.DB
|
||||
}
|
||||
|
||||
func NewApproverResolver(db *gorm.DB) *ApproverResolver {
|
||||
return &ApproverResolver{db: db}
|
||||
}
|
||||
|
||||
// parseJSONIDs 解析 JSON 数组字符串为 uint 切片
|
||||
func parseJSONIDs(jsonStr string) []uint {
|
||||
if jsonStr == "" {
|
||||
return nil
|
||||
}
|
||||
var ids []uint
|
||||
if err := json.Unmarshal([]byte(jsonStr), &ids); err != nil {
|
||||
return nil
|
||||
}
|
||||
return ids
|
||||
}
|
||||
|
||||
// ResolveDeptApproverIDs 取部门指定审批人(approver_user_ids),空则返回空切片
|
||||
func (r *ApproverResolver) ResolveDeptApproverIDs(deptID uint) ([]uint, error) {
|
||||
var dept model.Department
|
||||
if err := r.db.First(&dept, deptID).Error; err != nil {
|
||||
return nil, fmt.Errorf("部门不存在: %w", err)
|
||||
}
|
||||
return parseJSONIDs(dept.ApproverUserIDs), nil
|
||||
}
|
||||
|
||||
// ResolveVPIDsByDepartment 取部门分管领导(vp_user_ids),空则返回空切片
|
||||
func (r *ApproverResolver) ResolveVPIDsByDepartment(deptID uint) ([]uint, error) {
|
||||
var dept model.Department
|
||||
if err := r.db.First(&dept, deptID).Error; err != nil {
|
||||
return nil, fmt.Errorf("部门不存在: %w", err)
|
||||
}
|
||||
return parseJSONIDs(dept.VpUserIDs), nil
|
||||
}
|
||||
|
||||
// GetGlobalApproverIDs 获取所有全局兜底审批人
|
||||
func (r *ApproverResolver) GetGlobalApproverIDs() ([]uint, error) {
|
||||
var approvers []model.GlobalApprover
|
||||
r.db.Find(&approvers)
|
||||
var ids []uint
|
||||
for _, a := range approvers {
|
||||
ids = append(ids, a.UserID)
|
||||
}
|
||||
return ids, nil
|
||||
}
|
||||
Reference in New Issue
Block a user