setParent($uid, $to_uid); $this->add($uid, $to_uid, 1); return true; } public function setParent($uid, $to_uid, $level = 1) { $parent = $this->getParent($uid); if ($parent) { $level = $level + 1; if ($level > $this->total) { return; } $this->add($parent['uid'], $to_uid, $level); $this->setParent($parent['uid'], $to_uid, $level); } } # 获取某个用户的上级数据 public function getParent($uid, $level = 1) { return Dever::db('invite/relation')->one(array('to_uid' => $uid, 'level' => $level)); } # 获取某个用户的所有上级数据 public function getParentAll($uid, $level = false) { $where['to_uid'] = $uid; if ($level) { $where['level'] = $level; } return Dever::db('invite/relation')->getParent($where); } # 获取某个用户的下级数据 public function getChild($uid, $level = false) { $where['uid'] = $uid; if ($level) { $where['level'] = $level; } return Dever::db('invite/relation')->getChild($where); } # 获取某个用户在x小时之内的下级数据 public function getChildNum($uid, $level = 1, $time = false, $curtime = false, $method = 'count') { $where['uid'] = $uid; if ($level) { $where['level'] = $level; } if ($time) { $time = $time * 3600; if ($curtime) { if (strstr($curtime, '-')) { $curtime = maketime($curtime); } $cur = $curtime; } else { $cur = time(); } $where['end'] = $cur + $time; } if ($method == 'count') { $method = 'getChildCount'; } else { $method = 'getChild'; } return Dever::db('invite/relation')->$method($where); } # 插入数据 public function add($uid, $to_uid, $level = 1) { $data['uid'] = $uid; $data['to_uid'] = $to_uid; $data['level'] = $level; $info = Dever::db('invite/relation')->one($data); if (!$info) { $result = Dever::db('invite/relation')->insert($data); } return true; } }