|
@@ -1,6 +1,7 @@
|
|
|
package flow
|
|
|
|
|
|
import (
|
|
|
+ "encoding/json"
|
|
|
"errors"
|
|
|
"hongze/hongze_mobile_admin/models/tables/admin"
|
|
|
"hongze/hongze_mobile_admin/models/tables/approval_flow"
|
|
@@ -22,7 +23,7 @@ func GetApprovalFlow(flowId int) (approvalFlow *approval_flow.ApprovalFlowItem,
|
|
|
return
|
|
|
}
|
|
|
for _, approvalFlowNode := range approvalFlowNodeList {
|
|
|
- userList, tmpErr := getAdminListByUserType(approvalFlowNode.UserType, approvalFlowNode.User, approvalFlow.ProductId)
|
|
|
+ userList, tmpErr := getAdminListByUserType(approvalFlowNode.User, approvalFlow.ProductId)
|
|
|
if tmpErr != nil {
|
|
|
err = errors.New("获取审批人失败:Err:" + tmpErr.Error())
|
|
|
return
|
|
@@ -67,39 +68,62 @@ func FormatApprovalFlow(approvalFlow *approval_flow.ApprovalFlowItem) (list [][]
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+type NodeUser struct {
|
|
|
+ UserType string `json:"user_type";description:"用户类型,枚举值,user:指定人,manager:主管,role:角色"`
|
|
|
+ User string `json:"user";description:"所属用户,多个用英文,隔开;用户类型为user代表指定人id,manager代表几级主管,role代表角色类型"`
|
|
|
+}
|
|
|
+
|
|
|
//获取审批人信息
|
|
|
-func getAdminListByUserType(userType, user string, productId int) (adminList []*admin.Admin, err error) {
|
|
|
- switch userType {
|
|
|
- case "user":
|
|
|
- adminList, err = admin.GetAdminListByIds(user)
|
|
|
- return
|
|
|
- case "manager":
|
|
|
- roleTypeCode := ``
|
|
|
- if productId == 1 {
|
|
|
- roleTypeCode = `ficc_admin`
|
|
|
- } else if productId == 1 {
|
|
|
- roleTypeCode = `rai_admin`
|
|
|
- }
|
|
|
- if roleTypeCode == `` {
|
|
|
- err = errors.New("找不到对应的主管")
|
|
|
- return
|
|
|
- }
|
|
|
- adminList, err = admin.GetAdminListByRoleCode(roleTypeCode)
|
|
|
+func getAdminListByUserType(userList string, productId int) (adminList []*admin.Admin, err error) {
|
|
|
+ nodeUserList := make([]NodeUser, 0)
|
|
|
+ err = json.Unmarshal([]byte(userList), &nodeUserList)
|
|
|
+ if err != nil {
|
|
|
return
|
|
|
- case "role": //角色类型
|
|
|
- roleSlice := strings.Split(user, ",")
|
|
|
- for _, roleTypeCode := range roleSlice {
|
|
|
- list, tmpErr := admin.GetAdminListByRoleCode(roleTypeCode)
|
|
|
- if tmpErr != nil {
|
|
|
- err = tmpErr
|
|
|
+ }
|
|
|
+ firstAdminList := make([]*admin.Admin, 0)
|
|
|
+ for _, userInfo := range nodeUserList {
|
|
|
+ userType := userInfo.UserType
|
|
|
+ user := userInfo.User
|
|
|
+ tmpAdminList := make([]*admin.Admin, 0)
|
|
|
+ switch userType {
|
|
|
+ case "user":
|
|
|
+ tmpAdminList, err = admin.GetAdminListByIds(user)
|
|
|
+ case "manager":
|
|
|
+ roleTypeCode := ``
|
|
|
+ if productId == 1 {
|
|
|
+ roleTypeCode = `ficc_admin`
|
|
|
+ } else if productId == 1 {
|
|
|
+ roleTypeCode = `rai_admin`
|
|
|
+ }
|
|
|
+ if roleTypeCode == `` {
|
|
|
+ err = errors.New("找不到对应的主管")
|
|
|
return
|
|
|
}
|
|
|
- adminList = append(adminList, list...)
|
|
|
+ tmpAdminList, err = admin.GetAdminListByRoleCode(roleTypeCode)
|
|
|
+ case "role": //角色类型
|
|
|
+ roleSlice := strings.Split(user, ",")
|
|
|
+ for _, roleTypeCode := range roleSlice {
|
|
|
+ list, tmpErr := admin.GetAdminListByRoleCode(roleTypeCode)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ tmpAdminList = append(tmpAdminList, list...)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ firstAdminList = append(firstAdminList, tmpAdminList...)
|
|
|
+ }
|
|
|
+
|
|
|
+ userMap := make(map[int]*admin.Admin)
|
|
|
+ for _, adminInfo := range firstAdminList {
|
|
|
+ //如果不在,那么就插入用户列表,避免同一个节点重复添加用户
|
|
|
+ if _, ok := userMap[adminInfo.AdminId]; !ok {
|
|
|
+ adminList = append(adminList, adminInfo)
|
|
|
}
|
|
|
- return
|
|
|
}
|
|
|
- err = errors.New("查找审批人信息异常")
|
|
|
+
|
|
|
return
|
|
|
+
|
|
|
}
|
|
|
|
|
|
//获取审批单的审批流程
|