WIN-2308041133\Administrator 4 months ago
parent
commit
b59b0d2a6b

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

@@ -87,6 +87,30 @@ class SystemUserTask extends BaseModel
             'real_name' => '邀请好友成为会员',
             'max_number' => 1000,
             'min_number' => 1,
+            'unit' => '元'
+        ],
+        [
+            'type' => 'AccumulatedTeamPerformance',
+            'name' => '下级团队业绩满足{$num}',
+            'real_name' => '下级团队业绩',
+            'max_number' => 1000,
+            'min_number' => 1,
+            'unit' => '元'
+        ],
+        [
+            'type' => 'InviteGoodFriendsAgent',
+            'name' => '邀请好友{$num}成为代理商(等级2)',
+            'real_name' => '邀请好友成为代理商',
+            'max_number' => 1000,
+            'min_number' => 1,
+            'unit' => '人'
+        ],
+        [
+            'type' => 'InviteGoodFriendsChannel',
+            'name' => '邀请好友{$num}成为渠道商(等级3)',
+            'real_name' => '邀请好友成为渠道商',
+            'max_number' => 1000,
+            'min_number' => 1,
             'unit' => '人'
         ],
     ];

+ 22 - 0
app/admin/model/user/User.php

@@ -1229,4 +1229,26 @@ class User extends BaseModel
         self::checkTrans($res);
         return $res;
     }
+//    查找所有下级uid
+    public function get_group_user($id, $init = true, $members = null){
+        if ($init) {
+            $us = User::column('spread_uid', 'uid');
+            $members = [];
+            foreach ($us as $k => $v) {
+                if ($v > 0)
+                    $members[$v][] = $k;
+            }
+            $id = [$id];
+        }
+        $arr = array();
+        foreach ($id as $v) {
+            $child = $members[$v] ?? [];
+            $arr = array_merge($arr, $child);
+        }
+        if (count($arr)) {
+            return array_merge($arr, $this->get_group_user($arr, false, $members));
+        } else {
+            return $arr;
+        }
+    }
 }

+ 74 - 2
app/models/system/SystemUserTask.php

@@ -99,7 +99,30 @@ class SystemUserTask extends BaseModel
             'min_number' => 1,
             'unit' => '人'
         ],
-    ];
+        [
+            'type' => 'AccumulatedTeamPerformance',
+            'name' => '下级团队业绩满足{$num}',
+            'real_name' => '下级团队业绩',
+            'max_number' => 1000,
+            'min_number' => 1,
+            'unit' => '元'
+        ],
+        [
+            'type' => 'InviteGoodFriendsAgent',
+            'name' => '邀请好友{$num}成为代理商(等级2)',
+            'real_name' => '邀请好友成为代理商',
+            'max_number' => 1000,
+            'min_number' => 1,
+            'unit' => '人'
+        ],
+        [
+            'type' => 'InviteGoodFriendsChannel',
+            'name' => '邀请好友{$num}成为渠道商(等级3)',
+            'real_name' => '邀请好友成为渠道商',
+            'max_number' => 1000,
+            'min_number' => 1,
+        ]
+        ];
 
     public function profile()
     {
@@ -246,7 +269,52 @@ class SystemUserTask extends BaseModel
         if ($sumCount >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
         return ['还需签到{$num}天', $sumCount, $isComplete];
     }
-
+    /**
+     * 下级团队累积业绩
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 开始时间
+     * @param int $number 限定时间
+     * @return boolean
+     * */
+    public static function AccumulatedTeamPerformance($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+        $group_users = \app\admin\model\user\User::get_group_user($uid);
+        $achievement1 = \app\admin\model\order\StoreOrder::where('uid','in', $group_users)->where('paid', 1)->whereNotIn('status',-1)->sum('pay_price');
+        if ($achievement1 >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需消费{$num}元', $achievement1, $isComplete];
+    }
+    /**
+     * 邀请好友成为代理商(等级2)
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 查询开始时间
+     * @param int $number 限定数量
+     * */
+    public static function InviteGoodFriendsAgent($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+        $level_id = UserLevel::where('grade', 2)->value('id');
+        $spreadCount = User::where('spread_uid', $uid)->where('level',$level_id)->where('spread_time', '>', $start_time)->count();
+        if ($spreadCount >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需邀请{$num}人成为代理商(等级2)', $spreadCount, $isComplete];
+    }
+    /**
+     * 邀请好友成为渠道商(等级2)
+     * @param int $task_id 任务id
+     * @param int $uid 用户id
+     * @param int $start_time 查询开始时间
+     * @param int $number 限定数量
+     * */
+    public static function InviteGoodFriendsChannel($task_id, $uid = 0, $start_time = 0, $number = 0)
+    {
+        $isComplete = false;
+        $level_id = UserLevel::where('grade', 3)->value('id');
+        $spreadCount = User::where('spread_uid', $uid)->where('level',$level_id)->where('spread_time', '>', $start_time)->count();
+        if ($spreadCount >= $number) $isComplete = UserTaskFinish::setFinish($uid, $task_id) ? true : false;
+        return ['还需邀请{$num}人成为渠道商(等级3)', $spreadCount, $isComplete];
+    }
     /**
      * 设置任务完成情况
      * @param int $task_id 任务id
@@ -334,6 +402,9 @@ class SystemUserTask extends BaseModel
             case 'CumulativeAttendance':
             case 'SharingTimes':
             case 'InviteGoodFriends':
+            case 'AccumulatedTeamPerformance':
+            case 'InviteGoodFriendsAgent':
+            case 'InviteGoodFriendsChannel':
             case 'InviteGoodFriendsLevel':
                 try {
                     list($task_type_title, $num, $isComplete) = self::$task_type($item['id'], $uid, $startTime, $item['number']);
@@ -352,6 +423,7 @@ class SystemUserTask extends BaseModel
                 } catch (\Exception $e) {
                 }
                 break;
+
         }
         return [$task['new_number'], $task['speed'], $task['task_type_title'], $task['finish']];
     }