12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- namespace app\common\model;
- use think\Db;
- use think\Model;
- /**
- * 邀请
- */
- class User extends Model
- {
- protected $table = 'user';
- /**
- * 更新邀请码数和推荐团队人数
- * @param string $intro_id 用户id
- * @param integer $num 直推增减人数
- * @param integer $team 团队增减人数
- */
- public function addIntroNum($intro_id, $num, $team)
- {
- //更新直推人数
- if($num < 0) {
- $this->where(['id' => $intro_id])->setDec('intro_num', abs($num));
- } else {
- $this->where(['id' => $intro_id])->setInc('intro_num', $num);
- }
- //更新团队
- $rstjr = $this->where(['id' => $intro_id])->field('id,intro_ids')->find();
- if($rstjr) {
- $tjstr = $rstjr['intro_ids'] . "," . $rstjr['id'];
- $tjstr = trim($tjstr, ',');
- $arr_intro = explode(',', $tjstr);
- if($team < 0) {
- $this->where(['id' => ['in', $arr_intro]])->setDec('intro_num_all', abs($team));
- } else {
- $this->where(['id' => ['in', $arr_intro]])->setInc('intro_num_all', $team);
- }
- }
- }
- /**
- * 获取上几代推荐人
- * @param string $ids 上级id
- * @param int $max 代数
- * @return false|\PDOStatement|string|\think\Collection
- */
- public function getUp($ids = '', $max = 1)
- {
- if($ids) {
- $intro_arr = explode(',', $ids);
- $intro_arr = array_filter($intro_arr);
- $intro_arr = array_slice($intro_arr, -$max);
- $info = Db::name('user')
- ->where(['id' => ['in', $intro_arr]])
- ->field('id,username,nickname,logo,mobile,email,rank')
- ->order('intro_level desc') //按级别倒序,级别越大越靠近本人
- ->limit($max)
- ->select();
- }
- return $info ?? '';
- }
- /**
- * 获取上几代推荐人
- */
- function getUpComplex($username, $min = 1, $max = 1, $str = '', $step = 0)
- {
- if($max >= $step) {
- $user = Db::name('user')->where(['username' => $username])->field("username,intro")->find();
- if($user['username']) {
- if($step >= $min) {
- $str .= ",".$user["username"];
- }
- if($user['intro']) {
- return $this->getUpComplex($user['intro'], $min, $max, $str, $step + 1);
- }
- }
- }
- return $str;
- }
- }
|