12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package util
- import (
- "app.yhyue.com/moapp/jyResourcesCenter/rpc/resourcesCenter"
- "bytes"
- "encoding/binary"
- "fmt"
- )
- func MakeTree(Allnode []*resourcesCenter.Organ, node *resourcesCenter.Organ) { //参数为父节点,添加父节点的子节点指针切片
- childs, _ := haveChild(Allnode, node) //判断节点是否有子节点并返回
- if childs != nil {
- node.Data = append(node.Data, childs[0:]...) //添加子节点
- for _, v := range childs { //查询子节点的子节点,并添加到子节点
- _, has := haveChild(Allnode, v)
- if has {
- MakeTree(Allnode, v) //递归添加节点
- }
- }
- }
- }
- //判断是否有子节点
- func haveChild(Allnode []*resourcesCenter.Organ, node *resourcesCenter.Organ) (childs []*resourcesCenter.Organ, yes bool) {
- for _, v := range Allnode {
- if v.ParentId == node.Id {
- childs = append(childs, v)
- }
- }
- if childs != nil {
- yes = true
- }
- return
- }
- //字节数(大端)组转成int(有符号)
- func bytesToIntS(b []byte) (int, error) {
- if len(b) == 3 {
- b = append([]byte{0}, b...)
- }
- bytesBuffer := bytes.NewBuffer(b)
- switch len(b) {
- case 1:
- var tmp int8
- err := binary.Read(bytesBuffer, binary.BigEndian, &tmp)
- return int(tmp), err
- case 2:
- var tmp int16
- err := binary.Read(bytesBuffer, binary.BigEndian, &tmp)
- return int(tmp), err
- case 4:
- var tmp int32
- err := binary.Read(bytesBuffer, binary.BigEndian, &tmp)
- return int(tmp), err
- default:
- return 0, fmt.Errorf("%s", "BytesToInt bytes lenth is invaild!")
- }
- }
|