approval_flow.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package services
  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. }
  32. approvalFlowNode.UserList = append(approvalFlowNode.UserList, userInfo)
  33. }
  34. }
  35. approvalFlow.NodeList = approvalFlowNodeList
  36. return
  37. }
  38. //获取审批人信息
  39. func getAdminListByUserType(userType, user string, productId int) (adminList []*admin.Admin, err error) {
  40. switch userType {
  41. case "user":
  42. adminList, err = admin.GetAdminListByIds(user)
  43. return
  44. case "manager":
  45. roleTypeCode := ``
  46. if productId == 1 {
  47. roleTypeCode = `ficc_admin`
  48. } else if productId == 1 {
  49. roleTypeCode = `rai_admin`
  50. }
  51. if roleTypeCode == `` {
  52. err = errors.New("找不到对应的主管")
  53. return
  54. }
  55. adminList, err = admin.GetAdminListByRoleCode(roleTypeCode)
  56. return
  57. case "role": //角色类型
  58. roleSlice := strings.Split(user, ",")
  59. for _, roleTypeCode := range roleSlice {
  60. list, tmpErr := admin.GetAdminListByRoleCode(roleTypeCode)
  61. if tmpErr != nil {
  62. err = tmpErr
  63. return
  64. }
  65. adminList = append(adminList, list...)
  66. }
  67. return
  68. }
  69. err = errors.New("查找审批人信息异常")
  70. return
  71. }