quanwei
2 days ago 73b874c72ad55eb9eef21c36160ac0de58f0189e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
 
namespace app\job\model\plus\bonus;
 
use app\common\model\plus\bonus\User as UserModel;
use app\common\model\plus\bonus\Setting;
use app\common\library\helper;
 
/**
 * 用户优惠券模型
 */
class User extends UserModel
{
    /**
     * 获取排位已过期的队长ID集
     */
    // public function getExpiredUserIds($app_id)
    // {
    //     $setting = Setting::getItem('basic', $app_id);
    //     // log_write($setting);
    //     if (empty($setting['expire_day'])) {
    //         return '';
    //     }
    //     $time = time() - 86400 * $setting['expire_day'];
    //     // log_write($time);
    //     return $this->where('is_expire', '=', 0)
    //         ->where('is_delete', '=', 0)
    //         ->where('tree_level', '>', 3)
    //         ->where('agent_time', '<', $time)->column('user_id');
    // }
 
    /**
     * 获取排位已过期的队长ID集(直推超过3个的不设置过期)
     */
    public function getExpiredUserIds($app_id)
    {
        $setting = Setting::getItem('basic', $app_id);
        // log_write($setting);
        if (empty($setting['expire_day'])) {
            return '';
        }
        $time = time() - 86400 * $setting['expire_day'];
        $list = $this->alias('bonus')->where('bonus.is_expire', '=', 0)
            ->where('bonus.is_delete', '=', 0)
            ->where('bonus.tree_level', '>', 3)
            ->where('bonus.is_permanent', '=', 0)
            ->where('bonus.agent_time', '<', $time)
            ->field('bonus.user_id,count(agent.user_id) as num')
            ->leftJoin('agent_user agent', 'agent.referee_id=bonus.user_id')
            ->having('num<3')
            ->group('bonus.user_id')
            ->select()->toArray();
            log_write($list);
        return helper::getArrayColumn($list, 'user_id');
    }
 
    /**
     * 设置队长排位过期状态
     */
    public function setIsExpire($UserIds)
    {
        if (empty($UserIds)) {
            return false;
        }
        return $this->where('user_id', 'in', $UserIds)->save(['is_expire' => 1]);
    }
 
    /**
     * 获取可解冻业绩奖的队长列表
     */
    public function getBackUserList($app_id)
    {
        $setting = Setting::getItem('basic', $app_id);
        $model = $this->alias('bonus');
        if (!empty($setting['expire_day'])) {
            $model = $model->where('bonus.is_expire', '=', 0);
        }
        return $model->where('bonus.is_delete', '=', 0)
            ->where('freeze_money_second', '>', 0)
            ->join('agent_user agent', 'agent.referee_id=bonus.user_id and agent.first_num>=3')
            ->field('bonus.user_id,bonus.money,bonus.freeze_money_second,count(agent.user_id) as num')
            ->having('num>=3')
            ->group('bonus.user_id')
            ->select();
    }
 
    /**
     * 执行解冻业绩
     */
    public function setBackFreezeMoneySecond($list)
    {
        $data = [];
        foreach ($list as $item) {
            $data[] = [
                'user_id' => $item['user_id'],
                'money' => $item['money'] + $item['freeze_money_second'],
                'freeze_money_second' => 0
            ];
        }
        $data && $this->saveAll($data);
        return true;
    }
 
}