+ WorkFlow Get()

This commit is contained in:
Max 2021-11-27 08:25:52 +08:00
parent 30799d5c30
commit c5b7bc3491
2 changed files with 48 additions and 5 deletions

View file

@ -93,14 +93,21 @@ func (workflow *WorkFlow) Setting(id int) {}
func (workflow *WorkFlow) SetupAPIs(id int) {}
// Get 读取当前工作流(未完成的)
func (workflow *WorkFlow) Get(uid int, name string, id interface{}) map[string]interface{} {
func (workflow *WorkFlow) Get(uid int, id interface{}) map[string]interface{} {
wflow := gou.Select("xiang.workflow")
hasUser := dbal.Raw(fmt.Sprintf("JSON_CONTAINS(users, '%d', '$')", uid))
params := gou.QueryParam{
Select: []interface{}{"*"},
Select: []interface{}{
"data_id", "id", "input", "name",
"user_id", "users",
"node_name", "node_status",
"status",
"updated_at", "created_at",
},
Wheres: []gou.QueryWhere{
{Column: "name", Value: workflow.Name},
{Column: "data_id", Value: id},
{Column: "user_id", Value: uid},
{Column: hasUser, Value: 1},
{Column: "status", Value: "进行中"},
},
}
@ -111,8 +118,9 @@ func (workflow *WorkFlow) Get(uid int, name string, id interface{}) map[string]i
return map[string]interface{}{
"name": workflow.Name,
"data_id": id,
"node_name": name,
"node_name": workflow.Nodes[0].Name,
"user_id": uid,
"users": []interface{}{uid},
"status": "进行中",
"node_status": "进行中",
"input": map[string]interface{}{},
@ -128,7 +136,7 @@ func (workflow *WorkFlow) Save(uid int, name string, id interface{}, input Input
Wheres: []gou.QueryWhere{
{Column: "name", Value: workflow.Name},
{Column: "data_id", Value: id},
{Column: hasUser},
{Column: hasUser, Value: 1},
{Column: "status", Value: "进行中"},
},
Limit: 1,

View file

@ -42,6 +42,7 @@ func TestSave(t *testing.T) {
data := maps.Of(wflow).Dot()
assert.Equal(t, int64(1), data.Get("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
@ -67,6 +68,7 @@ func TestSaveUpdate(t *testing.T) {
data := maps.Of(wflow).Dot()
assert.Equal(t, int64(1), data.Get("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
@ -79,6 +81,39 @@ func TestSaveUpdate(t *testing.T) {
capsule.Query().From("xiang_workflow").Truncate()
}
func TestGet(t *testing.T) {
assignFlow := Select("assign")
assignFlow.Save(1, "选择商务负责人", 1, Input{
Data: map[string]interface{}{"id": 1, "name": "云主机"},
Form: map[string]interface{}{"biz_id": 1, "name": "张良明"},
})
wflow := assignFlow.Get(1, 1)
data := maps.Of(wflow).Dot()
assert.Equal(t, int64(1), data.Get("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, int64(1), data.Get("user_id"))
assert.Equal(t, []interface{}{float64(1)}, data.Get("users"))
// 清理数据
capsule.Query().From("xiang_workflow").Truncate()
}
func TestGetEmpty(t *testing.T) {
assignFlow := Select("assign")
wflow := assignFlow.Get(1, 1)
data := maps.Of(wflow).Dot()
assert.Equal(t, false, data.Has("id"))
assert.Equal(t, "assign", data.Get("name"))
assert.Equal(t, "选择商务负责人", data.Get("node_name"))
assert.Equal(t, "进行中", data.Get("node_status"))
assert.Equal(t, "进行中", data.Get("status"))
assert.Equal(t, 1, data.Get("user_id"))
assert.Equal(t, []interface{}{1}, data.Get("users"))
}
func check(t *testing.T) {
keys := []string{}
for key, workflow := range WorkFlows {