111
liyaozhi
2025-11-09 c13b8914228e6a404bd60ee36bf2479383da8f23
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?php
 
namespace app\shop\model\plus\region;
 
use app\shop\model\plus\region\Referee as RefereeModel;
use app\common\model\plus\region\User as UserModel;
use app\common\enum\plus\region\RegionLevelEnum;
 
/**
 * 股东用户模型
 * Class User
 * @package app\shop\model\plus\region
 */
class User extends UserModel
{
    /**
     * 获取股东用户列表
     */
    public function getList($search, $limit = 15)
    {
        // 构建查询规则
        $model = $this->alias('region')
            ->field('region.*, user.nickName, user.avatarUrl')
            ->with(['grade'])
            ->join('user', 'user.user_id = region.user_id')
            ->where('region.is_delete', '=', 0)
            ->order(['region.create_time' => 'desc']);
        // 查询条件
        if (!empty($search)) {
            $model = $model->where('user.nickName|region.real_name|region.mobile', 'like', '%' . $search . '%');
        }
        // 获取列表数据
        $list = $model->paginate($limit);
        foreach ($list as $user){
            $user['total_money'] = sprintf('%.2f', $user['money'] + $user['freeze_money'] + $user['total_money']);
        }
        return $list;
    }
 
    public static function getListAll($grade_id = 0)
    {
        $model = new static;
        if($grade_id > 0) {
            $model->where('grade_id', '=', $grade_id);
        }
        return $model->where('is_delete', '=', 0)->with(['grade'])->select();
    }
 
    /**
     * 编辑股东用户
     * @param $region_id
     * @param $region_level
     */
    public static function getUser($region_id, $region_level = RegionLevelEnum::PROVINCE)
    {
        $model = new static;
        $model = $model->where('region_level', '=', $region_level);
        // 省代理
        if($region_level == RegionLevelEnum::PROVINCE) {
            $model = $model->where('province_id', '=', $region_id);
        }
        if($region_level == RegionLevelEnum::CITY) {
            $model = $model->where('city_id', '=', $region_id);
        }
        if($region_level == RegionLevelEnum::AREA) {
            $model = $model->where('area_id', '=', $region_id);
        }
        return $model->where('is_delete', '=', 0)->select();
    }
 
    /**
     * 编辑股东用户
     * @param $data
     * @return bool
     */
    public function edit($data)
    {
        return $this->save($data) !== false;
    }
 
    /**
     * 删除股东用户
     * @return mixed
     */
    public function setDelete()
    {
        return $this->transaction(function () {
            // 标记当前股东记录为已删除
            return $this->save([
                'is_delete' => 1
            ]);
        });
    }
    
    /**
     * 提现打款成功:累积提现佣金
     */
    public static function totalMoney($user_id, $money)
    {
        $model = self::detail($user_id);
        return $model->save([
            'freeze_money' => $model['freeze_money'] - $money,
            'total_money' => $model['total_money'] + $money,
        ]);
    }
 
    /**
     * 提现驳回:解冻股东资金
     */
    public static function backFreezeMoney($user_id, $money)
    {
        $model = self::detail($user_id);
        return $model->save([
            'money' => $model['money'] + $money,
            'freeze_money' => $model['freeze_money'] - $money,
        ]);
    }
 
    /**
     * 获取平台的总销售额
     */
    public function getTotalMoney($type = 'all_money')
    {
        $model = $this;
        if($type == 'money'){
            return $model->sum('money');
        } else if($type == 'freeze_money'){
            return $model->sum('freeze_money');
        } else if($type == 'total_money'){
            return $model->sum('total_money');
        } else if($type == 'all_money'){
            return $model->sum('total_money') + $model->sum('freeze_money') + $model->sum('money');
        }
        return 0;
    }
}