| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | 
							- package model
 
- import (
 
- 	"sort"
 
- 	pasturePb "gitee.com/xuyiping_admin/go_proto/proto/go/backend/cow"
 
- )
 
- const (
 
- 	BreedDepthName = "繁育部"
 
- 	VetDepthName   = "兽医部"
 
- )
 
- type SystemDept struct {
 
- 	Id        int64                 `json:"id"`
 
- 	PastureId int64                 `json:"pastureId"`
 
- 	Name      string                `json:"name"`
 
- 	Remarks   string                `json:"remarks"`
 
- 	DeptType  pasturePb.Depth_Kind  `json:"deptType"`
 
- 	LeaderId  int64                 `json:"leaderId"`
 
- 	ParentId  int64                 `json:"parentId"`
 
- 	Sort      int32                 `json:"sort"`
 
- 	IsShow    pasturePb.IsShow_Kind `json:"isShow"`
 
- 	IsDelete  pasturePb.IsShow_Kind `json:"isDelete"`
 
- 	IsInit    pasturePb.IsShow_Kind `json:"isInit"`
 
- 	CreatedAt int64                 `json:"createdAt"`
 
- 	UpdatedAt int64                 `json:"updatedAt"`
 
- }
 
- func (s *SystemDept) TableName() string {
 
- 	return "system_dept"
 
- }
 
- func (s *SystemDept) DepthUpdate(req *pasturePb.SearchDeptRequest) {
 
- 	s.Name = req.Name
 
- 	s.ParentId = int64(req.ParentId)
 
- 	s.Sort = req.Sort
 
- 	s.Remarks = req.Remarks
 
- 	s.IsShow = req.IsShow
 
- }
 
- func NewSystemDept(pastureId int64, req *pasturePb.SearchDeptRequest) *SystemDept {
 
- 	return &SystemDept{
 
- 		PastureId: pastureId,
 
- 		Name:      req.Name,
 
- 		Remarks:   req.Remarks,
 
- 		DeptType:  pasturePb.Depth_Company,
 
- 		LeaderId:  int64(req.LeaderId),
 
- 		ParentId:  int64(req.ParentId),
 
- 		IsShow:    pasturePb.IsShow_Ok,
 
- 		IsDelete:  pasturePb.IsShow_Ok,
 
- 		IsInit:    pasturePb.IsShow_No,
 
- 	}
 
- }
 
- func NewSystemPastureDeptInit(pasture *AppPastureList) *SystemDept {
 
- 	return &SystemDept{
 
- 		PastureId: pasture.Id,
 
- 		Name:      pasture.Name,
 
- 		Remarks:   "",
 
- 		DeptType:  pasturePb.Depth_Company,
 
- 		LeaderId:  0,
 
- 		ParentId:  0,
 
- 		Sort:      0,
 
- 		IsShow:    pasturePb.IsShow_Ok,
 
- 		IsDelete:  pasturePb.IsShow_Ok,
 
- 		IsInit:    pasturePb.IsShow_Ok,
 
- 	}
 
- }
 
- func NewSystemDeptInit(pastureId, parentId int64) []*SystemDept {
 
- 	res := make([]*SystemDept, 0)
 
- 	res = append(res, &SystemDept{
 
- 		PastureId: pastureId,
 
- 		Name:      BreedDepthName,
 
- 		Remarks:   BreedDepthName,
 
- 		DeptType:  pasturePb.Depth_Department,
 
- 		LeaderId:  0,
 
- 		ParentId:  parentId,
 
- 		Sort:      1,
 
- 		IsShow:    pasturePb.IsShow_Ok,
 
- 		IsDelete:  pasturePb.IsShow_Ok,
 
- 		IsInit:    pasturePb.IsShow_Ok,
 
- 	}, &SystemDept{
 
- 		PastureId: pastureId,
 
- 		Name:      VetDepthName,
 
- 		Remarks:   VetDepthName,
 
- 		DeptType:  pasturePb.Depth_Department,
 
- 		LeaderId:  0,
 
- 		ParentId:  parentId,
 
- 		Sort:      2,
 
- 		IsShow:    pasturePb.IsShow_Ok,
 
- 		IsDelete:  pasturePb.IsShow_Ok,
 
- 		IsInit:    pasturePb.IsShow_Ok,
 
- 	})
 
- 	return res
 
- }
 
- type SystemDeptSlice []*SystemDept
 
- func (s SystemDeptSlice) ToPB(systemUserList []*SystemUser) []*pasturePb.SearchDeptRequest {
 
- 	res := make([]*pasturePb.SearchDeptRequest, len(s))
 
- 	for i, d := range s {
 
- 		leaderName := ""
 
- 		for _, v := range systemUserList {
 
- 			if d.LeaderId != v.Id {
 
- 				continue
 
- 			}
 
- 			leaderName = v.Name
 
- 		}
 
- 		res[i] = &pasturePb.SearchDeptRequest{
 
- 			Id:         int32(d.Id),
 
- 			Name:       d.Name,
 
- 			Remarks:    d.Remarks,
 
- 			ParentId:   int32(d.ParentId),
 
- 			DepthType:  d.DeptType,
 
- 			LeaderId:   int32(d.LeaderId),
 
- 			LeaderName: leaderName,
 
- 			Sort:       d.Sort,
 
- 			IsShow:     d.IsShow,
 
- 			IsDelete:   d.IsDelete,
 
- 			PastureId:  int32(d.PastureId),
 
- 			CreatedAt:  int32(d.CreatedAt),
 
- 			UpdatedAt:  int32(d.UpdatedAt),
 
- 		}
 
- 	}
 
- 	return res
 
- }
 
- func (s SystemDeptSlice) ToTree() []*pasturePb.DeptTreeData {
 
- 	res := make([]*pasturePb.DeptTreeData, len(s))
 
- 	if 0 == len(s) {
 
- 		return res
 
- 	}
 
- 	// 正排序
 
- 	sort.Slice(s, func(i, j int) bool {
 
- 		return s[i].ParentId < s[j].ParentId
 
- 	})
 
- 	for i, v := range s {
 
- 		res[i] = &pasturePb.DeptTreeData{
 
- 			Id:        int32(v.Id),
 
- 			ParentId:  int32(v.ParentId),
 
- 			Name:      v.Name,
 
- 			IsShow:    v.IsShow,
 
- 			PastureId: int32(v.PastureId),
 
- 			Children:  make([]*pasturePb.DeptTreeData, 0),
 
- 		}
 
- 	}
 
- 	// 构建树
 
- 	return deptBuildTree(res)
 
- }
 
- func deptBuildTree(deptTreeList []*pasturePb.DeptTreeData) []*pasturePb.DeptTreeData {
 
- 	tree := make([]*pasturePb.DeptTreeData, 0)
 
- 	for _, dept := range deptTreeList {
 
- 		if dept.ParentId == 0 {
 
- 			tree = append(tree, dept)
 
- 		} else {
 
- 			parent := deptFindByID(deptTreeList, dept.ParentId)
 
- 			if parent != nil {
 
- 				parent.Children = append(parent.Children, dept)
 
- 			}
 
- 		}
 
- 	}
 
- 	return tree
 
- }
 
- func deptFindByID(menuTreeList []*pasturePb.DeptTreeData, id int32) *pasturePb.DeptTreeData {
 
- 	for _, v := range menuTreeList {
 
- 		if id == v.Id {
 
- 			return v
 
- 		}
 
- 		if child := deptFindByID(v.Children, id); child != nil {
 
- 			return child
 
- 		}
 
- 	}
 
- 	return nil
 
- }
 
 
  |