package fixtures import ( // "fmt" // "git.fsdpf.net/go/contracts" "git.fsdpf.net/go/contracts/base" // "git.fsdpf.net/go/db" "github.com/samber/do" "github.com/samber/lo" ) func init() { caches = append(caches, _ResCache{injector: func(app *do.Injector) { do.Provide(app, GetCondflowServiceProvider) // 缓存 Condflow do.Provide(app, func(i *do.Injector) ([]base.Condflow, error) { defer useRefreshCache(i, "Condflow", func() error { do.Override(i, GetCondflowServiceProvider) do.Override(i, func(i *do.Injector) ([]base.Condflow, error) { return getCondflowCaches(i) }) return nil }) return getCondflowCaches(i) }) }, priority: 0}) } func GetCondflowServiceProvider(container *do.Injector) (base.GetCondflow, error) { caches := do.MustInvoke[[]base.Condflow](container) return func(code string) (base.Condflow, bool) { item, flag := lo.Find(caches, func(i base.Condflow) bool { return i.Code == code || i.Uuid == code }) return item, flag }, nil } func getCondflowCaches(app *do.Injector) (items []base.Condflow, err error) { // TODO: 临时测试数据,等待资源表创建后从数据库读取 // if res, ok := do.MustInvoke[contracts.GetResource](app)("Condflow"); !ok { // return items, fmt.Errorf("获取 Condflow 资源失败") // } else { // items = []base.Condflow{} // if e := res.GetDBTable(base.GetSystemUser()). // Select( // db.T("Condflow").All(), // ). // Order(db.I("Condflow.id").Asc()). // ScanStructs(&items); e != nil { // err = fmt.Errorf("获取 Condflow 资源失败, %w", e) // } // } // items = []base.Condflow{ { Uuid: "550e8400-e29b-41d4-a716-446655440001", Name: "用户审批流程", Code: "user-approval-flow", Comment: "处理用户申请的审批流程,根据金额和信用评分自动分配审批策略", Params: []base.CondflowParam{ {Name: "申请金额", Code: "amount", DataType: "decimal", IsRequired: true, Comment: "申请的金额"}, {Name: "用户信息", Code: "user", DataType: "json", IsRequired: true, Comment: "用户详细信息"}, }, CreatedAt: "2024-01-01 00:00:00", UpdatedAt: "2024-01-01 00:00:00", }, { Uuid: "550e8400-e29b-41d4-a716-446655440002", Name: "邮件营销活动流程", Code: "email-campaign-flow", Comment: "根据用户等级和活跃度自动发送不同类型的营销邮件", Params: []base.CondflowParam{ {Name: "用户信息", Code: "user", DataType: "json", IsRequired: true, Comment: "用户详细信息"}, }, CreatedAt: "2024-01-01 00:00:00", UpdatedAt: "2024-01-01 00:00:00", }, { Uuid: "550e8400-e29b-41d4-a716-446655440003", Name: "订单处理流程", Code: "order-processing-flow", Comment: "订单自动化处理流程,包括配送方式选择和客户通知", Params: []base.CondflowParam{ {Name: "订单信息", Code: "order", DataType: "json", IsRequired: true, Comment: "订单详细信息"}, {Name: "用户信息", Code: "user", DataType: "json", IsRequired: true, Comment: "下单用户信息"}, }, CreatedAt: "2024-01-01 00:00:00", UpdatedAt: "2024-01-01 00:00:00", }, } return }