zxhxx há 3 anos atrás
pai
commit
1c8d660cef
3 ficheiros alterados com 133 adições e 21 exclusões
  1. 19 9
      app/admin/controller/Index.php
  2. 45 12
      app/models/store/StoreGp.php
  3. 69 0
      app/models/store/StoreMgp.php

+ 19 - 9
app/admin/controller/Index.php

@@ -2,7 +2,7 @@
 
 namespace app\admin\controller;
 
-use app\models\store\StoreGp;
+use app\models\store\{StoreGp,StoreMgp};
 use app\models\store\StoreOrder;
 use app\models\user\UserBill;
 use FormBuilder\Json;
@@ -606,16 +606,26 @@ class Index extends AuthController
         /*
         $order = StoreOrder::find(423);
         StoreGp::createGp(['data'=>$order]);*/
-        $list = StoreGp::where('cts',3)->where('send',0)->select()->toArray();
+        $list = StoreGp::select()->toArray();
         foreach ($list as $v)
         {
-            $p_user = \app\models\user\User::find($v['uid']);
-            $sp_brokeragePrice1 = 3000;
-            $gp_balance = bcadd($p_user['gp_now_money'], $sp_brokeragePrice1, 2);
-            $mark = "满3个加报单余额3000元,订单号:" . 0;
-            $res = UserBill::income('满3个报单余额', $p_user['uid'], 'now_money', 'brokerage', $sp_brokeragePrice1,0, $gp_balance, $mark, 1);
-            User::where('uid', $p_user['uid'])->inc('gp_now_money', $sp_brokeragePrice1)->update();
-            StoreGp::where('no', $v['no'])->update(['send'=>1]);
+            $user = UserModel::where('uid',$v['uid'])->find();
+            $spuser = User::where('uid',$user['spread_uid'])->find();
+            $sp_uid = $spuser['uid']>0?$spuser['uid']:0;
+            $order_id = $v['order_id'];
+            $price = $v['price'];
+            $uid = $v['uid'];
+            $add_time = time();
+            $status = 0;
+            if(!StoreMgp::be(['uid'=>$user['uid']]))
+            {
+                dump($sp_uid);
+                $rs = StoreMgp::getpath($v['uid'],$sp_uid);    
+                dump($rs);   
+                list($p_no,$no,$no_path,$user_path,$level) = [$rs['p_no'],$rs['no'],$rs['no_path'],$rs['user_path'],$rs['level']];
+                StoreMgp::create(compact('no','p_no','order_id','no_path','user_path','level','price','uid','add_time','status'));
+                StoreMgp::where('no',$p_no)->inc('cts',1)->update();
+            }
         }
         echo 'ok';
 

+ 45 - 12
app/models/store/StoreGp.php

@@ -4,6 +4,7 @@ use app\models\user\User;
 use app\models\user\UserBill;
 use crmeb\basic\BaseModel;
 use crmeb\traits\ModelTrait;
+use app\models\store\StoreMgp;
 use think\Exception;
 
 class StoreGp extends BaseModel
@@ -19,6 +20,19 @@ class StoreGp extends BaseModel
         $order = $data['data'];
         @file_put_contents("job.txt",json_encode($order));
         try {
+            $user = User::where('uid',$order['uid'])->find();
+            $spuser = User::where('uid',$user['spread_uid'])->find();
+            User::where('uid',$order['uid'])->update(['cycle_time'=>strtotime("+31 day")]);
+            if($spuser)
+            {
+                User::where('uid',$spuser['uid'])->update(['cycle_time'=>strtotime("+31 day")]);
+                 $sp_uid = $spuser['uid'];
+            }
+            else
+            {
+                $sp_uid = 0;
+            }
+
             $no = intval(self::value('max(no)') ?: 0) + 1;
             $rs = self::getpath($no);
             list($p_no, $no_path,$gp_id,$send,$gpinfo) = [$rs['p_no'],$rs['no_path'],$rs['gp_id'],$rs['send'],$rs['info']];
@@ -33,10 +47,9 @@ class StoreGp extends BaseModel
                 self::where('no', $p_no)->inc('cts', 1)->update();
                 self::where('no', $gp_id)->inc('team_cts', 1)->update();
             }
-            $user = User::where('uid',$order['uid'])->find();
-            $spuser = User::where('uid',$user['spread_uid'])->find();
-            User::where('uid',$order['uid'])->update(['cycle_time'=>strtotime("+31 day")]);
-            User::where('uid',$spuser['uid'])->update(['cycle_time'=>strtotime("+31 day")]);
+           
+            
+            /*
             if($send==1)
             {
                 $p_user = User::find($gpinfo['uid']);
@@ -46,7 +59,7 @@ class StoreGp extends BaseModel
                 $res = UserBill::income('满3个报单余额', $p_user['uid'], 'now_money', 'brokerage', $sp_brokeragePrice1, $order['id'], $gp_balance, $mark, 1);
                 User::where('uid', $p_user['uid'])->inc('gp_now_money', $sp_brokeragePrice1)->update();
                 self::where('no', $p_no)->update(['send'=>1]);
-            }
+            }*/
             $p_no_cts =  self::where('no', $gp_id)->value('team_cts');
             if ($p_no_cts>0 && $p_no_cts % 3 == 0) {
                 $info = self::where('no', $gp_id)->find();
@@ -79,17 +92,29 @@ class StoreGp extends BaseModel
                     }
                 }
             }
-            $no_path = explode(",",$no_path);
-            if (sizeof($no_path) > 3) {
+            if(!StoreMgp::be(['uid'=>$uid]))
+            {
+                $rs = StoreMgp::getpath($order['uid'],$sp_uid);       
+                $add_time = time();
+                $status = 0;
+                list($p_no,$no,$no_path,$user_path,$level) = [$rs['p_no'],$rs['no'],$rs['no_path'],$rs['user_path'],$rs['level']];
+                StoreMgp::create(compact('no','p_no','order_id','no_path','user_path','level','price','uid','add_time','status'));
+                StoreMgp::where('no',$p_no)->inc('cts',1)->update();
+            }
+            
+            $no_path = explode(",",$user_path);
+            if (sizeof($no_path) > 1) {
                 $path = array_reverse($no_path);
                 $n = 0;
                 foreach ($path as $v) {
                     $n++;
-                    if ($n <=3) continue;
-                    if($n>10) break;
-                    $sp_brokeragePrice = $order['team'];
-                    $user = user::find(self::where('no', $v)->value('uid'));
+                    if ($n <=1) continue;
+                    if($n>8) break;
+                    $sp_brokeragePrice = self::getbrokeragePrice($v);
+                    if($sp_brokeragePrice==0) continue;
+                    $user = user::find($v);
                     $spuser = user::find($user['spread_uid']);
+
                     if($user['cycle_time']>time()) {
                         $balance = bcadd($user['brokerage_price'], $sp_brokeragePrice, 2);
                         $mark = "公排号:" . $no . '团队奖' . floatval($sp_brokeragePrice) . "元,订单号:" . $order['order_id'];
@@ -98,7 +123,6 @@ class StoreGp extends BaseModel
                     }
                     if($spuser && $user['spread_uid']>0 && $spuser['cycle_time']>time())
                     {
-                        $sp_brokeragePrice = $order['recommend'];
                         $balance = bcadd($spuser['brokerage_price'], $sp_brokeragePrice, 2);
                         $mark = "公排号:" . $no . '推荐奖' . $order['recommend'] . "元,订单号:" . $order['order_id'];
                         $res = UserBill::income('推荐奖', $spuser['uid'], 'now_money', 'brokerage', $sp_brokeragePrice, $order['id'], $balance, $mark, 1);
@@ -106,6 +130,7 @@ class StoreGp extends BaseModel
                     }
                 }
             }
+
             return true;
         }catch (Exception $e)
         {
@@ -114,6 +139,14 @@ class StoreGp extends BaseModel
         }
 
     }
+    private static function getbrokeragePrice($uid)
+    {
+        $num = User::where('spread_uid',$uid)->where('cycle_time','>',0)->count();
+        if($uid==105) return sys_config('sp_tree_num',200);
+        if($num>2) return sys_config('sp_tree_num',200);
+        if($num>0) return sys_config('sp_one_num',200);
+        return 0;
+    }
 
     /**
      * 获取上级及路径

+ 69 - 0
app/models/store/StoreMgp.php

@@ -0,0 +1,69 @@
+<?php
+namespace app\models\store;
+use app\models\user\User;
+use crmeb\basic\BaseModel;
+use crmeb\traits\ModelTrait;
+use think\Exception;
+
+class StoreMgp extends BaseModel
+{
+    use ModelTrait;
+
+    
+
+    /**
+     * 获取上级及路径
+     * @param $no
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\DbException
+     * @throws \think\db\exception\ModelNotFoundException
+     */
+    public static function getpath($uid=0,$sp_uid=0)
+    {
+        $no = intval(self::value('max(no)') ?: 0) + 1;
+        $no_path = [];$level=1;$p_no=0;
+        if($no==1) {
+            $no_path = $no;
+            $p_no = 0;
+            $user_path = $uid;
+        }
+        else
+        {
+            if($sp_uid>0)
+            {
+                $sp = self::where('uid',$sp_uid)->find();   
+                if($sp['cts']<3)
+                {
+                    $min = $sp;
+                }
+                else
+                {       
+                    $min = self::wherelike('no_path',$sp['no_path'].",%")->where('cts','<',3)->order("level asc,id asc")->find();
+                }
+                if($min)
+                {
+                    $no_path = $min['no_path'].",".$no;
+                    $user_path = $min['user_path'].",".$uid;
+                    $p_no = $min['no'];
+                    $level = intval($min['level'])+1;
+                }
+                else
+                {
+                    $no_path = $sp['no_path'].",".$no;
+                    $user_path = $sp['user_path'].",".$uid;
+                    $p_no = $sp['no'];
+                    $level = intval($sp['level'])+1;
+                } 
+            }
+            else
+            {
+                $no_path = $no;
+                $user_path = $uid;
+                $p_no = $no;                
+            }
+            
+        }
+        return compact('p_no','no','no_path','user_path','level');
+    }
+}