1. 程式人生 > >ECharts小程式應用中樹圖的,後端處理成為樹圖指定格式的json

ECharts小程式應用中樹圖的,後端處理成為樹圖指定格式的json

最近小程式中通用到了ECharts中的樹圖,顯示整體銷售人員的關係,類似下圖:


在ECharts的小程式示例中很好找到,這個demo本身支援指定格式的json繪製樹圖,但是給後端的處理帶來了一定的問題,楊立中給定的json格式是這樣的:


這就需要資料庫與後端做支援,暫時我的實現方案是這樣的:

首先在等級表中記錄上級id(PID),根據某一個團隊查詢出所有人的詳細要顯示的資料,然後根據pid遞迴,返回指定格式的json。

程式碼具體如下:

public function Rank($openId) {
            $res = Db::table('使用者表')->where('openid', $openId)->where('approve', '是')->field('teamNo,wx_id')->find();
            if ($res) {
                $mylr = Db::table('等級表')->where('userId', $res['wx_id'])->field('leftId,rightId')->find();
                $team = Db::table('等級表')->where('teamNo', $res['teamNo'])->field('userId,chiefId')->select();
                foreach ($team as $key => $value) {
                   $money = Db::table('使用者表')->where('wx_id', $team[$key]['userId'])->field('sumCash,realName')->find();
                    $oldCaptain = floor(($money['sumCash']) * 100) / 100;//保留2位小數處理
                    $oldCaptain = sprintf("%.2f", $oldCaptain);//保留2位小數處理
                    $team[$key]['name'] = $money['realName'] . ':' . $oldCaptain;//拼接‘’姓名:錢數‘’格式
                }
                $abc = $this->get_attr($team, 0);
                return json($abc);
            } else {
                return '不是合夥人';
            }
        
    }


    public function get_attr($a, $pid) {
        $tree = array();                                //每次都宣告一個新陣列用來放子元素  
        foreach ($a as $v) {
            if ($v['chiefId'] == $pid) {                      //匹配子記錄  
                $v['children'] = $this->get_attr($a, $v['userId']); //遞迴獲取子記錄  
                if ($v['children'] == null) {
                    unset($v['children']);          //如果子元素為空則unset()進行刪除,說明已經到該分支的最後一個元素了(可選)  
                    unset($v['userId']);      
                    unset($v['chiefId']);
                } else {
                    unset($v['userId']);
                    unset($v['chiefId']);
                }
                $tree[] = $v;                           //將記錄存入新陣列  
            }
        }
        return $tree;                                  //返回新陣列  

    }

查詢到的json格式為: