123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package services
- import (
- "errors"
- "eta_gn/eta_api/models/system"
- "strconv"
- "strings"
- )
- // ResearchGroup 研究方向分组表
- type ResearchGroupItem struct {
- ResearchGroupId int `json:"research_group_id" description:"研究方向分组ID"`
- ResearchGroupName string `json:"research_group_name" description:"研究方向分组名称"`
- ParentId int `json:"parent_id" description:"父类ID"`
- ChartPermissionId int `json:"chart_permission_id" description:"品种权限ID"`
- Sort int `json:"sort" description:"排序"`
- Members []*ResearchGroupMember `json:"members"`
- Children []*ResearchGroupItem `json:"children"`
- }
- // ResearchGroupMember 研究方向组员信息
- type ResearchGroupMember struct {
- AdminId int `json:"admin_id"`
- AdminName string `json:"admin_name"`
- }
- // GetResearchGroupTree 获取研究方向分组及组员列表
- func GetResearchGroupTree(include int) (respList []*ResearchGroupItem, err error) {
- respList = make([]*ResearchGroupItem, 0)
- list, e := system.GetResearchGroupList()
- if e != nil {
- err = errors.New("获取研究方向分组失败, Err:" + e.Error())
- return
- }
- listLen := len(list)
- if listLen == 0 {
- return
- }
- // 分类
- firstList := make([]*ResearchGroupItem, 0)
- secondList := make([]*ResearchGroupItem, 0)
- for i := 0; i < listLen; i++ {
- item := new(ResearchGroupItem)
- item.ResearchGroupId = list[i].ResearchGroupId
- item.ResearchGroupName = list[i].ResearchGroupName
- item.ParentId = list[i].ParentId
- item.ChartPermissionId = list[i].ChartPermissionId
- item.Sort = list[i].Sort
- if list[i].ParentId == 0 {
- firstList = append(firstList, item)
- } else {
- secondList = append(secondList, item)
- }
- }
- if len(firstList) == 0 {
- return
- }
- // 匹配成员
- relationList, e := system.GetResearchGroupRelationList(include)
- if e != nil {
- err = errors.New("获取研究方向关系失败, Err:" + e.Error())
- return
- }
- for _, v := range secondList {
- members := make([]*ResearchGroupMember, 0)
- for _, r := range relationList {
- if v.ResearchGroupId == r.ResearchGroupId {
- members = append(members, &ResearchGroupMember{
- AdminId: r.AdminId,
- AdminName: r.AdminName,
- })
- }
- }
- v.Members = members
- }
- // 匹配子分类
- for _, p := range firstList {
- children := make([]*ResearchGroupItem, 0)
- for _, child := range secondList {
- if p.ResearchGroupId == child.ParentId {
- children = append(children, child)
- }
- }
- p.Children = children
- }
- respList = firstList
- return
- }
- // UpdateAdminResearchGroup 更新研究员研究方向分组
- func UpdateAdminResearchGroup(adminId int, groupIds string) (err error) {
- if adminId == 0 {
- return
- }
- items := make([]*system.ResearchGroupRelation, 0)
- groupIdArr := strings.Split(groupIds, ",")
- if groupIds != "" {
- for _, v := range groupIdArr {
- groupId, e := strconv.Atoi(v)
- if e != nil {
- err = errors.New("分组ID有误")
- return
- }
- items = append(items, &system.ResearchGroupRelation{
- ResearchGroupId: groupId,
- AdminId: adminId,
- })
- }
- }
- if e := system.UpdateAdminResearchGroup(adminId, items); e != nil {
- err = errors.New("更新研究方向分组失败, Err:" + e.Error())
- }
- return
- }
|