104 lines
3.6 KiB
PHP
Executable File
104 lines
3.6 KiB
PHP
Executable File
<?php
|
|
namespace wstmart\app\controller;
|
|
use wstmart\common\model\Areas as M;
|
|
use think\Db;
|
|
/**
|
|
* ============================================================================
|
|
* 地区控制器
|
|
*/
|
|
class Areas extends Base{
|
|
/**
|
|
* 列表查询
|
|
*/
|
|
public function listQuery(){
|
|
$m = new M();
|
|
$rs = $m->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;
|
|
}
|
|
}
|