ferry/pkg/service/getPrincipal.go

122 lines
3.1 KiB
Go
Raw Normal View History

2020-07-15 01:40:56 +08:00
package service
import (
2020-08-26 16:10:19 +08:00
"errors"
2020-07-17 01:20:25 +08:00
"ferry/global/orm"
"ferry/models/system"
2020-08-26 16:10:19 +08:00
"reflect"
2020-07-15 01:40:56 +08:00
"strings"
)
/*
@Author : lanyulei
2020-07-25 14:20:15 +08:00
@todo: 添加新的处理人时候需要修改先完善功能后续有时间的时候优化一下这部分
2020-07-15 01:40:56 +08:00
*/
func GetPrincipal(processor []int, processMethod string) (principals string, err error) {
/*
person 人员
persongroup 人员组
department 部门
variable 变量
*/
var principalList []string
switch processMethod {
case "person":
2020-07-17 01:20:25 +08:00
err = orm.Eloquent.Model(&system.SysUser{}).
Where("user_id in (?)", processor).
Pluck("nick_name", &principalList).Error
2020-07-15 01:40:56 +08:00
if err != nil {
return
}
2020-11-15 14:52:09 +08:00
case "role":
err = orm.Eloquent.Model(&system.SysRole{}).
Where("role_id in (?)", processor).
Pluck("role_name", &principalList).Error
if err != nil {
return
}
2020-11-15 20:13:17 +08:00
case "department":
err = orm.Eloquent.Model(&system.Dept{}).
Where("dept_id in (?)", processor).
Pluck("dept_name", &principalList).Error
if err != nil {
return
}
2020-07-15 01:40:56 +08:00
case "variable":
for _, p := range processor {
switch p {
case 1:
2020-07-20 23:57:42 +08:00
principalList = append(principalList, "创建者")
2020-07-15 01:40:56 +08:00
case 2:
2020-07-20 23:57:42 +08:00
principalList = append(principalList, "创建者负责人")
2020-07-15 01:40:56 +08:00
}
}
}
return strings.Join(principalList, ","), nil
}
2020-07-25 14:20:15 +08:00
// 获取用户对应
2020-07-26 00:16:38 +08:00
func GetPrincipalUserInfo(stateList []interface{}, creator int) (userInfoList []system.SysUser, err error) {
2020-07-25 14:20:15 +08:00
var (
userInfo system.SysUser
deptInfo system.Dept
userInfoListTmp []system.SysUser // 临时保存查询的列表数据
2020-08-26 16:10:19 +08:00
processorList []interface{}
2020-07-25 14:20:15 +08:00
)
err = orm.Eloquent.Model(&userInfo).Where("user_id = ?", creator).Find(&userInfo).Error
if err != nil {
return
}
for _, stateItem := range stateList {
2020-08-26 16:10:19 +08:00
if reflect.TypeOf(stateItem.(map[string]interface{})["processor"]) == nil {
err = errors.New("未找到对应的处理人,请确认。")
return
}
stateItemType := reflect.TypeOf(stateItem.(map[string]interface{})["processor"]).String()
if stateItemType == "[]int" {
for _, v := range stateItem.(map[string]interface{})["processor"].([]int) {
processorList = append(processorList, v)
}
} else {
processorList = stateItem.(map[string]interface{})["processor"].([]interface{})
}
2020-07-26 00:16:38 +08:00
switch stateItem.(map[string]interface{})["process_method"] {
2020-07-25 14:20:15 +08:00
case "person":
err = orm.Eloquent.Model(&system.SysUser{}).
2020-08-26 16:10:19 +08:00
Where("user_id in (?)", processorList).
2020-07-25 14:20:15 +08:00
Find(&userInfoListTmp).Error
if err != nil {
return
}
userInfoList = append(userInfoList, userInfoListTmp...)
case "variable": // 变量
2020-08-26 16:10:19 +08:00
for _, processor := range processorList {
2020-07-25 14:20:15 +08:00
if int(processor.(float64)) == 1 {
// 创建者
userInfoList = append(userInfoList, userInfo)
} else if int(processor.(float64)) == 2 {
// 1. 查询部门信息
err = orm.Eloquent.Model(&deptInfo).Where("dept_id = ?", userInfo.DeptId).Find(&deptInfo).Error
if err != nil {
return
}
// 2. 查询Leader信息
err = orm.Eloquent.Model(&userInfo).Where("user_id = ?", deptInfo.Leader).Find(&userInfo).Error
if err != nil {
return
}
userInfoList = append(userInfoList, userInfo)
}
}
}
}
return
}