listQuery(); exit(jsonReturn('', 1,$rs)); } // CREATE TABLE `hyh_user_trees` ( // `id` int(11) NOT NULL AUTO_INCREMENT, // `uid` int(11) NOT NULL DEFAULT '0' COMMENT '用户id', // `pid` int(11) NOT NULL DEFAULT '0' COMMENT '父ID', // `bid` int(11) NOT NULL DEFAULT '0' COMMENT '家族ID', // `lft` int(11) NOT NULL DEFAULT '1' COMMENT '左节点', // `rgt` int(11) NOT NULL DEFAULT '2' COMMENT '右节点', // `t_level` smallint(6) NOT NULL DEFAULT '0' COMMENT '层级', // `update_time` int(10) NOT NULL DEFAULT '0' COMMENT '时间', // PRIMARY KEY (`id`) // ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT; public function tmp(){ return; set_time_limit(0); $user_list = Db::table('rd_users')->where('1=1')->field('user_id,first_leader,shop_id')->order('user_id asc')->select(); foreach ($user_list as $v) { $u_info = Db::table('rd_users')->where('user_id='.$v['user_id'])->field('user_id,first_leader,shop_id')->find(); $userId = $u_info['shop_id']; if($userId){ if($u_info['first_leader']){ $p_info = Db::table('rd_users')->where('user_id='.$u_info['first_leader'])->field('user_id,shop_id')->find(); $pid = $p_info['shop_id']; }else{ $pid = 0; } ectLog($userId,10,1,'注册送ect',['userECT'=>['exp','userECT+10']]); if($pid){ ectLog($pid,5,1,'推荐送ect',['userECT'=>['exp','userECT+5']]); } $this->create_tree($userId,$pid,0); } } die('ok'); } function create_tree($uid,$pid){ if(!$uid) return; if(Db::name('user_trees')->where(array('uid'=>$uid))->find()) return;//树里有 if($pid){ $p_info = Db::name('user_trees')->where(array('uid'=>$pid))->field('bid,t_level')->find(); if($p_info['t_level']){ $t_level = $p_info['t_level'] + 1; }else{ $t_level = 2; } if($p_info['bid']){ $bid = $p_info['bid']; }else{ $bid = $pid; } }else{ $bid = $uid; $t_level = 1; } $set = array( 'uid'=>$uid, 'pid'=>$pid, 'bid'=>$bid, 't_level'=>$t_level, 'update_time'=>time() ); Db::name('user_trees')->insert($set); //获取家族树最顶级节点,重建树 $this->rebuild_tree($bid,1);//重建树,建立有左右值的数据表,对整个结构重新进行一次编号 } function rebuild_tree($root, $left) { // the right value of this node is the left value + 1 $right = $left+1; // get all children of this node $trees = Db::name('user_trees')->where(array('pid'=>$root))->field('uid')->select(); if($trees){ foreach ($trees as $k => $v) { $right = $this->rebuild_tree($v['uid'], $right); } } $set = array( 'lft' => $left, 'rgt' => $right, ); Db::name('user_trees')->where(array('uid'=>$root))->update($set); // return the right value of this node + 1 return $right + 1; } }