workflow.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package workflow
  2. import (
  3. "dashoo.cn/opms_libary/plugin/dingtalk/base"
  4. "dashoo.cn/opms_libary/plugin/dingtalk/context"
  5. "encoding/json"
  6. "github.com/gogf/gf/frame/g"
  7. )
  8. const (
  9. FormSchemasUrl = "/v1.0/workflow/forms/schemas/processCodes"
  10. ProcessInstanceUrl = "/v1.0/workflow/processInstances"
  11. )
  12. //Workflow OA审批
  13. type Workflow struct {
  14. base.Base
  15. }
  16. //NewWorkflow init
  17. func NewWorkflow(context *context.Context) *Workflow {
  18. material := new(Workflow)
  19. material.Context = context
  20. return material
  21. }
  22. //QuerySchemaByProcessCode 获取表单 schema
  23. func (w *Workflow) QuerySchemaByProcessCode(processCode string) (response QuerySchemaByProcessCodeResponse, err error) {
  24. resp, _ := w.HTTPGetWithAccessToken(FormSchemasUrl, g.Map{"processCode": processCode})
  25. if err != nil {
  26. return
  27. }
  28. err = json.Unmarshal(resp, &response)
  29. return response, err
  30. }
  31. //StartProcessInstance 发起审批实例
  32. func (w *Workflow) StartProcessInstance(request *StartProcessInstanceRequest) (response StartProcessInstanceResponse, err error) {
  33. resp, _ := w.HTTPPostJSONWithAccessToken(ProcessInstanceUrl, request)
  34. if err != nil {
  35. return
  36. }
  37. err = json.Unmarshal(resp, &response)
  38. return response, err
  39. }
  40. //QueryProcessInstanceDetail 获取单个审批实例详情
  41. func (w *Workflow) QueryProcessInstanceDetail(instId string) (response QueryProcessInstanceResponse, err error) {
  42. resp, err := w.HTTPGetWithAccessToken(ProcessInstanceUrl, g.Map{"processInstanceId": instId})
  43. if err != nil {
  44. return
  45. }
  46. err = json.Unmarshal(resp, &response)
  47. return
  48. }