Selaa lähdekoodia

自动滑落及修改网体的方法,整合完毕,测试完成

lizhen_gitee 1 vuosi sitten
vanhempi
commit
b6de5feb2d

+ 2 - 38
application/common/library/Auth.php

@@ -224,7 +224,8 @@ class Auth
 
             //更新直推数和团队数
             if(!empty($extend['intro_uid'])){
-                $intronum = $this->addIntroNum($extend['intro_uid'], 1, 1);
+                $usermodel = new User();
+                $intronum = $usermodel->addIntroNum($extend['intro_uid'], 1, 1);
                 if(!$intronum){
                     $this->setError('修改关系网错误');
                     Db::rollback();
@@ -243,44 +244,7 @@ class Auth
         return true;
     }
 
-    /**
-     * 更新邀请码数和推荐团队人数
-     * @param string $tjrname 用户id
-     * @param integer $num 直推增减人数
-     * @param integer $team 团队增减人数
-     */
-    private function addIntroNum($tjrname, $num, $team)
-    {
-        //更新直推人数
-        if($num < 0) {
-            $rs1 = Db::name('user')->where(['id' => $tjrname])->setDec('intro_num', abs($num));
-        } else {
-            $rs1 = Db::name('user')->where(['id' => $tjrname])->setInc('intro_num', $num);
-        }
-        if($rs1 === false){
-            return false;
-        }
-        //更新团队
-        $rstjr = Db::name('user')->where(['id' => $tjrname])->field('id,intro_ids')->find();
-        if($rstjr) {
-            $tjstr = $rstjr['intro_ids'] ? ($rstjr['intro_ids'] . ',' . $rstjr['id']) : $rstjr['id'];
-            $tjstr = trim($tjstr, ',');
-            $arr_intro = explode(',', $tjstr);
-
-            if($team < 0) {
-                $rs2 = Db::name('user')->where(['id' => ['in', $arr_intro]])->setDec('intro_num_all', abs($team));
-            } else {
-                $rs2 = Db::name('user')->where(['id' => ['in', $arr_intro]])->setInc('intro_num_all', $team);
-            }
 
-            if($rs2 === false){
-                return false;
-            }
-
-        }
-
-        return true;
-    }
 
     /**
      * 用户登录

+ 104 - 0
application/common/model/User.php

@@ -148,4 +148,108 @@ class User extends Model
         }
         return $level;
     }
+
+    //设置某人($uid)
+    //的新上级($intro_uid)
+    public function updateIntro($uid,$intro_uid){
+
+        $db = Db::name("user");
+        //验证
+        if($uid == $intro_uid) return "新邀请人不能是自己!";
+
+        $rs_user = $db->where(array('id' => $uid))->find();
+        if(!$rs_user) return "会员 ".$uid.' 不存在!';
+
+        $rs_intro = $db->where(array('id' => $intro_uid))->find();
+        if(!$rs_intro) return "新邀请人 ".$intro_uid.' 不存在!';
+
+        if($rs_user['intro_uid'] == $intro_uid) return "新邀请人不能是原来的邀请人!";
+
+        //新推荐人不能是自己下级
+        if($rs_intro['intro_ids']) {
+            $ary = explode(',', $rs_intro['intro_ids']);
+            if(in_array($rs_user['id'], $ary)) {
+                return "新邀请人不能是自己网体下级会员!";
+            }
+        }
+
+        //更新此会员的上级
+        $data = array();
+        $data['intro_ids']   = $rs_intro['intro_ids'] ?  $rs_intro['intro_ids'].','.$rs_intro['id'] : $rs_intro['id']; //新推荐人id序列
+        $data['intro_level'] = $rs_intro['intro_level'] + 1; //新层数
+        $data['intro_uid']   = $rs_intro['id']; //新推荐人id
+        $rs_self = $db->where(['id' => $uid])->update($data);
+        if($rs_self === false){
+            return '更新某下级自身,失败';
+        }
+
+        //更新此会员的下级会员
+        $num_c = $rs_intro['intro_level'] - $rs_user['intro_level'] + 1;//变化的层数差
+        $user_sub = $db->where("find_in_set('".$rs_user['id']."',intro_ids) > 0")->order("intro_level asc")->select(); //所有下级
+        foreach($user_sub as   $users) { //每个下级(因为是升序查询,所以每个的上级一定先更新完毕)
+            $data_sub = array();
+            $rs_tjr = $db->where(array('id' => $users['intro_uid']))->field('id,intro_ids')->find();//另查一遍,因为都变了
+            $data_sub['intro_level'] = $users['intro_level'] + $num_c; //新层数
+            $data_sub['intro_ids'] = $rs_tjr['intro_ids'].','.$rs_tjr['id']; //新推荐人id序列
+            $rs_down = $db->where(array('id' => $users['id']))->update($data_sub);//更新移动网体的会员
+            if($rs_down === false){
+                return '更新某下下级自身,失败';
+            }
+
+        }
+
+        //更新直推、团队数
+        $team = count($user_sub) + 1;
+        if($rs_user['intro_uid']) {
+            $rs_intronum = $this->addIntroNum($rs_user['intro_uid'], -1, -$team); //有则 更新原上级
+            if($rs_intronum === false){
+                return '更新原有上级推荐数量失败';
+            }
+        }
+        $rs_intronum_new = $this->addIntroNum($intro_uid, 1, $team); //更新新上级
+        if($rs_intronum_new === false){
+            return '更新新的上级推荐数量失败';
+        }
+
+        return true;
+    }
+
+    /**
+     * 更新邀请码数和推荐团队人数
+     * @param string $tjrname 用户id
+     * @param integer $num 直推增减人数
+     * @param integer $team 团队增减人数
+     */
+    public function addIntroNum($tjrname, $num, $team)
+    {
+        //更新直推人数
+        if($num < 0) {
+            $rs1 = Db::name('user')->where(['id' => $tjrname])->setDec('intro_num', abs($num));
+        } else {
+            $rs1 = Db::name('user')->where(['id' => $tjrname])->setInc('intro_num', $num);
+        }
+        if($rs1 === false){
+            return false;
+        }
+        //更新团队
+        $rstjr = Db::name('user')->where(['id' => $tjrname])->field('id,intro_ids')->find();
+        if($rstjr) {
+            $tjstr = $rstjr['intro_ids'] ? ($rstjr['intro_ids'] . ',' . $rstjr['id']) : $rstjr['id'];
+            $tjstr = trim($tjstr, ',');
+            $arr_intro = explode(',', $tjstr);
+
+            if($team < 0) {
+                $rs2 = Db::name('user')->where(['id' => ['in', $arr_intro]])->setDec('intro_num_all', abs($team));
+            } else {
+                $rs2 = Db::name('user')->where(['id' => ['in', $arr_intro]])->setInc('intro_num_all', $team);
+            }
+
+            if($rs2 === false){
+                return false;
+            }
+
+        }
+
+        return true;
+    }
 }

+ 19 - 95
application/index/controller/Plantask.php

@@ -34,13 +34,14 @@ class Plantask extends Controller
             Db::rollback();
             exit;
         }
-        dump($user);
+//        dump($user);
 
         //我的多个下级,的推荐人,改成我的上级。也就是跳过了我
         $my_down = Db::name('user')->where('intro_uid',$user['id'])->select();
+//        dump($my_down);
         if(!empty($my_down)){
             foreach($my_down as $key => $down_user){
-                $rs_down = $this->updateIntro($down_user['id'],$user['intro_uid']);
+                $rs_down = model('user')->updateIntro($down_user['id'],$user['intro_uid']);
                 if($rs_down !== true){
                     echo $rs_down;
                     Db::rollback();
@@ -50,112 +51,35 @@ class Plantask extends Controller
         }
 
 
-        //用不到了
+        //理论上已经用不到了,预防万一又被查到
         //我滑落了,我的上级保持不变,下级都没了
-        /*$my_update = [
+        $my_update = [
             'intro_num' => 0,
             'intro_num_all' => 0,
         ];
         $rs2 = Db::name('user')->where('id',$user['id'])->update($my_update);
         if($rs2 === false){
+            echo '更新自己错误';
             Db::rollback();
-        }*/
-
-
-        //提交
-        Db::rollback();
-    }
-
-    private function updateIntro($uid,$intro_uid){
-
-        $db = Db::name("user");
-        //验证
-        if($uid == $intro_uid) $this->error("新邀请人不能是自己!");
-
-        $rs_user = $db->where(array('id' => $uid))->find();
-        if(!$rs_user) $this->error("会员 ".$uid.' 不存在! ');
-
-        $rs_intro = $db->where(array('id' => $intro_uid))->find();
-        if(!$rs_intro) $this->error("新邀请人 ".$intro_uid.' 不存在! ');
-
-        if($rs_user['intro_uid'] == $intro_uid) $this->error("新邀请人不能是原来的邀请人!");
-
-        //新推荐人不能是自己下级
-        if($rs_intro['intro_ids']) {
-            $ary = explode(',', $rs_intro['intro_ids']);
-            if(in_array($rs_user['id'], $ary)) {
-                $this->error("新邀请人不能是自己网体下级会员!");
-            }
-        }
-
-        //更新此会员的上级
-        $data = array();
-        $data['intro_ids']   = $rs_intro['intro_ids'] ?  $rs_intro['intro_ids'].','.$rs_intro['id'] : $rs_intro['id']; //新推荐人id序列
-        $data['intro_level'] = $rs_intro['intro_level'] + 1; //新层数
-        $data['intro_uid']   = $rs_intro['id']; //新推荐人id
-        $db->where(['id' => $uid])->update($data);
-
-        //更新此会员的下级会员
-        $num_c = $rs_intro['intro_level'] - $rs_user['intro_level'] + 1;//变化的层数差
-        $user_sub = $db->where("find_in_set('".$rs_user['id']."',intro_ids) > 0")->order("intro_level asc")->select(); //所有下级
-        foreach($user_sub as   $users) { //每个下级(因为是升序查询,所以每个的上级一定先更新完毕)
-            $data_sub = array();
-            $rs_tjr = $db->where(array('id' => $users['intro_uid']))->field('id,intro_ids')->find();
-            $data_sub['intro_level'] = $users['intro_level'] + $num_c; //新层数
-            $data_sub['intro_ids'] = $rs_tjr['intro_ids'].','.$rs_tjr['id']; //新推荐人id序列
-            $db->where(array('id' => $users['id']))->update($data_sub);//更新移动网体的会员
+            exit;
         }
 
-        //更新直推、团队数
-        $team = count($user_sub) + 1;
-        if($rs_user['intro_uid']) {
-            $this->addIntroNum($rs_user['intro_uid'], -1, -$team); //有则 更新原上级
-        }
-        $this->addIntroNum($intro_uid, 1, $team); //更新新上级
+        //记录个日志
+        $log = [
+            'info' => '用户['.$user['id'].']滑落,其名下直推有['.implode(',',array_column($my_down,'id')).'],都改到其上级['.$user['intro_uid'].']名下',
+            'createtime' => $nowtime,
+        ];
+        Db::name('intro_log')->insertGetId($log);
 
 
-        $db->commit();
-        $this->success("更新成功");
+        //提交
+        Db::commit();
+        echo '完成更新'.$user['id'];
     }
 
-    /**
-     * 更新邀请码数和推荐团队人数
-     * @param string $tjrname 用户id
-     * @param integer $num 直推增减人数
-     * @param integer $team 团队增减人数
-     */
-    private function addIntroNum($tjrname, $num, $team)
-    {
-        //更新直推人数
-        if($num < 0) {
-            $rs1 = Db::name('user')->where(['id' => $tjrname])->setDec('intro_num', abs($num));
-        } else {
-            $rs1 = Db::name('user')->where(['id' => $tjrname])->setInc('intro_num', $num);
-        }
-        if($rs1 === false){
-            return false;
-        }
-        //更新团队
-        $rstjr = Db::name('user')->where(['id' => $tjrname])->field('id,intro_ids')->find();
-        if($rstjr) {
-            $tjstr = $rstjr['intro_ids'] ? ($rstjr['intro_ids'] . ',' . $rstjr['id']) : $rstjr['id'];
-            $tjstr = trim($tjstr, ',');
-            $arr_intro = explode(',', $tjstr);
-
-            if($team < 0) {
-                $rs2 = Db::name('user')->where(['id' => ['in', $arr_intro]])->setDec('intro_num_all', abs($team));
-            } else {
-                $rs2 = Db::name('user')->where(['id' => ['in', $arr_intro]])->setInc('intro_num_all', $team);
-            }
 
-            if($rs2 === false){
-                return false;
-            }
 
-        }
 
-        return true;
-    }
 
     //滑落要按11天算
     private function hualuo_tendays_ago(){
@@ -297,14 +221,14 @@ class Plantask extends Controller
         }
 
         //获取直推人数
-        $intro_number = Db::name('user')->where('intro_uid',$intro_uid)->count();
-//        dump($intro_number);
+        $intro_count = Db::name('user')->where('intro_uid',$intro_uid)->count();
+//        dump($intro_count);
         //获取业绩
         $yeji = $this->jiesuan_yeji($intro_uid);
 //        dump($yeji);
 
         //确定代理商等级,拿对应比例
-        $rule = $this->jiesuan_daili_level($intro_number,$yeji);
+        $rule = $this->jiesuan_daili_level($intro_count,$yeji);
         if($rule['bili'] == 0){
             echo '达不到第一级,结束';
             Db::name('unishop_order')->where('id',$order['id'])->update(['jiesuantime'=>time()]);