WIN-2308041133\Administrator 2 周之前
父节点
当前提交
a506f68063

+ 16 - 0
app/admin/model/system/SystemUserTask.php

@@ -89,6 +89,22 @@ class SystemUserTask extends BaseModel
             'min_number' => 1,
             'unit' => '人'
         ],
+        [
+            'type' => 'TeamConsumptionAmount',
+            'name' => '团队消费消费满{$num}',
+            'real_name' => '消费金额',
+            'max_number' => 0,
+            'min_number' => 0,
+            'unit' => '元'
+        ],
+        [
+            'type' => 'CommunityConsumptionAmount',
+            'name' => '团队小区消费消费满{$num}',
+            'real_name' => '消费金额',
+            'max_number' => 0,
+            'min_number' => 0,
+            'unit' => '元'
+        ],
     ];
 
     public function profile()

+ 26 - 25
app/api/controller/user/UserController.php

@@ -87,30 +87,31 @@ class UserController
                 ->sum('achievement');
         }
         $info['team_achievement'] = $team_achievement > 0 ? $team_achievement : 0;
-        $minGrade = SystemGroupLevel::where('grade', '>', $info['group_level'])
-            ->min('grade');
-        if ($minGrade === null){
-            $quota = SystemGroupLevel::where('grade', $minGrade)->value('quota');
-            if ($quota <= $info['team_achievement']){
-                User::where('uid', $info['uid'])->update(['group_level' => $minGrade]);
-                $level_id = SystemGroupLevel::where('grade', $minGrade)->value('id');
-                $name = SystemGroupLevel::where('grade', $minGrade)->value('name');
-                UserGroupLevel::create([
-                    'is_forever' =>1,
-                    'status' => 1,
-                    'is_del' => 0,
-                    'grade' => $minGrade,
-                    'uid' =>  $info['uid'],
-                    'add_time' => time(),
-                    'level_id' => $level_id,
-                    'discount' => 100,
-                    'valid_time' => 0,
-                    'mark' => '尊敬的用户【' . $info['nickname'] . '】在' . date('Y-m-d H:i:s', time()) . '成为' . $name . '会员',
-                ]);
-            }
-        }
+
+//        $minGrade = SystemGroupLevel::where('grade', '>', $info['group_level'])
+//            ->min('grade');
+//        if ($minGrade === null){
+//            $quota = SystemGroupLevel::where('grade', $minGrade)->value('quota');
+//            if ($quota <= $info['team_achievement']){
+//                User::where('uid', $info['uid'])->update(['group_level' => $minGrade]);
+//                $level_id = SystemGroupLevel::where('grade', $minGrade)->value('id');
+//                $name = SystemGroupLevel::where('grade', $minGrade)->value('name');
+//                UserGroupLevel::create([
+//                    'is_forever' =>1,
+//                    'status' => 1,
+//                    'is_del' => 0,
+//                    'grade' => $minGrade,
+//                    'uid' =>  $info['uid'],
+//                    'add_time' => time(),
+//                    'level_id' => $level_id,
+//                    'discount' => 100,
+//                    'valid_time' => 0,
+//                    'mark' => '尊敬的用户【' . $info['nickname'] . '】在' . date('Y-m-d H:i:s', time()) . '成为' . $name . '会员',
+//                ]);
+//            }
+//        }
         $info['level_name'] = SystemUserLevel::where('id', $info['level'])->value('name');
-        $info['group_level_name'] = SystemGroupLevel::where('id', $info['group_level'])->value('name');
+//        $info['group_level_name'] = SystemGroupLevel::where('id', $info['group_level'])->value('name');
 //        等级任务
         SystemUserLevel::getLevelList($info['uid']);
         return app('json')->success($info);
@@ -121,7 +122,7 @@ class UserController
      * @param int $uid 用户ID
      * @return array
      */
-    protected function getAllTeamMembers($uid)
+    public static function getAllTeamMembers($uid)
     {
         static $teamUids = [];
 
@@ -133,7 +134,7 @@ class UserController
 
             // 递归获取下级的下级
             foreach ($directSubordinates as $subordinateUid) {
-                $this->getAllTeamMembers($subordinateUid);
+                self::getAllTeamMembers($subordinateUid);
             }
         }
 

+ 61 - 0
app/models/system/SystemUserTask.php

@@ -2,6 +2,7 @@
 
 namespace app\models\system;
 
+use app\api\controller\user\UserController;
 use app\models\store\StoreOrder;
 use app\models\user\User;
 use app\models\user\UserBill;
@@ -157,7 +158,67 @@ class SystemUserTask extends BaseModel
         if ($SumPayPrice >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
         return ['还需消费{$num}元', $SumPayPrice, $isComplete];
     }
+    /**
+     * 团队下级总累计消费
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 开始时间
+     * @param int $number 限定时间
+     * @return boolean
+     * */
+    public static function TeamConsumptionAmount($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+//        $SumPayPrice = StoreOrder::where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('uid', $uid)->where('add_time', '>', $start_time)->sum('pay_price');
 
+        $teamUids = UserController::getAllTeamMembers($uid);  //获取团队所有成员
+        $team_achievement = 0;
+        if (!empty($teamUids)) {
+            $team_achievement = User::whereIn('uid', $teamUids)
+                ->sum('achievement');
+        }
+        @file_put_contents('quanju.txt', $team_achievement . "-总消费金额\r\n", 8);
+        $SumPayPrice =$team_achievement;
+        if ($SumPayPrice >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需消费{$num}元', $SumPayPrice, $isComplete];
+    }
+    /**
+     * 团队小区累计消费
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 开始时间
+     * @param int $number 限定时间
+     * @return boolean
+     * */
+    public static function CommunityConsumptionAmount($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+//        $SumPayPrice = StoreOrder::where('paid', 1)->where('refund_status', 0)->where('is_del', 0)->where('uid', $uid)->where('add_time', '>', $start_time)->sum('pay_price');
+        $directSubordinateUids = User::where('spread_uid', $uid)->column('uid');
+
+        $max = 0;
+        $team_achievement=0;
+        if (!empty($directSubordinateUids)) {
+            foreach ($directSubordinateUids as $key => $value){
+                $teamUids = UserController::getAllTeamMembers($uid);  //获取直推下级的团队所有成员
+                if (!empty($teamUids)) {
+                    $personal_achievement = User::whereIn('uid', $teamUids)
+                        ->sum('achievement');
+                    $team_achievement += $personal_achievement;
+                    if ($personal_achievement > $max){  //获取最高消费团队
+                        $max = $personal_achievement;
+                    }
+                }
+            }
+        }
+        $community_achievement = bcsub($team_achievement, $max, 2);  //小区消费
+        @file_put_contents('quanju.txt', $team_achievement . "-总消费\r\n", 8);
+        @file_put_contents('quanju.txt', $max . "-大区消费\r\n", 8);
+        @file_put_contents('quanju.txt', $community_achievement . "-小区消费\r\n", 8);
+        $SumPayPrice =$community_achievement;
+        if ($SumPayPrice >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需消费{$num}元', $SumPayPrice, $isComplete];
+    }
     /**
      * 累计消费次数
      * @param int $task_id 任务id