|
@@ -6,135 +6,100 @@ use Dever;
|
|
|
|
|
|
class Children
|
|
|
{
|
|
|
+ # 当前节点颜色
|
|
|
+ private $cur_color = 'blue';
|
|
|
+ # 父级节点颜色
|
|
|
+ private $parent_color = '#d71345';
|
|
|
+ # 直属子节点颜色
|
|
|
+ private $child_color = 'green';
|
|
|
+ # 默认节点颜色
|
|
|
+ private $color = '#bababa';
|
|
|
+
|
|
|
public function home()
|
|
|
{
|
|
|
$cur = Dever::input('mid');
|
|
|
- $result = $index = array();
|
|
|
- $k = -1;
|
|
|
+ $parent = Dever::load('invite/api')->getParentAll($cur, 5, 2);
|
|
|
+
|
|
|
+ $data = array();
|
|
|
+ $parents = array();
|
|
|
|
|
|
- $parent = Dever::load('invite/api')->getParentAll($cur, 5);
|
|
|
if ($parent) {
|
|
|
- foreach($parent as $k => $v) {
|
|
|
- $uid = $v['uid'];
|
|
|
- $v = $this->button($v['uid'], $v['uid']);
|
|
|
- if ($k == 0) {
|
|
|
- $result = $v;
|
|
|
- }
|
|
|
- $this->handle($result, $index, $k, $uid, $parent, $cur);
|
|
|
+ foreach ($parent as $k => $v) {
|
|
|
+ $parents[] = $v['uid'];
|
|
|
}
|
|
|
- }
|
|
|
- $k = $k+1;
|
|
|
- $child = $this->handle($result, $index, $k, $cur, array(), false);
|
|
|
|
|
|
- if ($child) {
|
|
|
- $k = $k+1;
|
|
|
- foreach ($child as $i => $v) {
|
|
|
- $c = $this->handle($result, $index, $k, $v['mid'], array(), false, $i);
|
|
|
- if ($c) {
|
|
|
- foreach ($c as $j => $v1) {
|
|
|
- //$d = $this->handle($result, $index, $k+1, $v['mid'], array(), false, $j);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- exit(Dever::json_encode($result));
|
|
|
- }
|
|
|
-
|
|
|
- public function handle(&$result, &$index, $k, $uid, $parent, $cur, $i = -1)
|
|
|
- {
|
|
|
- if (isset($parent[$k+1]['uid']) && $parent[$k+1]['uid']) {
|
|
|
- $cur = $parent[$k+1]['uid'];
|
|
|
- $color = 2;
|
|
|
+ $top = Dever::db('agent/member')->find($parent[0]['uid']);
|
|
|
+ $color = $this->parent_color;
|
|
|
+ # 状态记录 为1时是父级别 2是子级别
|
|
|
+ $state = 1;
|
|
|
} else {
|
|
|
- $color = 1;
|
|
|
- }
|
|
|
- list($data, $index[$k]) = $this->child($uid, $cur, $color);
|
|
|
-
|
|
|
- if (!$data) {
|
|
|
- return false;
|
|
|
+ Dever::alert('根用户无法查询');
|
|
|
+ $top = Dever::db('agent/member')->find($cur);
|
|
|
+ $color = $this->cur_color;
|
|
|
+ # 状态记录 为1时是父级别 2是子级别
|
|
|
+ $state = 2;
|
|
|
}
|
|
|
+
|
|
|
+ $i = 0;
|
|
|
+ $data[$i]['id'] = $top['id'];
|
|
|
+ $data[$i]['name'] = $top['name'];
|
|
|
+ $data[$i]['parent_id'] = 0;
|
|
|
+ $data[$i]['itemStyle']['color'] = $color;
|
|
|
|
|
|
- # 这里后续优化吧
|
|
|
- if ($i < 0 && $k > 0) {
|
|
|
- $i = $index[$k-1];
|
|
|
- }
|
|
|
- if ($k == 0) {
|
|
|
- $result['children'] = $data;
|
|
|
- } elseif ($k == 1) {
|
|
|
- $result['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 2) {
|
|
|
- $result['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 3) {
|
|
|
- $result['children'][$index[$k-3]]['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 4) {
|
|
|
- $result['children'][$index[$k-4]]['children'][$index[$k-3]]['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 5) {
|
|
|
- $result['children'][$index[$k-5]]['children'][$index[$k-4]]['children'][$index[$k-3]]['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 6) {
|
|
|
- $result['children'][$index[$k-6]]['children'][$index[$k-5]]['children'][$index[$k-4]]['children'][$index[$k-3]]['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 7) {
|
|
|
- $result['children'][$index[$k-7]]['children'][$index[$k-6]]['children'][$index[$k-5]]['children'][$index[$k-4]]['children'][$index[$k-3]]['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 8) {
|
|
|
- $result['children'][$index[$k-8]]['children'][$index[$k-7]]['children'][$index[$k-6]]['children'][$index[$k-5]]['children'][$index[$k-4]]['children'][$index[$k-3]]['children'][$index[$k-2]]['children'][$i]['children'] = $data;
|
|
|
- } elseif ($k == 9) {
|
|
|
- $result['children'][$index[$k-9]]['children'][$index[$k-8]]['children'][$index[$k-7]]['children'][$index[$k-6]]['children'][$index[$k-5]]['children'][$index[$k-4]]['children'][$index[$k-3]]['children'][$index[$k-3]]['children'][$i]['children'] = $data;
|
|
|
- }
|
|
|
+ $this->getChild($data, $i, $top['id'], $parents, $cur, $state);
|
|
|
+
|
|
|
+ $result = Dever::walk($data, 0);
|
|
|
|
|
|
- return $data;
|
|
|
+ return $result[0];
|
|
|
}
|
|
|
|
|
|
- public function child($parent, $cur = false, $color = 2)
|
|
|
+ public function getChild(&$data, &$i, $uid, $parents, $cur, $state, $next = true)
|
|
|
{
|
|
|
- $result = array();
|
|
|
- $index = 0;
|
|
|
- $child = Dever::load('invite/api')->getChild($parent, 1, false);
|
|
|
- $num = intval(count($child) / 2);
|
|
|
- foreach ($child as $k => $v) {
|
|
|
- $result[] = $this->button($v['to_uid'], $cur, $color);
|
|
|
- if ($v['to_uid'] == $cur) {
|
|
|
- $index = $k;
|
|
|
- }
|
|
|
- }
|
|
|
- if ($cur) {
|
|
|
- $old = $result;
|
|
|
- $result[$index] = $result[$num];
|
|
|
- $result[$num] = $old[$index];
|
|
|
- $index = $num;
|
|
|
- }
|
|
|
-
|
|
|
- return array($result, $index);
|
|
|
- }
|
|
|
-
|
|
|
- # 获取当前信息
|
|
|
- public function button($mid, $cur = false, $color = 2)
|
|
|
- {
|
|
|
- $child = Dever::db('agent/member')->find($mid);
|
|
|
- $role = Dever::db('setting/role')->find($child['role']);
|
|
|
- $result = array();
|
|
|
- $result['mid'] = $mid;
|
|
|
- $result['name'] = $child['name'];
|
|
|
- $result['value'] = $child['name']."\r\n".$child['mobile']."\r\n".$role['name'];
|
|
|
- if (isset($child['level_id']) && $child['level_id'] && $child['level_id'] > 0) {
|
|
|
- $level = Dever::db('setting/level')->find($child['level_id']);
|
|
|
- $result['value'].= '('.$level['name'].')';
|
|
|
- }
|
|
|
- if(isset($child['source_id']) && $child['source_id'] && $child['source_id']>0){
|
|
|
- $source=Dever::db('setting/source')->one(array('id'=>$child['source_id'],'state'=>1));
|
|
|
- if($source){
|
|
|
- $result['value'] .= "\r\n".$source['name'];
|
|
|
- }
|
|
|
- }
|
|
|
+ $child = Dever::db('agent/member')->select(array('parent_mid' => $uid));
|
|
|
+ if ($child) {
|
|
|
+ foreach ($child as $k => $v) {
|
|
|
+ $i++;
|
|
|
+ $data[$i]['id'] = $v['id'];
|
|
|
+ $data[$i]['name'] = $v['name'] . substr($v['mobile'], -4);
|
|
|
+ $data[$i]['parent_id'] = $v['parent_mid'];
|
|
|
+ $data[$i]['itemStyle']['color'] = $this->color;
|
|
|
|
|
|
- if ($cur && $mid == $cur) {
|
|
|
- if ($color == 1) {
|
|
|
- $result['itemStyle']['color'] = 'green';
|
|
|
- } else {
|
|
|
- $result['itemStyle']['color'] = 'blue';
|
|
|
+ $data[$i]['value'] = $v['name'] . '<br />' . $v['mobile'];
|
|
|
+ if ($v['role']) {
|
|
|
+ $role = Dever::db('setting/role')->find($v['role']);
|
|
|
+ if ($role) {
|
|
|
+ $data[$i]['value'] .= '<br />角色:' . $role['name'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($v['level_id'] && $v['level_id'] > 0) {
|
|
|
+ $level = Dever::db('setting/level')->find($v['level_id']);
|
|
|
+ if ($level) {
|
|
|
+ $data[$i]['value'] .= '<br />等级:' . $level['name'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if ($cur == $uid) {
|
|
|
+ $data[$i]['itemStyle']['color'] = $this->child_color;
|
|
|
+ }
|
|
|
+ if ($cur == $v['id']) {
|
|
|
+ $data[$i]['itemStyle']['color'] = $this->cur_color;
|
|
|
+ $next = true;
|
|
|
+ $state = 2;
|
|
|
+ } elseif ($parents && in_array($v['id'], $parents)) {
|
|
|
+ $data[$i]['itemStyle']['color'] = $this->parent_color;
|
|
|
+ $next = false;
|
|
|
+ $this->getChild($data, $i, $v['id'], $parents, $cur, $state, $next);
|
|
|
+ } elseif ($state == 1) {
|
|
|
+ $next = false;
|
|
|
+ } else {
|
|
|
+ $next = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($next) {
|
|
|
+ $this->getChild($data, $i, $v['id'], $parents, $cur, $state, $next);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- return $result;
|
|
|
}
|
|
|
-
|
|
|
}
|