flow.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package flow
  2. import (
  3. "errors"
  4. "hongze/hongze_mobile_admin/models/tables/admin"
  5. "hongze/hongze_mobile_admin/models/tables/approval_flow"
  6. "hongze/hongze_mobile_admin/models/tables/approval_flow_node"
  7. "strings"
  8. )
  9. //获取审批工作流(基础)
  10. func GetApprovalFlow(flowId int) (approvalFlow *approval_flow.ApprovalFlowItem, err error) {
  11. approvalFlow, err = approval_flow.GetByFlowItemId(flowId)
  12. if err != nil {
  13. err = errors.New("查询审批流程失败:Err:" + err.Error())
  14. return
  15. }
  16. approvalFlowNodeList, err := approval_flow_node.GetListByFlowId(approvalFlow.FlowId, approvalFlow.CurrVersion)
  17. if err != nil {
  18. err = errors.New("查询审批节点失败:Err:" + err.Error())
  19. return
  20. }
  21. for _, approvalFlowNode := range approvalFlowNodeList {
  22. userList, tmpErr := getAdminListByUserType(approvalFlowNode.UserType, approvalFlowNode.User, approvalFlow.ProductId)
  23. if tmpErr != nil {
  24. err = errors.New("获取审批人失败:Err:" + tmpErr.Error())
  25. return
  26. }
  27. for _, user := range userList {
  28. userInfo := approval_flow_node.User{
  29. AdminId: user.AdminId,
  30. Name: user.RealName,
  31. RoleTypeCode: user.RoleTypeCode,
  32. Mobile: user.Mobile,
  33. }
  34. approvalFlowNode.UserList = append(approvalFlowNode.UserList, userInfo)
  35. }
  36. }
  37. approvalFlow.NodeList = approvalFlowNodeList
  38. return
  39. }
  40. //获取审批人信息
  41. func getAdminListByUserType(userType, user string, productId int) (adminList []*admin.Admin, err error) {
  42. switch userType {
  43. case "user":
  44. adminList, err = admin.GetAdminListByIds(user)
  45. return
  46. case "manager":
  47. roleTypeCode := ``
  48. if productId == 1 {
  49. roleTypeCode = `ficc_admin`
  50. } else if productId == 1 {
  51. roleTypeCode = `rai_admin`
  52. }
  53. if roleTypeCode == `` {
  54. err = errors.New("找不到对应的主管")
  55. return
  56. }
  57. adminList, err = admin.GetAdminListByRoleCode(roleTypeCode)
  58. return
  59. case "role": //角色类型
  60. roleSlice := strings.Split(user, ",")
  61. for _, roleTypeCode := range roleSlice {
  62. list, tmpErr := admin.GetAdminListByRoleCode(roleTypeCode)
  63. if tmpErr != nil {
  64. err = tmpErr
  65. return
  66. }
  67. adminList = append(adminList, list...)
  68. }
  69. return
  70. }
  71. err = errors.New("查找审批人信息异常")
  72. return
  73. }