init: 条件流引擎初始提交
This commit is contained in:
+97
@@ -0,0 +1,97 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user